From 7347bac4ab7e136157fc94777e6cf87ef9e08599 Mon Sep 17 00:00:00 2001 From: Zhineng Li Date: Fri, 13 Feb 2026 10:54:11 +0800 Subject: first commit --- data/en_us/vpc/2016-04-28/api-docs.php | 100388 ++++++++++++++++++++++++++++++ 1 file changed, 100388 insertions(+) create mode 100644 data/en_us/vpc/2016-04-28/api-docs.php (limited to 'data/en_us/vpc') diff --git a/data/en_us/vpc/2016-04-28/api-docs.php b/data/en_us/vpc/2016-04-28/api-docs.php new file mode 100644 index 0000000..57101cd --- /dev/null +++ b/data/en_us/vpc/2016-04-28/api-docs.php @@ -0,0 +1,100388 @@ + '1.0', + 'info' => [ + 'style' => 'RPC', + 'product' => 'Vpc', + 'version' => '2016-04-28', + ], + 'directories' => [ + [ + 'id' => 78567, + 'title' => 'VPC', + 'type' => 'directory', + 'children' => [ + 'CreateVpc', + 'CreateDefaultVpc', + 'GrantInstanceToCen', + 'AssociateVpcCidrBlock', + 'AllocateVpcIpv6Cidr', + 'DeleteVpc', + 'RevokeInstanceFromCen', + 'UnassociateVpcCidrBlock', + 'ModifyVpcAttribute', + 'EnableVpcClassicLink', + 'DisableVpcClassicLink', + 'DeletionProtection', + 'DescribeVpcs', + 'DescribeVpcAttribute', + 'DescribeGrantRulesToCen', + ], + ], + [ + 'id' => 78582, + 'title' => 'Router', + 'type' => 'directory', + 'children' => [ + 'ModifyVRouterAttribute', + 'DescribeVRouters', + ], + ], + [ + 'id' => 78605, + 'title' => 'VSwitch', + 'type' => 'directory', + 'children' => [ + 'ListVSwitchCidrReservations', + 'CreateVSwitchCidrReservation', + 'GetVSwitchCidrReservationUsage', + 'ModifyVSwitchCidrReservationAttribute', + 'CreateVSwitch', + 'CreateDefaultVSwitch', + 'CheckCanAllocateVpcPrivateIpAddress', + 'DeleteVSwitch', + 'ModifyVSwitchAttribute', + 'DescribeVSwitches', + 'DescribeVSwitchAttributes', + 'DeleteVSwitchCidrReservation', + ], + ], + [ + 'id' => 78549, + 'title' => 'Route table', + 'type' => 'directory', + 'children' => [ + 'CreateRouteEntry', + 'CreateRouteEntries', + 'CreateRouteTable', + 'AssociateRouteTable', + 'DeleteRouteEntry', + 'DeleteRouteEntries', + 'DeleteRouteTable', + 'UnassociateRouteTable', + 'ModifyRouteTableAttributes', + 'ModifyRouteEntry', + 'GetVpcRouteEntrySummary', + 'DescribeRouteTables', + 'DescribeRouteEntryList', + 'DescribeRouteTableList', + 'ListVpcPublishedRouteEntries', + 'PublishVpcRouteEntries', + 'WithdrawVpcPublishedRouteEntries', + 'ListGatewayRouteTableEntries', + 'AssociateRouteTableWithGateway', + 'DissociateRouteTableFromGateway', + 'UpdateGatewayRouteTableEntryAttribute', + ], + ], + [ + 'id' => 185113, + 'title' => 'Prefix list', + 'type' => 'directory', + 'children' => [ + 'CreateVpcPrefixList', + 'RetryVpcPrefixListAssociation', + 'DeleteVpcPrefixList', + 'ModifyVpcPrefixList', + 'ListPrefixLists', + 'GetVpcPrefixListAssociations', + 'GetVpcPrefixListEntries', + ], + ], + [ + 'id' => 78655, + 'title' => 'DHCP', + 'type' => 'directory', + 'children' => [ + 'CreateDhcpOptionsSet', + 'DeleteDhcpOptionsSet', + 'AttachDhcpOptionsSetToVpc', + 'DetachDhcpOptionsSetFromVpc', + 'ReplaceVpcDhcpOptionsSet', + 'UpdateDhcpOptionsSetAttribute', + 'GetDhcpOptionsSet', + 'ListDhcpOptionsSets', + ], + ], + [ + 'id' => 78492, + 'title' => 'Flow log', + 'type' => 'directory', + 'children' => [ + 'OpenFlowLogService', + 'CreateFlowLog', + 'DeleteFlowLog', + 'ModifyFlowLogAttribute', + 'ActiveFlowLog', + 'DeactiveFlowLog', + 'GetFlowLogServiceStatus', + 'DescribeFlowLogs', + ], + ], + [ + 'id' => 78422, + 'title' => 'ACL', + 'type' => 'directory', + 'children' => [ + 'AssociateNetworkAcl', + 'CreateNetworkAcl', + 'CopyNetworkAclEntries', + 'DeleteNetworkAcl', + 'UnassociateNetworkAcl', + 'ModifyNetworkAclAttributes', + 'UpdateNetworkAclEntries', + 'DescribeNetworkAclAttributes', + 'DescribeNetworkAcls', + ], + ], + [ + 'id' => 78415, + 'title' => 'HAVIP', + 'type' => 'directory', + 'children' => [ + 'CreateHaVip', + 'AssociateHaVip', + 'DeleteHaVip', + 'UnassociateHaVip', + 'ModifyHaVipAttribute', + 'DescribeHaVips', + ], + ], + [ + 'id' => 78730, + 'title' => 'Traffic mirror', + 'type' => 'directory', + 'children' => [ + [ + 'id' => 78731, + 'title' => 'Filter rule', + 'type' => 'directory', + 'children' => [ + 'CreateTrafficMirrorFilterRules', + 'DeleteTrafficMirrorFilterRules', + 'UpdateTrafficMirrorFilterRuleAttribute', + ], + ], + [ + 'id' => 78735, + 'title' => 'Filter', + 'type' => 'directory', + 'children' => [ + 'CreateTrafficMirrorFilter', + 'DeleteTrafficMirrorFilter', + 'UpdateTrafficMirrorFilterAttribute', + 'ListTrafficMirrorFilters', + ], + ], + [ + 'id' => 78740, + 'title' => 'Session', + 'type' => 'directory', + 'children' => [ + 'AddSourcesToTrafficMirrorSession', + 'CreateTrafficMirrorSession', + 'DeleteTrafficMirrorSession', + 'UpdateTrafficMirrorSessionAttribute', + 'ListTrafficMirrorSessions', + 'RemoveSourcesFromTrafficMirrorSession', + ], + ], + 'OpenTrafficMirrorService', + 'GetTrafficMirrorServiceStatus', + ], + ], + [ + 'id' => 362347, + 'title' => 'RouteTargetGroup', + 'type' => 'directory', + 'children' => [ + 'SwitchActiveRouteTarget', + 'UpdateRouteTargetGroup', + 'ListRouteTargetGroups', + 'GetRouteTargetGroup', + 'DeleteRouteTargetGroup', + 'CreateRouteTargetGroup', + ], + ], + [ + 'id' => 78505, + 'title' => 'EIP', + 'type' => 'directory', + 'children' => [ + [ + 'id' => 201216, + 'title' => 'EIPs', + 'type' => 'directory', + 'children' => [ + 'AllocateEipAddress', + 'AllocateEipAddressPro', + 'ReleaseEipAddress', + 'ModifyEipAddressAttribute', + 'DescribeEipAddresses', + 'DescribeEipGatewayInfo', + 'AllocateEipSegmentAddress', + 'DescribeEipSegment', + 'ReleaseEipSegmentAddress', + 'ModifyEipForwardMode', + ], + ], + [ + 'id' => 201217, + 'title' => 'Associate EIPs with and disassociate EIPs from cloud resources', + 'type' => 'directory', + 'children' => [ + 'AssociateEipAddress', + 'AssociateEipAddressBatch', + 'UnassociateEipAddress', + ], + ], + [ + 'id' => 201218, + 'title' => 'IP address pools', + 'type' => 'directory', + 'children' => [ + 'CreatePublicIpAddressPool', + 'OpenPublicIpAddressPoolService', + 'AddPublicIpAddressPoolCidrBlock', + 'TransformEipSegmentToPublicIpAddressPool', + 'DeletePublicIpAddressPool', + 'DeletePublicIpAddressPoolCidrBlock', + 'UpdatePublicIpAddressPoolAttribute', + 'ListPublicIpAddressPools', + 'ListPublicIpAddressPoolCidrBlocks', + 'GetPublicIpAddressPoolServiceStatus', + ], + ], + [ + 'id' => 201219, + 'title' => 'Monitoring', + 'type' => 'directory', + 'children' => [ + 'DescribeEipMonitorData', + 'SetHighDefinitionMonitorLogStatus', + 'DescribeHighDefinitionMonitorLogAttribute', + ], + ], + [ + 'id' => 201220, + 'title' => 'Others', + 'type' => 'directory', + 'children' => [ + 'DescribePublicIpAddress', + ], + ], + ], + ], + [ + 'id' => 78525, + 'title' => 'Bandwidth', + 'type' => 'directory', + 'children' => [ + 'CreateCommonBandwidthPackage', + 'AddCommonBandwidthPackageIp', + 'AddCommonBandwidthPackageIps', + 'RemoveCommonBandwidthPackageIp', + 'DeleteCommonBandwidthPackage', + 'ModifyCommonBandwidthPackageAttribute', + 'ModifyCommonBandwidthPackageSpec', + 'DescribeCommonBandwidthPackages', + 'ModifyCommonBandwidthPackageIpBandwidth', + 'CancelCommonBandwidthPackageIpBandwidth', + 'Describe95Traffic', + ], + ], + [ + 'id' => 78472, + 'title' => 'Physical connection', + 'type' => 'directory', + 'children' => [ + [ + 'id' => 78563, + 'title' => 'Virtual physical connection', + 'type' => 'directory', + 'children' => [ + 'CreateVirtualPhysicalConnection', + 'UpdateVirtualPhysicalConnection', + 'ListVirtualPhysicalConnections', + ], + ], + 'OpenPhysicalConnectionService', + 'CreatePhysicalConnection', + 'ApplyPhysicalConnectionLOA', + 'SecondApplyPhysicalConnectionLOA', + 'CreatePhysicalConnectionSetupOrder', + 'CreatePhysicalConnectionOccupancyOrder', + 'CreateHighReliablePhysicalConnection', + 'CreateVpconnFromVbr', + 'DeletePhysicalConnection', + 'CancelPhysicalConnection', + 'ModifyPhysicalConnectionAttribute', + 'EnablePhysicalConnection', + 'TerminatePhysicalConnection', + 'RecoverPhysicalConnection', + 'AttachVbrToVpconn', + 'GetPhysicalConnectionServiceStatus', + 'DescribeAccessPoints', + 'ConfirmPhysicalConnection', + 'DescribePhysicalConnections', + 'ListPhysicalConnectionFeatures', + 'CompletePhysicalConnectionLOA', + 'DescribePhysicalConnectionLOA', + 'ListGeographicSubRegions', + 'ListBusinessRegions', + 'ListBusinessAccessPoints', + ], + ], + [ + 'id' => 186880, + 'title' => 'Failover Test', + 'type' => 'directory', + 'children' => [ + 'CreateFailoverTestJob', + 'StartFailoverTestJob', + 'StopFailoverTestJob', + 'UpdateFailoverTestJob', + 'DeleteFailoverTestJob', + 'DescribeFailoverTestJob', + 'DescribeFailoverTestJobs', + ], + ], + [ + 'id' => 189661, + 'title' => 'QoS', + 'type' => 'directory', + 'children' => [ + 'DescribeExpressConnectTrafficQosRule', + 'DescribeExpressConnectTrafficQosQueue', + 'DescribeExpressConnectTrafficQos', + 'DeleteExpressConnectTrafficQosQueue', + 'DeleteExpressConnectTrafficQos', + 'DeleteExpressConnectTrafficQosRule', + 'ModifyExpressConnectTrafficQos', + 'ModifyExpressConnectTrafficQosQueue', + 'ModifyExpressConnectTrafficQosRule', + 'CreateExpressConnectTrafficQos', + 'CreateExpressConnectTrafficQosQueue', + 'CreateExpressConnectTrafficQosRule', + ], + ], + [ + 'id' => 78592, + 'title' => 'VBR', + 'type' => 'directory', + 'children' => [ + [ + 'id' => 78726, + 'title' => 'VBR failover group', + 'type' => 'directory', + 'children' => [ + 'CreateVbrHa', + 'DeleteVbrHa', + 'DescribeVbrHa', + ], + ], + 'AssociatePhysicalConnectionToVirtualBorderRouter', + 'CreateVirtualBorderRouter', + 'DeleteVirtualBorderRouter', + 'UnassociatePhysicalConnectionFromVirtualBorderRouter', + 'UpdateVirtualBorderBandwidth', + 'ModifyVirtualBorderRouterAttribute', + 'TerminateVirtualBorderRouter', + 'RecoverVirtualBorderRouter', + 'DescribeVirtualBorderRouters', + 'DescribeGrantRulesToEcr', + 'DescribeVirtualBorderRoutersForPhysicalConnection', + ], + ], + [ + 'id' => 78669, + 'title' => 'BGP', + 'type' => 'directory', + 'children' => [ + 'AddBgpNetwork', + 'CreateBgpGroup', + 'CreateBgpPeer', + 'DeleteBgpGroup', + 'DeleteBgpNetwork', + 'DeleteBgpPeer', + 'ModifyBgpGroupAttribute', + 'ModifyBgpPeerAttribute', + 'DescribeBgpGroups', + 'DescribeBgpNetworks', + 'DescribeBgpPeers', + ], + ], + [ + 'id' => 78447, + 'title' => 'NAT', + 'type' => 'directory', + 'children' => [ + [ + 'id' => 187842, + 'title' => 'Nat Gateways', + 'type' => 'directory', + 'children' => [ + 'CreateNatGateway', + 'DeleteNatGateway', + 'ModifyNatGatewayAttribute', + 'ModifyNatGatewaySpec', + 'DescribeNatGateways', + 'GetNatGatewayAttribute', + 'ListEnhanhcedNatGatewayAvailableZones', + 'UpdateNatGatewayNatType', + 'DescribeNatGatewayAssociateNetworkInterfaces', + 'VpcDescribeVpcNatGatewayNetworkInterfaceQuota', + ], + ], + [ + 'id' => 78625, + 'title' => 'SNAT Rule', + 'type' => 'directory', + 'children' => [ + 'CreateSnatEntry', + 'DeleteSnatEntry', + 'ModifySnatEntry', + 'DescribeSnatTableEntries', + ], + ], + [ + 'id' => 78620, + 'title' => 'DNAT Rule', + 'type' => 'directory', + 'children' => [ + 'CreateForwardEntry', + 'DeleteForwardEntry', + 'ModifyForwardEntry', + 'DescribeForwardTableEntries', + ], + ], + [ + 'id' => 78664, + 'title' => 'FullNat Rule', + 'type' => 'directory', + 'children' => [ + 'CreateFullNatEntry', + 'DeleteFullNatEntry', + 'ModifyFullNatEntryAttribute', + 'ListFullNatEntries', + ], + ], + [ + 'id' => 187843, + 'title' => 'NatIp Management', + 'type' => 'directory', + 'children' => [ + [ + 'id' => 78716, + 'title' => 'NatIp', + 'type' => 'directory', + 'children' => [ + 'CreateNatIp', + 'DeleteNatIp', + 'ModifyNatIpAttribute', + 'ListNatIps', + ], + ], + [ + 'id' => 78717, + 'title' => 'NatIpCidr', + 'type' => 'directory', + 'children' => [ + 'CreateNatIpCidr', + 'DeleteNatIpCidr', + 'ModifyNatIpCidrAttribute', + 'ListNatIpCidrs', + ], + ], + ], + ], + ], + ], + [ + 'id' => 185179, + 'title' => 'IPv4 gateway', + 'type' => 'directory', + 'children' => [ + 'CreateIpv4Gateway', + 'DeleteIpv4Gateway', + 'EnableVpcIpv4Gateway', + 'UpdateIpv4GatewayAttribute', + 'ListIpv4Gateways', + 'GetIpv4GatewayAttribute', + ], + ], + [ + 'id' => 78439, + 'title' => 'VPN gateway', + 'type' => 'directory', + 'children' => [ + 'CreateVpnGateway', + 'AssociateVpnGatewayWithCertificate', + 'DeleteVpnGateway', + 'DissociateVpnGatewayWithCertificate', + 'ModifyVpnGatewayAttribute', + 'MoveVpnResourceGroup', + 'DescribeVpnGateway', + 'DescribeVpnGateways', + 'ListVpnCertificateAssociations', + 'DiagnoseVpnGateway', + 'GetVpnGatewayDiagnoseResult', + 'DescribeVpnGatewayAvailableZones', + ], + ], + [ + 'id' => 78460, + 'title' => 'Customer gateway', + 'type' => 'directory', + 'children' => [ + 'CreateCustomerGateway', + 'DeleteCustomerGateway', + 'ModifyCustomerGatewayAttribute', + 'DescribeCustomerGateway', + 'DescribeCustomerGateways', + ], + ], + [ + 'id' => 78681, + 'title' => 'Associate a VPN gateway', + 'type' => 'directory', + 'children' => [ + 'CreateVpnConnection', + 'DeleteVpnConnection', + 'ModifyVpnConnectionAttribute', + 'ModifyTunnelAttribute', + 'DescribeVpnConnection', + 'DescribeVpnConnections', + 'DownloadVpnConnectionConfig', + 'DescribeVpnConnectionLogs', + 'DiagnoseVpnConnections', + [ + 'id' => 78648, + 'title' => 'VPN gateway destination-based route', + 'type' => 'directory', + 'children' => [ + 'CreateVpnRouteEntry', + 'PublishVpnRouteEntry', + 'DeleteVpnRouteEntry', + 'ModifyVpnRouteEntryWeight', + 'DescribeVpnRouteEntries', + ], + ], + [ + 'id' => 78643, + 'title' => 'VPN gateway policy-based route', + 'type' => 'directory', + 'children' => [ + 'CreateVpnPbrRouteEntry', + 'DeleteVpnPbrRouteEntry', + 'ModifyVpnPbrRouteEntryWeight', + 'ModifyVpnPbrRouteEntryPriority', + 'ModifyVpnPbrRouteEntryAttribute', + 'DescribeVpnPbrRouteEntries', + ], + ], + ], + ], + [ + 'id' => 184668, + 'title' => 'Associate transit routers', + 'type' => 'directory', + 'children' => [ + 'CreateVpnAttachment', + 'CreateVcoRouteEntry', + 'DeleteVpnAttachment', + 'DeleteVcoRouteEntry', + 'ModifyVpnAttachmentAttribute', + 'ModifyVcoRouteEntryWeight', + 'DescribeVpnAttachments', + 'DescribeVcoRouteEntries', + 'CheckVpnBgpEnabled', + 'DescribeVpnCrossAccountAuthorizations', + ], + ], + [ + 'id' => 78637, + 'title' => 'SSL-VPN client certificate', + 'type' => 'directory', + 'children' => [ + 'CreateSslVpnClientCert', + 'DeleteSslVpnClientCert', + 'ModifySslVpnClientCert', + 'DescribeSslVpnClientCerts', + 'DescribeSslVpnClientCert', + 'DescribeSslVpnClients', + ], + ], + [ + 'id' => 78631, + 'title' => 'SSL-VPN server', + 'type' => 'directory', + 'children' => [ + 'CreateSslVpnServer', + 'DeleteSslVpnServer', + 'ModifySslVpnServer', + 'DescribeSslVpnServers', + 'DescribeVpnSslServerLogs', + ], + ], + [ + 'id' => 184659, + 'title' => 'IPsec servers', + 'type' => 'directory', + 'children' => [ + 'CreateIpsecServer', + 'DeleteIpsecServer', + 'UpdateIpsecServer', + 'ListIpsecServers', + 'ListIpsecServerLogs', + ], + ], + [ + 'id' => 78692, + 'title' => 'IPv6 gateway', + 'type' => 'directory', + 'children' => [ + 'AllocateIpv6Address', + 'ReleaseIpv6Address', + 'CreateIpv6Gateway', + 'CreateIpv6EgressOnlyRule', + 'DeleteIpv6Gateway', + 'DeleteIpv6EgressOnlyRule', + 'DeleteIpv6InternetBandwidth', + 'ModifyIpv6InternetBandwidth', + 'ModifyIpv6GatewayAttribute', + 'ModifyIpv6AddressAttribute', + 'DescribeIpv6Gateways', + 'DescribeIpv6EgressOnlyRules', + 'DescribeIpv6Addresses', + 'DescribeIpv6GatewayAttribute', + 'AllocateIpv6InternetBandwidth', + ], + ], + [ + 'id' => 185180, + 'title' => 'IPv6 Translator', + 'type' => 'directory', + 'children' => [ + 'CreateIPv6TranslatorAclList', + 'CreateIPv6TranslatorEntry', + 'AddIPv6TranslatorAclListEntry', + 'CreateIPv6Translator', + 'DeleteIPv6TranslatorAclList', + 'DeleteIPv6TranslatorEntry', + 'DeleteIPv6Translator', + 'ModifyIPv6TranslatorAclListEntry', + 'ModifyIPv6TranslatorAclAttribute', + 'ModifyIPv6TranslatorBandwidth', + 'ModifyIPv6TranslatorAttribute', + 'ModifyIPv6TranslatorEntry', + 'DescribeIPv6TranslatorAclLists', + 'DescribeIPv6TranslatorAclListAttributes', + 'DescribeIPv6Translators', + 'DescribeIPv6TranslatorEntries', + 'RemoveIPv6TranslatorAclListEntry', + ], + ], + [ + 'id' => 78391, + 'title' => 'Regions and zones', + 'type' => 'directory', + 'children' => [ + 'DescribeRegions', + 'DescribeZones', + ], + ], + [ + 'id' => 78385, + 'title' => 'Tag', + 'type' => 'directory', + 'children' => [ + 'TagResources', + 'TagResourcesForExpressConnect', + 'UnTagResources', + 'UntagResourcesForExpressConnect', + 'ListTagResources', + 'DescribeTags', + 'DescribeTagKeys', + 'ListTagResourcesForExpressConnect', + 'DescribeTagKeysForExpressConnect', + ], + ], + [ + 'id' => 78583, + 'title' => 'Router interface', + 'type' => 'directory', + 'children' => [ + 'CreateRouterInterface', + 'DeleteRouterInterface', + 'DeleteExpressConnect', + 'ModifyRouterInterfaceAttribute', + 'ModifyRouterInterfaceSpec', + 'DescribeRouterInterfaces', + 'DescribeEcGrantRelation', + 'DescribeRouterInterfaceAttribute', + 'DeactivateRouterInterface', + 'GrantInstanceToVbr', + 'ActivateRouterInterface', + 'RevokeInstanceFromVbr', + 'ConnectRouterInterface', + ], + ], + [ + 'id' => 78466, + 'title' => 'Express cloud connection', + 'type' => 'directory', + 'children' => [ + 'CreateExpressCloudConnection', + 'ModifyExpressCloudConnectionAttribute', + 'ModifyExpressCloudConnectionBandwidth', + ], + ], + [ + 'id' => 78394, + 'title' => 'Instance', + 'type' => 'directory', + 'children' => [ + 'CreateGlobalAccelerationInstance', + 'AddGlobalAccelerationInstanceIp', + 'DeleteGlobalAccelerationInstance', + 'UnassociateGlobalAccelerationInstance', + 'ModifyGlobalAccelerationInstanceAttributes', + 'ModifyGlobalAccelerationInstanceSpec', + 'DescribeGlobalAccelerationInstances', + 'DescribeServerRelatedGlobalAccelerationInstances', + 'RemoveGlobalAccelerationInstanceIp', + ], + ], + [ + 'id' => 78499, + 'title' => 'VPC gateway endpoint', + 'type' => 'directory', + 'children' => [ + 'CreateVpcGatewayEndpoint', + 'DeleteVpcGatewayEndpoint', + 'UpdateVpcGatewayEndpointAttribute', + 'ListVpcEndpointServicesByEndUser', + 'GetVpcGatewayEndpointAttribute', + 'ListVpcGatewayEndpoints', + 'AssociateRouteTablesWithVpcGatewayEndpoint', + 'DissociateRouteTablesFromVpcGatewayEndpoint', + ], + ], + [ + 'id' => 185233, + 'title' => 'Resource group', + 'type' => 'directory', + 'children' => [ + 'MoveResourceGroup', + 'ChangeResourceGroup', + ], + ], + [ + 'id' => 275485, + 'title' => 'Other', + 'type' => 'directory', + 'children' => [ + 'DescribeVpcGrantRulesToEcr', + ], + ], + ], + 'components' => [ + 'schemas' => [], + ], + 'apis' => [ + 'CreateVpc' => [ + 'summary' => 'Creates a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37646', + 'abilityTreeNodes' => [ + 'FEATUREvpcK3NXU2', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the VPC belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the VPC.'."\n" + ."\n" + .'* We recommend using the private IPv4 address specified in RFC 1918 as the primary IPv4 CIDR block of the VPC with a recommended mask length of 16 to 28 bits. For example, 10.0.0.0/16, 172.16.0.0/16, and 192.168.0.0/16.'."\n" + .'* You can also use a custom CIDR block other than 100.64.0.0/10, 224.0.0.0/4, 127.0.0.0/8, 169.254.0.0/16, or their subnets as the primary IPv4 CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.16.0.0/12', + 'default' => '172.16.0.0/12', + ], + ], + [ + 'name' => 'Ipv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 CIDR block of the VPC. If you enable IPv6 for a VPC, the system allocates an IPv6 CIDR block. To specify an IPv6 CIDR block, you must call the [AllocateVpcIpv6Cidr](~~448916~~) operation to reserve the specified IPv6 CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:0:6a::/56', + ], + ], + [ + 'name' => 'VpcName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the VPC.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'EnableIpv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether IPv6 is enabled. Valid values:'."\n" + ."\n" + .'* **false** (default): disabled.'."\n" + .'* **true**: enabled.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the VPC.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is my first Vpc', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n" + ."\n" + .'For more information about resource groups, see [What is a resource group?](~~94475~~)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, but cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'UserCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user CIDR block. Separate user CIDR blocks with commas (,). You can specify up to three user CIDR blocks.'."\n" + ."\n" + .'For more information about user CIDR blocks, see the `What is a user CIDR block?` section in [VPC FAQ](~~185311~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/12', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'Ipv6Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the IPv6 CIDR block of the VPC. Valid values:'."\n" + ."\n" + .'* **BGP** (default)'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaTelecom**'."\n" + ."\n" + .'> If you are allowed to use single-ISP bandwidth, you can set the value to **ChinaTelecom**, **ChinaUnicom**, or **ChinaMobile**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'Ipv4IpamPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP Address Manager (IPAM) pool of the IPv4 type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipam-pool-sycmt3p2a9v63i****', + ], + ], + [ + 'name' => 'Ipv4CidrMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'Allocate VPC from the IPAM address pool by inputting a mask.'."\n" + .'> When creating a VPC with a specified IPAM address pool, at least one of the parameters CidrBlock or Ipv4CidrMask must be provided.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '12', + ], + ], + [ + 'name' => 'EnableDnsHostname', + 'in' => 'query', + 'schema' => [ + 'description' => 'Whether to enable the DNS hostname feature. Values:'."\n" + .'- **false** (default): Not enabled. '."\n" + .'- **true**: Enabled.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Ipv6IpamPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP Address Manager (IPAM) pool of the IPv6 type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipam-pool-bp1aq51kkfh477z03****', + ], + ], + [ + 'name' => 'Ipv6CidrMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'Add an IPv6 CIDR block from the IPAM pool to the VPC by entering a mask.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '56', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The ID of the created VPC.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the created VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp15zckdt37pq72zv****', + ], + 'VRouterId' => [ + 'description' => 'The ID of the vRouter that is automatically created by the system after the VPC is created.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'RouteTableId' => [ + 'description' => 'The ID of the route table that is automatically created by the system after the VPC is created.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp145q7glnuzdv****', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'TOKEN_PROCESSING', + 'errorMessage' => 'Action is processing.', + ], + [ + 'errorCode' => 'InvokeError', + 'errorMessage' => 'instance quota rule invoke error.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified CIDR block is not valid', + ], + [ + 'errorCode' => 'ResourceNotAvailable', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'InvalidVpcName.Malformed', + 'errorMessage' => 'Specified VPC name is not valid.', + ], + [ + 'errorCode' => 'InvalidVpcDiscription.Malformed', + 'errorMessage' => 'Specified VPC description is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.Vpc', + 'errorMessage' => 'VPC quota exceeded.', + ], + [ + 'errorCode' => 'ResourceNotAvailable.Vpc', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'InvalidUserCidr.Quota', + 'errorMessage' => 'Specified UserCidr number is greater than 3.', + ], + [ + 'errorCode' => 'InvalidUserCidr.Malformed', + 'errorMessage' => 'Specified UserCidr overlapping in of 100.64.0.0/10.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6CidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.IPv6CidrNotReserved', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.EnableIpv6', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6Feature', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'System.ServiceBusy', + 'errorMessage' => 'System is busy, please try later.', + ], + [ + 'errorCode' => 'IllegalParam.UserCidr', + 'errorMessage' => 'UserCidr is not a valid or strict address.', + ], + [ + 'errorCode' => 'OperationUnsupported.ResourceGroupId', + 'errorMessage' => 'ResourceGroup is not supported in this region.', + ], + [ + 'errorCode' => 'IllegalParam.EnableIpv6', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIpv6CidrBlock.Malformed', + 'errorMessage' => 'Specified Ipv6CidrBlock is not valid.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv6Isp', + 'errorMessage' => 'The Ipv6Isp feature is not supported.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Ipv6Cidr', + 'errorMessage' => 'The specified resource of Ipv6Cidr is not enough.', + ], + [ + 'errorCode' => 'UnsupportedFeature.IPAM', + 'errorMessage' => 'VPCs cannot be created by using IPAM.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv4CidrMask', + 'errorMessage' => 'The specified Ipv4CidrMask is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.IpamPool', + 'errorMessage' => 'The specified IPAM pool cannot be empty.', + ], + [ + 'errorCode' => 'OperationDenied.RequestRegionInvalid', + 'errorMessage' => 'The operation is not allowed because the request is not invoked in the region of the IPAM pool.', + ], + [ + 'errorCode' => 'OperationDenied.IpamPoolNotInRegion', + 'errorMessage' => 'The operation is not allowed because the IPAM pool not in specific region does not support creating VPC or associating CIDR for VPC.', + ], + [ + 'errorCode' => 'MissingParam.CidrOrCidrMask', + 'errorMessage' => 'The CIDR or CIDR Mask must be input.', + ], + [ + 'errorCode' => 'OperationDenied.CidrInExcludeCidrs', + 'errorMessage' => 'The operation is not allowed because the input CIDR is within the illegal CIDRs.', + ], + [ + 'errorCode' => 'OperationDenied.AvailableCidrInsufficient', + 'errorMessage' => 'The operation is not allowed because available CIDR is insufficient.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipam', + 'errorMessage' => 'IPAM is not supported in this region.', + ], + [ + 'errorCode' => 'OperationDenied.CidrUnavailableInPool', + 'errorMessage' => 'The operation is not allowed because the CIDR is unavailable in the IPAM pool.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlockMask', + 'errorMessage' => 'The param of CidrBlock Mask [%s] is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcDnsHostname', + 'errorMessage' => 'The feature of vpc dns hostname is unsupported.', + ], + [ + 'errorCode' => 'OperationDenied.MaskOfCidrIsNotAllowed', + 'errorMessage' => 'The input mask or mask of the input CIDR is not allowed.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6Isp', + 'errorMessage' => 'The specified Ipv6Isp is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrMask', + 'errorMessage' => 'The input CIDR mask is illegal.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + [ + 'errorCode' => 'UnsupportedFeature.DhcpOptionsSet', + 'errorMessage' => 'The feature of dhcp options set is unsupported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'ResourceNotFound.IpamPool', + 'errorMessage' => 'The dependent IPAM pool is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\",\\n \\"VRouterId\\": \\"vrt-bp1lhl0taikrteen8****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"RouteTableId\\": \\"vtb-bp145q7glnuzdv****\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vpc-bp15zckdt37pq72zv****\\n vrt-bp1lhl0taikrteen8****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n vtb-bp145q7glnuzdv****\\n rg-acfmxazb4ph6aiy****\\n","errorExample":""}]', + 'title' => 'CreateVpc', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* You can specify only one CIDR block for each VPC.'."\n" + ."\n" + .'* After you create a VPC, you cannot change its CIDR block. However, you can add secondary IPv4 CIDR blocks to the VPC.'."\n" + ."\n" + .'* In each VPC, cloud services can use a maximum of 60,000 private IP addresses. You cannot increase the quota.'."\n" + ."\n" + .'* After you create a VPC, a vRouter and a route table are automatically created.'."\n" + ."\n" + .'* At most three user CIDR blocks can be added to a VPC. If a user CIDR block includes another user CIDR block, the one with the shorter subnet mask takes effect. For example, if both 10.0.0.0/8 and 10.1.0.0/16 are specified, only 10.0.0.0/8 takes effect.'."\n" + ."\n" + .'* **CreateVpc** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpcAttribute](~~94565~~) operation to query the status of the task:'."\n" + ."\n" + .' * If the VPC is in the **Creating** state, the VPC is being created.'."\n" + .' * If the VPC is in the **Created** state, the VPC is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteRouteEntry** operation to create default VPCs within a specific time period. However, you can repeatedly call this operation to create custom VPCs within a specific time period.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateDefaultVpc' => [ + 'summary' => 'Creates a default virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the default VPC belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 CIDR block of the default VPC.'."\n" + ."\n" + .'> When **EnableIpv6** is set to **true**, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:346:b600::/56', + ], + ], + [ + 'name' => 'EnableIpv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable IPv6. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmystnjq4****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The ID of the default VPC.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the default VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp15zckdt37pq72zv****', + ], + 'VRouterId' => [ + 'description' => 'The vRouter ID that is automatically created by the system after you create a default VPC.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'RouteTableId' => [ + 'description' => 'The route table ID that is automatically created by the system after you create a default VPC.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp1q1uirugzb1x32m****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'TOKEN_PROCESSING', + 'errorMessage' => 'Action is processing.', + ], + [ + 'errorCode' => 'InvokeError', + 'errorMessage' => 'instance quota rule invoke error.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified CIDR block is not valid', + ], + [ + 'errorCode' => 'ResourceNotAvailable', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'InvalidVpcName.Malformed', + 'errorMessage' => 'Specified VPC name is not valid.', + ], + [ + 'errorCode' => 'InvalidVpcDiscription.Malformed', + 'errorMessage' => 'Specified VPC description is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.Vpc', + 'errorMessage' => 'VPC quota exceeded.', + ], + [ + 'errorCode' => 'ResourceNotAvailable.Vpc', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'InvalidUserCidr.Quota', + 'errorMessage' => 'Specified UserCidr number is greater than 3.', + ], + [ + 'errorCode' => 'InvalidUserCidr.Malformed', + 'errorMessage' => 'Specified UserCidr overlapping in of 100.64.0.0/10.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6CidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.IPv6CidrNotReserved', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.EnableIpv6', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6Feature', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.ZoneId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.DefaultVpcExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\",\\n \\"VRouterId\\": \\"vrt-bp1lhl0taikrteen8****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"RouteTableId\\": \\"vtb-bp1q1uirugzb1x32m****\\"\\n}","type":"json"}]', + 'title' => 'CreateDefaultVpc', + 'description' => '## Usage notes'."\n" + ."\n" + .'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* After you create a default VPC, you cannot change its CIDR block. However, you can add secondary IPv4 CIDR blocks to it.'."\n" + ."\n" + .'* In each default VPC, cloud services can use a maximum of 60,000 private IP addresses. You cannot increase the quota.'."\n" + ."\n" + .'* After you create a default VPC, a vRouter and a route table are automatically created for the VPC.'."\n" + ."\n" + .'* At most three user CIDR blocks can be added to a VPC. If a user CIDR block includes another user CIDR block, the one with the shorter subnet mask takes effect. For example, if 10.0.0.0/8 and 10.1.0.0/16 are specified, only 10.0.0.0/8 takes effect.'."\n" + ."\n" + .'* **CreateDefaultVpc** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpcAttribute](~~94565~~) operation to query the status of the task:'."\n" + ."\n" + .' * If the default VPC is in the **Pending** state, the VPC is being configured.'."\n" + .' * If the default VPC is in the **Available** state, the VPC is available.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateDefaultVpc** operation within a specific time period.'."\n" + ."\n" + .'* You can create only one default VPC in each region.'."\n", + ], + 'GrantInstanceToCen' => [ + 'summary' => 'Grants permissions to a CEN instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the network instance is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-uf6o8d1dj8sjwxi6o****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the network instance. Valid values:'."\n" + ."\n" + .'* **VPC**'."\n" + .'* **VBR**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'CenId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the CEN instance to which you want to grant permissions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cen-7qthudw0ll6jmc****', + ], + ], + [ + 'name' => 'CenOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user ID (UID) of the Apsara Stack tenant account to which the CEN instance belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '123456789', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus', + 'errorMessage' => 'Current Instance status does not support this operation.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'MissingParam.CenInstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.CenInstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Invalid.Grant', + 'errorMessage' => 'Can not grant to other owner cen.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'Specified Instance does not exist.', + ], + [ + 'errorCode' => 'InstanceType.Invalid', + 'errorMessage' => 'Specified type is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.CbnGrantRules', + 'errorMessage' => 'cbn grantRules per instance quota exceed', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVbr.NotFound', + 'errorMessage' => 'Specified vbr does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'GrantInstanceToCen', + 'description' => '* Before you can attach a network instance that belongs to another Alibaba Cloud account to your CEN instance, you must grant permissions to your CEN instance.'."\n" + ."\n" + .'> **GrantInstanceToCen** is a Virtual Private Cloud (VPC) operation. Therefore, you must use the `vpc.aliyuncs.com` domain name to call this operation. The API version is `2016-04-28`.'."\n" + ."\n" + .'* You cannot repeatedly call the **GrantInstanceToCen** operation to grant the permissions on a network instance to a CEN instance. The network instance can be a VPC, a virtual border router (VBR), or a Cloud Connect Network (CCN) instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssociateVpcCidrBlock' => [ + 'summary' => 'Adds a secondary CIDR block to a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which you want to add a secondary CIDR block.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ch-hangzhou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which you want to add a secondary CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-o6wrloqsdqc9io3mg****', + ], + ], + [ + 'name' => 'SecondaryCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv4 CIDR block to be added. Take note of the following requirements:'."\n" + ."\n" + .'* You can specify one of the following standard IPv4 CIDR blocks or their subnets as the secondary IPv4 CIDR block of the VPC: 192.168.0.0/16, 172.16.0.0/12, and 10.0.0.0/8.'."\n" + .'* You can also use a custom CIDR block other than 100.64.0.0/10, 224.0.0.0/4, 127.0.0.0/8, 169.254.0.0/16, or their subnets as the secondary IPv4 CIDR block of the VPC.'."\n" + ."\n" + .'The CIDR block must meet the following requirements:'."\n" + ."\n" + .'* The CIDR block cannot start with 0. The subnet mask must be 8 to 28 bits in length.'."\n" + .'* The CIDR block cannot overlap with the primary CIDR block or an existing secondary CIDR block of the VPC.'."\n" + ."\n" + .'> You must and can specify only one of **SecondaryCidrBlock** and **Ipv6CidrBlock**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/16', + ], + ], + [ + 'name' => 'SecondaryCidrMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'Add an IPv4 CIDR block from the IPAM pool to the VPC by specifying a mask.'."\n" + ."\n" + .'> If you use an IPAM pool, you must specify at least one of SecondaryCidrBlock and SecondaryCidrMask.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '16', + ], + ], + [ + 'name' => 'IPv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 CIDR block that you want to add to the VPC.'."\n" + ."\n" + .'> You can specify only one of **SecondaryCidrBlock** and **Ipv6CidrBlock**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:0:6a::/56', + ], + ], + [ + 'name' => 'Ipv6Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the IPv6 CIDR block. Valid values:'."\n" + ."\n" + .'* **BGP** (default)'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaTelecom**'."\n" + ."\n" + .'> If your Alibaba Cloud account is allowed to activate single-ISP bandwidth, you can set this parameter to **ChinaTelecom**, **ChinaUnicom**, or **ChinaMobile**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The version of the IP address. Valid values:'."\n" + ."\n" + .'* **IPV4**: the IPv4 address.'."\n" + .'* **IPV6**: the IPv6 address. If you set **IpVersion** to **IPV6** and do not specify **SecondaryCidrBlock**, you can add a secondary IPv6 CIDR block to the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPV4', + ], + ], + [ + 'name' => 'IpamPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPAM pool.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipam-pool-sycmt3p2a9v63i****', + ], + ], + [ + 'name' => 'Ipv6CidrMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'Add an IPv6 CIDR block from the IPAM pool to the VPC by entering a mask.'."\n" + ."\n" + .'> To add an IPv6 CIDR block to a VPC, specify at least one of the IPv6CidrBlock and Ipv6CidrMask parameters.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '56', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which you want to add a secondary CIDR block.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ch-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C1221A1F-2ACD-4592-8F27-474E02883159', + ], + 'CidrBlock' => [ + 'description' => 'The IPv4 CIDR block to be added.', + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + 'IpVersion' => [ + 'description' => 'The version of the IP address. Valid values:'."\n" + ."\n" + .'* **IPV4**: the IPv4 address.'."\n" + .'* **IPV6**: the IPv6 address.', + 'type' => 'string', + 'example' => 'IPV4', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVpc.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ParamExclusive.SecondaryCidrAndIpv6Cidr', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.VpcMultiCidr', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.SecondaryCidrOrIpv6Cidr', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.IPv6ULA', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6CidrBlockExisted', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIpv6ULACidrBlock.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceeded.GUAIpv6CidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6CidrType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.OnlyULA', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.SecondaryCidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Duplicated.SecondaryCidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.ConflictWithEntry', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceeded.VpcMultiCidr', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.SecondaryCidrBlockOrIpv6CidrBlock', + 'errorMessage' => 'Either SecondaryCidrBlock or Ipv6CidrBlock must be specified.', + ], + [ + 'errorCode' => 'MissingParam.VpcId', + 'errorMessage' => 'You must specify VpcId.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv6Isp', + 'errorMessage' => 'The Ipv6Isp feature is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.GUAIpv6CidrBlock', + 'errorMessage' => 'The operation is not allowed because this ipv6 CIDR is not reserved.', + ], + [ + 'errorCode' => 'OperationFailed.IPv6CidrNotReserved', + 'errorMessage' => 'Operation failed because this ipv6 cidr is not reserved.', + ], + [ + 'errorCode' => 'InvalidCidrBlock', + 'errorMessage' => 'Specified CIDR block is already exists.', + ], + [ + 'errorCode' => 'IllegalParam.IpamPool', + 'errorMessage' => 'The specified IPAM pool cannot be empty.', + ], + [ + 'errorCode' => 'MissingParam.SecondaryCidrMask', + 'errorMessage' => 'The parameter SecondaryCidrMask must be input.', + ], + [ + 'errorCode' => 'IllegalParam.SecondaryCidrMask', + 'errorMessage' => 'The specified Secondary CIDR Mask is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.RequestRegionInvalid', + 'errorMessage' => 'The operation is not allowed because the request is not invoked in the region of the IPAM pool.', + ], + [ + 'errorCode' => 'OperationDenied.IpamPoolNotInRegion', + 'errorMessage' => 'The operation is not allowed because the IPAM pool not in specific region does not support creating VPC or associating CIDR for VPC.', + ], + [ + 'errorCode' => 'MissingParam.CidrOrCidrMask', + 'errorMessage' => 'The CIDR or CIDR Mask must be input.', + ], + [ + 'errorCode' => 'OperationDenied.CidrInExcludeCidrs', + 'errorMessage' => 'The operation is not allowed because the input CIDR is within the illegal CIDRs.', + ], + [ + 'errorCode' => 'OperationDenied.AvailableCidrInsufficient', + 'errorMessage' => 'The operation is not allowed because available CIDR is insufficient.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipam', + 'errorMessage' => 'IPAM is not supported in this region.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcIpamIpv6', + 'errorMessage' => 'The specified IPAM pool does not support the IPv6 feature.', + ], + [ + 'errorCode' => 'OperationDenied.CidrUnavailableInPool', + 'errorMessage' => 'The operation is not allowed because the CIDR is unavailable in the IPAM pool.', + ], + [ + 'errorCode' => 'InvalidIpv6CidrBlock.Malformed', + 'errorMessage' => 'Param Ipv6CidrBlock is malformed.', + ], + [ + 'errorCode' => 'MissingParam.IpVersion', + 'errorMessage' => 'The parameter IpVersion is missing.', + ], + [ + 'errorCode' => 'Mismatch.IpVersionAndIpamPoolIpVersion', + 'errorMessage' => 'The input IpVersion is inconsistent with the IpVersion of the input IPAM pool.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6CidrBlock', + 'errorMessage' => 'The parameter of Ipv6CidrBlock is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6CidrBlockOverLapped', + 'errorMessage' => 'The input IPv6 CIDR block overlaps with the existing ones.', + ], + [ + 'errorCode' => 'QuotaExceeded.IPv6CidrBlock', + 'errorMessage' => 'The number of IPv6 CIDR blocks in the VPC exceeds the limit.', + ], + [ + 'errorCode' => 'OperationDenied.MaskOfCidrIsNotAllowed', + 'errorMessage' => 'The input mask or mask of the input CIDR is not allowed.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6Isp', + 'errorMessage' => 'The specified Ipv6Isp is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrMask', + 'errorMessage' => 'The input CIDR mask is illegal.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'ResourceNotFound.IpamPool', + 'errorMessage' => 'The dependent IPAM pool is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationFailed.ResourceNotEnough', + 'errorMessage' => 'Insufficient resources.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C1221A1F-2ACD-4592-8F27-474E02883159\\",\\n \\"CidrBlock\\": \\"192.168.0.0/16\\",\\n \\"IpVersion\\": \\"IPV4\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C1221A1F-2ACD-4592-8F27-474E02883159\\n","errorExample":""}]', + 'title' => 'AssociateVpcCidrBlock', + 'description' => '## [](#)'."\n" + ."\n" + .'* Take note of the following limits:'."\n" + ."\n" + .' * Each VPC can contain up to five secondary IPv4 CIDR blocks.'."\n" + .' * Each VPC can contain up to five secondary IPv6 CIDR blocks.'."\n" + ."\n" + .'* You cannot repeatedly call the **AssociateVpcCidrBlock** operation to add secondary CIDR blocks to a VPC within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AllocateVpcIpv6Cidr' => [ + 'summary' => 'Reserves an IPv6 CIDR block.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'Ipv6Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of IPv6 CIDR block. Valid values:'."\n" + ."\n" + .'* **BGP** (default): BGP (Multi-ISP)'."\n" + .'* **BGP_International**: BGP (Multi-ISP) International'."\n" + .'* **ChinaMobile**: China Mobile (Single-ISP)'."\n" + .'* **ChinaUnicom**: China Unicom (Single-ISP)'."\n" + .'* **ChinaTelecom**: China Telecom (Single-ISP)'."\n" + .'* **ChinaMobile_L2**: China Mobile (Single-ISP)_L2'."\n" + .'* **ChinaUnicom_L2**: China Unicom (Single-ISP)_L2'."\n" + .'* **ChinaTelecom_L2**: China Telecom (Single-ISP)_L2'."\n" + .'> * If your account is included in the whitelist, you can set this parameter to one of the following values: **ChinaTelecom**, **ChinaUnicom**, **ChinaMobile**, **ChinaTelecom_L2**, **ChinaUnicom_L2**, **ChinaMobile_L2**, and **BGP_International**.'."\n" + .'> * You can reserve only one IPv6 CIDR block of each type. You can reserve another IPv6 CIDR block only after the existing one is allocated to a VPC.', + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AddressPoolType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the IPv6 address pool. Valid values:'."\n" + ."\n" + .'- **aliyun** (default): IPv6 CIDR block is allocated by the system.'."\n" + ."\n" + .'- **custom**: custom IPv6 CIDR block.', + 'type' => 'string', + 'required' => false, + 'example' => 'custom', + ], + ], + [ + 'name' => 'Ipv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 CIDR block that you want to reserve.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:0:a600::/56', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block that is reserved.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:0:a600::/56', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'D20C13EA-2584-53BC-8393-69DE6D98EFF1', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationUnsupported.Ipv6Feature', + 'errorMessage' => 'The IPv6 feature is not supported in the region.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv6Isp', + 'errorMessage' => 'The Ipv6Isp feature is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.AddressPoolType', + 'errorMessage' => 'The specified addressPoolType is invalid.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Ipv6Cidr', + 'errorMessage' => 'The specified resource ipv6 cidr is not enough.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6Cidr', + 'errorMessage' => 'The specified Ipv6CidrBlock is invalid.', + ], + [ + 'errorCode' => 'Unavailable.Ipv6Cidr', + 'errorMessage' => 'The specified resource ipv6 cidr is not available.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The param of cidrBlock is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:0:a600::/56\\",\\n \\"RequestId\\": \\"D20C13EA-2584-53BC-8393-69DE6D98EFF1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2408:XXXX:0:a600::/56\\n D20C13EA-2584-53BC-8393-69DE6D98EFF1\\n","errorExample":""}]', + 'title' => 'AllocateVpcIpv6Cidr', + 'description' => '# [](#)'."\n" + ."\n" + .'The following section describes how to allocate an IPv6 CIDR block to a virtual private cloud (VPC):'."\n" + ."\n" + .'1. Call the AllocateVpcIpv6Cidr operation to reserve the IPv6 CIDR block.'."\n" + .'2. To allocate an IPv6 CIDR block to an existing VPC, call the [AssociateVpcCidrBlock](~~146745~~) operation. Set **RegionId**, **VpcId**, and **IPv6CidrBlock** to the IPv6 CIDR bock, and set **IpVersion** to **ipv6**. To allocate an IPv6 CIDR block when you create a VPC, call the [CreateVpc](~~35737~~) operation. Set **RegionId** and **Ipv6CidrBlock** to the IPv6 CIDR block, and set **EnableIpv6** to **true**.'."\n", + ], + 'DeleteVpc' => [ + 'summary' => 'Deletes a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp1m7v25emi1h5mtc****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPC is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ForceDelete', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully delete the VPC. Valid values:'."\n" + ."\n" + .'- **true**: yes'."\n" + .'- **false** (default): no'."\n" + ."\n" + .'You can forcefully delete a VPC in the following scenarios:'."\n" + ."\n" + .'- Only an IPv4 gateway and routes that point to the IPv4 gateway exist in the VPC.'."\n" + .'- Only an IPv6 gateway and routes that point to the IPv6 gateway exist in the VPC.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'- **true**: performs a dry run. The system checks the required parameters, request syntax, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'- **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **RequestId** as the **ClientToken**. The **RequestId** may be different for each request.', + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.VpcDhcpStatus', + 'errorMessage' => 'The DhcpOptionsSet status of vpc does not support this operation.', + ], + [ + 'errorCode' => 'DependencyViolation.GatewayEndpoint', + 'errorMessage' => 'The VPC contains endpoints and cannot be deleted.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteEntry', + 'errorMessage' => 'Specified object has dependent resources', + ], + [ + 'errorCode' => 'DependencyViolation.Instance', + 'errorMessage' => 'Specified object has dependent resources', + ], + [ + 'errorCode' => 'DependencyViolation.VSwitch', + 'errorMessage' => 'Specified object has dependent resources', + ], + [ + 'errorCode' => 'DependencyViolation.RouteInterface', + 'errorMessage' => 'Specified object has dependent route interface .', + ], + [ + 'errorCode' => 'DependencyViolation.Tunnel', + 'errorMessage' => 'Specified object has dependent tunnel.', + ], + [ + 'errorCode' => 'DependencyViolation.NatGateway', + 'errorMessage' => 'Specified object has dependent resources NatGateway.', + ], + [ + 'errorCode' => 'DependencyViolation.RouterInterface', + 'errorMessage' => 'Specified object has dependent resources RouterInterface.', + ], + [ + 'errorCode' => 'DependencyViolation.SecurityGroup', + 'errorMessage' => 'Specified object has dependent resources SecurityGroup.', + ], + [ + 'errorCode' => 'Forbidden.VpcNotFound', + 'errorMessage' => 'Specified VPC can not found.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'Active custom route in vpc.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The eip operate too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => 'The VPC has been connected to the classic network ECS. Please cancel the connection before proceeding.', + ], + [ + 'errorCode' => 'IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteTable', + 'errorMessage' => 'Specified object has dependent custom routeTable.', + ], + [ + 'errorCode' => 'DependencyViolation.NetworkAcl', + 'errorMessage' => 'Specified object has dependent resources network acl.', + ], + [ + 'errorCode' => 'DependencyViolation.ClassicLinkInstance', + 'errorMessage' => 'Specified object has active classicLink instance.', + ], + [ + 'errorCode' => 'System.ServiceBusy', + 'errorMessage' => 'System is busy, please try later.', + ], + [ + 'errorCode' => 'DependencyViolation.DhcpOptionsSet', + 'errorMessage' => 'The VPC cannot be deleted when it is associated with dhcpOptionsSet.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found.', + ], + [ + 'errorCode' => 'DependencyViolation.CustomRouteTable', + 'errorMessage' => 'CustomRouteTable already exists.', + ], + [ + 'errorCode' => 'DependencyViolation.Ipv4Gateway', + 'errorMessage' => 'The VPC cannot be deleted when it has ipv4Gateway.', + ], + [ + 'errorCode' => 'DependencyViolation.GatewayRouteTable', + 'errorMessage' => 'Specified object has dependent resources gatewayRouteTable.', + ], + [ + 'errorCode' => 'OperationDenied.VpcPeerExists', + 'errorMessage' => 'The operation is not allowed because the VpcPeer exists.', + ], + [ + 'errorCode' => 'DependencyViolation.AppAccess', + 'errorMessage' => 'Specified object has dependent resources app access.', + ], + [ + 'errorCode' => 'DependencyViolation.OppositeRouterInterface', + 'errorMessage' => 'Failed to delete the VPC because it has peer router interfaces.', + ], + [ + 'errorCode' => 'DependencyViolation.TransitRouter', + 'errorMessage' => 'Specified object has attached to Transit Router.', + ], + [ + 'errorCode' => 'DependencyViolation.Ipv6Gateway', + 'errorMessage' => 'The VPC contains IPv6Gateway and cannot be deleted.', + ], + [ + 'errorCode' => 'DependencyViolation.CloudServiceResource', + 'errorMessage' => 'The VPC contains CloudServiceResource and cannot be deleted.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcDnsHostnameStatus', + 'errorMessage' => 'The DnsHostname status of vpc does not support this operation.', + ], + ], + 403 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The operation is not supported in this status.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DeleteVpc', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* Before you delete a VPC, make sure that all resources deployed in the VPC are released or removed, such as vSwitches, instances, and high-availability virtual IP addresses (HaVips).'."\n" + ."\n" + .'* You can delete only a VPC that is in the **Available** state.'."\n" + ."\n" + .'* The **DeleteVpc** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [DescribeVpcAttribute](~~94565~~) operation to query the status of a VPC:'."\n" + ."\n" + .' * If the VPC is in the **Deleting** state, the VPC is being deleted.'."\n" + .' * If you cannot query the VPC, the VPC is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteVpc** operation to delete a VPC within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RevokeInstanceFromCen' => [ + 'summary' => 'Revokes the permissions granted to a Cloud Enterprise Network (CEN) instance on a network instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the network instance is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-uf6o8d1dj8sjwxi6o****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the network instance. Valid values:'."\n" + ."\n" + .'* **VPC**'."\n" + .'* **VBR**'."\n" + .'* **CCN**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'CenId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the CEN instance to which the network instance is attached.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cen-7qthudw0ll6jmc****', + ], + ], + [ + 'name' => 'CenOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user ID (UID) of the Apsara Stack tenant account to which the CEN instance belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '123456789', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus', + 'errorMessage' => 'Current Instance status does not support this operation.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.InstanceAttachCen', + 'errorMessage' => 'Operation denied because instance association CEN.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'Specified Instance does not exist.', + ], + [ + 'errorCode' => 'InstanceType.Invalid', + 'errorMessage' => 'Specified type is not valid.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'RevokeInstanceFromCen', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'* **RevokeInstanceFromCen** is a Virtual Private Cloud (VPC) operation. Therefore, you must use `vpc.aliyuncs.com` as the domain name when you call this operation. The API version is `2016-04-28`.'."\n" + .'* You cannot repeatedly call the **RevokeInstanceFromCen** operation to revoke the permissions on a network instance that is attached to a CEN instance within the specified period of time. The network instance can be a VPC, virtual border router (VBR), or a Cloud Connect Network (CCN) instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassociateVpcCidrBlock' => [ + 'summary' => 'Removes a secondary CIDR block from a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which the secondary CIDR block to be deleted belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ch-hangzhou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC from which you want to delete a secondary CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-o6wrloqsdqc9io3mg****', + ], + ], + [ + 'name' => 'SecondaryCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The secondary IPv4 CIDR block to be deleted.'."\n" + ."\n" + .'> You must set one of the **SecondaryCidrBlock** and **Ipv6CidrBlock** parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/16', + ], + ], + [ + 'name' => 'IPv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The secondary IPv6 CIDR block to be deleted.'."\n" + ."\n" + .'> You must set one of the **Ipv6CidrBlock** and **SecondaryCidrBlock** parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:0:6a::/56', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which the secondary CIDR block to be deleted belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ch-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C1221A1F-2ACD-4592-8F27-474E02883159', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.Ipv6Gateway', + 'errorMessage' => 'The operation is failed because of ipv6Gateway is in use.', + ], + [ + 'errorCode' => 'InvalidVpc.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ParamExclusive.SecondaryCidrAndIpv6Cidr', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.SecondaryCidrOrIpv6Cidr', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecondaryCidrBlock.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.CidrInUse', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIpv6CidrBlock.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.IpV6VSwitchInuse', + 'errorMessage' => 'Operation failed because some vswitch ipv6 is in use.', + ], + [ + 'errorCode' => 'MissingParam.SecondaryCidrBlockOrIpv6CidrBlock', + 'errorMessage' => 'Either SecondaryCidrBlock or Ipv6CidrBlock must be specified.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C1221A1F-2ACD-4592-8F27-474E02883159\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C1221A1F-2ACD-4592-8F27-474E02883159\\n","errorExample":""}]', + 'title' => 'UnassociateVpcCidrBlock', + 'description' => '* Before you delete a secondary CIDR block from a VPC, delete the vSwitch which is created with the CIDR block. For more information, see [DeleteVSwitch](~~35746~~).'."\n" + .'* You cannot repeatedly call the **UnassociateVpcCidrBlock** operation to delete a secondary CIDR block from a VPC within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVpcAttribute' => [ + 'summary' => 'Modifies the configurations of a specified VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '37912', + 'abilityTreeNodes' => [ + 'FEATUREvpcK3NXU2', + ], + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp1qtbach57ywecf****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the VPC.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is my VPC.', + ], + ], + [ + 'name' => 'VpcName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the VPC.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Vpc-1', + ], + ], + [ + 'name' => 'CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new IPv4 CIDR block of the VPC.'."\n" + ."\n" + .'You can specify a larger or smaller IPv4 CIDR block than the IPv4 CIDR block of the VPC. The subnet mask must be 8 to 28 bits in length. If you specify a smaller IPv4 CIDR block and existing IP addresses do not fall within the CIDR block, the modification fails.'."\n" + ."\n" + .'> If you modify the CIDR block of a VPC, your existing services are not affected.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/24', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'EnableIPv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable IPv6 CIDR blocks. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Ipv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:0:6a::/56', + ], + ], + [ + 'name' => 'Ipv6Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of IPv6 CIDR block. Valid values:'."\n" + ."\n" + .'* **BGP** (default)'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaTelecom**'."\n" + ."\n" + .'> If your Alibaba Cloud account is allowed to activate single-ISP bandwidth, you can set this parameter to **ChinaTelecom**, **ChinaUnicom**, or **ChinaMobile**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'EnableDnsHostname', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether the DNS hostname feature is enabled. Valid values:'."\n" + ."\n" + .'* **false** (default): disabled.'."\n" + .'* **true**: enabled.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '43B72D30-25E1-4FA3-96A8-89374A521D1A', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.VpcNotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'description not valid..', + ], + [ + 'errorCode' => 'InvalidVpcName.Malformed', + 'errorMessage' => 'Specified VPC name is not valid.', + ], + [ + 'errorCode' => 'InvalidVpcDiscription.Malformed', + 'errorMessage' => 'Specified VPC description is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified UserCidr invalid format.', + ], + [ + 'errorCode' => 'InvalidUserCidr.Quota', + 'errorMessage' => 'Specified UserCidr number is greater than 3.', + ], + [ + 'errorCode' => 'InvalidUserCidr.Malformed', + 'errorMessage' => 'Specified UserCidr overlapping in of 100.64.0.0/10.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC name is not valid.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'IllegalCidrBlock', + 'errorMessage' => 'Some subnet cidrBlock is not in the cidrBlock.', + ], + [ + 'errorCode' => 'InvalidRegion.Malformed', + 'errorMessage' => 'Specified RegionId is not vaild.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'OperationUnsupported.DisableIpv6', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6Feature', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ParamExclusive.EnableIpv6AndCidrBlock', + 'errorMessage' => 'EnableIpv6 and CidrBlock is mutually exclusive.', + ], + [ + 'errorCode' => 'OperationFailed.ClassicLinkEnabled', + 'errorMessage' => 'Operation failed because classicLink is enabled.', + ], + [ + 'errorCode' => 'OperationFailed.IpV6VSwitchInuse', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6GatewayInUse', + 'errorMessage' => 'The IPv6 gateway is in use.', + ], + [ + 'errorCode' => 'OperationFailed.QueryCenIpv6Status', + 'errorMessage' => 'Failed to query the IPv6 status of the specified VPC in CEN.', + ], + [ + 'errorCode' => 'OperationUnsupported.CenIpv6Enabled', + 'errorMessage' => 'The IPv6 feature is enabled in CEN.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv6Isp', + 'errorMessage' => 'The Ipv6Isp feature is not supported.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Ipv6Cidr', + 'errorMessage' => 'The specified resource ipv6 cidr is not enough.', + ], + [ + 'errorCode' => 'OperationFailed.IPv6CidrNotReserved', + 'errorMessage' => 'The IPv6 CIDR block is not reserved.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6Cidr', + 'errorMessage' => 'The specified Ipv6CidrBlock is invalid.', + ], + [ + 'errorCode' => 'InvalidIpv6Instance.NotFound', + 'errorMessage' => 'The specified resource of InvalidIpv6Instance is not found.', + ], + [ + 'errorCode' => 'ExclusiveParam.EnableIpv6AndCidrBlock', + 'errorMessage' => 'The param of EnableIpv6 and CidrBlock are mutually exclusive.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcDnsHostname', + 'errorMessage' => 'The feature of vpc dns hostname is unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6RouteEntryUsing', + 'errorMessage' => 'VPC exist IPv6 Route Entry, cannot disable IPv6.', + ], + [ + 'errorCode' => 'OperationFailed.ModifyVpcDnsHostname', + 'errorMessage' => 'Operation failed because DnsHostName resource is in transient state, please try again later.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcDnsHostnameStatus', + 'errorMessage' => 'The DnsHostname status of vpc does not support this operation.', + ], + [ + 'errorCode' => 'OperationFailed.ConflictWithSecondaryCidr', + 'errorMessage' => 'The modified cidr is conflict with the secondary cidr.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"43B72D30-25E1-4FA3-96A8-89374A521D1A\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 43B72D30-25E1-4FA3-96A8-89374A521D1A\\n","errorExample":""}]', + 'title' => 'ModifyVpcAttribute', + 'description' => '## [](#)Description'."\n" + ."\n" + .'You cannot repeatedly call the **ModifyVpcAttribute** operation to modify the name and description of a VPC within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'EnableVpcClassicLink' => [ + 'summary' => 'Enables ClassicLink for a VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC for which you want to enable ClassicLink.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp1m7v25emi1h5mtc****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'Forbidden.EnableClassicLink', + 'errorMessage' => 'the specified resource does not support this operation.', + ], + [ + 'errorCode' => 'RouteConflict.AlreadyExist', + 'errorMessage' => 'Route conflict exists in routing table.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.RouteConflict', + 'errorMessage' => 'Operation failed because a specified route entry is already exist.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'noSubstitutionReason' => '无替代API,历史原因导致该API被标记为弃用。', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'EnableVpcClassicLink', + ], + 'DisableVpcClassicLink' => [ + 'summary' => 'Disables ClassicLink for a VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC for which you want to disable ClassicLink.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC for which you want to disable ClassicLink.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp1m7v25emi1h5mtc****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => 'The VPC has been connected to the classic network ECS. Please cancel the connection before proceeding.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'the specified resource does not support this operation.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + [ + 'errorCode' => 'DependencyViolation.Instance', + 'errorMessage' => 'ClassicLink Instances exist in VPC.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'noSubstitutionReason' => '无替代API,历史原因导致该API被标记为弃用。', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DisableVpcClassicLink', + ], + 'DeletionProtection' => [ + 'summary' => 'Set the deletion protection feature for an instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the instance for which you want to enable deletion protection is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ProtectionEnable', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable deletion protection. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'required' => true, + 'example' => 'true', + ], + ], + [ + 'name' => 'Type', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of instance. Valid values:'."\n" + ."\n" + .'* **EIP**: Elastic IP Address (EIP)'."\n" + .'* **CBWP**: EIP bandwidth plan'."\n" + .'* **NATGW**: NAT gateway'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'EIP', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance for which you want to enable deletion protection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eip-uf6id7gvguruxe41v****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000 ', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the instance for which you want to enable deletion protection is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'BAAEF103-96C4-4454-9210-066F2405F511', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DeletionProtection.ResourceNotExist', + 'errorMessage' => 'The resource is not exist.', + ], + [ + 'errorCode' => 'DeletionProtection.PrePaidNotSupport', + 'errorMessage' => 'The prepaid resource is not support.', + ], + [ + 'errorCode' => 'DeletionProtection.TypeNotSupport', + 'errorMessage' => 'The resource is not support.', + ], + [ + 'errorCode' => 'DeletionProtection.AlreadyEnabled', + 'errorMessage' => 'The resource deletion protection is already enabled.', + ], + [ + 'errorCode' => 'DeletionProtection.OwnerError', + 'errorMessage' => 'The resource owner error.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation ID is not found', + ], + [ + 'errorCode' => 'DeletionProtection.NotExist', + 'errorMessage' => 'The resource deletion protection is not found', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BAAEF103-96C4-4454-9210-066F2405F511\\"\\n}","errorExample":""},{"type":"xml","example":"\\n BAAEF103-96C4-4454-9210-066F2405F511\\n","errorExample":""}]', + 'title' => 'DeletionProtection', + 'description' => 'After you enable deletion protection for an instance, you cannot delete the instance. You must disable deletion protection before you can delete the instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVpcs' => [ + 'summary' => 'Queries virtual private clouds (VPCs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37764', + 'abilityTreeNodes' => [ + 'FEATUREvpcK3NXU2', + ], + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VPC ID.'."\n" + ."\n" + .'You can specify up to 20 VPC IDs. Separate multiple IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1b1xjllp3ve5yze****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpcName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Vpc-1', + ], + ], + [ + 'name' => 'IsDefault', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query the default VPC in the specified region. Valid values:'."\n" + ."\n" + .'* **true** (default)'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system prechecks whether your AccessKey pair is valid, whether the RAM user is authorized, and whether the required parameters are specified. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and VPCs are queried.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the VPC to be queried belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxvfvazb4p****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'VpcOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VPC belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '253460731706911258', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DHCP options set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + ], + [ + 'name' => 'EnableIpv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Query for VPCs in the specified region that have enabled IPv6 CIDR blocks. The value is empty by default, which means no filtering based on IPv6 availability is conducted. Valid values:'."\n" + ."\n" + .'- false: disabled'."\n" + ."\n" + .'- true: enabled', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C6532AA8-D0F7-497F-A8EE-094126D441F5', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Vpcs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Vpc' => [ + 'description' => 'The details of the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the VPC.'."\n", + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the VPC was created.'."\n", + 'type' => 'string', + 'example' => '2021-04-18T15:02:37Z', + ], + 'Status' => [ + 'description' => 'The status of the VPC. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'VpcId' => [ + 'description' => 'The VPC ID.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1qpo0kug3a20qqe****', + ], + 'IsDefault' => [ + 'description' => 'Indicates whether the VPC is the default VPC in the region. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VPC belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '253460731706911258', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the VPC belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'VpcName' => [ + 'description' => 'The name of the VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc1', + ], + 'VRouterId' => [ + 'description' => 'The ID of the vRouter.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1jcg5cmxjbl9xgc****', + ], + 'DhcpOptionsSetStatus' => [ + 'description' => 'The status of the DHCP options set. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **InUse**'."\n" + .'* **Deleted**'."\n" + .'* **Pending**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'CidrBlock' => [ + 'description' => 'The IPv4 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + 'Description' => [ + 'description' => 'The description of the VPC.'."\n", + 'type' => 'string', + 'example' => 'This is my VPC.', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the VPC belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + 'DhcpOptionsSetId' => [ + 'description' => 'The ID of the DHCP options set.'."\n", + 'type' => 'string', + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:0:a600::/56', + ], + 'CenStatus' => [ + 'description' => 'The status of the Cloud Enterprise Network (CEN) instance to which the VPC is attached. **Attached** is returned only if the VPC is attached to a CEN instance.'."\n", + 'type' => 'string', + 'example' => 'Attached', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tag information about the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N.'."\n", + 'type' => 'string', + 'example' => 'env', + ], + 'Value' => [ + 'description' => 'The value of tag N.'."\n", + 'type' => 'string', + 'example' => 'internal', + ], + ], + ], + ], + ], + ], + 'Ipv6CidrBlocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Ipv6Isp' => [ + 'description' => 'The type of IPv6 CIDR block. Valid values:'."\n" + ."\n" + .'* **BGP**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaTelecom**'."\n" + ."\n" + .'> If your Alibaba Cloud account is allowed to activate single-ISP bandwidth, you can set this parameter to **ChinaTelecom**, **ChinaUnicom**, or **ChinaMobile**.'."\n", + 'type' => 'string', + 'example' => 'BGP', + ], + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:0:a600::/56', + ], + ], + ], + ], + ], + ], + 'VSwitchIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The vSwitches in the VPC.'."\n" + ."\n" + .'You can query up to 300 vSwitches in the VPC. The information about the latest vSwitches is returned. If you want to query the information about all vSwitches in a VPC, call the [DescribeVSwitches](~~35748~~) operation.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The vSwitches in the VPC.'."\n" + ."\n" + .'You can query up to 300 vSwitches in the VPC. The information about the latest vSwitches is returned. If you want to query the information about all vSwitches in a VPC, call the [DescribeVSwitches](~~35748~~) operation.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1nhbnpv2blyz8dl****', + ], + ], + ], + ], + 'SecondaryCidrBlocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecondaryCidrBlock' => [ + 'description' => 'The information about the secondary CIDR block.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The secondary CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '192.168.20.0/24', + ], + ], + ], + ], + 'UserCidrs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'UserCidr' => [ + 'description' => 'The list of user CIDR blocks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The list of user CIDR blocks.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/8', + ], + ], + ], + ], + 'NatGatewayIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NatGatewayIds' => [ + 'description' => 'The ID of the Internet NAT gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the Internet NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'nat-245xxxftwt45bg****', + ], + ], + ], + ], + 'RouterTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RouterTableIds' => [ + 'description' => 'The information about the route table.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp1krxxzp0c29fmon****', + ], + ], + ], + ], + 'EnabledIpv6' => [ + 'description' => 'Indicates whether the IPv6 is enabled.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'- false: false'."\n" + ."\n" + .'- true: true', + 'type' => 'boolean', + 'enumValueTitles' => [ + 'false' => 'false', + 'true' => 'true', + ], + 'example' => 'false', + ], + 'DnsHostnameStatus' => [ + 'description' => 'Indicates whether the Domain Name System (DNS) feature is enabled.', + 'type' => 'string', + 'example' => 'DISABLED', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVpcIdNumber.NotSupported', + 'errorMessage' => 'The number of vpcIds exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidAliuid', + 'errorMessage' => 'User Id is not valid.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId.NotFound', + 'errorMessage' => 'The Specified ResourceGroupId not exists.', + ], + [ + 'errorCode' => 'OperationUnsupported.ResourceGroupId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IellgalParameter.OwnerAccount', + 'errorMessage' => 'The specified parameter OwnerAccount is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.OwnerId', + 'errorMessage' => 'The specified parameter VpcOwnerId is not valid.', + ], + [ + 'errorCode' => 'InvalidAccount.NotFound', + 'errorMessage' => 'The account is invalid.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"C6532AA8-D0F7-497F-A8EE-094126D441F5\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"Vpcs\\": {\\n \\"Vpc\\": [\\n {\\n \\"CreationTime\\": \\"2021-04-18T15:02:37Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"VpcId\\": \\"vpc-bp1qpo0kug3a20qqe****\\",\\n \\"IsDefault\\": false,\\n \\"OwnerId\\": 253460731706911260,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"VpcName\\": \\"vpc1\\",\\n \\"VRouterId\\": \\"vrt-bp1jcg5cmxjbl9xgc****\\",\\n \\"DhcpOptionsSetStatus\\": \\"Available\\",\\n \\"CidrBlock\\": \\"192.168.0.0/16\\",\\n \\"Description\\": \\"This is my VPC.\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\",\\n \\"DhcpOptionsSetId\\": \\"dopt-o6w0df4epg9zo8isy****\\",\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:0:a600::/56\\",\\n \\"CenStatus\\": \\"Attached\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"Ipv6CidrBlocks\\": {\\n \\"Ipv6CidrBlock\\": [\\n {\\n \\"Ipv6Isp\\": \\"BGP\\",\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:0:a600::/56\\"\\n }\\n ]\\n },\\n \\"VSwitchIds\\": {\\n \\"VSwitchId\\": [\\n \\"vsw-bp1nhbnpv2blyz8dl****\\"\\n ]\\n },\\n \\"SecondaryCidrBlocks\\": {\\n \\"SecondaryCidrBlock\\": [\\n \\"192.168.20.0/24\\"\\n ]\\n },\\n \\"UserCidrs\\": {\\n \\"UserCidr\\": [\\n \\"10.0.0.0/8\\"\\n ]\\n },\\n \\"NatGatewayIds\\": {\\n \\"NatGatewayIds\\": [\\n \\"nat-245xxxftwt45bg****\\"\\n ]\\n },\\n \\"RouterTableIds\\": {\\n \\"RouterTableIds\\": [\\n \\"vtb-bp1krxxzp0c29fmon****\\"\\n ]\\n },\\n \\"EnabledIpv6\\": false,\\n \\"DnsHostnameStatus\\": \\"DISABLED\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n C6532AA8-D0F7-497F-A8EE-094126D441F5\\n 1\\n 2\\n \\n 2021-04-18T15:02:37Z\\n Available\\n vpc-bp1qpo0kug3a20qqe****\\n false\\n 253460731706911260\\n cn-hangzhou\\n vpc1\\n vrt-bp1jcg5cmxjbl9xgc****\\n Available\\n 192.168.0.0/16\\n This is my VPC.\\n rg-acfmxazb4ph****\\n dopt-o6w0df4epg9zo8isy****\\n 2408:XXXX:0:a600::/56\\n Attached\\n \\n env\\n internal\\n \\n \\n BGP\\n 2408:XXXX:0:a600::/56\\n \\n vsw-bp1nhbnpv2blyz8dl****\\n 192.168.20.0/24\\n 10.0.0.0/8\\n nat-245xxxftwt45bg****\\n vtb-bp1krxxzp0c29fmon****\\n \\n","errorExample":""}]', + 'title' => 'DescribeVpcs', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVpcAttribute' => [ + 'summary' => 'Queries the configuration of a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => [ + 'FEATUREvpcK3NXU2', + ], + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp18sth14qii3pnv****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPC is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IsDefault', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the VPC is the default VPC. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The time when the VPC was created.'."\n", + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the VPC was created.'."\n", + 'type' => 'string', + 'example' => '2021-10-16T07:31:09Z', + ], + 'Status' => [ + 'description' => 'The status of the VPC. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **Pending**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp18sth14qii3pnvo****', + ], + 'IsDefault' => [ + 'description' => 'Indicates whether the VPC is the default VPC. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ClassicLinkEnabled' => [ + 'description' => 'Indicates whether the ClassicLink feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'example' => 'false', + 'deprecated' => true, + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VPC belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '28311773240248****', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the VPC belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'VpcName' => [ + 'description' => 'The name of the VPC.'."\n", + 'type' => 'string', + 'example' => 'doctest2', + ], + 'VRouterId' => [ + 'description' => 'The ID of the vRouter that belongs to the VPC.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1jso6ng1at0ajsc****', + ], + 'DhcpOptionsSetStatus' => [ + 'description' => 'The status of the DHCP options set. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **InUse**'."\n" + .'* **Deleted**'."\n" + .'* **Pending**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'CidrBlock' => [ + 'description' => 'The IPv4 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7486AE4A-129D-43DB-A714-2432C074BA04', + ], + 'Description' => [ + 'description' => 'The description of the VPC.'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazbvgb4ph****', + ], + 'DhcpOptionsSetId' => [ + 'description' => 'The ID of the DHCP options set.'."\n", + 'type' => 'string', + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:0:a600::/56', + ], + 'VSwitchIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The list of vSwitches deployed in the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The list of vSwitches deployed in the VPC.'."\n", + 'type' => 'string', + 'example' => '{"VSwitchId": [ "vsw-bp14cagpfysr29feg****" ]}', + ], + ], + ], + ], + 'UserCidrs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'UserCidr' => [ + 'description' => 'The user CIDR block. Multiple CIDR blocks are separated by commas (,). At most three CIDR blocks are returned.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The user CIDR block. Multiple CIDR blocks are separated by commas (,). At most three CIDR blocks are returned.'."\n", + 'type' => 'string', + 'example' => '172.16.0.1/24', + ], + ], + ], + ], + 'SecondaryCidrBlocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecondaryCidrBlock' => [ + 'description' => 'The secondary IPv4 CIDR block of the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The secondary IPv4 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + ], + ], + ], + 'AssociatedCens' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AssociatedCen' => [ + 'description' => 'The list of Cloud Enterprise Network (CEN) instances to which the VPC is attached.'."\n" + ."\n" + .'If the VPC is not attached to a CEN instance, the parameter is not returned.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CenOwnerId' => [ + 'description' => 'The ID of the account to which the CEN instance belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '28311773240248****', + ], + 'CenId' => [ + 'description' => 'The ID of the CEN instance to which the VPC is attached.'."\n", + 'type' => 'string', + 'example' => 'cen-7qthudw0ll6jmc****', + ], + 'CenStatus' => [ + 'description' => 'The status of the CEN instance.'."\n" + ."\n" + .'**Attached** is returned only when the VPC is attached to a CEN instance.'."\n", + 'type' => 'string', + 'example' => 'Attached', + ], + ], + ], + ], + ], + ], + 'CloudResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CloudResourceSetType' => [ + 'description' => 'The list of resources deployed in the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ResourceCount' => [ + 'description' => 'The number of resources in the VPC.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'ResourceType' => [ + 'description' => 'The type of resource deployed in the VPC. Valid values: Valid values:'."\n" + ."\n" + .'* **VSwitch**'."\n" + .'* **VRouter**'."\n" + .'* **RouteTable**'."\n", + 'type' => 'string', + 'example' => 'VSwitch', + ], + ], + ], + ], + ], + ], + 'Ipv6CidrBlocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Ipv6Isp' => [ + 'description' => 'The IPv6 CIDR block type of the VPC. Valid values:'."\n" + ."\n" + .'* **BGP** (default)'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaTelecom**'."\n" + ."\n" + .'> If you are allowed to use single-ISP bandwidth, valid values are **ChinaTelecom**, **ChinaUnicom**, and **ChinaMobile**'."\n", + 'type' => 'string', + 'example' => 'BGP', + ], + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:0:6a::/56', + ], + ], + ], + ], + ], + ], + 'SupportIpv4Gateway' => [ + 'description' => 'Indicates whether the VPC supports IPv4 gateways.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Ipv4GatewayId' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + 'AssociatedPropagationSources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AssociatedPropagationSources' => [ + 'description' => 'The route source associated with the VPC.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'SourceType' => [ + 'description' => 'The source type.'."\n" + ."\n" + .'* **CEN**'."\n" + .'* **VPN**'."\n" + .'* **TR**'."\n" + .'* **ECR**'."\n", + 'type' => 'string', + 'example' => 'CEN', + ], + 'SourceOwnerId' => [ + 'description' => 'The account ID of the source.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '153980532164****', + ], + 'SourceInstanceId' => [ + 'description' => 'The instance ID of the source.'."\n", + 'type' => 'string', + 'example' => 'cen-dc4vwznpwbobrl****', + ], + 'Status' => [ + 'description' => 'The binding status.'."\n" + ."\n" + .'* **Attaching**'."\n" + .'* **Attached**'."\n" + .'* **Detaching**'."\n", + 'type' => 'string', + 'example' => 'Attaching', + ], + 'RoutePropagated' => [ + 'description' => 'Indicates whether routes are advertised to the VPC.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + 'EnabledIpv6' => [ + 'description' => 'Indicates whether the VPC enables IPv6 .'."\n" + .'- true'."\n" + .'- false', + 'type' => 'boolean', + 'enumValueTitles' => [ + 'false' => 'false', + 'true' => 'true', + ], + 'example' => 'false', + ], + 'DnsHostnameStatus' => [ + 'description' => 'Indicates whether DNS hostname is enabled.', + 'type' => 'string', + 'example' => 'DISABLED', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'Forbidden.VpcNotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"CreationTime\\": \\"2021-10-16T07:31:09Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"VpcId\\": \\"vpc-bp18sth14qii3pnvo****\\",\\n \\"IsDefault\\": false,\\n \\"ClassicLinkEnabled\\": false,\\n \\"OwnerId\\": 0,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"VpcName\\": \\"doctest2\\",\\n \\"VRouterId\\": \\"vrt-bp1jso6ng1at0ajsc****\\",\\n \\"DhcpOptionsSetStatus\\": \\"Available\\",\\n \\"CidrBlock\\": \\"192.168.0.0/16\\",\\n \\"RequestId\\": \\"7486AE4A-129D-43DB-A714-2432C074BA04\\",\\n \\"Description\\": \\"VPC\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazbvgb4ph****\\",\\n \\"DhcpOptionsSetId\\": \\"dopt-o6w0df4epg9zo8isy****\\",\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:0:a600::/56\\",\\n \\"VSwitchIds\\": {\\n \\"VSwitchId\\": [\\n \\"{\\\\\\"VSwitchId\\\\\\": [ \\\\\\"vsw-bp14cagpfysr29feg****\\\\\\" ]}\\"\\n ]\\n },\\n \\"UserCidrs\\": {\\n \\"UserCidr\\": [\\n \\"172.16.0.1/24\\"\\n ]\\n },\\n \\"SecondaryCidrBlocks\\": {\\n \\"SecondaryCidrBlock\\": [\\n \\"192.168.0.0/16\\"\\n ]\\n },\\n \\"AssociatedCens\\": {\\n \\"AssociatedCen\\": [\\n {\\n \\"CenOwnerId\\": 0,\\n \\"CenId\\": \\"cen-7qthudw0ll6jmc****\\",\\n \\"CenStatus\\": \\"Attached\\"\\n }\\n ]\\n },\\n \\"CloudResources\\": {\\n \\"CloudResourceSetType\\": [\\n {\\n \\"ResourceCount\\": 1,\\n \\"ResourceType\\": \\"VSwitch\\"\\n }\\n ]\\n },\\n \\"Ipv6CidrBlocks\\": {\\n \\"Ipv6CidrBlock\\": [\\n {\\n \\"Ipv6Isp\\": \\"BGP\\",\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:0:6a::/56\\"\\n }\\n ]\\n },\\n \\"SupportIpv4Gateway\\": true,\\n \\"Ipv4GatewayId\\": \\"ipv4gw-5tsnc6s4ogsedtp3k****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"AssociatedPropagationSources\\": {\\n \\"AssociatedPropagationSources\\": [\\n {\\n \\"SourceType\\": \\"CEN\\",\\n \\"SourceOwnerId\\": 0,\\n \\"SourceInstanceId\\": \\"cen-dc4vwznpwbobrl****\\",\\n \\"Status\\": \\"Attaching\\",\\n \\"RoutePropagated\\": true\\n }\\n ]\\n },\\n \\"EnabledIpv6\\": false,\\n \\"DnsHostnameStatus\\": \\"DISABLED\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2021-10-16T07:31:09Z\\n Available\\n vpc-bp18sth14qii3pnvo****\\n false\\n false\\n 283117732402484000\\n cn-hangzhou\\n doctest2\\n vrt-bp1jso6ng1at0ajsc****\\n Available\\n 192.168.0.0/16\\n 7486AE4A-129D-43DB-A714-2432C074BA04\\n VPC\\n rg-acfmxazbvgb4ph****\\n dopt-o6w0df4epg9zo8isy****\\n 2408:XXXX:0:a600::/56\\n {\\"VSwitchId\\": [ \\"vsw-bp14cagpfysr29feg****\\" ]}\\n 172.16.0.1/24\\n 192.168.0.0/16\\n \\n 283117732402484000\\n cen-7qthudw0ll6jmc****\\n Attached\\n \\n \\n 1\\n VSwitch\\n \\n \\n BGP\\n 2408:XXXX:0:6a::/56\\n \\n true\\n ipv4gw-5tsnc6s4ogsedtp3k****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n","errorExample":""}]', + 'title' => 'DescribeVpcAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeGrantRulesToCen' => [ + 'summary' => 'Queries cross-account authorization on virtual private clouds (VPCs), virtual border routers (VBRs), and Cloud Connect Network (CCN) instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network instance that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network instance that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp18sth14qii3pnvc****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the network instance. Valid values:'."\n" + ."\n" + .'* **VPC**'."\n" + .'* **VBR**'."\n" + .'* **CCN**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the network instance belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4p**** ', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000 ', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F5BB78C8-5F41-464F-B9FF-5E0A7198BA26', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'CenGrantRules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CbnGrantRule' => [ + 'description' => 'The information about the authorization.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CenInstanceId' => [ + 'description' => 'The ID of the authorized CEN instance.'."\n", + 'type' => 'string', + 'example' => 'cen-9gsm1q2yh1prpt****', + ], + 'CenOwnerId' => [ + 'description' => 'The UID of the Alibaba Cloud account to which the authorized CEN instance belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '132193271328****', + ], + 'CreationTime' => [ + 'description' => 'The time when the instance was created.'."\n", + 'type' => 'string', + 'example' => '2019-11-15T09:26:36Z', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"F5BB78C8-5F41-464F-B9FF-5E0A7198BA26\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"CenGrantRules\\": {\\n \\"CbnGrantRule\\": [\\n {\\n \\"CenInstanceId\\": \\"cen-9gsm1q2yh1prpt****\\",\\n \\"CenOwnerId\\": 0,\\n \\"CreationTime\\": \\"2019-11-15T09:26:36Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n F5BB78C8-5F41-464F-B9FF-5E0A7198BA26\\n 1\\n 1\\n \\n cen-9gsm1q2yh1prpt****\\n 2019-11-15T09:26:36Z\\n \\n","errorExample":""}]', + 'title' => 'DescribeGrantRulesToCen', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVRouterAttribute' => [ + 'summary' => 'Modifies the name and description of a vRouter.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the vRouter.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VRouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The vRouter ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vrt-gw0p7zigake75znix****', + ], + ], + [ + 'name' => 'VRouterName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the vRouter.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VRouter-1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the vRouter.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'My VRouter', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVRouterName.Malformed', + 'errorMessage' => 'Specified virtual router name is not valid.', + ], + [ + 'errorCode' => 'InvalidVRouterDescription.Malformed', + 'errorMessage' => 'Specified virtual router description is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Invalid description.', + ], + [ + 'errorCode' => 'Forbidden.VRouterNotFound', + 'errorMessage' => 'Specified virtual router is not found during access authentication.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVRouterId.NotFound', + 'errorMessage' => 'Specified virtual router does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'ModifyVRouterAttribute', + 'description' => 'You cannot repeatedly call the **ModifyVRouterAttribute** operation within a specific period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVRouters' => [ + 'summary' => 'Queries vRouters in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + ], + 'parameters' => [ + [ + 'name' => 'VRouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vRouter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vrt-bp1lhl0taikrteen****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the vRouter that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VRouters' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VRouter' => [ + 'description' => 'The details about the vRouters.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the vRouter belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-rj905wotv6y030t1****', + ], + 'CreationTime' => [ + 'description' => 'The time when the vRouter was created.'."\n", + 'type' => 'string', + 'example' => '2018-03-22T07:46:20Z', + ], + 'VRouterId' => [ + 'description' => 'The ID of the vRouter.'."\n", + 'type' => 'string', + 'example' => 'vrt-rj98khsezfqpjrxmv****', + ], + 'Description' => [ + 'description' => 'The description of the vRouter.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'VRouterName' => [ + 'description' => 'The name of the vRouter.'."\n", + 'type' => 'string', + 'example' => 'doctest', + ], + 'RegionId' => [ + 'description' => 'The region to which the vRouter belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'RouteTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RouteTableId' => [ + 'description' => 'The IDs of the route tables.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the route table.', + 'type' => 'string', + 'example' => '{ "RouteTableId": [ "vtb-rj9ybe3y0u41mmjsp****"] }', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"VRouters\\": {\\n \\"VRouter\\": [\\n {\\n \\"VpcId\\": \\"vpc-rj905wotv6y030t1****\\",\\n \\"CreationTime\\": \\"2018-03-22T07:46:20Z\\",\\n \\"VRouterId\\": \\"vrt-rj98khsezfqpjrxmv****\\",\\n \\"Description\\": \\"abc\\",\\n \\"VRouterName\\": \\"doctest\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RouteTableIds\\": {\\n \\"RouteTableId\\": [\\n \\"{ \\\\\\"RouteTableId\\\\\\": [ \\\\\\"vtb-rj9ybe3y0u41mmjsp****\\\\\\"] }\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n 1\\n 1\\n \\n vpc-rj905wotv6y030t1****\\n 2018-03-22T07:46:20Z\\n vrt-rj98khsezfqpjrxmv****\\n abc\\n doctest\\n cn-hangzhou\\n { \\"RouteTableId\\": [ \\"vtb-rj9ybe3y0u41mmjsp****\\"] }\\n \\n","errorExample":""}]', + 'title' => 'DescribeVRouters', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListVSwitchCidrReservations' => [ + 'summary' => 'Queries the CIDR reservation information about vSwitches.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be up to 128 characters in length. It cannot start with aliyun or acs:, and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, and cannot start with acs: or aliyun. It cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch for which you want to query reserved CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-25navfgbue4g****', + ], + ], + [ + 'name' => 'VSwitchCidrReservationIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '前缀列表的实例ID', + 'description' => 'The ID of the reserved CIDR block. You can specify at most 10 IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the reserved CIDR block. You can specify at most 10 IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'VSwitchCidrReservationType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the reserved CIDR block. Set the value to **prefix**.'."\n" + ."\n" + .'> When you allocate CIDR blocks, or enable the service to automatically allocate CIDR blocks to elastic network interfaces (ENIs), the CIDR blocks to allocate must fall into the reserved CIDR block. If the reserved CIDR is exhausted, an error message is returned.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prefix', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP version of the reserved CIDR block. Valid values:'."\n" + ."\n" + .'* **IPv4** (default)'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the vSwitch.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'NextToken' => [ + 'description' => 'The returned value of NextToken is a pagination token, which can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + 'MaxResults' => [ + 'description' => 'The number of entries to return per page.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + 'VSwitchCidrReservations' => [ + 'description' => 'A list of reserved CIDR blocks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The virtual private cloud (VPC) to which the reserved CIDR block belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1wdz2pdhgurz1od****', + ], + 'VSwitchId' => [ + 'title' => '交换机实例Id', + 'description' => 'The ID of the vSwitch to which the reserved CIDR block belongs.'."\n", + 'type' => 'string', + 'example' => 'vsw-25navfgbue4g****', + ], + 'VSwitchCidrReservationId' => [ + 'title' => '预留网段实例Id', + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + 'VSwitchCidrReservationCidr' => [ + 'title' => '预留网段CIdrBlock', + 'description' => 'The reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => '192.168.1.64/28', + ], + 'VSwitchCidrReservationName' => [ + 'title' => '预留网段名称', + 'description' => 'The name of the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'ReservationName', + ], + 'VSwitchCidrReservationDescription' => [ + 'title' => '预留网段描述', + 'description' => 'The description of the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'ReservationDescription', + ], + 'IpVersion' => [ + 'title' => 'IpVersion', + 'description' => 'The IP version of the reserved CIDR block. Valid values:'."\n" + ."\n" + .'* **IPv4** (default)'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'example' => 'IPv4', + ], + 'CreationTime' => [ + 'title' => '创建时间', + 'description' => 'The time when the reserved CIDR block was created.'."\n", + 'type' => 'string', + 'example' => '2023-03-14T10:02:37Z', + ], + 'Type' => [ + 'title' => '预留网段类型', + 'description' => 'The type of the reserved CIDR block. Valid value: **prefix**. CIDR blocks are allocated from the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'prefix', + ], + 'AvailableCidrCount' => [ + 'title' => '可用地址段数量', + 'description' => 'The number of available prefixes in the reserved CIDR block.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'AssignedCidrCount' => [ + 'title' => '已使用地址段数量', + 'description' => 'The number of used prefixes in the reserved CIDR block.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '6', + ], + 'Status' => [ + 'description' => 'The status of the reserved CIDR block. Valid values:'."\n" + ."\n" + .'* **Assigning**'."\n" + .'* **Assigned**'."\n" + .'* **Releasing**'."\n" + .'* **Released**'."\n", + 'type' => 'string', + 'example' => 'Assigned', + ], + 'Tags' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 10,\\n \\"MaxResults\\": 10,\\n \\"VSwitchCidrReservations\\": [\\n {\\n \\"VpcId\\": \\"vpc-bp1wdz2pdhgurz1od****\\",\\n \\"VSwitchId\\": \\"vsw-25navfgbue4g****\\",\\n \\"VSwitchCidrReservationId\\": \\"vcr-bp1m12saqteraw3rp****\\",\\n \\"VSwitchCidrReservationCidr\\": \\"192.168.1.64/28\\",\\n \\"VSwitchCidrReservationName\\": \\"ReservationName\\",\\n \\"VSwitchCidrReservationDescription\\": \\"ReservationDescription\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"CreationTime\\": \\"2023-03-14T10:02:37Z\\",\\n \\"Type\\": \\"prefix\\",\\n \\"AvailableCidrCount\\": 10,\\n \\"AssignedCidrCount\\": 6,\\n \\"Status\\": \\"Assigned\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 10\\n 10\\n \\n vpc-bp1wdz2pdhgurz1od****\\n vsw-25navfgbue4g****\\n vcr-bp1m12saqteraw3rp****\\n 192.168.1.64/28\\n ReservationName\\n ReservationDescription\\n IPv4\\n 2023-03-14T10:02:37Z\\n prefix\\n 10\\n 6\\n Assigned\\n \\n","errorExample":""}]', + 'title' => 'ListVSwitchCidrReservations', + ], + 'CreateVSwitchCidrReservation' => [ + 'summary' => 'Creates a reserved CIDR block for a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Resource tags'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with aliyun or acs:, and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot start with acs: or aliyun. It cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which the reserved CIDR block belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vsw-25navfgbue4g****', + ], + ], + [ + 'name' => 'VSwitchCidrReservationName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the reserved CIDR block.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain digits, underscores (\\_), and hyphens (-). It must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ReservationName', + ], + ], + [ + 'name' => 'VSwitchCidrReservationDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the reserved CIDR block. This parameter is empty by default.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ReservationDescription', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP version of the reserved CIDR block. Valid values:'."\n" + ."\n" + .'* **IPv4** (default)'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'VSwitchCidrReservationMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask of the reserved CIDR block.'."\n" + ."\n" + .'* When **IpVersion** is set to **IPv4**, the subnet mask length of the CIDR block must be greater than the IPv4 subnet mask length of the vSwitch and cannot be greater than 28.'."\n" + .'* When **IpVersion** is set to **IPv6**, the subnet mask length of the CIDR block must be greater than the IPv6 subnet mask length of the vSwitch and cannot be greater than 80.'."\n" + ."\n" + .'> You must specify one of **VSwitchCidrReservationMask** and **VSwitchCidrReservationCidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '28', + ], + ], + [ + 'name' => 'VSwitchCidrReservationCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The reserved CIDR block of the vSwitch.'."\n" + ."\n" + .'* When **IpVersion** is set to **IPv4**, the reserved CIDR block must be a proper subset of the IPv4 CIDR block of the vSwitch and the subnet mask length of the reserved CIDR block cannot be greater than 28.'."\n" + .'* When **IpVersion** is set to **IPv6**, the reserved CIDR block must be a proper subset of the IPv6 CIDR block of the vSwitch and the subnet mask length of the reserved CIDR block cannot be greater than 80.'."\n" + ."\n" + .'> You must specify one of **VSwitchCidrReservationMask** and **VSwitchCidrReservationCidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.1.64/28', + ], + ], + [ + 'name' => 'VSwitchCidrReservationType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of reserved CIDR block. Set the value to **prefix**.'."\n" + ."\n" + .'> When a user or a cloud service allocates a CIDR block to an elastic network interface (ENI), the CIDR block must be allocated from the reserved CIDR block. If the reserved CIDR block is exhausted, an error is returned.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prefix', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run, without performing the actual request. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the vSwitch is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchCidrReservationId' => [ + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParamFormat', + 'errorMessage' => 'IllegalParamFormat', + ], + [ + 'errorCode' => 'IllegalParamFormat.VSwitchCidrReservationCidr', + 'errorMessage' => 'The param format of VSwitchCidrReservationCidr is illegal.', + ], + [ + 'errorCode' => 'ResourceNotFound.VSwitch', + 'errorMessage' => 'The specified resource of VSwitch is not found.', + ], + [ + 'errorCode' => 'UnsupportedFeature.ReservedType', + 'errorMessage' => 'The specified ReservedType is not supported.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VSwitchIpv6', + 'errorMessage' => 'The ipv6 feature of switch is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.VSwitchCidrReservationCidr', + 'errorMessage' => 'The specified VSwitchCidrReservationCidr conflicts with existed cidr reservation or vswitch cidr.', + ], + [ + 'errorCode' => 'MissingParam.CidrReservationMaskOrCidrReservationCidr', + 'errorMessage' => 'Either VSwitchCidrReservationMask or VSwitchCidrReservationCidr should be specified.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'UnsupportedRegion', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcAdvancedFeature', + 'errorMessage' => 'UnsupportedFeature.VpcAdvancedFeature', + ], + [ + 'errorCode' => 'QuotaExceeded.CidrReservationCount', + 'errorMessage' => 'The quota of VSwitchCidrReservation is exceeded.', + ], + [ + 'errorCode' => 'Conflict.CidrReservationMaskAndCidrReservationCidr', + 'errorMessage' => 'The specified VSwitchCidrReservationMask and VSwitchCidrReservationCidr is conflict.', + ], + [ + 'errorCode' => 'OperationFailed.CidrNotEnoughInVSwitch', + 'errorMessage' => 'No enough cidr to allocate in this vswitch.', + ], + [ + 'errorCode' => 'OperationFailed.SystemReservedIpContained', + 'errorMessage' => 'The specified VSwitchCidrReservationCidr cannot contain system reserved IP addresses.', + ], + [ + 'errorCode' => 'OperationFailed.AlreadyUsedIpContained', + 'errorMessage' => 'The specified VSwitchCidrReservationCidr cannot contain already used IP addresses.', + ], + [ + 'errorCode' => 'IncorrectStatus.VSWITCH', + 'errorMessage' => 'The status of the specified VSwitch is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.VSwitchCidrReservationMask', + 'errorMessage' => 'The specified VSwitchCidrReservationMask must be at least 2 bits greater than the vSwitch mask.', + ], + [ + 'errorCode' => 'QuotaExceeded.VSwitchCidrReservationMask', + 'errorMessage' => 'The operation is failed because of %s. The mask of the reserved subnet cidr exceeds the current default mask of IP Prefix, %s/%s.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListVSwitchCidrReservations', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"VSwitchCidrReservationId\\": \\"vcr-bp1m12saqteraw3rp****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + 'title' => 'CreateVSwitchCidrReservation', + 'description' => '## [](#)Description'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You can create at most 10 reserved IPv4 CIDR blocks and 10 reserved IPv6 CIDR blocks for each vSwitch in a virtual private cloud (VPC).'."\n" + ."\n" + .'* After you create a reserved CIDR block for a vSwitch, the CIDR block cannot contain the IP address of the subnet gateway of the VPC to which the vSwitch belongs.'."\n" + ."\n" + .'* **CreateVSwitchCidrReservation** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListVSwitchCidrReservations](~~610155~~) to query the status of the task:'."\n" + ."\n" + .' * If the vSwitch is in the **Assigning** state, the reserved CIDR block is being created.'."\n" + .' * If the vSwitch is in the **Assigned** state, the reserved CIDR block is created.'."\n" + ."\n" + .'* When you create a reserved IPv4 CIDR block for a vSwitch, the first IP address and the last three IP addresses of the vSwitch are reserved by the system. The four IP addresses will not be allocated.'."\n" + ."\n" + .'* When you create a reserved IPv6 CIDR block for a vSwitch, the first IP address and the last nine IP addresses of the vSwitch are reserved by the system. The 10 IP addresses will not be allocated. For example, if you create a reserved IPv4 CIDR block for a vSwitch whose CIDR block is 192.168.1.0/24, the reserved CIDR block cannot contain the following IP addresses: 192.168.1.0, 192.168.1.253, 192.168.1.254, and 192.168.1.255.'."\n", + ], + 'GetVSwitchCidrReservationUsage' => [ + 'summary' => 'Queries the usage of a prefix list.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'VSwitchCidrReservationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* If a value is returned for NextToken, specify the value in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the vSwitch.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'NextToken' => [ + 'description' => 'The returned value of NextToken is a pagination token, which can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + 'MaxResults' => [ + 'description' => 'The number of entries to return per page.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + 'CidrReservationUsages' => [ + 'description' => 'A list of reserved CIDR blocks that are in use.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VSwitchCidrReservationId' => [ + 'title' => '预留网段实例Id', + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + 'VSwitchId' => [ + 'title' => '交换机实例Id', + 'description' => 'The ID of the vSwitch to which the reserved CIDR block belongs.'."\n", + 'type' => 'string', + 'example' => 'vsw-25navfgbue4g****', + ], + 'ResourceId' => [ + 'title' => '前缀网段绑定资源的实例Id', + 'description' => 'The ID of the elastic network interface (ENI) whose CIDR block is allocated from the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'eni-bp14v2sdd3v8htln****', + ], + 'ResourceType' => [ + 'title' => '前缀网段绑定资源的类型', + 'description' => 'The type of the resource to which a CIDR block is allocated from the reserved CIDR block. Only **NetworkInterface** may be returned, which indicates an ENI.'."\n", + 'type' => 'string', + 'example' => 'NetworkInterface', + ], + 'IpPrefixId' => [ + 'title' => '前缀网段实例id', + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + 'IpPrefixCidr' => [ + 'description' => 'The CIDR block allocated to the ENI from the reserved CIDR block.'."\n", + 'type' => 'string', + 'example' => '192.168.1.64/28', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.CidrReservation', + 'errorMessage' => 'The specified resource of VSwitchCidrReservation is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 10,\\n \\"MaxResults\\": 10,\\n \\"CidrReservationUsages\\": [\\n {\\n \\"VSwitchCidrReservationId\\": \\"vcr-bp1m12saqteraw3rp****\\",\\n \\"VSwitchId\\": \\"vsw-25navfgbue4g****\\",\\n \\"ResourceId\\": \\"eni-bp14v2sdd3v8htln****\\",\\n \\"ResourceType\\": \\"NetworkInterface\\",\\n \\"IpPrefixId\\": \\"vcr-bp1m12saqteraw3rp****\\",\\n \\"IpPrefixCidr\\": \\"192.168.1.64/28\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 10\\n 10\\n \\n vcr-bp1m12saqteraw3rp****\\n vsw-25navfgbue4g****\\n eni-bp14v2sdd3v8htln****\\n NetworkInterface\\n vcr-bp1m12saqteraw3rp****\\n 192.168.1.64/28\\n \\n","errorExample":""}]', + 'title' => 'GetVSwitchCidrReservationUsage', + ], + 'ModifyVSwitchCidrReservationAttribute' => [ + 'summary' => 'Modifies the name and description of a CIDR block reserved for a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VSwitchCidrReservationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + ], + [ + 'name' => 'VSwitchCidrReservationName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the reserved CIDR block.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ReservationName', + ], + ], + [ + 'name' => 'VSwitchCidrReservationDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the reserved CIDR block. The default value is empty.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ReservationDescription', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the vSwitch is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.CidrReservation', + 'errorMessage' => 'ResourceNotFound.CidrReservation', + ], + [ + 'errorCode' => 'IllegalParamFormat', + 'errorMessage' => 'IllegalParamFormat', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'ModifyVSwitchCidrReservationAttribute', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'You cannot repeatedly call **ModifyVSwitchCidrReservationAttribute** within a specific time period.'."\n", + ], + 'CreateVSwitch' => [ + 'summary' => 'Creates a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, but cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the vSwitch.'."\n" + ."\n" + .'You can call the [DescribeZones](~~36064~~) operation to query the most recent zone list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou-b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the vSwitch.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the vSwitch. Take note of the following limits:'."\n" + ."\n" + .'* The subnet mask of the CIDR block must be 16 to 29 bits in length.'."\n" + .'* The CIDR block of the vSwitch must fall within the CIDR block of the VPC to which the vSwitch belongs.'."\n" + .'* The CIDR block of a vSwitch cannot be the same as the destination CIDR block in a route entry of the VPC. However, it can be a subset of the destination CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '172.16.0.0/24', + ], + ], + [ + 'name' => 'Ipv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The last eight bits of the IPv6 CIDR block of the vSwitch. Valid values: **0** to **255**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '12', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC where you want to create the vSwitch.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-257gqcdfvx6n****', + ], + ], + [ + 'name' => 'VSwitchName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the vSwitch.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vSwitch-1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the vSwitch.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vSwitch', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'VpcIpv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 CIDR block of the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:0:6a::/56', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch.'."\n", + 'type' => 'string', + 'example' => 'vsw-25navfgbue4g****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ResourceConflict', + 'errorMessage' => 'vpc only support one cloud box.', + ], + [ + 'errorCode' => 'OperationFailed.IdempotentTokenProcessing', + 'errorMessage' => 'Action is processing.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Invalid description.', + ], + [ + 'errorCode' => 'InvalidVSwitchName.Malformed', + 'errorMessage' => 'Specified virtual switch name is not valid.', + ], + [ + 'errorCode' => 'InvalidVSwitchDiscription.Malformed', + 'errorMessage' => 'Specified virtual switch description is not valid.', + ], + [ + 'errorCode' => 'Abs.Vpc.InvalidDescription.Malformed', + 'errorMessage' => 'Specified virtual switch name is not valid.', + ], + [ + 'errorCode' => 'MissingParam.vpcId', + 'errorMessage' => 'The parameter vpcId is mandatory.', + ], + [ + 'errorCode' => 'ResourceNotAvailable', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified CIDR block is not valid in VPC.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Overlapped', + 'errorMessage' => 'Specified CIDR block overlapped with other subnets.', + ], + [ + 'errorCode' => 'QuotaExceeded.VSwitch', + 'errorMessage' => 'Virtual switch quota exceeded.', + ], + [ + 'errorCode' => 'IncorrectRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'Some virtual switch is modifying within the same VPC.', + ], + [ + 'errorCode' => 'InvalidCirdrBlock.MaskLength', + 'errorMessage' => 'Specified CIDR block is not valid .', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'CreateVSwitch.IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'VPC.SWITCH.RULE.QUOTA.NOT.EXISTS', + 'errorMessage' => 'vSwitch quota rule not exists.', + ], + [ + 'errorCode' => 'Forbidden.VpcNotFound', + 'errorMessage' => 'Specified VPC can not found.', + ], + [ + 'errorCode' => 'RouteConflict.AlreadyExist', + 'errorMessage' => 'Route conflict exists in routing table.', + ], + [ + 'errorCode' => 'OperationFailed.CidrAcross', + 'errorMessage' => 'Classic link instance cidr must not across.', + ], + [ + 'errorCode' => 'Duplicated.ClientToken', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6CidrBlockExisted', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6CidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.VpcIpv6Disabled', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'OperationFailed.NotifyCenCreate', + 'errorMessage' => 'Failed to notify cen when create vswitch.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'UnsupportedFeature.CloudBoxIpv6', + 'errorMessage' => 'The IPv6 feature is not supported by cloud box.', + ], + [ + 'errorCode' => 'OperationDenied.VpcPeerExist', + 'errorMessage' => 'The operation is not allowed because the VPC peer exists.', + ], + [ + 'errorCode' => 'OperationDenied.CenAttached', + 'errorMessage' => 'The operation is not allowed because the VPC is attached to CEN.', + ], + [ + 'errorCode' => 'OperationDenied.NatgwExist', + 'errorMessage' => 'The operation is not allowed because the NAT gateway exists in VPC.', + ], + [ + 'errorCode' => 'MissingParam.Ipv6CidrBlock', + 'errorMessage' => 'The parameter Ipv6CidrBlock is mandatory.', + ], + [ + 'errorCode' => 'IllegalParam.VpcIpv6CidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.OtherSubnetCreating', + 'errorMessage' => 'The operation is not allowed because the other VSwitch is creating.', + ], + [ + 'errorCode' => 'OperationDenied.VpcPeerExists', + 'errorMessage' => 'The operation is not allowed because the VpcPeer exists.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The param of CidrBlock [%s] is illegal.', + ], + [ + 'errorCode' => 'InvalidStatus.RouteEntry', + 'errorMessage' => 'RouteEntry status error.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'Specified zone does not exist.', + ], + [ + 'errorCode' => 'OperationDenied.ZoneIsDisabled', + 'errorMessage' => 'The specified zone is disabled. You cannot create a vSwitch in a disabled zone.', + ], + ], + 404 => [ + [ + 'errorCode' => 'Invalid.NotExist', + 'errorMessage' => 'witch mask rule not exists.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VSwitchId\\": \\"vsw-25navfgbue4g****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vsw-25navfgbue4g****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'CreateVSwitch', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* You can create at most 150 vSwitches in a virtual private cloud (VPC).'."\n" + ."\n" + .'* The first IP address and last three IP addresses of each vSwitch CIDR block are reserved. For example, if the CIDR block of a vSwitch is 192.168.1.0/24, the IP addresses 192.168.1.0, 192.168.1.253, 192.168.1.254, and 192.168.1.255 are reserved.'."\n" + ."\n" + .'* The number of instances in a vSwitch cannot exceed the remaining capacity of the VPC. The remaining capacity is the difference between 15,000 and the current number of instances.'."\n" + ."\n" + .'* Each instance can belong to only one vSwitch.'."\n" + ."\n" + .'* vSwitches do not support multicast or broadcast.'."\n" + ."\n" + .'* After you create a vSwitch, you cannot modify its CIDR block.'."\n" + ."\n" + .'* **CreateVSwitch** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVSwitchAttributes](~~94567~~) to query the status of the task.'."\n" + ."\n" + .' * If the vSwitch is in the **Pending** state, the vSwitch is being configured.'."\n" + .' * If the vSwitch is in the **Available** state, the vSwitch is available.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateVSwitch** operation to create a vSwitch in a VPC within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateDefaultVSwitch' => [ + 'summary' => 'Creates a default vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the default vSwitch.'."\n" + ."\n" + .'You can call the [DescribeZones](~~36064~~) operation to query the most recent zone list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou-b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the default vSwitch.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The last eight bits of the IPv6 CIDR block of the vSwitch. Valid values: **0** to **255**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '12', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The ID of the default vSwitch.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The ID of the default vSwitch.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1a4b5qhmxftjimq****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Invalid description.', + ], + [ + 'errorCode' => 'InvalidVSwitchName.Malformed', + 'errorMessage' => 'Specified virtual switch name is not valid.', + ], + [ + 'errorCode' => 'InvalidVSwitchDiscription.Malformed', + 'errorMessage' => 'Specified virtual switch description is not valid.', + ], + [ + 'errorCode' => 'Abs.Vpc.InvalidDescription.Malformed', + 'errorMessage' => 'Specified virtual switch name is not valid.', + ], + [ + 'errorCode' => 'ResourceNotAvailable', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified CIDR block is not valid in VPC.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Overlapped', + 'errorMessage' => 'Specified CIDR block overlapped with other subnets.', + ], + [ + 'errorCode' => 'QuotaExceeded.VSwitch', + 'errorMessage' => 'Virtual switch quota exceeded.', + ], + [ + 'errorCode' => 'IncorrectRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'Some virtual switch is modifying within the same VPC.', + ], + [ + 'errorCode' => 'InvalidCirdrBlock.MaskLength', + 'errorMessage' => 'Specified CIDR block is not valid .', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'CreateVSwitch.IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'VPC.SWITCH.RULE.QUOTA.NOT.EXISTS', + 'errorMessage' => 'vSwitch quota rule not exists.', + ], + [ + 'errorCode' => 'Forbidden.VpcNotFound', + 'errorMessage' => 'Specified VPC can not found.', + ], + [ + 'errorCode' => 'RouteConflict.AlreadyExist', + 'errorMessage' => 'Route conflict exists in routing table.', + ], + [ + 'errorCode' => 'OperationFailed.CidrAcross', + 'errorMessage' => 'Classic link instance cidr must not across.', + ], + [ + 'errorCode' => 'Duplicated.ClientToken', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6CidrBlockExisted', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6CidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.VpcIpv6Disabled', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'OperationFailed.DefaultVpcNotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedFeature.CloudBoxIpv6', + 'errorMessage' => 'The IPv6 feature is not supported by cloud box.', + ], + [ + 'errorCode' => 'OperationDenied.VpcPeerExist', + 'errorMessage' => 'The operation is not allowed because the VPC peer exists.', + ], + [ + 'errorCode' => 'OperationDenied.CenAttached', + 'errorMessage' => 'The operation is not allowed because the VPC is attached to CEN.', + ], + [ + 'errorCode' => 'OperationDenied.NatgwExist', + 'errorMessage' => 'The operation is not allowed because the NAT gateway exists in VPC.', + ], + [ + 'errorCode' => 'OperationDenied.OtherSubnetCreating', + 'errorMessage' => 'other subnet is creating', + ], + [ + 'errorCode' => 'OperationFailed.DefaultVSwitchExist', + 'errorMessage' => 'A default vSwitch already exists in the zone.', + ], + [ + 'errorCode' => 'InvalidStatus.RouteEntry', + 'errorMessage' => 'RouteEntry status error.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'Specified zone does not exist.', + ], + [ + 'errorCode' => 'OperationDenied.ZoneIsDisabled', + 'errorMessage' => 'The specified zone is disabled. You cannot create a vSwitch in a disabled zone.', + ], + ], + 404 => [ + [ + 'errorCode' => 'Invalid.NotExist', + 'errorMessage' => 'witch mask rule not exists.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VSwitchId\\": \\"vsw-bp1a4b5qhmxftjimq****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vsw-bp1a4b5qhmxftjimq****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'CreateDefaultVSwitch', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* The first IP address and last three IP addresses of a vSwitch CIDR block are reserved. For example, if the CIDR block of a vSwitch is 192.168.1.0/24, the IP addresses 192.168.1.0, 192.168.1.253, 192.168.1.254, and 192.168.1.255 are reserved.'."\n" + ."\n" + .'* The number of instances in the default vSwitch cannot exceed the remaining number of instances supported by the VPC (15,000 minus the number of existing instances).'."\n" + ."\n" + .'* Default vSwitches do not support multicasting or broadcasting.'."\n" + ."\n" + .'* After you create a default vSwitch, you cannot modify its CIDR block.'."\n" + ."\n" + .'* **CreateDefaultVSwitch** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. You can call the [DescribeVSwitchAttributes](~~94567~~) operation to query the status of a default vSwitch:'."\n" + ."\n" + .' * If a default vSwitch is in the **Pending** state, it is being configured.'."\n" + .' * If a default vSwitch is in the **Available** state, it is available.'."\n" + ."\n" + .'* If a default vSwitch already exists in a region, you cannot call this operation to create a default vSwitch in this region.'."\n" + ."\n" + .'* Before you create a default vSwitch, make sure that a default VPC is created. You can call the [CreateDefaultVpc](~~609152~~) operation to create a default VPC.'."\n", + ], + 'CheckCanAllocateVpcPrivateIpAddress' => [ + 'summary' => 'Checks whether a private IP address in a specified vSwitch is available.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => 'RegionId', + 'description' => 'The region ID of the vSwitch to which the private IP address that you want to query belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VSwitchId', + 'description' => 'The ID of the vSwitch to which the private IP address to be queried belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vsw-m5ew3t46z2drmifnt****', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'title' => 'PrivateIpAddress', + 'description' => 'To query whether a private IP address is available, the private IP address must belong to the vSwitch specified by the **VSwitchId** parameter.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10.0.0.7', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'title' => 'IpVersion', + 'description' => 'The version of the private IP address. Valid values:'."\n" + ."\n" + .'* **ipv4** If you want to query an IPv4 address, this parameter is optional.'."\n" + .'* **ipv6** If you want to query an IPv6 address, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv4', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema object', + 'description' => 'Schema object'."\n", + 'type' => 'object', + 'properties' => [ + 'CanAllocate' => [ + 'description' => 'Indicates whether the private IP address is available. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '93360B0-2969-40BF-8542-EBB34FD358AB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'PARAMETER_ILLEGAL', + 'errorMessage' => 'Parameter illegal.Parameter is ipVersion', + ], + [ + 'errorCode' => 'ResourceNotFound.VSwitchId', + 'errorMessage' => 'The specified resource vswitch is not found.', + ], + [ + 'errorCode' => 'Mismatch.VSwitchAndPrivateIpAddress', + 'errorMessage' => 'The vswitch and privateIpAddress are mismatched.', + ], + [ + 'errorCode' => 'IllegalParam.PrivateIpAddress', + 'errorMessage' => 'The specified PrivateIpAddress is illegal.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"CanAllocate\\": true,\\n \\"RequestId\\": \\"93360B0-2969-40BF-8542-EBB34FD358AB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n 93360B0-2969-40BF-8542-EBB34FD358AB\\n","errorExample":""}]', + 'title' => 'CheckCanAllocateVpcPrivateIpAddress', + ], + 'DeleteVSwitch' => [ + 'summary' => 'Deletes a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '37697', + 'abilityTreeNodes' => [ + 'FEATUREvpc1WY1RZ', + ], + ], + 'parameters' => [ + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-asdfjlna****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the vSwitch.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'- **true**: performs a dry run. The system checks the required parameters, request syntax, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'- **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.OtherSubnetProcessing', + 'errorMessage' => 'other subnet is processing.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'vpc subnet is in middle status.', + ], + [ + 'errorCode' => 'DependencyViolation', + 'errorMessage' => 'Resources deployed in the vSwitch have not been deleted.', + ], + [ + 'errorCode' => 'IncorrectRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'DependencyViolation.HaVip', + 'errorMessage' => 'VSwitch cannot be deleted when there are some HaVip dependent with it.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteTable', + 'errorMessage' => 'VSwitch cannot be deleted when associated with route table', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'DependencyViolation.SNAT', + 'errorMessage' => 'The vswitch cannot be deleted when used by snat.', + ], + [ + 'errorCode' => 'DeleteVSwitch.IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'AttrMismatching.NaclAndBindInstance', + 'errorMessage' => 'The network acl and resource not in same vpc.', + ], + [ + 'errorCode' => 'InvalidResource.NotBinding', + 'errorMessage' => 'The resource has not been binded.', + ], + [ + 'errorCode' => 'DependencyViolation.SnatEntry', + 'errorMessage' => 'VSwitch cannot be deleted when snat entry exist.', + ], + [ + 'errorCode' => 'DependencyViolation.NetworkAcl', + 'errorMessage' => 'VSwitch cannot be deleted when network acl exist.', + ], + [ + 'errorCode' => 'DependencyViolation.EnhancedNatgw', + 'errorMessage' => 'VSwitch cannot be deleted when natgw exist.', + ], + [ + 'errorCode' => 'DependencyViolation.ResourceShare', + 'errorMessage' => 'VSwitch cannot be deleted when resource share exist.', + ], + [ + 'errorCode' => 'OperationFailed.SystemBusy', + 'errorMessage' => 'Operation failed because system is busy.', + ], + [ + 'errorCode' => 'DependencyViolation.MulticastDomain', + 'errorMessage' => 'VSwitch cannot be deleted when associated with multicast domain.', + ], + [ + 'errorCode' => 'DependencyViolation.VSwitchCidrReservation', + 'errorMessage' => 'VSwitch cannot be deleted when vswitch cidr reservation exist.', + ], + [ + 'errorCode' => 'DependencyViolation.CloudService', + 'errorMessage' => 'VSwitch cannot be deleted when uesd by cloud service.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'VSwitch not exist.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6InstanceExist', + 'errorMessage' => 'Operation failed because vswitch has ipv6 instance.', + ], + [ + 'errorCode' => 'DependencyViolation.Ipv6Address', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.%s', + 'errorMessage' => 'The specified resource of [%s] depends on [%s], so the operation cannot be completed.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified instance is not found during access authentication.', + ], + [ + 'errorCode' => 'IncorrectStatus', + 'errorMessage' => 'Vswtich status not stable.', + ], + [ + 'errorCode' => 'DependencyViolation.RouterInterface', + 'errorMessage' => 'Specified object has dependent resources RouterInterface.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'IncorrectVSwitchId', + 'errorMessage' => 'Specified vSwtich instance is not found during access authentication.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'VSwitch not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DeleteVSwitch', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* Before you delete a vSwitch, you must first release or remove all virtual private cloud (VPC) resources, including vSwitches, instances, router interfaces, and high-availability virtual IP addresses (HaVips).'."\n" + ."\n" + .'* You can delete only vSwitches that are in the **Available** state.'."\n" + ."\n" + .'* You cannot delete a vSwitch from a VPC where a vSwitch or a route is being created or deleted.'."\n" + ."\n" + .'* **DeleteVSwitch** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVSwitchAttributes](~~94567~~) operation to query the status of the task:'."\n" + ."\n" + .' * If the vSwitch is in the **Pending** state, the vSwitch is being deleted.'."\n" + .' * If you cannot query the vSwitch, the vSwitch is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteVSwitch** operation to delete a vSwitch within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVSwitchAttribute' => [ + 'summary' => 'Modifies the name and description of a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-25nacdfvue4****', + ], + ], + [ + 'name' => 'VSwitchName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name for the vSwitch.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VSwitch-1', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the vSwitch is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description for the vSwitch.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is my vswitch.', + ], + ], + [ + 'name' => 'Ipv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The last eight bits of the IPv6 CIDR block of the vSwitch. Valid values: **0** to **255**.'."\n" + ."\n" + .'You can set this parameter only when the IPv6 feature is enabled for the virtual private cloud (VPC) to which the vSwitch belongs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'EnableIPv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the IPv6 feature for the vSwitch. Valid values:'."\n" + ."\n" + .'* **true**: enables the IPv6 feature.'."\n" + .'* **false**: disables the IPv6 feature. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'VpcIpv6CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 CIDR block of the VPC to which the vSwitch belongs.'."\n" + ."\n" + .'You can set this parameter only when the IPv6 feature is enabled for the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:312:3e00::/56', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVSwitchName.Malformed', + 'errorMessage' => 'Specified virtual switch name is not valid.', + ], + [ + 'errorCode' => 'InvalidVSwitchDiscription.Malformed', + 'errorMessage' => 'Specified virtual switch description is not valid.', + ], + [ + 'errorCode' => 'Forbidden.VRouterNotFound', + 'errorMessage' => 'specified virtual switch is not found during access authentication.', + ], + [ + 'errorCode' => 'UnsupportedFeature.CloudBoxIpv6', + 'errorMessage' => 'The IPv6 feature is not supported by cloud box.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6InstanceExist', + 'errorMessage' => 'Operation failed because vswitch has ipv6 instance.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcRouteEntry', + 'errorMessage' => 'The status of the specified routeEntry is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.IPv6Disabled', + 'errorMessage' => 'Operation failed because IPv6 is not enabled for the vSwitch.', + ], + [ + 'errorCode' => 'ParamExclusive.DisableIpv6AndIpv6CidrBlock', + 'errorMessage' => 'DisableIpv6 and Ipv6Cidr are mutually exclusive.', + ], + [ + 'errorCode' => 'IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'DependencyViolation.IPv6CidrReservation', + 'errorMessage' => 'The specified resource of [%s] depends on [%s], so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IllegalParam.VpcIpv6CidrBlock', + 'errorMessage' => 'The parameter of VpcIPv6CidrBlock is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6AlreadyEnabled', + 'errorMessage' => 'Operation failed because the IPv6 is enabled already.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6CidrBlockExisted', + 'errorMessage' => 'Operation failed because the specified IPv6 CIDR block is used already.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6CidrBlock', + 'errorMessage' => 'The parameter of Ipv6CidrBlock is illegal.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is wrongly formed.', + ], + [ + 'errorCode' => 'OperationFailed.VpcIpv6Disabled', + 'errorMessage' => 'Operation failed because the VPC has not enabled IPv6.', + ], + [ + 'errorCode' => 'IncorrectStatus.VSwitch', + 'errorMessage' => 'The specified vSwitch status is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6CidrBlockUsed', + 'errorMessage' => 'Operation failed because the specified IPv6 CIDR block is used already.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent. Please wait a moment and try again.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified virtual switch does not exists.', + ], + ], + 500 => [ + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'The system is busy. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\r\\n","errorExample":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n"}]', + 'title' => 'ModifyVSwitchAttribute', + 'description' => '* **ModifyVSwitchAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVSwitchAttributes](~~94567~~) operation to query the status of the task:'."\n" + ."\n" + .' * If the vSwitch is in the **Pending** state, the name and description of the vSwitch are being modified.'."\n" + .' * If the vSwitch is in the **Available** state, the name and description of the vSwitch are modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyVSwitchAttribute** operation to modify the name and description of a vSwitch within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVSwitches' => [ + 'summary' => 'Queries the information about available vSwitches that are used for an internal network.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the vSwitches belong.'."\n" + ."\n" + .'> You must set at least one of **RegionId** and **VpcId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-25cdvfeq58pl****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-23dscddcffvf3****', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone to which the vSwitches belong. You can call the [DescribeZones](~~36064~~) operation to query the most recent zone list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-d', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the vSwitch. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n" + ."\n" + .'> You must set at least one of **RegionId** and **VpcId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VSwitchName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The vSwitch name.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vSwitch', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'IsDefault', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query the default vSwitches in the specified region. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'If you do not set this parameter, the system queries all vSwitches in the specified region by default.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the vSwitch belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'VSwitchOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the vSwitch belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '2546073170691****', + ], + ], + [ + 'name' => 'EnableIpv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query vSwitches with IPv6 enabled in the region. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'If you do not set this parameter, the system queries all vSwitches in the specified region by default.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9A572171-4E27-40D1-BD36-D26C9E71E29E', + ], + 'PageNumber' => [ + 'description' => 'The number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VSwitches' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VSwitch' => [ + 'description' => 'The details about the vSwitch.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the vSwitch belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-257gcdcdq64****', + ], + 'Status' => [ + 'description' => 'The status of the vSwitch. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'CreationTime' => [ + 'description' => 'The time when the vSwitch was created.'."\n", + 'type' => 'string', + 'example' => '2022-01-18T12:43:57Z', + ], + 'IsDefault' => [ + 'description' => 'Indicates whether the vSwitch is the default vSwitch. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'AvailableIpAddressCount' => [ + 'description' => 'The number of available IP addresses in the vSwitch.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'NetworkAclId' => [ + 'description' => 'The ID of the network access control list (ACL).'."\n", + 'type' => 'string', + 'example' => 'nacl-a2do9e413e0spzasx****', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the resource belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '25346073170691****', + ], + 'VSwitchId' => [ + 'description' => 'The vSwitch ID.'."\n", + 'type' => 'string', + 'example' => 'vsw-25bcdxs7pv1****', + ], + 'CidrBlock' => [ + 'description' => 'The IPv4 CIDR block of the vSwitch.'."\n", + 'type' => 'string', + 'example' => '172.16.0.0/24', + ], + 'Description' => [ + 'description' => 'The description of the vSwitch.'."\n", + 'type' => 'string', + 'example' => 'VSwitchDescription', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the vSwitch belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + 'ZoneId' => [ + 'description' => 'The ID of the zone to which the vSwitch belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-d', + ], + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the vSwitch.'."\n", + 'type' => 'string', + 'example' => '2408:4002:10c4:4e03::/64', + ], + 'VSwitchName' => [ + 'description' => 'The vSwitch name.'."\n", + 'type' => 'string', + 'example' => 'vSwitch', + ], + 'ShareType' => [ + 'description' => 'Indicates whether the vSwitch is shared.'."\n" + ."\n" + .'* If no value is returned, the vSwitch is a regular vSwitch.'."\n" + .'* If **Shared** is returned, the vSwitch is shared.'."\n" + .'* If **Sharing** is returned, the vSwitch is being shared.'."\n", + 'type' => 'string', + 'example' => 'Shared', + ], + 'EnabledIpv6' => [ + 'description' => 'Indicates whether IPv6 is enabled for the vSwitch. If you enable IPv6, you must configure an IPv6 CIDR block for the vSwitch. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the vSwitch.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'department', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'dev', + ], + ], + ], + ], + ], + ], + 'RouteTable' => [ + 'description' => 'The information about the route table.'."\n", + 'type' => 'object', + 'properties' => [ + 'RouteTableId' => [ + 'description' => 'The ID of the route table that is associated with the vSwitch.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp145q7glnuzdv****', + ], + 'RouteTableType' => [ + 'description' => 'The type of the route table. Valid values:'."\n" + ."\n" + .'* **System**'."\n" + .'* **Custom**'."\n", + 'type' => 'string', + 'example' => 'System', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.VpcNotFound', + 'errorMessage' => 'Specified VPC can not found.', + ], + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'IellgalParameter.OwnerAccount', + 'errorMessage' => 'The specified parameter OwnerAccount is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.OwnerId', + 'errorMessage' => 'The specified parameter VSwitchOwnerId is not valid.', + ], + [ + 'errorCode' => 'InvalidVpcIdNumber.NotSupported', + 'errorMessage' => 'The number of vpcIds exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidVSwitchIdNumber.NotSupported', + 'errorMessage' => 'The number of vSwitchIds exceeds the limit.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'VSwitch not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"9A572171-4E27-40D1-BD36-D26C9E71E29E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"VSwitches\\": {\\n \\"VSwitch\\": [\\n {\\n \\"VpcId\\": \\"vpc-257gcdcdq64****\\",\\n \\"Status\\": \\"Available\\",\\n \\"CreationTime\\": \\"2022-01-18T12:43:57Z\\",\\n \\"IsDefault\\": true,\\n \\"AvailableIpAddressCount\\": 1,\\n \\"NetworkAclId\\": \\"nacl-a2do9e413e0spzasx****\\",\\n \\"OwnerId\\": 0,\\n \\"VSwitchId\\": \\"vsw-25bcdxs7pv1****\\",\\n \\"CidrBlock\\": \\"172.16.0.0/24\\",\\n \\"Description\\": \\"VSwitchDescription\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-d\\",\\n \\"Ipv6CidrBlock\\": \\"2408:4002:10c4:4e03::/64\\",\\n \\"VSwitchName\\": \\"vSwitch\\",\\n \\"ShareType\\": \\"Shared\\",\\n \\"EnabledIpv6\\": true,\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"department\\",\\n \\"Value\\": \\"dev\\"\\n }\\n ]\\n },\\n \\"RouteTable\\": {\\n \\"RouteTableId\\": \\"vrt-bp145q7glnuzdv****\\",\\n \\"RouteTableType\\": \\"System\\"\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 9A572171-4E27-40D1-BD36-D26C9E71E29E\\n 1\\n 1\\n \\n vpc-257gcdcdq64****\\n Available\\n 2022-01-18T12:43:57Z\\n true\\n 1\\n nacl-a2do9e413e0spzasx****\\n 253460731706911260\\n vsw-25bcdxs7pv1****\\n 172.16.0.0/24\\n VSwitchDescription\\n rg-acfmxazb4ph6aiy****\\n cn-hangzhou-d\\n 2408:4002:10c4:4e03::/64\\n vSwitch\\n Shared\\n true\\n \\n department\\n dev\\n \\n \\n vrt-bp145q7glnuzdv****\\n System\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeVSwitches', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVSwitchAttributes' => [ + 'summary' => 'Queries the detailed information about a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-25naue4g****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends a request and performs a dry run. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The details about the vSwitch.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the vSwitch belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-257gq642n****', + ], + 'Status' => [ + 'description' => 'The status of the vSwitch. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n", + 'type' => 'string', + 'example' => 'Pending', + ], + 'CreationTime' => [ + 'description' => 'The time when the vSwitch was created.'."\n", + 'type' => 'string', + 'example' => '2021-08-22T10:40:25Z', + ], + 'IsDefault' => [ + 'description' => 'Indicates whether the vSwitch is the default vSwitch. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'AvailableIpAddressCount' => [ + 'description' => 'The number of available IP addresses.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '12', + ], + 'NetworkAclId' => [ + 'description' => 'The network access control list (ACL) rules.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the resource belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '287683832402436789', + ], + 'VSwitchId' => [ + 'description' => 'The vSwitch ID.'."\n", + 'type' => 'string', + 'example' => 'vsw-25b7pv15t****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7B48B4B9-1EAD-469F-B488-594DAB4B6A1A', + ], + 'CidrBlock' => [ + 'description' => 'The CIDR block of the vSwitch.'."\n", + 'type' => 'string', + 'example' => '192.168.0.1/24', + ], + 'Description' => [ + 'description' => 'The description of the vSwitch.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the ACL belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + 'ZoneId' => [ + 'description' => 'The ID of the zone to which the vSwitch belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-beijing-a', + ], + 'Ipv6CidrBlock' => [ + 'description' => 'The IPv6 CIDR block of the vSwitch.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:3c5:44e::/64', + ], + 'VSwitchName' => [ + 'description' => 'The vSwitch name.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'ShareType' => [ + 'description' => 'Indicates whether the vSwitch is shared.'."\n" + ."\n" + .'* If no value is returned, the vSwitch is a regular vSwitch.'."\n" + .'* If **Shared** is returned, the vSwitch is shared.'."\n" + .'* If **Sharing** is returned, the vSwitch is being shared.'."\n", + 'type' => 'string', + 'example' => 'Shared', + ], + 'EnabledIpv6' => [ + 'description' => 'Indicates whether IPv6 is enabled for the vSwitch. If you enable IPv6, you must configure the IPv6 CIDR block of the vSwitch. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'RouteTable' => [ + 'description' => 'The information about the route table that is associated with the vSwitch.'."\n", + 'type' => 'object', + 'properties' => [ + 'RouteTableId' => [ + 'description' => 'The ID of the route table that is associated with the vSwitch.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp145q7glnuzdv****', + ], + 'RouteTableType' => [ + 'description' => 'The type of the route table. Valid values:'."\n" + ."\n" + .'* **System**'."\n" + .'* **Custom**'."\n", + 'type' => 'string', + 'example' => 'System', + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'Specified VSwitch can not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpcId\\": \\"vpc-257gq642n****\\",\\n \\"Status\\": \\"Pending\\",\\n \\"CreationTime\\": \\"2021-08-22T10:40:25Z\\",\\n \\"IsDefault\\": false,\\n \\"AvailableIpAddressCount\\": 12,\\n \\"NetworkAclId\\": \\"1\\",\\n \\"OwnerId\\": 0,\\n \\"VSwitchId\\": \\"vsw-25b7pv15t****\\",\\n \\"RequestId\\": \\"7B48B4B9-1EAD-469F-B488-594DAB4B6A1A\\",\\n \\"CidrBlock\\": \\"192.168.0.1/24\\",\\n \\"Description\\": \\"abc\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\",\\n \\"ZoneId\\": \\"cn-beijing-a\\",\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:3c5:44e::/64\\",\\n \\"VSwitchName\\": \\"test\\",\\n \\"ShareType\\": \\"Shared\\",\\n \\"EnabledIpv6\\": true,\\n \\"RouteTable\\": {\\n \\"RouteTableId\\": \\"vtb-bp145q7glnuzdv****\\",\\n \\"RouteTableType\\": \\"System\\"\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n vpc-257gq642n****\\n Pending\\n 2021-08-22T10:40:25Z\\n false\\n 12\\n 1\\n 287683832402436800\\n vsw-25b7pv15t****\\n 7B48B4B9-1EAD-469F-B488-594DAB4B6A1A\\n 192.168.0.1/24\\n abc\\n rg-acfmxazb4ph****\\n cn-beijing-a\\n 2408:XXXX:3c5:44e::/64\\n test\\n Shared\\n \\n vtb-bp145q7glnuzdv****\\n System\\n \\n \\n FinanceDept\\n FinanceJoshua\\n \\n","errorExample":""}]', + 'title' => 'DescribeVSwitchAttributes', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVSwitchCidrReservation' => [ + 'summary' => 'Deletes a reserved CIDR block of a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VSwitchCidrReservationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the reserved CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vcr-bp1m12saqteraw3rp****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the vSwitch is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'**true**: performs a dry run. The system checks the required parameters, request format, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DependencyViolation.IpPrefix', + 'errorMessage' => 'DependencyViolation.IpPrefix', + ], + [ + 'errorCode' => 'IncorrectStatus.CidrReservation', + 'errorMessage' => 'The status of the CIDR reservation is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.CidrReservation', + 'errorMessage' => 'reserve segment not exist.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.CidrReservation', + 'errorMessage' => 'ResourceNotFound.CidrReservation', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListVSwitchCidrReservations', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DeleteVSwitchCidrReservation', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* Before you call this operation, make sure that the IP address allocated to an elastic network interface (ENI) from the reserved CIDR block is deleted. If the IP address of the ENI is not deleted, call [UnassignPrivateIpAddresses](~~85919~~) or [UnassignIpv6Addresses](~~98611~~) to delete the IPv4 or IPv6 address.'."\n" + ."\n" + .'* **DeleteVSwitchCidrReservation** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListVSwitchCidrReservations](~~610155~~) to query the status of the task:'."\n" + ."\n" + .' * If the reserved CIDR block is in the **Releasing** state, it is being released.'."\n" + .' * If the reserved CIDR block is in the **Released** state, it is released.'."\n", + ], + 'CreateRouteEntry' => [ + 'summary' => 'Creates a custom route entry in the route table of a VRouter or virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37635', + 'abilityTreeNodes' => [ + 'FEATUREvpcJSBF65', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table to which you want to add a custom route entry.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vtb-bp145q7glnuzd****', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the custom route entry. Both IPv4 and IPv6 CIDR blocks are supported. Make sure that the destination CIDR block meets the following requirements:'."\n" + ."\n" + .'* The destination CIDR block is not 100.64.0.0/10 or a subset of 100.64.0.0/10.'."\n" + .'* The destination CIDR block of the custom route entry is different from the destination CIDR blocks of other route entries in the same route table.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '192.168.0.0/24', + ], + ], + [ + 'name' => 'NextHopId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the next hop for the custom route.'."\n" + ."\n" + .'> [](#-nexthoptype--ecr-describeexpressconnectrouterassociation--associationid--id)If you set the NextHopType parameter to ECR, call the [DescribeExpressConnectRouterAssociation](~~2712069~~) operation to access the AssociationId and use it as the next hop ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-j6c2fp57q8rr4jlu****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that the value is unique among different requests. The ClientToken value can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001****', + ], + ], + [ + 'name' => 'RouteEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the custom route entry that you want to add.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the custom route entry.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'NextHopType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of next hop of the custom route entry. Valid values:'."\n" + ."\n" + .'* **Instance**: an Elastic Compute Service (ECS) instance. This is the default value.'."\n" + .'* **HaVip**: a high-availability virtual IP address (HaVip).'."\n" + .'* **RouterInterface**: a router interface.'."\n" + .'* **NetworkInterface**: an elastic network interface (ENI).'."\n" + .'* **VpnGateway**: a VPN gateway.'."\n" + .'* **IPv6Gateway**: an IPv6 gateway.'."\n" + .'* **NatGateway**: a NAT gateway.'."\n" + .'* **Attachment**: a transit router.'."\n" + .'* **VpcPeer**: a VPC peering connection.'."\n" + .'* **Ipv4Gateway**: an IPv4 gateway.'."\n" + .'* **GatewayEndpoint**: a gateway endpoint.'."\n" + .'* **Ecr**: an Express Connect Router (ECR).', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'HaVip' => 'HaVip', + 'VpnGateway' => 'VpnGateway', + 'GatewayLoadBalancerEndpoint' => 'GatewayLoadBalancerEndpoint', + 'VpcPeer' => 'VpcPeer', + 'Instance' => 'Instance', + 'NetworkInterface' => 'NetworkInterface', + 'NatGateway' => 'NatGateway', + 'Attachment' => 'Attachment', + 'Ipv4Gateway' => 'Ipv4Gateway', + 'GatewayEndpoint' => 'GatewayEndpoint', + 'Ecr' => 'Ecr', + 'RouterInterface' => 'RouterInterface', + 'IPv6Gateway' => 'IPv6Gateway', + ], + 'example' => 'RouterInterface', + ], + ], + [ + 'name' => 'NextHopList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The next hop list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The next hop list.', + 'type' => 'object', + 'properties' => [ + 'NextHopId' => [ + 'description' => 'The ID of the next hop of the ECMP route.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ri-2zeo3xzyf3cd8r4****', + ], + 'Weight' => [ + 'description' => 'The weight of the next hop of the ECMP route entry.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + 'NextHopType' => [ + 'description' => 'The type of next hop of the ECMP route entry. Set the value to **RouterInterface**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RouterInterface', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the required parameters, request syntax, and limits. If the request fails, an error message is returned. If the request passes the validation, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the check, an HTTP 2xx status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.', + 'type' => 'object', + 'properties' => [ + 'RouteEntryId' => [ + 'description' => 'The ID of the custom route entry.'."\n", + 'type' => 'string', + 'example' => 'rte-sn6vjkioxte1gz83z****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The specified CidrBlock is illegal.', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'Route entry quota exceeded in this route table.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'InvalidCIDRBlock.Duplicate', + 'errorMessage' => 'Specified CIDR block is already exists.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'Current instance status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current virtual switch status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidCidrBlock', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'InvalidNextHop.NotFound', + 'errorMessage' => 'Specified next hop does not exist.', + ], + [ + 'errorCode' => 'InvalidVRouter.NotFound', + 'errorMessage' => 'vRouter not exists.', + ], + [ + 'errorCode' => 'InvalidVPC.NotFound', + 'errorMessage' => 'vpc not exists.', + ], + [ + 'errorCode' => 'InvalidNexthopTypeAndList.BothNull', + 'errorMessage' => 'both nexthopType and nextHopList are null.', + ], + [ + 'errorCode' => 'InvalidNexthopTypeAndList.BothNotNull', + 'errorMessage' => 'both nexthopType and nextHopList are not null.', + ], + [ + 'errorCode' => 'InvalidRouterInterface', + 'errorMessage' => 'invalid router interface.', + ], + [ + 'errorCode' => 'InvalidOppositeRouterType', + 'errorMessage' => 'nexthop list cannot only contain router interface whose opposite router interface is on vbr.', + ], + [ + 'errorCode' => 'InvalidNexthopListSize', + 'errorMessage' => 'nexthop size is illegal. Must be between 2 and 4.', + ], + [ + 'errorCode' => 'InvalidEntryRuleQuota.NotFound', + 'errorMessage' => 'Route entry quota rule not exists.', + ], + [ + 'errorCode' => 'Forbidden.CheckEntryRuleQuota', + 'errorMessage' => 'Route entry quota rule check error.', + ], + [ + 'errorCode' => 'InvalidVBRStatus', + 'errorMessage' => 'invalid virtual border router status.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionBusinessStatus', + 'errorMessage' => 'invalid physical connection business status.', + ], + [ + 'errorCode' => 'InvalidRouterType', + 'errorMessage' => 'Cannot specify nexthop list in vbr\'s route table.', + ], + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'This operation is denied because satus of the specified HaVip is neither Available nor InUse.', + ], + [ + 'errorCode' => 'CountLimitExceed.HaVipRouteEntry', + 'errorMessage' => 'The count of route entry to HaVip in one route table is exceeded.', + ], + [ + 'errorCode' => 'InvalidRouteEntry.Duplicate', + 'errorMessage' => 'The route entry already exist.', + ], + [ + 'errorCode' => 'InvalidParam', + 'errorMessage' => 'The Ecmp routerEntry with router interfaces local vgw vip not match.', + ], + [ + 'errorCode' => 'INVALID_WEIGHT_PARAM', + 'errorMessage' => 'Specified value of weight invalid', + ], + [ + 'errorCode' => 'FORBIDDEN_USE_VPC_AS_INTERNET_GATEWAY', + 'errorMessage' => 'The Specified CIDR must be in vpc CIDR.', + ], + [ + 'errorCode' => 'InvalidNexthop', + 'errorMessage' => 'The Specified nexthop illegal.', + ], + [ + 'errorCode' => 'INVALID_VPC_ID', + 'errorMessage' => 'The Specified VpcId not match.', + ], + [ + 'errorCode' => 'InvalidRouteEntrySize', + 'errorMessage' => 'The Specified routerEntry size not legal.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'InvalidRouteEntry', + 'errorMessage' => 'Specified routeEntry not exist.', + ], + [ + 'errorCode' => 'InvalidDestinationCidrBlock', + 'errorMessage' => 'The specified destinationCidrBlock must not included in black list cidr.', + ], + [ + 'errorCode' => 'Forbidden.VRouterNotFound', + 'errorMessage' => 'Specified virtual switch is not found during access authentication.', + ], + [ + 'errorCode' => 'DefaultValidate.Error', + 'errorMessage' => 'validte fail.', + ], + [ + 'errorCode' => 'Region.NotSupport', + 'errorMessage' => 'The specified region does not currently support nextHopType for networkInterface', + ], + [ + 'errorCode' => 'OperationFailed.NotifyCenCreate', + 'errorMessage' => 'Failed to notify cen when create route entry.', + ], + [ + 'errorCode' => 'Forbidden.PrivateIpNotFound', + 'errorMessage' => 'Private ip address not exist.', + ], + [ + 'errorCode' => 'OperationUnsupported.InactiveMode', + 'errorMessage' => 'Vpc multi scope route only support active standby.', + ], + [ + 'errorCode' => 'InvalidRouteEntryName.Malformed', + 'errorMessage' => 'Specified RouteEntry name is not valid.', + ], + [ + 'errorCode' => 'IncorrectStatus.MultiScopeRiRouteEntry', + 'errorMessage' => 'MultiScope ri status must not in idle.', + ], + [ + 'errorCode' => 'OperationUnsupported.MoreThanOneVpnOrHavip', + 'errorMessage' => 'MultiScope can not support more than one vpn/havip.', + ], + [ + 'errorCode' => 'OperationUnsupported.EcmpRiTypeOrNumber', + 'errorMessage' => 'Emcp entry not supported if vpc-vbr or vbr-vlan ri does not exist.', + ], + [ + 'errorCode' => 'Duplicated.VpcNextHop', + 'errorMessage' => 'Route entry nexthop duplicate.', + ], + [ + 'errorCode' => 'OperationUnsupported.SubRouteTableECMP', + 'errorMessage' => 'Vpc subRouteTable don\'t support ecmp or multiScope.', + ], + [ + 'errorCode' => 'InvalidNexthop.NotFound', + 'errorMessage' => 'VRouterEntry nexthop does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.NextHopId', + 'errorMessage' => 'Instance not exists or not vpc vm.', + ], + [ + 'errorCode' => 'QuotaExceeded.HaVipRouteEntry', + 'errorMessage' => 'Vpc havip route entry quota exceed.', + ], + [ + 'errorCode' => 'InvalidNexthop.DirectEni', + 'errorMessage' => 'The direct Eni cannot be nexthop.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidNexthop', + 'errorMessage' => 'vpc multi scope route must has a enable nexthop.', + ], + [ + 'errorCode' => 'OperationFailed.NotifyCenDelete', + 'errorMessage' => 'Failed to notify cen when delete route entry.', + ], + [ + 'errorCode' => 'InvalidNatGateway.NotFound', + 'errorMessage' => 'Natgateway not exist.', + ], + [ + 'errorCode' => 'OperationFailed.CxpRouteExist', + 'errorMessage' => 'Cxp route alreay existed.', + ], + [ + 'errorCode' => 'OperationFailed.GetEniInfo', + 'errorMessage' => 'Failed to get networkInterface info.', + ], + [ + 'errorCode' => 'OperationUnsupported.InvalidRouterInterfaceType', + 'errorMessage' => 'Only vpc vbr interface support ecmp route.', + ], + [ + 'errorCode' => 'InvalidHaVip.NotFound', + 'errorMessage' => 'The specified HaVip does not exist in the specified region.', + ], + [ + 'errorCode' => 'OperationFailed.MultiScopeType', + 'errorMessage' => 'The specified nexthop type is not support in multiScope.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'QuotaExceeded.VpnRouteEntry', + 'errorMessage' => 'Vpn route entry quota exceeded.', + ], + [ + 'errorCode' => 'InvalidAttachment.NotFound', + 'errorMessage' => 'The attachment is not found.', + ], + [ + 'errorCode' => 'OperationFailed.ActiveNetworkInterfaceNotFound', + 'errorMessage' => 'No active network interface is found on the attachment.', + ], + [ + 'errorCode' => 'InvalidNetworkInterface.NotFound', + 'errorMessage' => 'The network interface is not found on the attachment.', + ], + [ + 'errorCode' => 'OperationFailed.QueryAttachmentInfo', + 'errorMessage' => 'Failed to query attachment information.', + ], + [ + 'errorCode' => 'IllegalParam.AttachmentId', + 'errorMessage' => 'The attachment is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.NotSupportIPV6', + 'errorMessage' => 'The specified next hop does not support IPv6.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6Address', + 'errorMessage' => 'The IPv6 address of the specified next hop is being assigned or deleted.', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6EntryOnPrimaryNetworkInterface', + 'errorMessage' => 'You cannot create IPv6 route entries on a primary network interface.', + ], + [ + 'errorCode' => 'OperationUnsupported.SpecifyIpOnIpv6Entry', + 'errorMessage' => 'You cannot specify the private IP address when you create IPv6 route entries.', + ], + [ + 'errorCode' => 'OperationUnsupported.MutipleIpv6Address', + 'errorMessage' => 'You cannot specify a next hop that has bound multiple IPv6 addresses.', + ], + [ + 'errorCode' => 'OperationDenied.Ipv6EntryOnCustomTable', + 'errorMessage' => 'You cannot create any IPv6 route entry on a custom route table.', + ], + [ + 'errorCode' => 'OperationDenied.CloudBoxVbrEntryAllowedInCustomRouteTable', + 'errorMessage' => 'The operation is not allowed because only the custom routing table can add a routing entry with the next hop pointing to the cloud box type VBR.', + ], + [ + 'errorCode' => 'OperationDenied.RouteTableAssociateNotCloudBoxVSwitch', + 'errorMessage' => 'The operation is not allowed because of the routing table is bound to a non-cloud box type vswitch, and routing entries pointing to the cloud box VBR cannot be added.', + ], + [ + 'errorCode' => 'OperationDenied.VbrMisMatchCloudBox', + 'errorMessage' => 'The operation is not allowed because the routing table is bound to a cloud box vswitch, and routing entries pointing to other cloud box VBRs cannot be added.', + ], + [ + 'errorCode' => 'OperationDenied.VbrIdle', + 'errorMessage' => 'The operation is not allowed because the next hop of the added routing entry is a VBR type RI at the opposite end, which cannot be in an idle state.', + ], + [ + 'errorCode' => 'OperationDenied.RouterInterfaceToDifferentVpc', + 'errorMessage' => 'The operation is not allowed because the router interface is connected to different VPCs.', + ], + [ + 'errorCode' => 'OperationDenied.RouterInterfaceFromDifferentZones', + 'errorMessage' => 'The operation is not allowed because the router interface resides in different zones.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'ResourceNotFound.VpcPeer', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcPeer', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.RouteTableTypeNotPermitted', + 'errorMessage' => 'The operation is not allowed because the type of route table is not permitted.', + ], + [ + 'errorCode' => 'OperationDenied.GatewayRouteTableNotPermitted', + 'errorMessage' => 'The operation is not allowed to create a route pointing to this nextHop type on gateway route table.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcPeerIpv6', + 'errorMessage' => 'IPv6 route entries for VPC peering connections cannot be created in this region.', + ], + [ + 'errorCode' => 'OperationDenied.VpcIpv6NotEnabled', + 'errorMessage' => 'IPv6 has not been enabled for the VPC.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv4Gateway', + 'errorMessage' => 'The status of Ipv4Gateway is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.PrefixList', + 'errorMessage' => 'The specified resource of prefixList is not found.', + ], + [ + 'errorCode' => 'UnsupportedFeature.CreatePrefixListEcmpRouteEntry', + 'errorMessage' => 'The feature of creating ecmp route entry with prefixList is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.RouterInterfaceIpv6NotEnabled', + 'errorMessage' => 'Routerinterface does not support IPv6.', + ], + [ + 'errorCode' => 'OperationDenied.NextHopTypeNotPermitted', + 'errorMessage' => 'The operation is not allowed because the nextHop type is invalid.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.PrefixList', + 'errorMessage' => 'The operation failed because the specified prefixList route entry already exists.', + ], + [ + 'errorCode' => 'OperationFailed.CidrConflictWithPrefixList', + 'errorMessage' => 'The specified CIDR block already exists in a prefixList route entry.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ipv4Gateway', + 'errorMessage' => 'Specified Ipv4Gateway does not exist.', + ], + [ + 'errorCode' => 'Mismatch.HaVipIdAndRouteTableId', + 'errorMessage' => 'The HaVip and RouteTable are mismatched.', + ], + [ + 'errorCode' => 'OperationFailed.OperationLocked', + 'errorMessage' => 'The operation failed because the nextHop instance is in the O&M lock state.', + ], + [ + 'errorCode' => 'Mismatch.Ipv4GatewayIdAndRouteTableId', + 'errorMessage' => 'The specified IPv4Gateway and RouteTable are not matched.', + ], + [ + 'errorCode' => 'OperationUnsupported.DestinationCidrBlockOverlapWithVSwitch', + 'errorMessage' => 'The destination IPv6 network segment specified in the route entry overlaps with the vSwitch network segment.', + ], + [ + 'errorCode' => 'ResourceNotAssociated.Cen', + 'errorMessage' => 'The Vpc and Cen are not associated.', + ], + [ + 'errorCode' => 'IncorrectStatus.CenRelation', + 'errorMessage' => 'The status of Vpc in Cen is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.CenTypeInvalid', + 'errorMessage' => 'The operation is not allowed because of Cen type is invalid..', + ], + [ + 'errorCode' => 'ResourceNotFound.Cen', + 'errorMessage' => 'The specified resource of Cen is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.NetworkInterface', + 'errorMessage' => 'The specified resource of network interface is not found.', + ], + [ + 'errorCode' => 'RouteConflict.AlreadyExist', + 'errorMessage' => 'Route conflict exists in routing table.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouterInterface', + 'errorMessage' => 'The specified RouterInterface status is invalid.', + ], + [ + 'errorCode' => 'InvalidNexthop.UnsupportedEniBizType', + 'errorMessage' => 'The biz type of NetworkInterface is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.RouterInterfaceIpv6', + 'errorMessage' => 'RouterInterface does not support IPv6.', + ], + [ + 'errorCode' => 'InvalidNextHopType', + 'errorMessage' => 'Specified parameter "NextHopType" is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.VbrAttachEcrInMiddleStatus', + 'errorMessage' => 'The operation is not allowed because of VBR attach or detach ECR in middle status.', + ], + [ + 'errorCode' => 'ResourceNotAssociated.Ecr', + 'errorMessage' => 'The ECR is not associated.', + ], + [ + 'errorCode' => 'UnsupportedFeature.RouterInterfaceIpv6', + 'errorMessage' => 'The feature of ipv6 is not supported for the routerInterface.', + ], + [ + 'errorCode' => 'InvalidVpnInstanceId.NotFound', + 'errorMessage' => 'The specified VPN was not found.', + ], + [ + 'errorCode' => 'OperationFailed.ScopeActiveRouteEntryType', + 'errorMessage' => 'Operation failed because the type of the active route entry is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.ScopeStandbyRouteEntryQuota', + 'errorMessage' => 'Operation failed because the quota for standby route entries in the scope has been exceeded.', + ], + [ + 'errorCode' => 'OperationFailed.ScopeActiveRouteEntryQuota', + 'errorMessage' => 'Operation failed because the quota for active route entries in the scope has been exceeded.', + ], + [ + 'errorCode' => 'OperationUnsupported.ScopeInvalidRouteType', + 'errorMessage' => 'The specified route type is unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.EcmpInvalidRouterInterfaceOppositeType', + 'errorMessage' => 'Operation failed because the opposite type of the router interface is invalid for ECMP configuration.', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6EcmpRouteEntry', + 'errorMessage' => 'The EcmpRouteEntry is not supported for IPv6.', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6CidrBlock', + 'errorMessage' => 'The specified IPv6 CIDR block is unsupported.', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6ForVBR', + 'errorMessage' => 'IPv6 route entry is not supported for VirtualBorderRouter.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTableStatus', + 'errorMessage' => 'The status of the specified RouteTable is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidNextHopType', + 'errorMessage' => 'Operation failed because Ecmp routeEntry has more than one ri entry and can only support one non-ri entry.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcAdvancedFeature', + 'errorMessage' => 'The VPC does not support some advanced features.', + ], + [ + 'errorCode' => 'OperationDenied.CreateEcmpForPublishedRouteEntry', + 'errorMessage' => 'Operation denied because of can not create EcmpRouteEntry for published RouteEntry.', + ], + [ + 'errorCode' => 'OperationDenied.TrAttachmentIpv6Disabled', + 'errorMessage' => 'The operation is not allowed because tr attachment Ipv6 is disabled.', + ], + [ + 'errorCode' => 'Mismatch.EniIdAndRouteTableId', + 'errorMessage' => 'The operation is not allowed because eni and route table not in same vpc.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The Description is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.InstanceDismatchCurrentVpc', + 'errorMessage' => 'The specified instance does not exist in current vpc.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Instance not exists or not vpc vm', + ], + [ + 'errorCode' => 'InvalidNatGatewayId.NotFound', + 'errorMessage' => 'Specified value of NatGatewayId is not found in our record.', + ], + [ + 'errorCode' => 'InvalidInstanId.NotFound', + 'errorMessage' => 'Specified instance does not exist.', + ], + [ + 'errorCode' => 'InvalidNextHopId.NotFound', + 'errorMessage' => 'Specified next hop does not exist.', + ], + [ + 'errorCode' => 'InvalidRouteTableId.NotFound', + 'errorMessage' => 'Specified route table does not exist.', + ], + [ + 'errorCode' => 'InvalidHaVipId.NotFound', + 'errorMessage' => 'The specified HaVip does not exist in the specified VPC.', + ], + [ + 'errorCode' => 'InvalidNetworkInterface.NotFound', + 'errorMessage' => 'The specified networkInterface does not exist.', + ], + [ + 'errorCode' => 'InvalidVpc.NotFound', + 'errorMessage' => 'Specified vpc is not found in our record.', + ], + [ + 'errorCode' => 'InvalidIpv6Gateway.NotFound', + 'errorMessage' => 'Specified Ipv6Gateway does not exist.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'VPC.ERROR', + 'errorMessage' => 'error code 500,Internal server error.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv4Gateway', + 'errorMessage' => 'The status of Ipv4Gateway is incorrect.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RouteEntryId\\": \\"rte-sn6vjkioxte1gz83z****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n rte-sn6vjkioxte1gz83z****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'CreateRouteEntry', + 'description' => '* **CreateRouteEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeRouteEntryList](~~138148~~) operation to query the status of the task:'."\n" + ."\n" + .' * If a route is in the **Creating** state, the route is being added.'."\n" + .' * If a route is in the **Created** state, the route is added.'."\n" + ."\n" + .'* You cannot repeatedly call **CreateRouteEntry** within a specific period of time.'."\n" + ."\n" + .'**When you call this operation to add a custom route entry to the route table of a vRouter, take note of the following limits:**'."\n" + ."\n" + .'> When you add a route entry from a prefix list, the quota usage is calculated by adding the number of existing route entries and the maximum number of route entries of the prefix list.'."\n" + ."\n" + .'* A route table can contain up to 200 custom route entries.'."\n" + ."\n" + .'* The destination CIDR block (**DestinationCidrBlock**) of a custom route entry cannot be the same as or be a subset of the CIDR block of a vSwitch in the virtual private cloud (VPC). The destination CIDR block can contain the CIDR block of a vSwitch.'."\n" + ."\n" + .'* The destination CIDR block (**DestinationCidrBlock**) of a custom route entry cannot be 100.64.0.0/10 or a subset of it.'."\n" + ."\n" + .'* The destination CIDR blocks (**DestinationCidrBlock**) of route entries in the same route table must be unique.'."\n" + ."\n" + .'* If you do not include the mask length when you specify the destination CIDR block (**DestinationCidrBlock**), the destination CIDR block is considered a host IP address whose mask length is 32 bits.'."\n" + ."\n" + .'* Multiple custom route entries can point to the same next hop (**NextHopId**).'."\n" + ."\n" + .'* The next hop (**NextHopId**) of a custom route entry must in the same VPC as the route table.'."\n" + ."\n" + .'* Equal-cost multi-path (ECMP) routing can be configured by specifying the **NextHopList** parameter.'."\n" + ."\n" + .' * When you add non-ECMP route entries, you must specify **DestinationCidrBlock**, **NextHopType**, and **NextHopId**, and you must not specify **NextHopList**.'."\n" + .' * When you add route entries for ECMP routing, you must specify **DestinationCidrBlock** and **NextHopList**, and you must not specify **NextHopType** or **NextHopId**.'."\n" + ."\n" + .'**When you call this operation to add a custom route entry to the route table of a VBR, take note of the following limits:**'."\n" + ."\n" + .'* A route table can contain up to 200 custom route entries.'."\n" + .'* **NextHopList** is not supported.'."\n" + .'* The destination CIDR block (**DestinationCidrBlock**) of a custom route entry cannot be 100.64.0.0/10 or a subset of it.'."\n" + .'* The destination CIDR blocks (**DestinationCidrBlock**) of route entries in the same route table must be unique.'."\n" + .'* If you do not include the mask length when you specify the destination CIDR block (**DestinationCidrBlock**), the destination CIDR block is considered a host IP address whose mask length is 32 bits.'."\n" + .'* Multiple custom route entries can point to the same next hop (**NextHopId**).'."\n" + .'* The next hop (**NextHopId**) of a custom route entry must be a router interface associated with the VBR.'."\n" + .'* You can add route entries only when the VBR is in the **Active** state, and the Express Connect circuit associated with the VBR is in the **Enabled** state and is not locked due to overdue payments.'."\n" + .'* Only non-ECMP route entries are supported. When you add non-ECMP route entries, you must specify **DestinationCidrBlock**, **NextHopType**, and **NextHopId**, and you cannot specify **NextHopList**.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateRouteEntries' => [ + 'summary' => 'Adds custom route entries to the route table of a vRouter in a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteEntries', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The routes.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'DstCidrBlock' => [ + 'description' => 'The destination CIDR block of the custom route. IPv4 CIDR blocks, IPv6 CIDR blocks, and prefix lists are supported. You can enter up to 50 destination CIDR blocks. Make sure that the following requirements are met:'."\n" + ."\n" + .'* The destination CIDR block cannot point to 100.64.0.0/10 or belong to 100.64.0.0/10.'."\n" + .'* The destination CIDR block of each route in the route table is unique.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.0.0/24', + ], + 'RouteTableId' => [ + 'description' => 'The ID of the route table to which you want to add custom route s. You can specify at most 50 route table IDs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-bp145q7glnuzd****', + ], + 'IpVersion' => [ + 'description' => 'The IP version. Valid values: You can specify at most 50 IP versions. Valid values:'."\n" + ."\n" + .'* **4**: IPv4'."\n" + .'* **6**: IPv6'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => 'IPv4', + ], + 'NextHop' => [ + 'description' => 'The ID of the next hop for the custom route. You can specify at most 50 instance IDs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-j6c2fp57q8rr4jlu****', + ], + 'NextHopType' => [ + 'description' => 'The type of next hop. You can specify at most 50 next hop types. Valid values:'."\n" + ."\n" + .'* **Instance**: Elastic Compute Service (ECS) instance. This is the default value.'."\n" + .'* **HaVip**: high-availability virtual IP address (HaVip).'."\n" + .'* **RouterInterface**: router interface.'."\n" + .'* **NetworkInterface**: elastic network interface (ENI).'."\n" + .'* **VpnGateway**: VPN gateway.'."\n" + .'* **IPv6Gateway**: IPv6 gateway.'."\n" + .'* **NatGateway**: NAT gateway.'."\n" + .'* **Attachment**: transit router.'."\n" + .'* **VpcPeer**: VPC peering connection.'."\n" + .'* **Ipv4Gateway**: IPv4 gateway.'."\n" + .'* **GatewayEndpoint**: gateway endpoint.'."\n" + .'* **CenBasic**: CEN does not support transfer routers.'."\n" + .'* **Ecr**: Express Connect Router (ECR).', + 'type' => 'string', + 'required' => true, + 'example' => 'RouterInterface', + ], + 'Name' => [ + 'description' => 'The name of the custom route that you want to add. You can specify at most 50 names.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + 'Description' => [ + 'description' => 'The description of the custom route. You can specify at most 50 descriptions.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + 'required' => false, + ], + 'required' => true, + 'maxItems' => 200, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without performing the operation. The system prechecks the required parameters, request syntax, and limits. If the request fails to pass the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the precheck, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The number of completed tasks.'."\n", + 'type' => 'object', + 'properties' => [ + 'SuccessCount' => [ + 'description' => 'The number of custom route entries that were successfully added.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'FailedCount' => [ + 'description' => 'The number of custom route entries that failed to be added.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'FailedRouteEntries' => [ + 'description' => 'The details about the custom route entry that failed to be added.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'DstCidrBlock' => [ + 'description' => 'The destination CIDR block of the custom route entry that failed to be added.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/24', + ], + 'NextHop' => [ + 'description' => 'The ID of the next hop of the custom route entry that failed to be added.'."\n", + 'type' => 'string', + 'example' => 'i-j6c2fp57q8rr4jlu****', + ], + 'FailedCode' => [ + 'description' => 'The error code.'."\n", + 'type' => 'string', + 'example' => 'VPC_ROUTE_ENTRY_CIDR_BLOCK_DUPLICATE', + ], + 'FailedMessage' => [ + 'description' => 'The error message.'."\n", + 'type' => 'string', + 'example' => 'Specified CIDR block is already exists, entry.cidrBlock=xxxx', + ], + ], + ], + ], + 'RouteEntryIds' => [ + 'description' => 'The information about the ID of the custom route entry that was successfully added.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the custom route entry that was successfully added.'."\n", + 'type' => 'string', + 'example' => 'rte-sn6vjkioxte1gz83z****', + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + [ + 'errorCode' => 'MissingParam.RouteTableId', + 'errorMessage' => 'The parameter RouteTableId is missing.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeRouteEntryList', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 5, + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"SuccessCount\\": 2,\\n \\"FailedCount\\": 2,\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"FailedRouteEntries\\": [\\n {\\n \\"DstCidrBlock\\": \\"192.168.0.0/24\\",\\n \\"NextHop\\": \\"i-j6c2fp57q8rr4jlu****\\",\\n \\"FailedCode\\": \\"VPC_ROUTE_ENTRY_CIDR_BLOCK_DUPLICATE\\",\\n \\"FailedMessage\\": \\"Specified CIDR block is already exists, entry.cidrBlock=xxxx\\"\\n }\\n ],\\n \\"RouteEntryIds\\": [\\n \\"rte-sn6vjkioxte1gz83z****\\"\\n ]\\n}","type":"json"}]', + 'title' => 'CreateRouteEntries', + 'description' => '## [](#)References'."\n" + ."\n" + .'* **CreateRouteEntries** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeRouteEntryList](~~138148~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the route entry is in the **Creating** state, the route entry is being created.'."\n" + .' * If the route entry is in the **Created** state, the route entry is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateRouteEntries** operation to create the same route entry within the specified period of time.'."\n" + ."\n" + .'**When you call this operation to add custom route entries to the route table of a vRouter, take note of the following items:**'."\n" + ."\n" + .'* A route table can contain up to 200 custom route entries.'."\n" + .'* The destination CIDR block (**DstCidrBlock**) of a custom route entry cannot be the same as or overlap with the CIDR block of a vSwitch in the VPC.'."\n" + .'* The destination CIDR block (**DstCidrBlock**) of a custom route entry cannot be 100.64.0.0/10 or its subnets.'."\n" + .'* The destination CIDR blocks (**DstCidrBlock**) of route entries in the same route table must be unique.'."\n" + .'* If you do not include the mask length when you specify the destination CIDR block (**DstCidrBlock**), the destination CIDR block is considered a host IP address whose mask length is 32 bits.'."\n" + .'* Multiple custom route entries can point to the same next hop (**NextHop**).'."\n" + .'* The next hop (**NextHop**) of a custom route entry must belong to the same VPC as the route table.'."\n", + ], + 'CreateRouteTable' => [ + 'summary' => 'Creates a custom route table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-zhangjiakou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The ID of the VPC to which the custom route table belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp1qpo0kug3a20qqe****', + ], + ], + [ + 'name' => 'RouteTableName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route table.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'myRouteTable', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the route table.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'AssociateType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the route table. Valid values:'."\n" + ."\n" + .'* **VSwitch** (default): vSwitch route table'."\n" + .'* **Gateway**: gateway route table'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VSwitch', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-zhangjiakou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** in each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '62172DD5-6BAC-45DF-8D44-E11ED28DCAC0', + ], + 'RouteTableId' => [ + 'description' => 'The IDs of the route tables.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature of ipv4Gateway is not supported in the region.', + ], + [ + 'errorCode' => 'InvalidParameter.RouteTableName.Malformed', + 'errorMessage' => 'The specified route table name is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.RouteTable', + 'errorMessage' => 'VPC RouteTable quota exceeded.', + ], + [ + 'errorCode' => 'IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotSupport', + 'errorMessage' => 'The vpc is not support.', + ], + [ + 'errorCode' => 'OperationUnsupported.AdvancedFeature', + 'errorMessage' => 'Advanced features of the vpc is unsupported.', + ], + [ + 'errorCode' => 'QuotaExceeded.GatewayRouteTable', + 'errorMessage' => 'The quota of Gateway Route Table is exceeded.', + ], + [ + 'errorCode' => 'MissingParam.vpcId', + 'errorMessage' => 'The parameter vpcId is mandatory.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of RegionId is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.Action', + 'errorMessage' => 'This vpc feature is not supported in this region', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"62172DD5-6BAC-45DF-8D44-E11ED28DCAC0\\",\\n \\"RouteTableId\\": \\"vtb-bp145q7glnuzdvzu2****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 62172DD5-6BAC-45DF-8D44-E11ED28DCAC0\\n vtb-bp145q7glnuzdvzu2****\\n","errorExample":""}]', + 'title' => 'CreateRouteTable', + 'description' => '* **CreateRouteTable** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the operation in the background. You can call the [DescribeRouteTableList](~~87602~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the custom route table is in the **Creating** state, the custom route table is being created.'."\n" + .' * If the custom route table is in the **Created** state, the custom route table is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateRouteTable** operation within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssociateRouteTable' => [ + 'summary' => 'Associates a custom route table with a vSwitch in the same VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which the route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-25ncdvfaue4****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which the route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DC668356-BCB4-42FD-9BC3-FA2B2E04B634', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.CloudBoxVbrEntryExist', + 'errorMessage' => 'The operation is not allowed because the routing table has a route entry for the next hop to the cloud box VBR.', + ], + [ + 'errorCode' => 'OperationDenied.OtherCloudBoxVbrEntryExist', + 'errorMessage' => 'The operation is not allowed because the routing table has a route entry for the next hop that points to a VBR other than this cloud box.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.RouteTable', + 'errorMessage' => 'The resource has already associated with a routetable.', + ], + [ + 'errorCode' => 'OperationDenied.AssociateGatewayRouteTable', + 'errorMessage' => 'The operation is not allowed because gateway route tables cannot be bound to a vSwitch.', + ], + [ + 'errorCode' => 'OperationDenied.SwitchToSystemRouteTable', + 'errorMessage' => 'The associated route tables cannot be directly changed to system route tables.', + ], + [ + 'errorCode' => 'ResourceNotFound.VSwitch', + 'errorMessage' => 'The specified resource of VSwitch is not found.', + ], + [ + 'errorCode' => 'InvalidRouteTableId.NotFound', + 'errorMessage' => 'Specified route table does not exist.', + ], + [ + 'errorCode' => 'OperationDenied.LocalRouteEntryModified', + 'errorMessage' => 'The next hop of a local route is modified.', + ], + [ + 'errorCode' => 'MissingParam.VSwitchId', + 'errorMessage' => 'The parameter VSwitchId is missing.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of RegionId is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.Action', + 'errorMessage' => 'This vpc feature is not supported in this region', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current status of the virtual switch does not support this operation.', + ], + [ + 'errorCode' => 'Forbidden.VSwitchAlreadyAssociatedRouteTable', + 'errorMessage' => 'The specified virtual switch already associates route table.', + ], + [ + 'errorCode' => 'Forbidden.NotInSameVpc', + 'errorMessage' => 'The specified virtual switch and route table are not in the same VPC.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTable', + 'errorMessage' => 'The status of the specified route table is incorrect.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRouteTableId.NotFound', + 'errorMessage' => 'Specified route table does not exist.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'Specified VSwitch does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\nDC668356-BCB4-42FD-9BC3-FA2B2E04B634\\r\\n","errorExample":"\\n\\n 62172DD5-6BAC-45DF-8D44-xxxxxxx\\n"}]', + 'title' => 'AssociateRouteTable', + 'description' => '**AssociateRouteTable** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVSwitchAttributes](~~94567~~) operation to query the status of the task:'."\n" + ."\n" + .'* If the vSwitch is in the **Pending** state, the route table is being associated with the vSwitch.'."\n" + .'* If the vSwitch is in the **Available** state, the route table is associated with the vSwitch.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteRouteEntry' => [ + 'summary' => 'Deletes a route entry from a route table of a VRouter or virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37680', + 'abilityTreeNodes' => [ + 'FEATUREvpcJSBF65', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table to which the route belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-2ze3jgygk9bmsj23s****', + ], + ], + [ + 'name' => 'RouteEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route that you want to delete.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'rte-bp1mnnr2al0naomnpv****', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the route. Only IPv4 CIDR blocks, IPv6 CIDR blocks, and prefix lists are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.100.XX.XX/16', + ], + ], + [ + 'name' => 'NextHopId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the next hop.'."\n" + ."\n" + .'* To delete a route other than an equal-cost multi-path (ECMP) route, set the **NextHopId** parameter and ignore the **NextHopList** parameter.'."\n" + .'* To delete an ECMP route, set the **NextHopList** parameter and ignore the **NextHopId** parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ri-2zeo3xzyf38r4urzd****', + ], + ], + [ + 'name' => 'NextHopList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of the next hop of the ECMP route.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the next hop of the ECMP route.', + 'type' => 'object', + 'properties' => [ + 'NextHopId' => [ + 'description' => 'The ID of the next hop that is configured for ECMP routing. You can specify information about at most 16 next hops.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ri-2zeo3xzyf38r43cd****', + ], + 'NextHopType' => [ + 'description' => 'The type of the next hop that is configured for ECMP routing. Set the value to **RouterInterface**. You can specify information about at most 16 next hops.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RouterInterface', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 8, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'**true**: sends a request without deleting the route entry. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and the actual request. If the request passes the check, a 2xx HTTP status code is returned and the route entry is deleted.'."\n", + 'type' => 'boolean', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'IncorrcetRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Specified operation is denied as route entry type is system.', + ], + [ + 'errorCode' => 'InvalidRouteEntry.NotFound', + 'errorMessage' => 'Route entry not exists.', + ], + [ + 'errorCode' => 'InvalidVRouter.NotFound', + 'errorMessage' => 'vRouter not exists.', + ], + [ + 'errorCode' => 'IncorrectRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'Specified RouteEntry cannot allowed delete by openApi.', + ], + [ + 'errorCode' => 'InvalidNextHop', + 'errorMessage' => 'Specified nexthop and nexthop list cannot both null.', + ], + [ + 'errorCode' => 'InvalidRouteEntry', + 'errorMessage' => 'Specified routeEntry not exist.', + ], + [ + 'errorCode' => 'Forbidden.VRouterNotFound', + 'errorMessage' => 'pecified virtual switch is not found during access authentication.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'InvalidRouteEntryId.NotFound', + 'errorMessage' => 'Specified RouteEntryId does not exist.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidVpnInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ParamExclusive.RouteEntryIdAndRouteTableIdOrDestCidrBlock', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidNextHopList.Size', + 'errorMessage' => 'Nexthop list size should be between 2 and 16', + ], + [ + 'errorCode' => 'ParamExclusive.NextHopIdAndList', + 'errorMessage' => 'NextHopId and NextHopList cannot both be not null.', + ], + [ + 'errorCode' => 'OperationFailed.DeleteMultiScopeEntry', + 'errorMessage' => 'Multi or ecmp scope must delete with force.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'OperationDenied.DeleteManagedRouteEntry', + 'errorMessage' => 'The operation is not allowed because of route entry is managed.', + ], + [ + 'errorCode' => 'OperationDenied.RouteTableTypeNotPermitted', + 'errorMessage' => 'The operation is not allowed because the type of route table is not permitted.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcRouteEntry', + 'errorMessage' => 'The status of the specified routeEntry is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.NextHopNotChanged', + 'errorMessage' => 'The operation is not allowed because of NextHopNotChanged.', + ], + [ + 'errorCode' => 'OperationDenied.DeleteGatewayEndpointRoute', + 'errorMessage' => 'The operation is not allowed to delete route entry pointing gateway endpoint..', + ], + [ + 'errorCode' => 'IncorrectStatus.PrefixList', + 'errorMessage' => 'The status of prefixList is incorrect.', + ], + [ + 'errorCode' => 'InvalidCidrBlock', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.VbrAttachEcrInMiddleStatus', + 'errorMessage' => 'The operation is not allowed because of VBR attach or detach ECR in middle status.', + ], + [ + 'errorCode' => 'UnsupportedFeature.NextHopType', + 'errorMessage' => 'The operation is not allowed because the NextHopType of specified RouteEntry is modified from Local type.', + ], + [ + 'errorCode' => 'ResourceNotFound.PrefixList', + 'errorMessage' => 'The specified resource of prefixList is not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRouteTableId.NotFound', + 'errorMessage' => 'Specified route table does not exist.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'Vpc.Error', + 'errorMessage' => 'error code 500,Internal server error.', + ], + [ + 'errorCode' => 'Internal.Error', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DeleteRouteEntry', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* You can delete only routes that are in the **Available** state.'."\n" + ."\n" + .'* You cannot delete a route entry of a virtual private cloud (VPC) in which a vSwitch or another route entry is being created or deleted.'."\n" + ."\n" + .'* Before you call this operation to delete a route of a VBR route table, call the [DescribeRouteEntryList](~~138148~~) operation to query the **NextHopId** of the route first.'."\n" + ."\n" + .'* **DeleteRouteEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeRouteEntryList](~~138148~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the route is in the **Deleting** state, the route is being deleted.'."\n" + .' * If you cannot query the route entry, the route entry is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteRouteEntry** operation to delete a route from the route table of a vRouter or a VBR within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteRouteEntries' => [ + 'summary' => 'Deletes multiple custom route entries at a time.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteEntries', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the routes that you want to delete.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RouteTableId' => [ + 'description' => 'The ID of the route table to which the routes to be deleted belongs. You can specify up to 50 route table IDs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-2ze3jgygk9bmsj23s****', + ], + 'RouteEntryId' => [ + 'description' => 'The ID of the route that you want to delete. You can specify up to 50 route IDs.'."\n" + ."\n" + .'> If **RouteEntryId** is not specified, **DstCidrBlock** and **NextHop** are required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rte-bp1mnnr2al0naomnpv****', + ], + 'DstCidrBlock' => [ + 'description' => 'The destination CIDR block of the route that you want to delete. IPv4 and IPv6 CIDR blocks are supported. You can specify up to 50 destination CIDR blocks.'."\n" + ."\n" + .'> If **RouteEntryId** is not specified, **DstCidrBlock** and **NextHop** are required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.100.XX.XX/24', + ], + 'NextHop' => [ + 'description' => 'The ID of the next hop that you want to delete. You can specify up to 50 next hop IDs.'."\n" + ."\n" + .'> If **RouteEntryId** is not specified, **DstCidrBlock** and **NextHop** are required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-j6c2fp57q8rr4jlu****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 200, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'SuccessCount' => [ + 'description' => 'The number of route entries that were deleted.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'FailedCount' => [ + 'description' => 'The number of route entries that failed to be deleted.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'FailedRouteEntries' => [ + 'description' => 'The information about the route entry that failed to be deleted.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RouteEntryId' => [ + 'description' => 'The ID of the route entry that failed to be deleted.'."\n", + 'type' => 'string', + 'example' => 'rte-bp1mnnr2al0naomnpv****', + ], + 'DstCidrBlock' => [ + 'description' => 'The destination CIDR block of the route entry that failed to be deleted. IPv4 and IPv6 CIDR blocks are supported.'."\n", + 'type' => 'string', + 'example' => '47.100.XX.XX/24', + ], + 'NextHop' => [ + 'description' => 'The ID of the next hop that failed to be deleted.'."\n", + 'type' => 'string', + 'example' => 'i-j6c2fp57q8rr4jlu****', + ], + 'FailedCode' => [ + 'description' => 'The error code.'."\n", + 'type' => 'string', + 'example' => 'VPC_ROUTER_ENTRY_NOT_EXIST', + ], + 'FailedMessage' => [ + 'description' => 'The error message.'."\n", + 'type' => 'string', + 'example' => 'vRouterEntry not exists', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent. Please wait a moment and try again.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeRouteEntryList', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"SuccessCount\\": 2,\\n \\"FailedCount\\": 2,\\n \\"FailedRouteEntries\\": [\\n {\\n \\"RouteEntryId\\": \\"rte-bp1mnnr2al0naomnpv****\\",\\n \\"DstCidrBlock\\": \\"47.100.XX.XX/24\\",\\n \\"NextHop\\": \\"i-j6c2fp57q8rr4jlu****\\",\\n \\"FailedCode\\": \\"VPC_ROUTER_ENTRY_NOT_EXIST\\",\\n \\"FailedMessage\\": \\"vRouterEntry not exists\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n 2\\n 2\\n \\n rte-bp1mnnr2al0naomnpv****\\n 47.100.XX.XX/24\\n i-j6c2fp57q8rr4jlu****\\n VPC_ROUTER_ENTRY_NOT_EXIST\\n vRouterEntry not exists\\n \\n","errorExample":""}]', + 'title' => 'DeleteRouteEntries', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* You can delete only routes that are in the **Available** state.'."\n" + ."\n" + .'* You cannot delete a route of a virtual private cloud (VPC) in which a vSwitch or another route is being created or deleted.'."\n" + ."\n" + .'* **DeleteRouteEntries** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeRouteEntryList](~~138148~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the route is in the **Deleting** state, the route is being deleted.'."\n" + .' * If you cannot query the route, the route is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call **DeleteRouteEntries** within a specific period of time.'."\n", + ], + 'DeleteRouteTable' => [ + 'summary' => 'Deletes a custom route table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the custom route table.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DC668356-BCB4-42FD-9BC3-FA2B2E04B634', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.GatewayAssociated', + 'errorMessage' => 'You cannot delete the specified route table because it still associates with gateway.', + ], + [ + 'errorCode' => 'MissingParam.RouteTableId', + 'errorMessage' => 'The param of RouteTableId is missing.', + ], + [ + 'errorCode' => 'IncorrectRouteTableType', + 'errorMessage' => 'Route table can be deleted by this action only when it\'s type is custom.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current virtual switch status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectRouteTableStatus.RouteEntryExist', + 'errorMessage' => 'You cannot delete the specified route table because it still has custom route entry.', + ], + [ + 'errorCode' => 'IncorrectStatus.cbnStatus', + 'errorMessage' => 'Current CBN status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of RegionId is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.Action', + 'errorMessage' => 'This vpc feature is not supported in this region', + ], + [ + 'errorCode' => 'IncorrectRouteTableStatus', + 'errorMessage' => 'The current status of the route table does not support this operation.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteEntry', + 'errorMessage' => 'Vpc route table has route entry.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DeleteRouteTable', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"62172DD5-6BAC-45DF-8D44-xxxxxxxx\\"\\n}"},{"type":"xml","example":"\\n\\n 62172DD5-6BAC-45DF-8D44-xxxxxxx\\n","errorExample":"\\n\\n 62172DD5-6BAC-45DF-8D44-xxxxxxx\\n"}]', + 'title' => 'DeleteRouteTable', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **DeleteRouteTable** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeRouteTableList](~~87602~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the custom route table is in the **Deleting** state, the custom route table is being deleted.'."\n" + .' * If you cannot query the custom route table, the custom route table is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteRouteTable** operation to delete a custom route table within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassociateRouteTable' => [ + 'summary' => 'Disassociates a route table from a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch from which you want to disassociate the route table.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vsw-25naue4****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '62172DD5-6BAC-45DF-8D44-xxxxxxx', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of RegionId is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.Action', + 'errorMessage' => 'This vpc feature is not supported in this region', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current status of the virtual switch does not support this operation.', + ], + [ + 'errorCode' => 'OperationUnsupported.SystemRouteTable', + 'errorMessage' => 'System route table can not be unassociated.', + ], + [ + 'errorCode' => 'InvalidStatus.VSwitch', + 'errorMessage' => 'Specified vswitch is not in stable status and cannot operate.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRouteTableId.NotFound', + 'errorMessage' => 'Specified route table does not exist.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'Specified VSwitch does not exist.', + ], + [ + 'errorCode' => 'InvalidBindingStatus.RouteTable', + 'errorMessage' => 'The specified virtual switch and route table does not bind', + ], + [ + 'errorCode' => 'OperationFailed.VSwitchNotAssociate', + 'errorMessage' => 'Specified vswitch is not associated with the routeTable and cannot operate.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"62172DD5-6BAC-45DF-8D44-xxxxxxx\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"62172DD5-6BAC-45DF-8D44-xxxxxxxx\\"\\n}"},{"type":"xml","example":"\\n\\n 62172DD5-6BAC-45DF-8D44-xxxxxxx\\n","errorExample":"\\n\\n 62172DD5-6BAC-45DF-8D44-xxxxxxx\\n"}]', + 'title' => 'UnassociateRouteTable', + 'description' => '## [](#)References'."\n" + ."\n" + .'* **UnassociateRouteTable** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVSwitchAttributes](~~94567~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the vSwitch is in the **Pending** state, the route table is being disassociated.'."\n" + .' * If the vSwitch is in the **Available** state, the route table is disassociated.'."\n" + ."\n" + .'* You cannot repeatedly call the **UnassociateRouteTable** operation to disassociate a route table from a vSwitch within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyRouteTableAttributes' => [ + 'summary' => 'Modifies the name and description of a route table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + [ + 'name' => 'RouteTableName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route table.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'doctest', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the route table.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) to which the custom route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RoutePropagationEnable', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether to enable route propagation to receive dynamic routes. Valid values:'."\n" + ."\n" + .'- **true** (default): enables route propagation.'."\n" + ."\n" + .'- **false**: disables route propagation.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '62172DD5-6BAC-45DF-8D44', + ], + ], + 'description' => 'The response.', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Abs.InvaliTableName.Malformed', + 'errorMessage' => 'Table name format is invalid.', + ], + [ + 'errorCode' => 'Abs.InvalidRouteTableId.NotExist', + 'errorMessage' => 'The route table id is not exist.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Description format is invalid.', + ], + [ + 'errorCode' => 'Forbidden.DisableRoutePropagation', + 'errorMessage' => 'The operation of disable route propagation is forbidden.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource gatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTable', + 'errorMessage' => 'The route table is in an invalid state.', + ], + [ + 'errorCode' => 'IncorrectStatus.RoutePropagationStatus', + 'errorMessage' => 'Route table propagation status not stable. Please wait and try again.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'Vpc status is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"62172DD5-6BAC-45DF-8D44\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 62172DD5-6BAC-45DF-8D44\\n","errorExample":""}]', + 'title' => 'ModifyRouteTableAttributes', + 'description' => 'You cannot repeatedly call the **ModifyRouteTableAttributes** operation to modify the name and description of a route table within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyRouteEntry' => [ + 'summary' => 'Modifies the name and description of a custom route entry.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37904', + 'abilityTreeNodes' => [ + 'FEATUREvpc0T77AE', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the route belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route entry.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EntryName', + ], + ], + [ + 'name' => 'RouteEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the custom route entry.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'rte-acfvgfsghfdd****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the route entry.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EntryDescription', + ], + ], + [ + 'name' => 'NewNextHopType', + 'in' => 'query', + 'schema' => [ + 'title' => '新路由条目下一跳类型', + 'description' => 'The new next hop type of the route.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'HaVip' => 'HaVip', + 'VpnGateway' => 'VpnGateway', + 'GatewayLoadBalancerEndpoint' => 'GatewayLoadBalancerEndpoint', + 'VpcPeer' => 'VpcPeer', + 'Instance' => 'Instance', + 'NetworkInterface' => 'NetworkInterface', + 'NatGateway' => 'NatGateway', + 'Attachment' => 'Attachment', + 'Ipv4Gateway' => 'Ipv4Gateway', + 'GatewayEndpoint' => 'GatewayEndpoint', + 'Ecr' => 'Ecr', + 'RouterInterface' => 'RouterInterface', + 'IPv6Gateway' => 'IPv6Gateway', + ], + 'example' => 'NetworkInterface', + ], + ], + [ + 'name' => 'NewNextHopId', + 'in' => 'query', + 'schema' => [ + 'title' => '新路由条目下一跳实例ID', + 'description' => 'The ID of the new next hop instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-bp17y37ytsenqyim****', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table to which the route entry belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-bp1nk7zk65du3pni8z9td', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the route entry. Only IPv4 CIDR blocks, IPv6 CIDR blocks, and prefix lists are supported.', + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/24', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the request for potential issues, including the AccessKey pair, the permissions of the RAM user, and the required parameters. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '861E6630-AEC0-4B2D-B214-6CB5E44B7F04', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRouteEntryId.NotFound', + 'errorMessage' => 'Specified RouteEntryId does not exist.', + ], + [ + 'errorCode' => 'InvalidRouteEntryName.Malformed', + 'errorMessage' => 'Specified RouteEntry name is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.ModifyManagedRouteEntry', + 'errorMessage' => 'The operation is not allowed because of route entry is managed.', + ], + [ + 'errorCode' => 'OperationDenied.RouteTableTypeNotPermitted', + 'errorMessage' => 'The operation is not allowed because the type of route table is not permitted.', + ], + [ + 'errorCode' => 'MissingParam.NewNextHopId', + 'errorMessage' => 'The parameter NewNextHopId is mandatory.', + ], + [ + 'errorCode' => 'IllegealParam.NextHopType', + 'errorMessage' => 'The parameter NewNextHopType is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.NormalTypeNatGateway', + 'errorMessage' => 'Normal nat gateways do not support modifying the next hop of the route.', + ], + [ + 'errorCode' => 'UnsupportedFeature.NextHopType', + 'errorMessage' => 'The route type does not support modifying the next hop of the route.', + ], + [ + 'errorCode' => 'InvalidRouteTable.NotFound', + 'errorMessage' => 'The specified routetable does not exist.', + ], + [ + 'errorCode' => 'InvalidNetworkInterface.NotFound', + 'errorMessage' => 'The specified network interface does not exist.', + ], + [ + 'errorCode' => 'OperationDenied.NextHopExist', + 'errorMessage' => 'The operation is not allowed because the nexthop already exists.', + ], + [ + 'errorCode' => 'MissingParam.NewNextHopType', + 'errorMessage' => 'The parameter NewNextHopType is mandatory.', + ], + [ + 'errorCode' => 'UnsupportedFeature.ModifyRouteEntryNextHop', + 'errorMessage' => 'The current region does not support the function of modifying the route next hop.', + ], + [ + 'errorCode' => 'IncorrectRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'ResourceNotFound.VSwitch', + 'errorMessage' => 'The vSwitch where the specified networkinterface is located does not exist.', + ], + [ + 'errorCode' => 'MissingParam.RouteEntryId', + 'errorMessage' => 'The param of %s is missing.', + ], + [ + 'errorCode' => 'IllegalParam.RouteEntryName', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.LocalRouteEntryModified', + 'errorMessage' => 'The next hop of a local route is modified.', + ], + [ + 'errorCode' => 'OperationDenied.IllegalNewNextHopType', + 'errorMessage' => 'When modifying the next hop of a route of the local type, a new next hop type that is not supported is passed in.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcAdvancedFeature', + 'errorMessage' => 'The VPC does not support some advanced features.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'OperationFailed.NotSupportIPV6', + 'errorMessage' => 'The specified next hop does not support IPv6.', + ], + [ + 'errorCode' => 'UnsupportedFeature.ModifyIpv6RouteEntryNextHop', + 'errorMessage' => 'The current region does not support the feature of modifying the IPv6 route next hop.', + ], + [ + 'errorCode' => 'OperationDenied.NewNextHopNotSupportPublish', + 'errorMessage' => 'New nexthop is not supported for published route entry.', + ], + [ + 'errorCode' => 'IllegalParam.DestCidrBlock', + 'errorMessage' => 'The destCidrBlock is invalid.', + ], + [ + 'errorCode' => 'IllegalParamFormat.DstCidrBlock', + 'errorMessage' => 'The format of the specified destination CIDR block is invalid.', + ], + [ + 'errorCode' => 'MissingParam.RouteEntryIdOrRouteTableDstCidr', + 'errorMessage' => 'The request is missing required parameters. You must provide either the RouteEntryId or the combination of RouteTableId and DestinationCidrBlock to proceed. Please ensure that one of these parameter sets is included in your request.', + ], + [ + 'errorCode' => 'MissingParam.ParameterMustNotNull', + 'errorMessage' => '%s, %s.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource gatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'OperationDenied.UpdateGatewayRouteEntry', + 'errorMessage' => 'The operation is not allowed because of need switch to local first.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteEntry', + 'errorMessage' => 'The specified resource routeEntry is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vswitch', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.Instance', + 'errorMessage' => 'The specified resource nextHop is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.NextHop', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.NextHopTypeNonsupport', + 'errorMessage' => 'The operation is not allowed because of nextHopType is nonsupport.', + ], + [ + 'errorCode' => 'OperationDenied.LocalEntryCanOnlyModifyNextHop', + 'errorMessage' => 'Only the nextHop parameter can be modified for a local route entry.', + ], + [ + 'errorCode' => 'ExclusiveParam.NextHopTypeAndNextHopId', + 'errorMessage' => 'The param of nextHopType and nextHopId are mutually exclusive.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The specified RouterInterfaceId does not exist in our record.', + ], + [ + 'errorCode' => 'OperationUnsupported.OnlySupportNormalNetworkInterface', + 'errorMessage' => 'Next hop only supports binding normal network Interface.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv6GatewayRouteTable', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.TrAttachmentIpv6Disabled', + 'errorMessage' => 'The operation is not allowed because tr attachment Ipv6 is disabled.', + ], + [ + 'errorCode' => 'InvalidAttachment.NotFound', + 'errorMessage' => 'The attachment is not found.', + ], + [ + 'errorCode' => 'OperationDenied.LocalRouteEntryInSystemRouteTable', + 'errorMessage' => 'The Local Route Entry In System Route Table Can Not Be Modify.', + ], + [ + 'errorCode' => 'OperationDenied.LocalRouteEntryBoundToVSwitch', + 'errorMessage' => 'The VSwitch to which the local route you modified belongs is bound to the current routing table. You are not allowed to modify its next hop.', + ], + [ + 'errorCode' => 'OperationFailed.ModifyEcmpRoute', + 'errorMessage' => 'Operation is failed because ecmp route can not modify.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The specific NAT gateway is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"861E6630-AEC0-4B2D-B214-6CB5E44B7F04\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 861E6630-AEC0-4B2D-B214-6CB5E44B7F04\\n","errorExample":""}]', + 'title' => 'ModifyRouteEntry', + 'description' => 'You cannot repeatedly call the **ModifyRouteEntry** operation to modify the name and description of a custom route within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'GetVpcRouteEntrySummary' => [ + 'summary' => 'Queries route types.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the route table belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp15zckdt37pq72****', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + [ + 'name' => 'RouteEntryType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the route. Valid values:'."\n" + ."\n" + .'* **All**: all route types'."\n" + .'* **Custom**: a custom route'."\n" + .'* **System**: a system route'."\n" + .'* **BGP**: a BGP route'."\n" + .'* **CEN**: a Cloud Enterprise Network (CEN) route'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'Custom', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'DC668356-BCB4-42FD-9BC3-FA2B2E04B634', + ], + 'RouteEntrySummarys' => [ + 'description' => 'The information about the routes in the route tables.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RouteTableId' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + 'EntrySummarys' => [ + 'description' => 'The information about the routes of different types in one route table.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RouteEntryType' => [ + 'description' => 'The type of the route. Valid values:'."\n" + ."\n" + .'* **All**: all route types'."\n" + .'* **Custom**: a custom route'."\n" + .'* **System**: a system route'."\n" + .'* **BGP**: a BGP route'."\n" + .'* **CEN**: a CEN route'."\n", + 'type' => 'string', + 'example' => 'Custom', + ], + 'Count' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => '%s [%s] is not found.', + ], + [ + 'errorCode' => 'IllegalParam.RouteEntryType', + 'errorMessage' => 'The parameter of RouteEntryType is illegal.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\",\\n \\"RouteEntrySummarys\\": [\\n {\\n \\"RouteTableId\\": \\"vtb-bp145q7glnuzdvzu2****\\",\\n \\"EntrySummarys\\": [\\n {\\n \\"RouteEntryType\\": \\"Custom\\",\\n \\"Count\\": 10\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\n \\n vtb-bp145q7glnuzdvzu2****\\n \\n Custom\\n 10\\n \\n \\n","errorExample":""}]', + 'title' => 'GetVpcRouteEntrySummary', + ], + 'DescribeRouteTables' => [ + 'summary' => 'Queries route tables.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which the route table belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VRouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vRouter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-bp1krxxzp0c29fmon****', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rtb-bp12mw1f8k3jgygk9****', + ], + ], + [ + 'name' => 'RouterType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the router to which the route table belongs. Valid values:'."\n" + ."\n" + .'* **VRouter** (default)'."\n" + .'* **VBR**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VRouter', + ], + ], + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router to which the route table belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-bp1krxxzp0c29fmon****', + ], + ], + [ + 'name' => 'Type', + 'in' => 'query', + 'schema' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **Custom**'."\n" + .'* **System**'."\n" + .'* **BGP**'."\n" + .'* **CEN**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'custom', + ], + ], + [ + 'name' => 'RouteTableName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route table that you want to query.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RouteTable-1', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the route table to be queried belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazccb4ph****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DC668356-BCB4-42FD-9BC3-FA2B2E04B634', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RouteTables' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RouteTable' => [ + 'description' => 'The detailed information about the route tables.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the route table was created.'."\n" + ."\n" + .'The time is displayed in the `YYYY-MM-DDThh:mm:ssZ` format in UTC.'."\n", + 'type' => 'string', + 'example' => '2017-08-22T10:40:25Z', + ], + 'Status' => [ + 'description' => 'The status of the route table. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'VRouterId' => [ + 'description' => 'The vRouter ID.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + 'RouteTableType' => [ + 'description' => 'The type of the route table. Valid values:'."\n" + ."\n" + .'* **Custom**'."\n" + .'* **System**'."\n", + 'type' => 'string', + 'example' => 'System', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the route table belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + 'RouteTableId' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + 'RouteEntrys' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RouteEntry' => [ + 'description' => 'The information about the route.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **Custom**'."\n" + .'* **System**'."\n" + .'* **BGP**'."\n" + .'* **CEN**'."\n", + 'type' => 'string', + 'example' => 'System', + ], + 'Status' => [ + 'description' => 'The route status. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'example' => 'Pending', + ], + 'NextHopType' => [ + 'description' => 'The type of the next hop. Valid values:'."\n" + ."\n" + .'* **Instance** (default): an Elastic Compute Service (ECS) instance'."\n" + .'* **HaVip**: a high-availability virtual IP address (HaVip).'."\n" + .'* **VpnGateway**: a VPN gateway'."\n" + .'* **NatGateway**: a NAT gateway'."\n" + .'* **NetworkInterface**: a secondary elastic network interface (ENI)'."\n" + .'* **RouterInterface**: a router interface'."\n" + .'* **IPv6Gateway**: an IPv6 gateway'."\n" + .'* **Attachment**: a transit router', + 'type' => 'string', + 'example' => 'local', + ], + 'RouteEntryName' => [ + 'description' => 'The route name.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'RouteEntryId' => [ + 'description' => 'The ID of the route.'."\n", + 'type' => 'string', + 'example' => 'rte-bp1mnnr2al0naomnpxxx', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance associated with the next hop.'."\n", + 'type' => 'string', + 'example' => 'ri-2zeo3xzyf38r4urzd****', + ], + 'RouteTableId' => [ + 'description' => 'The route table ID.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + 'Description' => [ + 'description' => 'The description of the route. The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'RouteEntryDescription', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the route. The destination CIDR block supports IPv4 and IPv6. Make sure that the destination CIDR block meets the following requirements:'."\n" + ."\n" + .'* The destination CIDR block is not 100.64.0.0/10 or a subset of 100.64.0.0/10.'."\n" + .'* The destination CIDR block of each route in the route table is unique.'."\n", + 'type' => 'string', + 'example' => '192.168.0.1/24', + ], + 'NextHops' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NextHop' => [ + 'description' => 'The information about the next hop.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NextHopId' => [ + 'description' => 'The ID of the next hop.'."\n", + 'type' => 'string', + 'example' => 'ri-2zeo3xzyf38r4urzdpvqw', + ], + 'Weight' => [ + 'description' => 'The weight of the route.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '80', + ], + 'NextHopType' => [ + 'description' => 'The type of the next hop. Valid values:'."\n" + ."\n" + .'* **Instance**: an ECS instance'."\n" + .'* **HaVip**: an HaVip'."\n" + .'* **VpnGateway**: a VPN gateway'."\n" + .'* **NatGateway**: a NAT gateway'."\n" + .'* **NetworkInterface**: a secondary ENI'."\n" + .'* **RouterInterface**: a router interface'."\n" + .'* **IPv6Gateway**: an IPv6 gateway'."\n" + .'* **Attachment**: a transit router', + 'type' => 'string', + 'example' => 'HaVip', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the route is available. Valid values:'."\n" + ."\n" + .'* **0**: unavailable'."\n" + .'* **1**: available'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'VSwitchIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The vSwitch ID.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The vSwitch ID.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp14cagpfysr29fe****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVRouterId.NotFound', + 'errorMessage' => 'Specified virtual router does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.DescribeCenRoute', + 'errorMessage' => 'An error occurred while querying the CEN route entry.', + ], + [ + 'errorCode' => 'OperationFailed.VRouterNotExist', + 'errorMessage' => 'Operation failed because the VRouter does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.Type', + 'errorMessage' => 'The parameter of Type is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'substitutions' => [ + 'Vpc::2016-04-28::DescribeRouteTableList', + ], + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"RouteTables\\": {\\n \\"RouteTable\\": [\\n {\\n \\"CreationTime\\": \\"2022-08-22T10:40:25Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"VRouterId\\": \\"vrt-bp1lhl0taikrteen****\\",\\n \\"RouteTableType\\": \\"Custom\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\",\\n \\"RouteTableId\\": \\"vtb-bp145q7glnuzdvzu2****\\",\\n \\"RouteEntrys\\": {\\n \\"RouteEntry\\": [\\n {\\n \\"Type\\": \\"Custom\\",\\n \\"Status\\": \\"Available\\",\\n \\"NextHopType\\": \\"Instance\\",\\n \\"RouteEntryName\\": \\"name\\",\\n \\"RouteEntryId\\": \\"rte-bp1mnnr2al0naomnp****\\",\\n \\"InstanceId\\": \\"vpc-bp1t36rn9l53iwbsf****\\",\\n \\"RouteTableId\\": \\"vtb-bp15w5q90d2rk3bww****\\",\\n \\"Description\\": \\"RouteEntryDescription\\",\\n \\"DestinationCidrBlock\\": \\"192.168.2.0/24\\",\\n \\"NextHops\\": {\\n \\"NextHop\\": [\\n {\\n \\"NextHopId\\": \\"vpn-bp10zyaph5cc8b7c7****\\",\\n \\"Weight\\": 100,\\n \\"NextHopType\\": \\"Instance\\",\\n \\"Enabled\\": 1\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"VSwitchIds\\": {\\n \\"VSwitchId\\": [\\n \\"vsw-bp12mw1f8k3jgygk9****\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\n 1\\n 1\\n \\n 2022-08-22T10:40:25Z\\n Available\\n vrt-bp1lhl0taikrteen****\\n Custom\\n rg-acfmxazb4ph****\\n vtb-bp145q7glnuzdvzu2****\\n \\n Custom\\n Available\\n Instance\\n name\\n rte-bp1mnnr2al0naomnp****\\n vpc-bp1t36rn9l53iwbsf****\\n vtb-bp15w5q90d2rk3bww****\\n RouteEntryDescription\\n 192.168.2.0/24\\n \\n vpn-bp10zyaph5cc8b7c7****\\n 100\\n Instance\\n 1\\n \\n \\n vsw-bp12mw1f8k3jgygk9****\\n \\n","errorExample":""}]', + 'title' => 'DescribeRouteTables', + ], + 'DescribeRouteEntryList' => [ + 'summary' => 'Queries information about route entries in a route table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vtb-bp1r9pvl4xen8s9ju****', + ], + ], + [ + 'name' => 'RouteEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rte-bp1mnnr2al0naomnp****', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the route. IPv4 and IPv6 CIDR blocks are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.2.0/24', + ], + ], + [ + 'name' => 'RouteEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route entry.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4**'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'RouteEntryType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **Custom**: custom routes.'."\n" + .'* **System**: system routes.'."\n" + .'* **BGP**: BGP routes.'."\n" + .'* **CEN**: Cloud Enterprise Network (CEN) routes.'."\n" + .'* **ECR**: Express Connect Router (ECR) routes.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'System', + ], + ], + [ + 'name' => 'NextHopId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the next hop.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-bp10zyaph5cc8b7c7****', + ], + ], + [ + 'name' => 'NextHopType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop type. Valid values:'."\n" + ."\n" + .'* **Instance**: an Elastic Compute Service (ECS) instance. This is the default value.'."\n" + .'* **HaVip**: a high-availability virtual IP address (HaVip).'."\n" + .'* **VpnGateway**: a VPN gateway.'."\n" + .'* **NatGateway**: a NAT gateway.'."\n" + .'* **NetworkInterface**: a secondary elastic network interface (ENI).'."\n" + .'* **RouterInterface**: a router interface.'."\n" + .'* **IPv6Gateway**: an IPv6 gateway.'."\n" + .'* **Attachment**: a transit router.'."\n" + .'* **Ipv4Gateway**: an IPv4 gateway.'."\n" + .'* **GatewayEndpoint**: a gateway endpoint.'."\n" + .'* **CenBasic**: CEN does not support transit routers.'."\n" + .'* **Ecr**: Express Connect Router (ECR).', + 'type' => 'string', + 'required' => false, + 'example' => 'Instance', + ], + ], + [ + 'name' => 'MaxResult', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'example' => '10', + 'default' => '100', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ServiceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to host the route. If the parameter is empty, the route is not hosted.'."\n" + ."\n" + .'Set the value to **TR**, which specifies that the route is hosted by a transit router.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TR', + ], + ], + [ + 'name' => 'DestCidrBlockList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The destination CIDR blocks of the routes.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The destination CIDR blocks of the routes. You can specify at most 20 destination CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/24', + ], + 'required' => false, + 'maxItems' => 200, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The route details.'."\n", + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '14A07460-EBE7-47CA-9757-12CC4761D47A', + ], + 'RouteEntrys' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RouteEntry' => [ + 'description' => 'The information about the routes.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the routes.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the route entry. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'Type' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **Custom**: custom routes.'."\n" + .'* **System**: system routes.'."\n" + .'* **BGP**: BGP routes.'."\n" + .'* **CEN**: CEN routes.'."\n" + .'* **ECR**: ECR routes.'."\n", + 'type' => 'string', + 'example' => 'Custom', + ], + 'IpVersion' => [ + 'description' => 'The IP version. Valid values: Valid values:'."\n" + ."\n" + .'* **ipv4**'."\n" + .'* **ipv6**'."\n", + 'type' => 'string', + 'example' => 'IPv4', + ], + 'Description' => [ + 'description' => 'The description of the route.'."\n", + 'type' => 'string', + 'example' => 'RouteEntryDescription', + ], + 'RouteEntryName' => [ + 'description' => 'The name of the route.'."\n", + 'type' => 'string', + 'example' => 'aaa', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the route.'."\n", + 'type' => 'string', + 'example' => '192.168.2.0/24', + ], + 'RouteEntryId' => [ + 'description' => 'The ID of the route.'."\n", + 'type' => 'string', + 'example' => 'rte-bp1mnnr2al0naomnp****', + ], + 'RouteTableId' => [ + 'description' => 'The ID of the route table.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp15w5q90d2rk3bww****', + ], + 'GmtModified' => [ + 'description' => 'The time when the route was modified. The time follows the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'format' => 'iso8601', + 'example' => '2022-05-09T03:00:07Z', + ], + 'NextHops' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NextHop' => [ + 'description' => 'The information about the next hops.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NextHopRegionId' => [ + 'description' => 'The ID of the region where the next hop is deployed.'."\n" + ."\n" + .'> This parameter is returned when the next hop type is set to **RouterInterface**.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Weight' => [ + 'description' => 'The weight of the route.'."\n" + ."\n" + .'> This parameter is returned when the next hop type is set to **RouterInterface**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'NextHopId' => [ + 'description' => 'The ID of the next hop.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp10zyaph5cc8b7c7****', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the route is available. Valid values:'."\n" + ."\n" + .'* **0**: unavailable'."\n" + .'* **1**: available'."\n" + ."\n" + .'> This parameter is returned when the next hop type is set to **RouterInterface**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'NextHopType' => [ + 'description' => 'The next hop type. Valid values:'."\n" + ."\n" + .'* **Instance**: an ECS instance.'."\n" + .'* **HaVip**: an HaVip.'."\n" + .'* **VpnGateway**: a VPN gateway.'."\n" + .'* **NatGateway**: a NAT gateway.'."\n" + .'* **NetworkInterface**: a secondary ENI.'."\n" + .'* **RouterInterface**: a router interface.'."\n" + .'* **IPv6Gateway**: an IPv6 gateway.'."\n" + .'* **Attachment**: a transit router.'."\n" + .'* **Ipv4Gateway**: an IPv4 gateway.'."\n" + .'* **GatewayEndpoint**: a gateway endpoint.'."\n" + .'* **CenBasic**: CEN does not support transit routers.'."\n" + .'* **Ecr**: ECR.', + 'type' => 'string', + 'example' => 'Instance', + ], + 'NextHopRelatedInfo' => [ + 'description' => 'The information about the next hop.'."\n", + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the instance that is associated with the next hop.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1t36rn9l53iwbsf****', + ], + 'InstanceType' => [ + 'description' => 'The type of the instance associated with the next hop. Valid values:'."\n" + ."\n" + .'* **VPC**: a VPC'."\n" + .'* **VBR**: a VBR'."\n" + .'* **PCONN**: an Express Connect circuit'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'RegionId' => [ + 'description' => 'The region ID of the instance associated with the next hop. Valid values:'."\n", + 'type' => 'string', + 'example' => 'ch-hangzhou', + ], + ], + ], + ], + ], + ], + ], + ], + 'ServiceType' => [ + 'description' => 'Indicates whether the route is hosted. If the parameter is empty, the route is not hosted.'."\n" + ."\n" + .'If **TR** is returned, the route is hosted by a transit router.'."\n", + 'type' => 'string', + 'example' => 'TR', + ], + 'Origin' => [ + 'description' => 'The route origin. Valid values:'."\n" + .'* **RoutePropagation**: The route is created by a dynamic propagation source.'."\n" + .'* **SystemCreate**: The route is created by the system.'."\n" + .'* **CustomCreate**: The route is created by a user.', + 'type' => 'string', + 'example' => 'RoutePropagation', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'User nextToken is illegal.', + ], + [ + 'errorCode' => 'InvalidNextHop.NotFound', + 'errorMessage' => 'The specified route entry nexthop does not exist in our records.', + ], + [ + 'errorCode' => 'OperationFailed.QueryCenEntry', + 'errorMessage' => 'Operation is denied because getting CEN route entry has failed.', + ], + [ + 'errorCode' => 'OperationDenied.UseGatewayRouteEntryQueryInterface', + 'errorMessage' => 'Use listGatewayRouteTableEntries to describe gateway route entries.', + ], + [ + 'errorCode' => 'InvalidRouteTable.NotFound', + 'errorMessage' => 'The specified RouteTable was not found.', + ], + [ + 'errorCode' => 'IllegalParam.RouteEntryType', + 'errorMessage' => 'The parameter of RouteEntryType is illegal.', + ], + [ + 'errorCode' => 'MissingParam.context', + 'errorMessage' => 'The param of context is missing.', + ], + [ + 'errorCode' => 'MissingParam.aliUid', + 'errorMessage' => 'The param of aliUid is missing.', + ], + [ + 'errorCode' => 'MissingParam.bid', + 'errorMessage' => 'The param of bid is missing.', + ], + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => 'Param IpVersion illegal.', + ], + [ + 'errorCode' => 'OperationFailed.FilterParamUnderWrongRouteType', + 'errorMessage' => 'Operation failed because only custom type support filter by routeEntryId or routeEntryName', + ], + [ + 'errorCode' => 'IllegalParam.NextTokenExpired', + 'errorMessage' => 'The parameter of NextTokenExpired is illegal.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"14A07460-EBE7-47CA-9757-12CC4761D47A\\",\\n \\"RouteEntrys\\": {\\n \\"RouteEntry\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"Type\\": \\"System\\",\\n \\"IpVersion\\": \\"ipv4\\",\\n \\"Description\\": \\"RouteEntryDescription\\",\\n \\"RouteEntryName\\": \\"aaa\\",\\n \\"DestinationCidrBlock\\": \\"192.168.2.0/24\\",\\n \\"RouteEntryId\\": \\"rte-bp1mnnr2al0naomnp****\\",\\n \\"RouteTableId\\": \\"vtb-bp15w5q90d2rk3bww****\\",\\n \\"GmtModified\\": \\"2022-05-09T03:00:07Z\\",\\n \\"NextHops\\": {\\n \\"NextHop\\": [\\n {\\n \\"NextHopRegionId\\": \\"cn-hangzhou\\",\\n \\"Weight\\": 100,\\n \\"NextHopId\\": \\"vpn-bp10zyaph5cc8b7c7****\\",\\n \\"Enabled\\": 1,\\n \\"NextHopType\\": \\"Instance\\",\\n \\"NextHopRelatedInfo\\": {\\n \\"InstanceId\\": \\"vpc-bp1t36rn9l53iwbsf****\\",\\n \\"InstanceType\\": \\"VPC\\",\\n \\"RegionId\\": \\"ch-hangzhou\\"\\n }\\n }\\n ]\\n },\\n \\"ServiceType\\": \\"TR\\",\\n \\"Origin\\": \\"RoutePropagation\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 14A07460-EBE7-47CA-9757-12CC4761D47A\\n \\n Available\\n Custom\\n ipv4\\n RouteEntryDescription\\n aaa\\n 192.168.2.0/24\\n rte-bp1mnnr2al0naomnp****\\n vtb-bp15w5q90d2rk3bww****\\n 2022-05-09T03:00:07Z\\n \\n cn-hangzhou\\n 100\\n vpn-bp10zyaph5cc8b7c7****\\n 1\\n Instance\\n \\n vpc-bp1t36rn9l53iwbsf****\\n VPC\\n ch-hangzhou\\n \\n \\n TR\\n \\n","errorExample":""}]', + 'title' => 'DescribeRouteEntryList', + 'description' => 'Before you call the [DeleteRouteEntry](~~36013~~) operation to delete a route, you can call this operation to query the next hop of the route that you want to delete.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeRouteTableList' => [ + 'summary' => 'Queries route tables.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RouterType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the router to which the route table belongs. Valid value:'."\n" + ."\n" + .'* **VRouter** (default): a vRouter'."\n" + .'* **VBR**: a VBR'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VRouter', + 'default' => 'VRouter', + ], + ], + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of vRouter to which the route table belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which the route table belongs. '."\n" + ."\n" + .'When this parameter is set, the value of **RouterType** is automatically assigned to **VRouter**.', + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp15zckdt37pq72****', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table.', + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + ], + [ + 'name' => 'RouteTableName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route table.', + 'type' => 'string', + 'required' => false, + 'example' => 'doctest', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the returned page. Default value: **1**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the route table belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which the route table belongs.'."\n" + ."\n" + .'You can call [DescribeRegions](https://www.alibabacloud.com/help/vpc/developer-reference/api-vpc-2016-04-28-describeregions) to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The value of tag N to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RouteTableType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the route table.'."\n" + ."\n" + .'* **System**'."\n" + .'* **Custom**', + 'type' => 'string', + 'required' => false, + 'example' => 'System', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The details of the route table.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => 'DC668356-BCB4-42FD-9BC3-FA2B2E04B634', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PageNumber' => [ + 'description' => 'The page number.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RouterTableList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RouterTableListType' => [ + 'description' => 'The detailed information about the route tables.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the route table.', + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the route table belongs.', + 'type' => 'string', + 'example' => 'vpc-bp15zckdt37pq72****', + ], + 'CreationTime' => [ + 'description' => 'The time when the route table was created.', + 'type' => 'string', + 'example' => '2021-08-22T10:40:25Z', + ], + 'Status' => [ + 'description' => 'The status of the route table. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Deleting**', + 'type' => 'string', + 'example' => 'Available', + ], + 'RouterId' => [ + 'description' => 'The ID of the vRouter to which the route table belongs.', + 'type' => 'string', + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + 'AssociateType' => [ + 'description' => 'The type of the cloud resource with which the route table is associated. Valid values:'."\n" + ."\n" + .'* **VSwitch**: vSwitch'."\n" + .'* **Gateway**: IPv4 gateway', + 'type' => 'string', + 'example' => 'VSwitch', + ], + 'RouteTableId' => [ + 'description' => 'The ID of the route table.', + 'type' => 'string', + 'example' => 'vtb-bp145q7glnuzdvzu2****', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the route table belongs.', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '253460731706911258', + ], + 'Description' => [ + 'description' => 'The information about the route table.', + 'type' => 'string', + 'example' => 'This is Route Table.', + ], + 'RouteTableType' => [ + 'description' => 'The type of the route table. Valid values:'."\n" + ."\n" + .'* **Custom**'."\n" + .'* **System**', + 'type' => 'string', + 'example' => 'System', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the route table belongs.', + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + 'RouterType' => [ + 'description' => 'The type of the vRouter to which the route table belongs. Valid values:'."\n" + ."\n" + .'- **VRouter**: a vRouter.'."\n" + ."\n" + .'- **VBR**: a VBR.', + 'type' => 'string', + 'example' => 'VRouter', + ], + 'RouteTableName' => [ + 'description' => 'The name of the route table.', + 'type' => 'string', + 'example' => 'doctest', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag that is added to the route table.', + 'type' => 'string', + 'example' => 'type', + ], + 'Value' => [ + 'description' => 'The value of the tag that is added to the route table.', + 'type' => 'string', + 'example' => 'ingress', + ], + ], + ], + ], + ], + ], + 'VSwitchIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The vSwitch IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The vSwitch IDs.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp12mw1f8k3jgygk9****', + ], + ], + ], + ], + 'GatewayIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'GatewayIds' => [ + 'description' => 'The detailed information about the IPv4 gateway.', + 'type' => 'array', + 'items' => [ + 'description' => 'The detailed information about the IPv4 gateway.', + 'type' => 'string', + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + ], + ], + ], + 'RoutePropagationEnable' => [ + 'description' => 'Whether to receive the propagation routes. Valid Values:'."\n" + ."\n" + .'* **true**: received.'."\n" + ."\n" + .'* **false**: not received.', + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'IellgalParameter.OwnerAccount', + 'errorMessage' => 'The specified parameter OwnerAccount is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'Abs.InvalidPayType', + 'errorMessage' => 'Specified pay type is not valid.', + ], + [ + 'errorCode' => 'Abs.InstanceNotExist', + 'errorMessage' => 'Specified instance not exist.', + ], + [ + 'errorCode' => 'Abs.Forbidden', + 'errorMessage' => 'Specified instance cannot change pay type.', + ], + [ + 'errorCode' => 'Abs.InvalidPayPeriod', + 'errorMessage' => 'Specified pay period not valid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\",\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"RouterTableList\\": {\\n \\"RouterTableListType\\": [\\n {\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72****\\",\\n \\"CreationTime\\": \\"2021-08-22T10:40:25Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"RouterId\\": \\"vrt-bp1lhl0taikrteen8****\\",\\n \\"AssociateType\\": \\"VSwitch\\",\\n \\"RouteTableId\\": \\"vtb-bp145q7glnuzdvzu2****\\",\\n \\"OwnerId\\": 253460731706911260,\\n \\"Description\\": \\"This is Route Table.\\",\\n \\"RouteTableType\\": \\"System\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\",\\n \\"RouterType\\": \\"VRouter\\",\\n \\"RouteTableName\\": \\"doctest\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"type\\",\\n \\"Value\\": \\"ingress\\"\\n }\\n ]\\n },\\n \\"VSwitchIds\\": {\\n \\"VSwitchId\\": [\\n \\"vsw-bp12mw1f8k3jgygk9****\\"\\n ]\\n },\\n \\"GatewayIds\\": {\\n \\"GatewayIds\\": [\\n \\"ipv4gw-5tsnc6s4ogsedtp3k****\\"\\n ]\\n },\\n \\"RoutePropagationEnable\\": true\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\n 10\\n 1\\n 1\\n \\n vpc-bp15zckdt37pq72****\\n 2021-08-22T10:40:25Z\\n Available\\n vrt-bp1lhl0taikrteen8****\\n VSwitch\\n vtb-bp145q7glnuzdvzu2****\\n 253460731706911260\\n This is Route Table.\\n System\\n rg-acfmxazb4ph****\\n VRouter\\n doctest\\n \\n type\\n ingress\\n \\n vsw-bp12mw1f8k3jgygk9****\\n ipv4gw-5tsnc6s4ogsedtp3k****\\n \\n","errorExample":""}]', + 'title' => 'DescribeRouteTableList', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListVpcPublishedRouteEntries' => [ + 'summary' => 'Query the route publishing status', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the instance is located.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the instance is located.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route table.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vtb-bp145q7glnuzd****', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the route entry, supporting both IPv4 and IPv6 segments.', + 'type' => 'string', + 'required' => false, + 'example' => '47.100.XX.XX/16', + ], + ], + [ + 'name' => 'TargetType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the route publishing target.', + 'type' => 'string', + 'required' => true, + 'example' => 'ECR', + ], + ], + [ + 'name' => 'TargetInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route publishing target instance.', + 'type' => 'string', + 'required' => false, + 'example' => 'ecr-dhw2xsds5****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to display per batch query. Range: **1**~**500**, default value is **50**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'example' => '50', + 'default' => '50', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether there is a token for the next query. Values:'."\n" + .'- If **NextToken** is empty, it means there is no next query.'."\n" + .'- If **NextToken** has a return value, this value indicates the token for the start of the next query.', + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'Request ID.', + 'type' => 'string', + 'example' => '1D0971B2-A35A-42C1-A44C-E91360C36C0B', + ], + 'NextToken' => [ + 'description' => 'Indicates whether there is a token for the next query. Values:'."\n" + ."\n" + .'- If **NextToken** is empty, it means there is no next query.'."\n" + .'- If **NextToken** has a return value, this value indicates the token for the start of the next query.', + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RouteEntries' => [ + 'description' => 'List of route entry publishing status information.', + 'type' => 'array', + 'items' => [ + 'description' => 'List of route entry publishing status information.', + 'type' => 'object', + 'properties' => [ + 'RouteEntryId' => [ + 'description' => 'The ID of the route entry.', + 'type' => 'string', + 'example' => 'rte-bp1mnnr2al0naomnpv****', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the route entry.', + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'RouteTableId' => [ + 'description' => 'The ID of the route table.', + 'type' => 'string', + 'example' => 'vtb-2ze3jgygk9bmsj23s****', + ], + 'RoutePublishTargets' => [ + 'description' => 'List of route entry publishing status information in the publishing targets.', + 'type' => 'array', + 'items' => [ + 'description' => 'List of route entry publishing status information in the publishing targets.', + 'type' => 'object', + 'properties' => [ + 'PublishStatus' => [ + 'description' => 'The publishing status of the route entry in the publishing target.', + 'type' => 'string', + 'enumValueTitles' => [ + 'NonPublished' => 'NonPublished', + 'Published' => 'Published', + ], + 'example' => 'Published', + ], + 'PublishTargetType' => [ + 'description' => 'The type of the route publishing target.', + 'type' => 'string', + 'example' => 'ECR', + ], + 'PublishTargetInstanceId' => [ + 'description' => 'The ID of the route publishing target instance.', + 'type' => 'string', + 'example' => 'ecr-xvuqdfma6x57ei****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotAssociated.TargetInstance', + 'errorMessage' => 'The target instance is not associated with vpc.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource gatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.NextTokenExpired', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.TargetType', + 'errorMessage' => 'The parameter of TargetType is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.UnexpectedRouteTable', + 'errorMessage' => 'Operation is denied because only system route table supports publishing route entries.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1D0971B2-A35A-42C1-A44C-E91360C36C0B\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RouteEntries\\": [\\n {\\n \\"RouteEntryId\\": \\"rte-bp1mnnr2al0naomnpv****\\",\\n \\"DestinationCidrBlock\\": \\"10.0.0.0/24\\",\\n \\"RouteTableId\\": \\"vtb-2ze3jgygk9bmsj23s****\\",\\n \\"RoutePublishTargets\\": [\\n {\\n \\"PublishStatus\\": \\"Published\\",\\n \\"PublishTargetType\\": \\"ECR\\",\\n \\"PublishTargetInstanceId\\": \\"ecr-xvuqdfma6x57ei****\\"\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'Query VPC Route Publishing Status', + 'translator' => 'machine', + ], + 'PublishVpcRouteEntries' => [ + 'summary' => 'Publish VPC Routes', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the instance is located. You can obtain the region ID by calling the DescribeRegions interface.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the instance is located. You can obtain the region ID by calling the DescribeRegions interface.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteEntries', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'List of route entries to be published, supporting up to 50 routes at most.', + 'type' => 'array', + 'items' => [ + 'description' => 'List of route entry information to be published.', + 'type' => 'object', + 'properties' => [ + 'RouteTableId' => [ + 'description' => 'The ID of the route table for the route entry.', + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-2ze3jgygk9bmsj23s****', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block for the route entry.', + 'type' => 'string', + 'required' => true, + 'example' => '121.41.165.123/32', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 50, + 'minItems' => 1, + ], + ], + [ + 'name' => 'TargetType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the target for route publication.', + 'type' => 'string', + 'required' => true, + 'example' => 'ECR', + ], + ], + [ + 'name' => 'TargetInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the target instance for route publication.', + 'type' => 'string', + 'required' => true, + 'example' => 'ecr-dhw2xsds5****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether to perform a dry run of this request. Values:'."\n" + ."\n" + .'- **true**: Sends a check request without publishing the route. The checks include whether the AccessKey is valid, the authorization status of the RAM user, and if all required parameters are filled out. If the check fails, the corresponding error is returned. If the check passes, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'- **false** (default): Sends a normal request. After passing the check, it returns a 2xx HTTP status code and directly queries the resource status.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => '980960B0-2969-40BF-8542-EBB34FD358AB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteEntry', + 'errorMessage' => 'The specified resource routeEntry is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'Forbidden.OperateCustomRouteTable', + 'errorMessage' => 'The operation is forbidden because publish route entry in custom route table.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntryPublishStatus', + 'errorMessage' => 'Route entry publish status is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotAssociated.TargetInstance', + 'errorMessage' => 'The target instance is not associated with vpc.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedTargetType', + 'errorMessage' => 'The operation is not allowed because the target type is not supported.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTable', + 'errorMessage' => 'The route table is in an invalid state.', + ], + [ + 'errorCode' => 'OperationUnsupported.PublishSystemRouteEntry', + 'errorMessage' => 'Publishing system route entry is unsupported.', + ], + [ + 'errorCode' => 'OperationUnsupported.UnsupportedNextHop', + 'errorMessage' => 'Unsupported nexthop type for route entry publish operation.', + ], + [ + 'errorCode' => 'OperationUnsupported.PublishPrefixListRouteEntry', + 'errorMessage' => 'Publishing prefix list route entry is unsupported.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"980960B0-2969-40BF-8542-EBB34FD358AB\\"\\n}","type":"json"}]', + 'title' => 'Publish VPC Routes', + 'translator' => 'machine', + ], + 'WithdrawVpcPublishedRouteEntries' => [ + 'summary' => 'Withdraw advertised Virtual Private Cloud (VPC) routes.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. Call the DescribeRegions operation to access it.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. Call the DescribeRegions operation to access it.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouteEntries', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The route entries to be withdrawn. Maximum value: 50.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of route entries to be withdrawn.', + 'type' => 'object', + 'properties' => [ + 'RouteTableId' => [ + 'description' => 'The ID of the route table.', + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-bp145q7glnuzd****', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block', + 'type' => 'string', + 'required' => true, + 'example' => '10.0.0.0/24', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 50, + 'minItems' => 1, + ], + ], + [ + 'name' => 'TargetType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of target instance.', + 'type' => 'string', + 'required' => true, + 'example' => 'ECR', + ], + ], + [ + 'name' => 'TargetInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'Target instance ID.', + 'type' => 'string', + 'required' => true, + 'example' => 'ecr-dhw2xsds5****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteEntry', + 'errorMessage' => 'The specified resource routeEntry is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntryPublishStatus', + 'errorMessage' => 'Route entry publish status is incorrect.', + ], + [ + 'errorCode' => 'Forbidden.OperateCustomRouteTable', + 'errorMessage' => 'The operation is forbidden because publish route entry in custom route table.', + ], + [ + 'errorCode' => 'ResourceNotAssociated.TargetInstance', + 'errorMessage' => 'The target instance is not associated with vpc.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedTargetType', + 'errorMessage' => 'The operation is not allowed because the target type is not supported.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTable', + 'errorMessage' => 'The route table is in an invalid state.', + ], + [ + 'errorCode' => 'OperationUnsupported.PublishSystemRouteEntry', + 'errorMessage' => 'Publishing system route entry is unsupported.', + ], + [ + 'errorCode' => 'OperationUnsupported.UnsupportedNextHop', + 'errorMessage' => 'Unsupported nexthop type for route entry publish operation.', + ], + [ + 'errorCode' => 'OperationUnsupported.PublishPrefixListRouteEntry', + 'errorMessage' => 'Publishing prefix list route entry is unsupported.', + ], + [ + 'errorCode' => 'MissingParam.RouteEntries', + 'errorMessage' => 'The parameter RouteEntries is missing.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","type":"json"}]', + 'title' => 'WithdrawVpcPublishedRouteEntries', + ], + 'ListGatewayRouteTableEntries' => [ + 'summary' => 'Queries route entries of a gateway route table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the gateway route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* If a value is returned for NextToken, specify the value in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'GatewayRouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the gateway route table that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the route entry in the gateway route table.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.5', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the gateway route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The route entries in the gateway route table.'."\n", + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The returned value of NextToken is a pagination token, which can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'GatewayRouteEntryModels' => [ + 'description' => 'The details of the routes in the gateway route table.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the route entry. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'NextHopId' => [ + 'description' => 'The ID of the next hop.'."\n", + 'type' => 'string', + 'example' => 'i-bp11gcl0sm85t9bi****', + ], + 'Description' => [ + 'description' => 'The name of the route entry.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'NextHopType' => [ + 'description' => 'The type of the next hop. Valid values:'."\n" + ."\n" + .'* **EcsInstance**: Elastic Compute Service (ECS) instance'."\n" + .'* **NetworkInterface**: elastic network interfaces (ENIs).'."\n" + .'* **Local**: local next hop'."\n", + 'type' => 'string', + 'example' => 'EcsInstance', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the route.'."\n", + 'type' => 'string', + 'example' => '192.168.0.5', + ], + 'Name' => [ + 'description' => 'The name of the route entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letter, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'example' => 'name', + ], + 'NextHops' => [ + 'description' => 'The information about the next hop.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'NextHopId' => [ + 'description' => 'The ID of the next hop.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp10zyaph5cc8b7c7****', + ], + 'NextHopType' => [ + 'description' => 'The type of the next hop. Valid values:'."\n" + ."\n" + .'* **Instance** (default): an ECS instance'."\n" + .'* **HaVip**: a high-availability virtual IP address (HaVip).'."\n" + .'* **VpnGateway**: a VPN gateway'."\n" + .'* **NatGateway**: a NAT gateway'."\n" + .'* **NetworkInterface**: a secondary ENI'."\n" + .'* **RouterInterface**: a router interface'."\n" + .'* **IPv6Gateway**: an IPv6 gateway'."\n" + .'* **Attachment**: a transit router', + 'type' => 'string', + 'example' => 'Instance', + ], + 'Weight' => [ + 'description' => 'The weight of the route.'."\n", + 'type' => 'string', + 'example' => '100', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the route is available. Valid values:'."\n" + ."\n" + .'* **0**: unavailable'."\n" + .'* **1**: available'."\n", + 'type' => 'string', + 'example' => '1', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.GatewayRouteTable', + 'errorMessage' => 'The specified resource GatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The param of nextToken is illegal', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"TotalCount\\": \\"1\\",\\n \\"GatewayRouteEntryModels\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"NextHopId\\": \\"i-bp11gcl0sm85t9bi****\\",\\n \\"Description\\": \\"test\\",\\n \\"NextHopType\\": \\"EcsInstance\\",\\n \\"DestinationCidrBlock\\": \\"192.168.0.5\\",\\n \\"Name\\": \\"name\\",\\n \\"NextHops\\": [\\n {\\n \\"NextHopId\\": \\"vpn-bp10zyaph5cc8b7c7****\\",\\n \\"NextHopType\\": \\"Instance\\",\\n \\"Weight\\": \\"100\\",\\n \\"Enabled\\": \\"1\\"\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n 1\\n \\n Available\\n i-bp11gcl0sm85t9bi****\\n test\\n EcsInstance\\n 192.168.0.5\\n name\\n \\n","errorExample":""}]', + 'title' => 'ListGatewayRouteTableEntries', + ], + 'AssociateRouteTableWithGateway' => [ + 'summary' => 'Associates a gateway route table with an IPv4 gateway in the same virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway with which you want to associate the gateway route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the gateway route table.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** of each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without performing the operation. The system prechecks the required parameters, request syntax, and limits. If the request fails the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the precheck, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n" + ."\n" + .'The IPv4 gateway must be in the **Activated** state.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + ], + [ + 'name' => 'GatewayType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of a gateway to be associated with a route table.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'Ipv4Gateway', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway with which you want to associate the gateway route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F89C2176-8F10-55EF-90CF-CF99D1E3F816', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.Ipv4Gateway', + 'errorMessage' => 'The specified resource ipv4Gateway is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv4Gateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.Ipv4Gateway', + 'errorMessage' => 'The specified resource %s is already associated.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayRouteTable', + 'errorMessage' => 'The specified resource GatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.GatewayRouteTable', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.GatewayRouteTable', + 'errorMessage' => 'The specified resource %s is already associated.', + ], + [ + 'errorCode' => 'OperationDenied.Ipv4GatewayNotActive', + 'errorMessage' => 'The operation is not allowed because of ipv4Gateway [%s] is not active.', + ], + [ + 'errorCode' => 'OperationDenied.RouteTableTypeIncorrect', + 'errorMessage' => 'The operation is not allowed because of routeTableType is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource gatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'OperationDenied.GatewayAndTableNotInOneVpc', + 'errorMessage' => 'The operation is not allowed because of GatewayAndTableNotInOneVpc.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTable', + 'errorMessage' => 'The status of the specified route table is incorrect.', + ], + [ + 'errorCode' => 'IllegalParam.GatewayType', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv6GatewayRouteTable', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.IngressRoutingNotSupportAnycast', + 'errorMessage' => 'The operation is not allowed because ingress routing not support anycast.', + ], + [ + 'errorCode' => 'OperationDenied.ExistPublicIpv6IpInVpc', + 'errorMessage' => 'Operation denied because IPV6 public ip exists in VPC.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F89C2176-8F10-55EF-90CF-CF99D1E3F816\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F89C2176-8F10-55EF-90CF-CF99D1E3F816\\n","errorExample":""}]', + 'title' => 'AssociateRouteTableWithGateway', + ], + 'DissociateRouteTableFromGateway' => [ + 'summary' => 'Disassociates a gateway route table from an IPv4 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '38047', + 'abilityTreeNodes' => [ + 'FEATUREvpcRPO4YI', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway from which you want to disassociate the gateway route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'RouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the gateway route table.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without performing the operation. The system prechecks the required parameters, request syntax, and limits. If the request fails to pass the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the precheck, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + ], + [ + 'name' => 'GatewayType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of a gateway to be disassociated from a route table.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'Ipv4Gateway', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway from which you want to disassociate the gateway route table.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C5644C9A-7480-13B6-AECB-30FF142E3724', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.NotExistAssociateRelation', + 'errorMessage' => 'The operation is not failed because of not exist this associate relation.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ipv4Gateway', + 'errorMessage' => 'The specified resource ipv4Gateway is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv4Gateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayRouteTable', + 'errorMessage' => 'The specified resource GatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.GatewayRouteTable', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource gatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'OperationDenied.RouteTableTypeIncorrect', + 'errorMessage' => 'The operation is not allowed because of %s.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6Gateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C5644C9A-7480-13B6-AECB-30FF142E3724\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C5644C9A-7480-13B6-AECB-30FF142E3724\\n","errorExample":""}]', + 'title' => 'DissociateRouteTableFromGateway', + ], + 'UpdateGatewayRouteTableEntryAttribute' => [ + 'summary' => 'Modifies the next hop type and next hop of the route entry in a gateway route table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the gateway route table that you want to modify belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'IPv4GatewayRouteTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the gateway route table that you want to modify.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + ], + [ + 'name' => 'GatewayRouteTableId', + 'in' => 'query', + 'schema' => [ + 'title' => '要修改的网关路由表 ID。', + 'description' => 'The ID of the gateway route table that you want to modify.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to precheck only this request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without modifying the gateway route table. The system checks the required parameters, request format, and service limits. If the request fails to pass the precheck, an error code is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the request. This is the default value. If the request passes the precheck, a 2xx HTTP status code is returned and the gateway route table is modified.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the route entry in the gateway route table.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '47.100.XX.XX/16', + ], + ], + [ + 'name' => 'NextHopType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new next hop type of the route. Valid values:'."\n" + ."\n" + .'* **Instance**: Elastic Compute Service (ECS) instance'."\n" + .'* **NetworkInterface**: elastic network interface (ENI)'."\n" + .'* **Local**: local next hop'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'EcsInstance', + ], + ], + [ + 'name' => 'NextHopId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new next hop ID of the route entry.'."\n" + ."\n" + .'* If you set **NextHopType** to **Instance**, specify an ECS instance ID for **NextHopId**.'."\n" + .'* If you set **NextHopType** to **NetworkInterface**, specify an ENI ID for **NextHopId**.'."\n" + .'* If you set **NextHopType** to **Local**, leave **NextHopId** empty. This indicates a local next hop.'."\n" + ."\n" + .'> If the value of NextHopType is **Instance** or **NetworkInterface**, and you want to modify the next hop, you must set **NextHopType** to **Local** first. Then, set **NextHopType** to **Instance** or **NetworkInterface** and specify **NextHopId** based on your requirements. If the next hop type of a route entry is Instance or NetworkInterface, you cannot directly specify a different ENI ID or ECS instance ID for the NextHopId parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp18xq9yguxoxe7m****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the gateway route table.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letter, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the gateway route table.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'new', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the gateway route table that you want to modify belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.UpdateGatewayRouteEntry', + 'errorMessage' => 'The operation is not allowed because of need switch to local first.', + ], + [ + 'errorCode' => 'IllegalParam.DestCidrBlock', + 'errorMessage' => 'The destCidrBlock is invalid.', + ], + [ + 'errorCode' => 'ResourceNotFound.NetworkInterface', + 'errorMessage' => 'The specified resource nextHop is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteEntry', + 'errorMessage' => 'The specified resource routeEntry is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vswitch', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.Instance', + 'errorMessage' => 'The specified resource nextHop is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.NextHop', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.NextHopTypeNonsupport', + 'errorMessage' => 'The operation is not allowed because of nextHopType is nonsupport.', + ], + [ + 'errorCode' => 'OperationDenied.LocalEntryCanOnlyModifyNextHop', + 'errorMessage' => 'Only the nextHop parameter can be modified for a local route entry.', + ], + [ + 'errorCode' => 'ExclusiveParam.NextHopTypeAndNextHopId', + 'errorMessage' => 'The param of nextHopType and nextHopId are mutually exclusive.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource gatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The specified RouterInterfaceId does not exist in our record.', + ], + [ + 'errorCode' => 'OperationUnsupported.OnlySupportNormalNetworkInterface', + 'errorMessage' => 'Next hop only supports binding normal network Interface.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv6GatewayRouteTable', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.TrAttachmentIpv6Disabled', + 'errorMessage' => 'The operation is not allowed because tr attachment Ipv6 is disabled.', + ], + [ + 'errorCode' => 'InvalidAttachment.NotFound', + 'errorMessage' => 'The attachment is not found.', + ], + [ + 'errorCode' => 'BothEmptyParam.GatewayRouteTableIdAndIpv4GatewayRouteTableId', + 'errorMessage' => 'The parameter GatewayRouteTableId and Ipv4GatewayRouteTableId cannot be empty at the same time. We recommend that you use GatewayRouteTableId.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'UpdateGatewayRouteTableEntryAttribute', + ], + 'CreateVpcPrefixList' => [ + 'summary' => 'Creates a prefix list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PrefixListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the prefix list.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'name', + ], + ], + [ + 'name' => 'PrefixListDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the prefix list.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'description', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the required parameters, request syntax, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'MaxEntries', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of CIDR blocks that you can specify in the prefix list. Default value: 50.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '50', + ], + ], + [ + 'name' => 'PrefixListEntries', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The CIDR block information specified in the prefix list.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Cidr' => [ + 'description' => 'The CIDR block specified in the prefix list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/16', + ], + 'Description' => [ + 'description' => 'The description of the CIDR block specified in the prefix list.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CIDR', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 50, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the prefix list belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the prefix list.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4** (default)'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PrefixListId' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'pl-0b700s2ee3***', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the prefix list belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedFeature.IpVersion', + 'errorMessage' => 'The ipversion type is not supported.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrefixListCidrCount', + 'errorMessage' => 'The quota of prefixListMaxEntry count is exceeded.', + ], + [ + 'errorCode' => 'OperationFailed.CidrCountExceedMaxCount', + 'errorMessage' => 'The operation is failed because of cidrCountExceedMaxCount.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The param of cidrBlock is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrName', + 'errorMessage' => 'The param of cidrName is illegal.', + ], + [ + 'errorCode' => 'DuplicatedParam.CidrBlock', + 'errorMessage' => 'The param of cidrBlock is duplicated.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrefixListCount', + 'errorMessage' => 'The quota of prefixList count is exceeded.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListPrefixLists', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PrefixListId\\": \\"pl-0b700s2ee3***\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n pl-0b700s2ee3***\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n rg-bp67acfmxazb4ph****\\n","errorExample":""}]', + 'title' => 'CreateVpcPrefixList', + 'description' => 'You cannot repeatedly call the **CreateVpcPrefixList** operation within the specified period of time.'."\n", + ], + 'RetryVpcPrefixListAssociation' => [ + 'summary' => 'Re-applies a prefix list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list that you want to re-apply.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pl-0b7hwu67****', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource with which the prefix list is associated. Valid values:'."\n" + ."\n" + .'* **vpcRouteTable**: VPC route table'."\n" + .'* **trRouteTable**: route table of a transit router'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpcRouteTable', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the associated resource.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vtb-bp1drpcfz9srr393h****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without associating the prefix list. The system prechecks the required parameters, request syntax, and limits. If the request fails the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the request. If the request passes the precheck, a 2xx HTTP status code is returned and the prefix list is associated. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list that you want to re-apply.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature of prefixList entry is not supported in this region.', + ], + [ + 'errorCode' => 'OperationDenied.SystemPrefixList', + 'errorMessage' => 'The operation is not allowed because of SystemPrefixList.', + ], + [ + 'errorCode' => 'OperationFailed.OperateShareResource', + 'errorMessage' => 'This is not allowed to operate shared prefixList.', + ], + [ + 'errorCode' => 'IncorrectStatus.PrefixList', + 'errorMessage' => 'The status of prefixList is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.NotExistAssociateRelation', + 'errorMessage' => 'The operation is failed because of association not exist.', + ], + [ + 'errorCode' => 'ResourceNotFound.PrefixList', + 'errorMessage' => 'The specified resource of prefixList is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::GetVpcPrefixListAssociations', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'RetryVpcPrefixListAssociation', + 'description' => '* If you modify the information about a prefix list but the modification is not automatically applied to the route table that is associated with the prefix list, you can call this operation to apply the latest prefix list to the associated route table.'."\n" + ."\n" + .'* The **RetryVpcPrefixListAssociation** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the background. You can call the [GetVpcPrefixListAssociations](~~445478~~) to check whether the prefix list is re-applied.'."\n" + ."\n" + .' * If the prefix list is in the **Modifying** state, the prefix list is being re-applied.'."\n" + .' * If the prefix list is in the **ModifyFailed** state, the prefix list fails to be re-applied.'."\n" + .' * If the prefix list is in the **Created** state, the prefix list is re-applied.'."\n" + ."\n" + .'* After you call the **RetryVpcPrefixListAssociation** operation to re-apply a prefix list, you cannot call the operation again until the current task is complete.', + ], + 'DeleteVpcPrefixList' => [ + 'summary' => 'Deletes a prefix list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pl-0b78hw45f****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: checks the request without performing the operation. The system checks the required parameters, request syntax, and limits. If the request fails to pass the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '64B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.PrefixList ', + 'errorMessage' => 'The specified resource of prefixList is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.SystemPrefixList', + 'errorMessage' => 'This is not allowed to operate system prefixList.', + ], + [ + 'errorCode' => 'OperationDenied.DeleteShareResource', + 'errorMessage' => 'This is not allowed to delete shared prefixList.', + ], + [ + 'errorCode' => 'IncorrectStatus.PrefixList', + 'errorMessage' => 'The status of prefixList is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.PrefixListRelation', + 'errorMessage' => 'The specified resource of prefixList depends on prefixList relation, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.ShareResource', + 'errorMessage' => 'The specified resource of prefixList depends on share resource, so the operation cannot be completed.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListPrefixLists', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"64B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 64B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DeleteVpcPrefixList', + 'description' => 'You cannot repeatedly call the **DeleteDhcpOptionsSet** operation to delete a prefix list within the specified period of time.', + ], + 'ModifyVpcPrefixList' => [ + 'summary' => 'Modifies the configuration of a prefix list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pl-0b7hwu67****', + ], + ], + [ + 'name' => 'PrefixListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the prefix list.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'newname', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: checks the request without performing the operation. The system prechecks the required parameters, request syntax, and limits. If the request fails the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'AddPrefixListEntry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about CIDR blocks to be added to the prefix list.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Cidr' => [ + 'description' => 'The CIDR block to be added to the prefix list.'."\n" + ."\n" + .'> If the CIDR block already exists in the prefix list, you can only modify the description of the CIDR block by setting the **AddPrefixListEntry.N.Description** parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.16.0.0/12', + ], + 'Description' => [ + 'description' => 'The description of the CIDR block to be added to the prefix list.'."\n" + ."\n" + .'The description must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'newcidr', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'RemovePrefixListEntry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about CIDR blocks to be deleted to the prefix list.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Cidr' => [ + 'description' => 'The CIDR block that you want to delete from the prefix list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/16', + ], + 'Description' => [ + 'description' => 'The description of the CIDR block that you want to delete.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cidr', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PrefixListDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the prefix list.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'newdescription', + ], + ], + [ + 'name' => 'MaxEntries', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of CIDR blocks supported by the prefix list after the configuration of the prefix list is modified.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PrefixListId' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'pl-0b7hwu67****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.PrefixList', + 'errorMessage' => 'The specified resource of prefixList is not found.', + ], + [ + 'errorCode' => 'OperationFailed.CidrCountExceedMaxCount', + 'errorMessage' => 'The operation is failed because of cidrCountExceedMaxCount.', + ], + [ + 'errorCode' => 'OperationDenied.RemoveCountExceedExistCount', + 'errorMessage' => 'The operation is not allowed because of remove-count exceed exist-count.', + ], + [ + 'errorCode' => 'DuplicatedParam.CidrBlock', + 'errorMessage' => 'The param of cidrBlock is duplicated.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The param of cidrBlock is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrName', + 'errorMessage' => 'The param of cidrName is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.SystemPrefixList', + 'errorMessage' => 'This is not allowed to operate system prefixList.', + ], + [ + 'errorCode' => 'OperationFailed.OperateShareResource', + 'errorMessage' => 'This is not allowed to operate shared prefixList.', + ], + [ + 'errorCode' => 'IncorrectStatus.PrefixList', + 'errorMessage' => 'The status of prefixList is incorrect.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrefixListCidrCount', + 'errorMessage' => 'The quota of prefixList entry maxEntry count is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'Route entry quota exceeded in associated route table.', + ], + [ + 'errorCode' => 'OperationDenied.QuotaExceededWithNetworkAcl', + 'errorMessage' => 'If the prefix list increases MaxEntries, the quota for the maximum number of entries for the associated network ACL instance %s is exceeded.', + ], + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The request has failed due to a temporary failure of the server.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListPrefixLists', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PrefixListId\\": \\"pl-0b7hwu67****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n pl-0b7hwu67****\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'ModifyVpcPrefixList', + 'description' => '* **ModifyVpcPrefixList** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListPrefixLists](~~311535~~) to query the status of the task.'."\n" + ."\n" + .' * If the prefix list is in the **Modifying** state, the configuration of the prefix list is being modified.'."\n" + .' * If the prefix list is in the **Created** state, the configuration of the prefix list is modified.'."\n" + .' * After the configuration of the prefix list is modified, you can call the [GetVpcPrefixListAssociations](~~445478~~) operation to query the information about the network instances that are associated with the prefix list and determine whether the associated network instances use the new CIDR blocks. If the association **status** of the prefix list is **Created**, the new CIDR blocks are used by the network instances that are associated with the prefix list.'."\n" + ."\n" + .'* You cannot repeatedly call **ModifyVpcPrefixList** to modify the configuration of a prefix list within the specified period of time.'."\n", + ], + 'ListPrefixLists' => [ + 'summary' => 'Queries prefix lists.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PrefixListIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '前缀列表的实例ID', + 'description' => 'The IDs of prefix lists to be queried. Valid values of **N** are **1** to **100**, which specifies that you can query up to 100 prefix lists at a time.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-0b7hwu67****', + ], + 'required' => false, + 'example' => 'pl-m5estsqsdqwg88hjf****', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '20', + 'default' => '10', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the prefix list belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The key cannot exceed 64 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The ID of the region where you want to query prefix lists.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PrefixListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the prefix list to query.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'name', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DF72F7BB-5DFA-529C-887E-B0BB70D89C4F', + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value indicates the token that is used for the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'MaxResults' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '20', + ], + 'PrefixLists' => [ + 'description' => 'The information about the prefix lists.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PrefixListId' => [ + 'title' => '前缀列表的实例ID', + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'pl-m5estsqsdqwg88hjf****', + ], + 'PrefixListName' => [ + 'title' => '名称', + 'description' => 'The name of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'PrefixListDescription' => [ + 'title' => '描述', + 'description' => 'The description of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'Created with oss service by system.', + ], + 'IpVersion' => [ + 'title' => 'IpVersion', + 'description' => 'The IP version of the prefix list. Valid values:'."\n" + ."\n" + .'* **IPV4**'."\n" + .'* **IPV6**'."\n", + 'type' => 'string', + 'example' => 'IPV4', + ], + 'CreationTime' => [ + 'title' => '创建时间', + 'description' => 'The time when the prefix list was created.'."\n", + 'type' => 'string', + 'example' => '2022-07-12T14:22:32Z', + ], + 'CidrBlocks' => [ + 'title' => '前缀列表包含的网段', + 'description' => 'The CIDR block specified in the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The CIDR block specified in the prefix list.'."\n", + 'type' => 'string', + 'example' => '100.115.XX.XX/24', + ], + ], + 'ShareType' => [ + 'description' => 'Indicates whether the prefix list is shared. Valid values:'."\n" + ."\n" + .'* **Shared**: The prefix list is shared.'."\n" + .'* If an empty value is returned, the prefix list is not shared.'."\n", + 'type' => 'string', + 'example' => 'Shared', + ], + 'MaxEntries' => [ + 'description' => 'The maximum number of CIDR blocks that you can specify in the prefix list.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'Status' => [ + 'description' => 'The status of the prefix list. Valid values:'."\n" + ."\n" + .'* **Created**'."\n" + .'* **Deleted**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'OwnerId' => [ + 'description' => 'The Alibaba Cloud account to which the prefix list belongs.'."\n", + 'type' => 'string', + 'example' => '1210123456123456', + ], + 'PrefixListStatus' => [ + 'description' => 'The status of the prefix list. Valid values:'."\n" + ."\n" + .'* **Created**'."\n" + .'* **Deleted**'."\n" + .'* **Modifying**'."\n" + ."\n" + .'> This parameter is the same as the **Status** parameter.'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'RegionId' => [ + 'description' => 'The region ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the prefix list belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + 'PrefixListType' => [ + 'title' => '前缀列表类型', + 'description' => 'The type of the prefix list.', + 'type' => 'string', + 'example' => 'Custom', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DF72F7BB-5DFA-529C-887E-B0BB70D89C4F\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"PrefixLists\\": [\\n {\\n \\"PrefixListId\\": \\"pl-m5estsqsdqwg88hjf****\\",\\n \\"PrefixListName\\": \\"test\\",\\n \\"PrefixListDescription\\": \\"Created with oss service by system.\\",\\n \\"IpVersion\\": \\"IPV4\\",\\n \\"CreationTime\\": \\"2022-07-12T14:22:32Z\\",\\n \\"CidrBlocks\\": [\\n \\"100.115.XX.XX/24\\"\\n ],\\n \\"ShareType\\": \\"Shared\\",\\n \\"MaxEntries\\": 10,\\n \\"Status\\": \\"Created\\",\\n \\"OwnerId\\": \\"1210123456123456\\",\\n \\"PrefixListStatus\\": \\"Created\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"PrefixListType\\": \\"Custom\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n DF72F7BB-5DFA-529C-887E-B0BB70D89C4F\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 1\\n 20\\n \\n pl-m5estsqsdqwg88hjf****\\n test\\n Created with oss service by system.\\n IPV4\\n 2022-07-12T14:22:32Z\\n 100.115.XX.XX/24\\n Shared\\n 10\\n Created\\n 1210123456123456\\n Created\\n cn-hangzhou\\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'ListPrefixLists', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'GetVpcPrefixListAssociations' => [ + 'summary' => 'Queries the resources that are associated with a prefix list.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pl-0b7hwu67****', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* If a value is returned for NextToken, specify the value in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return in each call. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '20', + 'default' => '50', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the prefix list.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'Count' => [ + 'description' => 'The number of entries.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'PrefixListAssociation' => [ + 'description' => 'The information about the network instances that are associated with the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PrefixListId' => [ + 'title' => '前缀列表的实例ID', + 'description' => 'The prefix list ID.'."\n", + 'type' => 'string', + 'example' => 'pl-0b7hwu67****', + ], + 'ResourceId' => [ + 'title' => '状态', + 'description' => 'The ID of the associated resource.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp1drpcfz9srr393h****', + ], + 'ResourceType' => [ + 'title' => '名称', + 'description' => 'The type of the associated resource. Valid values:'."\n" + ."\n" + .'* **vpcRouteTable**: virtual private cloud (VPC) route table.'."\n" + .'* **trRouteTable**: route table of a transit router.'."\n", + 'type' => 'string', + 'example' => 'vpcRouteTable', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the prefix list belongs.'."\n", + 'type' => 'string', + 'example' => '153460731706****', + ], + 'Status' => [ + 'title' => 'IpVersion', + 'description' => 'The status of the prefix list. Valid values:'."\n" + ."\n" + .'* **Created**'."\n" + .'* **ModifyFailed**'."\n" + .'* **Creating**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Success', + ], + 'Reason' => [ + 'description' => 'The reason why the association failed.'."\n", + 'type' => 'string', + 'example' => 'failed', + ], + 'RegionId' => [ + 'description' => 'The region ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ResourceUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the resource associated with the prefix list belongs.'."\n", + 'type' => 'string', + 'example' => '132193271328****', + ], + 'CidrList' => [ + 'description' => 'List of CIDR addresses where the prefix list is effective in the currently associated resources.', + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 1,\\n \\"Count\\": 1,\\n \\"PrefixListAssociation\\": [\\n {\\n \\"PrefixListId\\": \\"pl-0b7hwu67****\\",\\n \\"ResourceId\\": \\"vtb-bp1drpcfz9srr393h****\\",\\n \\"ResourceType\\": \\"vpcRouteTable\\",\\n \\"OwnerId\\": \\"153460731706****\\",\\n \\"Status\\": \\"Success\\",\\n \\"Reason\\": \\"failed\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ResourceUid\\": \\"132193271328****\\",\\n \\"CidrList\\": \\"192.168.0.0/16\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 1\\n 1\\n \\n pl-0b7hwu67****\\n vtb-bp1drpcfz9srr393h****\\n vpcRouteTable\\n 153460731706****\\n Success\\n failed\\n cn-hangzhou\\n 132193271328****\\n \\n","errorExample":""}]', + 'title' => 'GetVpcPrefixListAssociations', + 'translator' => 'machine', + ], + 'GetVpcPrefixListEntries' => [ + 'summary' => 'Queries the information about a prefix list.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pl-0b7hwu67****', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '20', + 'default' => '50', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the prefix list.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value indicates the token that is used for the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'Count' => [ + 'description' => 'The number of entries.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'PrefixListEntry' => [ + 'description' => 'The information about the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PrefixListId' => [ + 'title' => '前缀列表的实例ID', + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'pl-0b7hwu67****', + ], + 'Cidr' => [ + 'title' => '状态', + 'description' => 'The CIDR blocks specified in the prefix list.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + 'Description' => [ + 'title' => '名称', + 'description' => 'The description of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'description', + ], + 'RegionId' => [ + 'description' => 'The region ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + [ + 'errorCode' => 'ResourceNotFound.PrefixList', + 'errorMessage' => 'The specified resource of prefixList is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 1,\\n \\"Count\\": 1,\\n \\"PrefixListEntry\\": [\\n {\\n \\"PrefixListId\\": \\"pl-0b7hwu67****\\",\\n \\"Cidr\\": \\"192.168.0.0/16\\",\\n \\"Description\\": \\"description\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 1\\n 1\\n \\n pl-0b7hwu67****\\n 192.168.0.0/16\\n description\\n cn-hangzhou\\n \\n","errorExample":""}]', + 'title' => 'GetVpcPrefixListEntries', + ], + 'CreateDhcpOptionsSet' => [ + 'summary' => 'Creates a DHCP options set.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region to which the DHCP options set belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DomainNameServers', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the DNS server. You can enter at most four DNS server IP addresses. Separate IP addresses with commas (,).'."\n" + ."\n" + .'> If no IP address is specified, the Elastic Compute Service (ECS) instance uses the IP addresses 100.100.2.136 and 100.100.2.138, which are provided by Alibaba Cloud by default.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '192.XX.XX.123', + ], + ], + [ + 'name' => 'DhcpOptionsSetName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the DHCP options set.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'name', + ], + ], + [ + 'name' => 'DhcpOptionsSetDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the DHCP options set.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length. It must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'description', + ], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The root domain. For example, you can set the value to example.com.'."\n" + ."\n" + .'After a DHCP options set is associated with a virtual private cloud (VPC), the root domain in the DHCP options set is automatically synchronized with the ECS instances in the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'example.com', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the DHCP options set belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request.'."\n" + ."\n" + .'**true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'LeaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The lease time of the IPv4 addresses for the DHCP options set.'."\n" + ."\n" + .'* If you use hours as the unit, valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **87600h**.'."\n" + .'* If you use days as the unit, valid values are **1d to 49d** and **3650d to 7300d**. Default value: **3650d**.'."\n" + ."\n" + .'> When you enter a value, you must also specify the unit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '3650d', + ], + ], + [ + 'name' => 'Ipv6LeaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The lease time of the IPv6 addresses for the DHCP options set.'."\n" + ."\n" + .'* If you use hours as the unit, valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **87600h**.'."\n" + .'* If you use days as the unit, valid values are **1d to 49d** and **3650d to 7300d**. Default value: **3650d**.'."\n" + ."\n" + .'> When you enter a value, you must also specify the unit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '3650d', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The ID of the DHCP options set that is created.'."\n", + 'type' => 'object', + 'properties' => [ + 'DhcpOptionsSetId' => [ + 'description' => 'The ID of the DHCP options set that is created.'."\n", + 'type' => 'string', + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the DHCP options set belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationUnsupported.DhcpOptionsSet', + 'errorMessage' => 'The DHCP options set feature in this region is not supported.', + ], + [ + 'errorCode' => 'InvalidDomainNameServers.Malformed', + 'errorMessage' => 'The specified format of DomainNameServers is invalid.', + ], + [ + 'errorCode' => 'QuotaExceeded.DomainNameServers', + 'errorMessage' => 'The maximum number of domain name servers cannot exceed 4.', + ], + [ + 'errorCode' => 'IllegalParam.DomainNameServers', + 'errorMessage' => 'The specified DomainNameServers is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.DomainName', + 'errorMessage' => 'The specified DomainName is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.DhcpOptionsSetName', + 'errorMessage' => 'The specified DhcpOptionsSetName is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.DhcpOptionsSetDescription', + 'errorMessage' => 'The specified DhcpOptionsSetDescription is invalid.', + ], + [ + 'errorCode' => 'QuotaExceeded.RegionDhcpOptionsSet', + 'errorMessage' => 'The quota of dhcpOptionsSet in the region is exceeded.', + ], + [ + 'errorCode' => 'OperationUnsupported.DhcpLeaseTime', + 'errorMessage' => 'The DhcpOptionsSet of this region does not support custom LeaseTime.', + ], + [ + 'errorCode' => 'IllegalParam.LeaseTime', + 'errorMessage' => 'LeaseTime [%s] is illegal.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::GetDhcpOptionsSet', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"DhcpOptionsSetId\\": \\"dopt-o6w0df4epg9zo8isy****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n dopt-o6w0df4epg9zo8isy****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n rg-acfmxazb4ph****\\n","errorExample":""}]', + 'title' => 'CreateDhcpOptionsSet', + 'description' => '* **CreateDhcpOptionsSet** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [GetDhcpOptionsSet](~~448820~~) to query the status of the task.'."\n" + ."\n" + .' * If the vSwitch is in the **Pending** state, the DHCP options set is being configured.'."\n" + .' * If the vSwitch is in the **Available** state, the DHCP options set is available.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteDhcpOptionsSet' => [ + 'summary' => 'Deletes a DHCP options set.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the DHCP options set to be deleted. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DHCP options set to be deleted.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'**true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.DhcpOptionsSet', + 'errorMessage' => 'The DhcpOptionsSet status does not support this operation.', + ], + [ + 'errorCode' => 'OperationUnsupported.DhcpOptionsSet', + 'errorMessage' => 'The DHCP options set feature in this region is not supported.', + ], + [ + 'errorCode' => 'DependencyViolation.VpcAttachment', + 'errorMessage' => 'DhcpOptionsSet cannot be deleted when it is attached to VPC.', + ], + [ + 'errorCode' => 'InvalidDhcpOptionsSetId.NotFound', + 'errorMessage' => 'The specified dhcpOptionsSetId does not exist.', + ], + [ + 'errorCode' => 'MissingParam.DhcpOptionsSetId', + 'errorMessage' => 'Missing parameter DhcpOptionsSetId.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 8B2F5262-6B57-43F2-97C4-971425462DFE\\r\\n","errorExample":""}]', + 'title' => 'DeleteDhcpOptionsSet', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **DeleteDhcpOptionsSet** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetDhcpOptionsSet](~~189208~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the DHCP options set is in the **Deleting** state, the DHCP options set is being deleted.'."\n" + .' * If you cannot query the DHCP options set, the DHCP options set is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteDhcpOptionsSet** operation to delete a DHCP options set within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AttachDhcpOptionsSetToVpc' => [ + 'summary' => 'Associates a DHCP options set with a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region to which the DHCP options set belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DHCP options set.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to be associated with the DHCP options set.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-sfdkfdjkdf****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'**true**: checks the request without performing the operation. The system checks whether your AccessKey pair is valid, whether the Resource Access Management (RAM) user is authorized, and whether the required parameters are set. If the request fails to pass the check, the corresponding error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): sends the request. If the request passes the check, a 2XX HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'You cannot operate shared resources.', + ], + [ + 'errorCode' => 'InvalidDhcpOptionsSetId.NotFound', + 'errorMessage' => 'The specified dhcpOptionsSetId does not exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.DhcpOptionsSet', + 'errorMessage' => 'The DhcpOptionsSet status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcDhcpOptionsSet', + 'errorMessage' => 'The dhcpOptionsSet status of VPC does not support this operation.', + ], + [ + 'errorCode' => 'OperationFailed.AttachmentExist', + 'errorMessage' => 'The current VPC is already attached to a DHCP options set.', + ], + [ + 'errorCode' => 'QuotaExceeded.AttachVpcNumber', + 'errorMessage' => 'The maximum number of VPCs that can be attached to a DHCP options set is exceeded.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent. Please wait a moment and try again.', + ], + [ + 'errorCode' => 'MissingParam.VpcId', + 'errorMessage' => 'You must specify VpcId.', + ], + [ + 'errorCode' => 'MissingParam.DhcpOptionsSetId', + 'errorMessage' => 'Missing parameter DhcpOptionsSetId.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'AttachDhcpOptionsSetToVpc', + 'description' => '* The **AttachDhcpOptionsSetToVpc** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [DescribeVpcAttribute](~~94565~~) operation to query the status of a DHCP options set:'."\n" + ."\n" + .' * If the DHCP options set is in the **Pending** state, the DHCP options set is being associated.'."\n" + .' * If the DHCP options set is in the **InUse** state, the DHCP options set is associated.'."\n" + ."\n" + .'* You cannot repeatedly call the **AttachDhcpOptionsSetToVpc** operation to associate DHCP options sets with a VPC within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DetachDhcpOptionsSetFromVpc' => [ + 'summary' => 'Disassociates a DHCP options set from a VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region to which the DHCP options set belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DHCP options set to be disassociated from a VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-dfdgrgthhy****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'**true**: performs only a dry run. The system checks your AccessKey pair, the Resource Access Management (RAM) user permissions, and the required parameters. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDhcpOptionsSetId.NotFound', + 'errorMessage' => 'The specified resource dhcpOptionsSetId is not found.', + ], + [ + 'errorCode' => 'OperationFailed.AttachmentNotExist', + 'errorMessage' => 'The current VPC is not attahced to a DHCP options set.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcDhcpOptionsSet', + 'errorMessage' => 'The dhcpOptionsSet status of VPC does not support this operation.', + ], + [ + 'errorCode' => 'AttrMismatching.VpcDhcpOptionsSetId', + 'errorMessage' => 'The dhcpOptionsSetId does not match the VPC.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent. Please wait a moment and try again.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + [ + 'errorCode' => 'IncorrectStatus.DhcpOptionsSet', + 'errorMessage' => 'The DhcpOptionsSet status does not support this operation.', + ], + [ + 'errorCode' => 'OperationUnsupported.DhcpOptionsSet', + 'errorMessage' => 'The DHCP options set feature in this region is not supported.', + ], + [ + 'errorCode' => 'MissingParam.VpcId', + 'errorMessage' => 'You must specify VpcId.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DetachDhcpOptionsSetFromVpc', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **DetachDhcpOptionsSetFromVpc** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpcAttribute](~~94565~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the DHCP options set is in the **Pending** state, the DHCP options set is being disassociated.'."\n" + .' * If the DHCP options set is in the **UnUsed** state, the DHCP options set is disassociated.'."\n" + ."\n" + .'* You cannot repeatedly call the **DetachDhcpOptionsSetFromVpc** operation to disassociate a DHCP options set from a VPC within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ReplaceVpcDhcpOptionsSet' => [ + 'summary' => 'Replaces the DHCP options set that is associated with a virtual private cloud (VPC).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region to which the DHCP options set belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the new DHCP options set.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the associated VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-dsferghthth****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: checks the request without performing the operation. The system checks whether your AccessKey pair is valid, whether the Resource Access Management (RAM) user is authorized, and whether the required parameters are set. If the request fails to pass the check, the corresponding error message is returned. If the request passes the check, the DryRunOperation error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the check, a 2XX HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.AttachmentNotExist', + 'errorMessage' => 'The current VPC is not attahced to a DHCP options set.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpcDhcpOptionsSet', + 'errorMessage' => 'The dhcpOptionsSet status of VPC does not support this operation.', + ], + [ + 'errorCode' => 'AttrMismatching.VpcDhcpOptionsSetId', + 'errorMessage' => 'The dhcpOptionsSetId does not match the VPC.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent. Please wait a moment and try again.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + [ + 'errorCode' => 'InvalidDhcpOptionsSetId.NotFound', + 'errorMessage' => 'The specified dhcpOptionsSetId does not exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.DhcpOptionsSet', + 'errorMessage' => 'The DhcpOptionsSet status does not support this operation.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::GetDhcpOptionsSet', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'ReplaceVpcDhcpOptionsSet', + 'description' => '* The **ReplaceVpcDhcpOptionsSet** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [DescribeVpcAttribute](~~94565~~) operation to query the status of a DHCP options set:'."\n" + ."\n" + .' * If the DHCP options set is in the **Pending** state, the DHCP options set is being replaced.'."\n" + .' * If the DHCP options set is in the **InUse** state, the DHCP options set is replaced.'."\n" + ."\n" + .'* You cannot repeatedly call the **ReplaceVpcDhcpOptionsSet** operation to replace the DHCP options set associated with a VPC within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateDhcpOptionsSetAttribute' => [ + 'summary' => 'Modifies the configuration of a DHCP options set.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region where the DHCP options set is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DHCP options set.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + ], + [ + 'name' => 'DomainNameServers', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the DNS server. You can enter at most four DNS server IP addresses. Separate IP addresses with commas (,).'."\n" + ."\n" + .'> If you do not specify a DNS server IP address, Elastic Compute Service (ECS) instances use the IP addresses of the Alibaba Cloud DNS servers, which are 100.100.2.136 and 100.100.2.138.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.XX.XX.123', + ], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The root domain. For example, you can set the value to example.com.'."\n" + ."\n" + .'After a DHCP options set is associated with a virtual private cloud (VPC), the root domain in the DHCP options set is automatically synchronized with the ECS instances in the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'example.com', + ], + ], + [ + 'name' => 'DhcpOptionsSetName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the DHCP options set.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'name', + ], + ], + [ + 'name' => 'DhcpOptionsSetDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'Enter a description for the DHCP options set.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter and cannot start with `http://` or `https://`. You can also leave the description empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'description', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'**true**: performs a dry run. The system checks the required parameters, request format, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'LeaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The lease time of the IPv4 addresses for the DHCP options set.'."\n" + ."\n" + .'* If you use hours as the unit, valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **87600h**.'."\n" + .'* If you use days as the unit, valid values are **1d to 49d** and **3650d to 7300d**. Default value: **3650d**.'."\n" + ."\n" + .'> If you specify a value, you must also specify the unit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '3650d', + ], + ], + [ + 'name' => 'Ipv6LeaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The lease time of the IPv6 addresses for the DHCP options set.'."\n" + ."\n" + .'* If you use hours as the unit, valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **87600h**.'."\n" + .'* If you use days as the unit, valid values are **1d to 49d** and **3650d to 7300d**. Default value: **3650d**.'."\n" + ."\n" + .'> If you specify a value, you must also specify the unit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '3650d', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDhcpOptionsSetId.NotFound', + 'errorMessage' => 'The specified dhcpOptionsSetId does not exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.DhcpOptionsSet', + 'errorMessage' => 'The DhcpOptionsSet status does not support this operation.', + ], + [ + 'errorCode' => 'IllegalParam.DomainNameServers', + 'errorMessage' => 'The specified DomainNameServers is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.DomainName', + 'errorMessage' => 'The specified DomainName is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.DhcpOptionsSetName', + 'errorMessage' => 'The specified DhcpOptionsSetName is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.DhcpOptionsSetDescription', + 'errorMessage' => 'The specified DhcpOptionsSetDescription is invalid.', + ], + [ + 'errorCode' => 'OperationUnsupported.DhcpLeaseTime', + 'errorMessage' => 'The DhcpOptionsSet of this region does not support custom LeaseTime.', + ], + [ + 'errorCode' => 'OperationUnsupported.DhcpOptionsSet', + 'errorMessage' => 'The DHCP options set feature in this region is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.ModifyDefaultDhcpOptionsSet', + 'errorMessage' => 'The default DHCP options set is not allowed to be modified.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'UpdateDhcpOptionsSetAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'GetDhcpOptionsSet' => [ + 'summary' => 'Queries a DHCP options set.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the DHCP options set that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'enumValueTitles' => [ + 'ap-southeast-1' => 'ap-southeast-1', + ], + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DHCP options set.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The description of the DHCP options set.', + 'type' => 'object', + 'properties' => [ + 'DhcpOptionsSetDescription' => [ + 'description' => 'The description of the DHCP options set.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'Status' => [ + 'description' => 'The status of the DHCP options set. Valid values:'."\n" + ."\n" + .'* **Available**: available'."\n" + .'* **InUse**: in use'."\n" + .'* **Deleted**: deleted'."\n" + .'* **Pending**: being configured', + 'type' => 'string', + 'example' => 'Available', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.', + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'DhcpOptionsSetId' => [ + 'description' => 'The ID of the DHCP options set.', + 'type' => 'string', + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + 'DhcpOptionsSetName' => [ + 'description' => 'The name of the DHCP options set.', + 'type' => 'string', + 'example' => 'test', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the DHCP options set belongs.', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '283117732402483989', + ], + 'DhcpOptions' => [ + 'description' => 'The configuration information about the DHCP options set.', + 'type' => 'object', + 'properties' => [ + 'DomainNameServers' => [ + 'description' => 'The IP address of the DNS server.', + 'type' => 'string', + 'example' => '192.XX.XX.123', + ], + 'DomainName' => [ + 'description' => 'The suffix of the hostname.', + 'type' => 'string', + 'example' => 'example.com', + ], + 'LeaseTime' => [ + 'description' => 'The lease time of the IPv4 addresses for the DHCP options set.'."\n" + ."\n" + .'* If you use hours as the unit, valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **87600h**.'."\n" + ."\n" + .'* If you use days as the unit, valid values are **1d to 49d** and **3650d to 7300d**. Default value: **3650d**.'."\n" + ."\n", + 'type' => 'string', + 'example' => '3650d', + ], + 'Ipv6LeaseTime' => [ + 'description' => 'The lease time of the IPv6 addresses for the DHCP options set.'."\n" + .' '."\n" + .'* If you use hours as the unit, Valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **87600h**.'."\n" + .'* If you use days as the unit, Valid values are **1d to 49d** and **3650d to 7300d**. Default value: **3650d**.', + 'type' => 'string', + 'example' => '3650d', + ], + ], + ], + 'AssociateVpcs' => [ + 'description' => 'The information about the virtual private cloud (VPC) that is associated with the DHCP options set.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'object', + 'properties' => [ + 'AssociateStatus' => [ + 'description' => 'The status of the VPC that is associated with the DHCP options set. Valid values:'."\n" + .' '."\n" + .'* **InUse**: in use'."\n" + .'* **Pending**: being configured', + 'type' => 'string', + 'example' => 'InUse', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC that is associated with the DHCP options set.'."\n", + 'type' => 'string', + 'example' => 'vpc-eb3b54r6otues4tjj****', + ], + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.', + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + 'Tags' => [ + 'description' => 'The tag list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.', + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.', + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + 'CreationTime' => [ + 'description' => 'create time', + 'type' => 'string', + 'example' => '2025-08-21 ***', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"DhcpOptionsSetDescription\\": \\"test\\",\\n \\"Status\\": \\"Available\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"DhcpOptionsSetId\\": \\"dopt-o6w0df4epg9zo8isy****\\",\\n \\"DhcpOptionsSetName\\": \\"test\\",\\n \\"OwnerId\\": 283117732402484000,\\n \\"DhcpOptions\\": {\\n \\"DomainNameServers\\": \\"192.XX.XX.123\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"LeaseTime\\": \\"3650d\\",\\n \\"Ipv6LeaseTime\\": \\"3650d\\"\\n },\\n \\"AssociateVpcs\\": [\\n {\\n \\"AssociateStatus\\": \\"InUse\\",\\n \\"VpcId\\": \\"vpc-eb3b54r6otues4tjj****\\"\\n }\\n ],\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"CreationTime\\": \\"2025-08-21 ***\\"\\n}","errorExample":""},{"type":"xml","example":"\\n test\\n Available\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n dopt-o6w0df4epg9zo8isy****\\n test\\n 283117732402484000\\n \\n 192.XX.XX.123\\n example.com\\n 3650d\\n 3650d\\n \\n \\n InUse\\n vpc-eb3b54r6otues4tjj****\\n \\n rg-acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n","errorExample":""}]', + 'title' => 'GetDhcpOptionsSet', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'ListDhcpOptionsSets' => [ + 'summary' => 'Queries Dynamic Host Configuration Protocol (DHCP) options sets.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the DHCP options sets that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + ."\n" + .'* You must specify the token that is obtained from the previous query as the value of the **NextToken** parameter.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **10**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The root domain. For example, you can set the value to example.com.'."\n" + ."\n" + .'After a DHCP options set is associated with a virtual private cloud (VPC), the root domain in the DHCP options set is automatically synchronized with the ECS instances in the VPC.', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'example.com' => 'example.com', + ], + 'example' => 'example.com', + ], + ], + [ + 'name' => 'DhcpOptionsSetName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the DHCP options set.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and can contain digits, underscores (\\_), and hyphens (-). It must start with a letter.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .' '."\n" + .'* tf-testAccVpcDhcpOptionsSets-1585169790614573448'."\n" + .' '."\n" + .' '."\n" + .' '."\n" + .' :'."\n" + .' '."\n" + .' '."\n" + .' '."\n" + .' tf-testAccVpcDhcpOptionsSets-1585169790614573448'."\n" + .' '."\n" + .' '."\n" + .' '."\n" + .' .', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'tf-testAccVpcDhcpOptionsSets-1585169790614573448' => 'tf-testAccVpcDhcpOptionsSets-1585169790614573448', + ], + 'example' => 'test', + ], + ], + [ + 'name' => 'DhcpOptionsSetId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the DHCP options set. You can specify at most 20 IDs.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the DHCP options set. You can specify at most 20 IDs.', + 'type' => 'string', + 'required' => false, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + 'required' => false, + 'example' => 'dopt-o6w0df4epg9zo8isy****', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the DHCP options set belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 64 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). The tag key must start with a letter but cannot start with `aliyun` or `acs:`. The tag key cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). The tag value must start with a letter but cannot start with `aliyun` or `acs:`. The tag value cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The pagination token used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, there is no next page.'."\n" + .'* If a value of **NextToken** is returned, it indicates the token that is used for the next query.', + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.', + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd********', + ], + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'DhcpOptionsSets' => [ + 'description' => 'The list of the DHCP options sets.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of the DHCP options sets.', + 'type' => 'object', + 'properties' => [ + 'DhcpOptionsSetDescription' => [ + 'description' => 'The description of the DHCP options set.', + 'type' => 'string', + 'example' => 'test', + ], + 'Status' => [ + 'description' => 'The status of the DHCP options set. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **InUse**'."\n" + .'* **Pending**'."\n" + .'* **Deleted**', + 'type' => 'string', + 'example' => 'Available', + ], + 'DhcpOptionsSetId' => [ + 'description' => 'The ID of the DHCP options set.', + 'type' => 'string', + 'example' => 'dopt-o6w0df4epg9zo8isy****', + ], + 'DhcpOptionsSetName' => [ + 'description' => 'The name of the DHCP options set.', + 'type' => 'string', + 'example' => 'test', + ], + 'AssociateVpcCount' => [ + 'description' => 'The number of VPCs with which the DHCP options set is associated.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the DHCP options set belongs.', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '253460731706911258', + ], + 'DhcpOptions' => [ + 'description' => 'The details of DHCP options.', + 'type' => 'object', + 'properties' => [ + 'DomainNameServers' => [ + 'description' => 'The IP address of the DNS server.', + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'DomainName' => [ + 'description' => 'The suffix of the hostname.', + 'type' => 'string', + 'example' => 'example.com', + ], + 'LeaseTime' => [ + 'description' => 'The lease time of the IPv4 addresses for the DHCP options set.'."\n" + ."\n" + .'* If you use hours as the unit, valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **87600h**.'."\n" + .'* If you use days as the unit, valid values are **1d to 49d** and **3650d to 7300d**. Default value: **3650d**.', + 'type' => 'string', + 'example' => '3650d', + ], + 'Ipv6LeaseTime' => [ + 'description' => 'The lease time of the IPv6 DHCP options set.'."\n" + ."\n" + .'* If you use hours as the unit, Unit: h. Valid values are **24h to 1176h** and **87600h to 175200h**. Default value: **24h**.'."\n" + ."\n" + .'* If you use days as the unit, Unit: d. Valid values are **1d to 49d** and **3650d to 7300d**. Default value: **1d**.', + 'type' => 'string', + 'example' => '3650d', + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the DHCP options set belongs.', + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + 'Tags' => [ + 'description' => 'The tag list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.', + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.', + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + 'CreationTime' => [ + 'description' => 'The creation time of the DHCP options sets.', + 'type' => 'string', + 'example' => '2025-08-21 ***', + ], + ], + ], + ], + 'TotalCount' => [ + 'description' => 'The number of entries.', + 'type' => 'string', + 'example' => '10', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd********\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"DhcpOptionsSets\\": [\\n {\\n \\"DhcpOptionsSetDescription\\": \\"test\\",\\n \\"Status\\": \\"Available\\",\\n \\"DhcpOptionsSetId\\": \\"dopt-o6w0df4epg9zo8isy****\\",\\n \\"DhcpOptionsSetName\\": \\"test\\",\\n \\"AssociateVpcCount\\": 2,\\n \\"OwnerId\\": 253460731706911260,\\n \\"DhcpOptions\\": {\\n \\"DomainNameServers\\": \\"192.168.XX.XX\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"LeaseTime\\": \\"3650d\\",\\n \\"Ipv6LeaseTime\\": \\"3650d\\"\\n },\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"CreationTime\\": \\"2025-08-21 ***\\"\\n }\\n ],\\n \\"TotalCount\\": \\"10\\"\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd********\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n \\n test\\n Available\\n dopt-o6w0df4epg9zo8isy****\\n test\\n 2\\n 253460731706911260\\n \\n 192.168.XX.XX\\n example.com\\n 3650d\\n 3650d\\n \\n rg-acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n 10\\n","errorExample":""}]', + 'title' => 'ListDhcpOptionsSets', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'OpenFlowLogService' => [ + 'summary' => 'Enables the flow log feature.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically set **ClientToken** to the value of **RequestId**. The value of **RequestId** for each API request is different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the flow log.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the flow log.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '28CF47AB-B6C0-5FA2-80C7-2B28826A92CB', + ], + 'Code' => [ + 'description' => 'The HTTP status code.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The information returned after the flow log feature is enabled.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ExceedPurchaseLimit', + 'errorMessage' => 'You have reached the limit of purchase quantity.', + ], + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource, or this API doesn\'t support RAM.', + ], + [ + 'errorCode' => 'OperationFailed.AliGroupUserCanNotBuyInnerCommodity', + 'errorMessage' => 'Vpc_flowlog_public has no group cloud product label, and users within the group are not allowed to purchase.', + ], + [ + 'errorCode' => 'OperationFailed.QuotaNotEnough', + 'errorMessage' => 'Your quota is insufficient. Please contact your channel partner to increase your quota', + ], + [ + 'errorCode' => 'Order.NoRealNameAuthentication', + 'errorMessage' => 'Real-name verification has not been completed for the account.', + ], + [ + 'errorCode' => 'OperationFailed.BasicInfoUncompleted', + 'errorMessage' => 'You have not completed your basic personal information, please complete the information and try again.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"28CF47AB-B6C0-5FA2-80C7-2B28826A92CB\\",\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"successful\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 28CF47AB-B6C0-5FA2-80C7-2B28826A92CB\\n 200\\n successful\\n","errorExample":""}]', + 'title' => 'OpenFlowLogService', + 'description' => '* You cannot repeatedly call the **OpenFlowLogService** operation within the specified period of time by using an Alibaba Cloud account.'."\n" + .'* You can call the [GetFlowLogServiceStatus](~~449624~~) operation to query the status of the flow log feature.', + ], + 'CreateFlowLog' => [ + 'summary' => 'Creates a flow log.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the flow log. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'FlowLogName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the flow log.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'myFlowlog', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the flow log.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is my Flowlog.', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource whose traffic you want to capture. Valid values:'."\n" + ."\n" + .'* **NetworkInterface**: elastic network interface (ENI)'."\n" + .'* **VSwitch**: all ENIs in a vSwitch'."\n" + .'* **VPC**: all ENIs in a virtual private cloud (VPC)'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'NetworkInterface', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource whose traffic you want to capture.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-askldfas****', + ], + ], + [ + 'name' => 'TrafficType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of traffic that you want to capture. Valid values:'."\n" + ."\n" + .'* **All**: all traffic'."\n" + .'* **Allow**: traffic that is allowed'."\n" + .'* **Drop**: traffic that is rejected'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'All', + ], + ], + [ + 'name' => 'ProjectName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the project that stores the captured traffic data.'."\n" + ."\n" + .'* The name can contain only lowercase letters, digits, and hyphens (-).'."\n" + .'* The name must start and end with a lowercase letter or a digit.'."\n" + .'* The name must be 3 to 63 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FlowLogProject', + ], + ], + [ + 'name' => 'LogStoreName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Logstore that stores the captured traffic data.'."\n" + ."\n" + .'* The name can contain only lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n" + .'* The name must start and end with a lowercase letter or a digit.'."\n" + .'* The name must be 3 to 63 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FlowLogStore', + ], + ], + [ + 'name' => 'AggregationInterval', + 'in' => 'query', + 'schema' => [ + 'description' => 'The sampling interval of the flow log. Unit: seconds. Valid values: **1**, **5**, and **10** (default).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'TrafficPath', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The scope of the traffic that you want to capture. Valid values:'."\n" + ."\n" + .'* **all**: all traffic.'."\n" + .'* **internetGateway**: Internet traffic.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The scope of the traffic that you want to capture. Valid values:'."\n" + ."\n" + .'* **all** (default): all traffic.'."\n" + ."\n" + .'> By default, this parameter is unavailable. To use this parameter, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.11182188.console-base-top.dworkorder.18ae4882n3v6ZW#/ticket/createIndex).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'all', + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazdjdhd****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457', + ], + 'Success' => [ + 'description' => 'Indicates whether the operation is successful. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'FlowLogId' => [ + 'description' => 'The ID of the flow log.'."\n", + 'type' => 'string', + 'example' => 'fl-m5e8vhz2t21sel1nq****', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazdjdhd****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.FlowLog', + 'errorMessage' => 'The business status of flowLog is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.FlowLog', + 'errorMessage' => 'You are not authorized to use the requested service of flowLog. Ensure that you have subscribed to the service you are trying to use.', + ], + [ + 'errorCode' => 'OperationUnsupported.AdvancedFeature', + 'errorMessage' => 'Advanced features of the vpc is unsupported.', + ], + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'vswitch does not exist.', + ], + [ + 'errorCode' => 'ProjectOrLogstoreNotExist', + 'errorMessage' => 'The specified project or logstore does not exist.', + ], + [ + 'errorCode' => 'SourceProjectNotExist', + 'errorMessage' => 'The Source Project or logstore does not exist.', + ], + [ + 'errorCode' => 'Unauthorized', + 'errorMessage' => 'This api does not support sub user or role.', + ], + [ + 'errorCode' => 'OperationUnsupported.action', + 'errorMessage' => 'This action is not support.', + ], + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'Invalid parameter.', + ], + [ + 'errorCode' => 'RuleExist', + 'errorMessage' => 'The rule has already existed.', + ], + [ + 'errorCode' => 'InvalidHdMonitorStatus', + 'errorMessage' => 'Current instance status is not valid for this action.', + ], + [ + 'errorCode' => 'QuotaExceeded.FlowlogCount', + 'errorMessage' => 'This user has reached the maximum instance number of flowlog.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'This resourceId already has flowlog instance existed.', + ], + [ + 'errorCode' => 'INVALID_PARAMETER', + 'errorMessage' => 'The parameter invalid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Missing mandatory parameter', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotFound', + 'errorMessage' => 'Resource type no the same.', + ], + [ + 'errorCode' => 'OperationUnsupported.ResourceType', + 'errorMessage' => 'This resource type is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.AggregationInterval', + 'errorMessage' => 'The param of aggregationInterval is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.UserDefinedTrafficPath', + 'errorMessage' => 'The feature of UserDefinedTrafficPath is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.TrafficPath', + 'errorMessage' => 'The param of trafficPath is illegal.', + ], + [ + 'errorCode' => 'DuplicatedParam.TrafficPath', + 'errorMessage' => 'The param of trafficPath is duplicated.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceGroupId', + 'errorMessage' => 'Invalid ResourceGroupld value.', + ], + [ + 'errorCode' => 'OperationDenied.OperateShareResource', + 'errorMessage' => 'The operation is not allowed because of OperateShareResource.', + ], + [ + 'errorCode' => 'UnsupportedFeature.IpVersion', + 'errorMessage' => 'The ipversion type is not supported.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcAdvancedFeature', + 'errorMessage' => 'The VPC does not support some advanced features.', + ], + [ + 'errorCode' => 'OperationFailed.EniTypeNotSupport', + 'errorMessage' => 'Operation failed because the ENI type is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => 'The parameter of IpVersion is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerAggregationIntervalMismatch', + 'errorMessage' => 'The sampling interval of the FlowLog is greater than the sampling interval of the NIS Traffic Analyzer.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerNotFound', + 'errorMessage' => 'The specified NIS Traffic Analyzer does not exist.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerNotActive', + 'errorMessage' => 'The specified NIS Traffic Analyzer is not enabled.', + ], + [ + 'errorCode' => 'OperationFailed.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'MissingParam.TrafficAnalyzerIdOrLogProjectOrLogStore', + 'errorMessage' => 'TrafficAnalyzerId and ProjectName and LogStoreName parameters are not passed in.', + ], + [ + 'errorCode' => 'OperationDenied.AllTrafficPathOfManagedExist', + 'errorMessage' => 'The resource you specified has created a flow log instance that collects the traffic of all scenarios. You cannot create a flow log instance that collects only some scenarios.', + ], + [ + 'errorCode' => 'UnsupportedFeature.UserDefinedTrafficPathIpv6', + 'errorMessage' => 'Dual-stack flow log instances do not support custom trafficPath.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeFlowLogs', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\",\\n \\"Success\\": \\"true\\",\\n \\"FlowLogId\\": \\"fl-m5e8vhz2t21sel1nq****\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazdjdhd****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B457\\n true\\n fl-m5e8vhz2t21sel1nq****\\n rg-acfmxazdjdhd****\\n","errorExample":""}]', + 'title' => 'CreateFlowLog', + 'description' => '**CreateFlowLog** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeFlowLogs](~~87923~~) operation to query the status of the flow log.'."\n" + ."\n" + .'* If the flow log is in the **Activating** state, the flow log is being created.'."\n" + .'* If the flow log is in the **Active** state, the flow log is created and started.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteFlowLog' => [ + 'summary' => 'Deletes a flow log.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the flow log. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'FlowLogId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the flow log.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fl-m5e8vhz2t21sel1nq****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Success' => [ + 'description' => 'Indicates whether the operation is successful. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'ProjectOrLogstoreNotExist', + 'errorMessage' => 'The specified project or logstore does not exist.', + ], + [ + 'errorCode' => 'SourceProjectNotExist', + 'errorMessage' => 'The Source Project or logstore does not exist.', + ], + [ + 'errorCode' => 'Unauthorized', + 'errorMessage' => 'This api does not support sub user or role.', + ], + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'Invalid parameter.', + ], + [ + 'errorCode' => 'InvalidStatus', + 'errorMessage' => 'The specfied instance\'s status is invalid.', + ], + [ + 'errorCode' => 'InvalidHdMonitorStatus', + 'errorMessage' => 'Current instance status is not valid for this action.', + ], + [ + 'errorCode' => 'FlowLogNumberOverLimit', + 'errorMessage' => 'This user has reached the maximum instance number of flowlog.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specfied instance is not existed.', + ], + [ + 'errorCode' => 'IncorrectStatus.flowlog', + 'errorMessage' => 'Invalid flowlog status.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'Resource id is empty.', + ], + [ + 'errorCode' => 'Forbidden.OperateManagedFlowLog', + 'errorMessage' => 'Authentication is failed for operate managed flowlog.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeFlowLogs', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\n","errorExample":""}]', + 'title' => 'DeleteFlowLog', + 'description' => '* The **DeleteFlowLog** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [DescribeFlowLogs](~~87923~~) operation to query the status of a flow log:'."\n" + ."\n" + .' * If the flow log is in the **Deleting** state, the flow log is being deleted.'."\n" + .' * If you cannot query the flow log, the flow log is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteFlowLog** operation to delete a flow log within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyFlowLogAttribute' => [ + 'summary' => 'Modifies the name and description of a flow log.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the flow log is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'FlowLogId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the flow log.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fl-m5e8vhz2t21sel1nq****', + ], + ], + [ + 'name' => 'FlowLogName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the flow log.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'myFlowlog', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the flow log.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is my Flowlog.', + ], + ], + [ + 'name' => 'AggregationInterval', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new sampling interval of the flow log. Unit: minutes. Valid values: **1**, **5**, and **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The version of the IP address. Valid values:'."\n" + ."\n" + .'* **IPV4**: the IPv4 address.'."\n" + .'* **DualStack**: includes IPv4 and IPv6 address', + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Success' => [ + 'description' => 'Indicates whether the call is successful. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.FlowLog', + 'errorMessage' => 'The business status of flowLog is incorrect.', + ], + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'ProjectOrLogstoreNotExist', + 'errorMessage' => 'The specified project or logstore does not exist.', + ], + [ + 'errorCode' => 'SourceProjectNotExist', + 'errorMessage' => 'The Source Project or logstore does not exist.', + ], + [ + 'errorCode' => 'Unauthorized', + 'errorMessage' => 'This api does not support sub user or role.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specfied instance is not existed.', + ], + [ + 'errorCode' => 'RuleExist', + 'errorMessage' => 'The rule has already existed.', + ], + [ + 'errorCode' => 'InvalidHdMonitorStatus', + 'errorMessage' => 'Current instance status is not valid for this action.', + ], + [ + 'errorCode' => 'FlowLogNumberOverLimit', + 'errorMessage' => 'This user has reached the maximum instance number of flowlog.', + ], + [ + 'errorCode' => 'InvalidTrafficType.NotFound', + 'errorMessage' => 'Invalid traffic type.', + ], + [ + 'errorCode' => 'IncorrectStatus.flowlog', + 'errorMessage' => 'Invalid flowlog status.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified name is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.AggregationInterval', + 'errorMessage' => 'The param of aggregationInterval is illegal.', + ], + [ + 'errorCode' => 'Forbidden.OperateManagedFlowLog', + 'errorMessage' => 'Authentication is failed for operate managed flowlog.', + ], + [ + 'errorCode' => 'UnsupportedFeature.IpVersion', + 'errorMessage' => 'The ipversion type is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => 'The parameter of IpVersion is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerAggregationIntervalMismatch', + 'errorMessage' => 'The sampling interval of the FlowLog is greater than the sampling interval of the NIS Traffic Analyzer.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerNotActive', + 'errorMessage' => 'The specified NIS Traffic Analyzer is not enabled.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerNotFound', + 'errorMessage' => 'The specified NIS Traffic Analyzer does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidInstanceDeliverScope', + 'errorMessage' => 'When modifying the delivery purpose of the FlowLog instance or starting and stopping NIS traffic analysis, you specify the type of delivery that is not allowed.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeFlowLogs', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\n","errorExample":""}]', + 'title' => 'ModifyFlowLogAttribute', + 'description' => '* **ModifyFlowLogAttribute** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. You can call the [DescribeFlowLogs](~~87923~~) operation to query the status of a flow log:'."\n" + ."\n" + .' * If the flow log is in the **Modifying** state, the flow log is being modified.'."\n" + .' * If the flow log is in the **Active** or **Inactive** state, the flow log is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyFlowLogAttribute** operation to modify a flow log within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ActiveFlowLog' => [ + 'summary' => 'Enables a flow log. After the flow log is enabled, traffic information about a resource is captured.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the flow log. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'FlowLogId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the flow log.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fl-m5e8vhz2t21sel1nq****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Success' => [ + 'description' => 'Indicates whether the operation is successful. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.FlowLog', + 'errorMessage' => 'The business status of flowLog is incorrect.', + ], + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'InvalidStatus', + 'errorMessage' => 'Current instance status is not valid for this action.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specfied instance is not existed.', + ], + [ + 'errorCode' => 'IncorrectStatus.flowlog', + 'errorMessage' => 'Invalid flowlog status.', + ], + [ + 'errorCode' => 'Forbidden.OperateManagedFlowLog', + 'errorMessage' => 'Authentication is failed for operate managed flowlog.', + ], + [ + 'errorCode' => 'OperationDenied.FlowLogDeliverFailed', + 'errorMessage' => 'The operation is not allowed due to an invalid delivery address.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerAggregationIntervalMismatch', + 'errorMessage' => 'The sampling interval of the FlowLog is greater than the sampling interval of the NIS Traffic Analyzer.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerNotActive', + 'errorMessage' => 'The specified NIS Traffic Analyzer is not enabled.', + ], + [ + 'errorCode' => 'OperationDenied.NisTrafficAnalyzerNotFound', + 'errorMessage' => 'The specified NIS Traffic Analyzer does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeFlowLogs', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\n","errorExample":""}]', + 'title' => 'ActiveFlowLog', + 'description' => '* The **ActiveFlowLog** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [DescribeFlowLogs](~~87923~~) operation to query the status of a flow log:'."\n" + ."\n" + .' * If the flow log is in the **Activating** state, the flow log is being started.'."\n" + .' * If the flow log is in the **Active** state, the flow log is started.'."\n" + ."\n" + .'* You cannot repeatedly call the **ActiveFlowLog** operation to start a flow log within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeactiveFlowLog' => [ + 'summary' => 'Disables a flow log. After a flow log is disabled, the system no longer captures the traffic information about a resource.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the flow log. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'FlowLogId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the flow log.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fl-m5e8vhz2t21sel1nq****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Success' => [ + 'description' => 'Indicates whether the operation is successful. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.FlowLog', + 'errorMessage' => 'The business status of flowLog is incorrect.', + ], + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'InvalidStatus', + 'errorMessage' => 'Current instance status is not valid for this action.', + ], + [ + 'errorCode' => 'FlowLogNumberOverLimit', + 'errorMessage' => 'This user has reached the maximum instance number of flowlog.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specfied instance is not existed.', + ], + [ + 'errorCode' => 'IncorrectStatus.flowlog', + 'errorMessage' => 'Invalid flowlog status.', + ], + [ + 'errorCode' => 'Forbidden.OperateManagedFlowLog', + 'errorMessage' => 'Authentication is failed for operate managed flowlog.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeFlowLogs', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\n","errorExample":""}]', + 'title' => 'DeactiveFlowLog', + 'description' => '* The **DeactiveFlowLog** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [DescribeFlowLogs](~~87923~~) operation to query the status of a flow log:'."\n" + ."\n" + .' * If the flow log is in the **Deactivating** state, the flow log is being disabled.'."\n" + .' * If the flow log is in the **Inactive** state, the flow log is disabled.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeactiveFlowLog** operation to disable a flow log within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'GetFlowLogServiceStatus' => [ + 'summary' => 'Queries the status of a flow log.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. The value of **RequestId** in each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the flow log.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the flow log.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-06F83A1B457', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the flow log feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no You can call the [OpenFlowLogService](~~449637~~) operation to enable the flow log feature.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-06F83A1B457\\",\\n \\"Enabled\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-06F83A1B457\\n true\\n","errorExample":""}]', + 'title' => 'GetFlowLogServiceStatus', + ], + 'DescribeFlowLogs' => [ + 'summary' => 'Query flow logs.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the flow log.'."\n" + ."\n" + .'You can obtain the region ID by calling the [DescribeRegions](~~36063~~) interface.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'FlowLogName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the flow log.'."\n" + ."\n" + .'The name must be 1 to 128 characters long and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'myFlowlog', + ], + ], + [ + 'name' => 'FlowLogId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the flow log.', + 'type' => 'string', + 'required' => false, + 'example' => 'fl-bp1f6qqhsrc2c12ta****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the flow log.'."\n" + ."\n" + .'The description must be 1 to 256 characters long and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'This is my Flowlog.', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type of the traffic to capture. Values:'."\n" + .'- **NetworkInterface**: Elastic Network Interface (ENI).'."\n" + .'- **VSwitch**: All ENIs within a VSwitch.'."\n" + .'- **VPC**: All ENIs within a VPC.', + 'type' => 'string', + 'required' => false, + 'example' => 'NetworkInterface', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource ID of the traffic to capture.', + 'type' => 'string', + 'required' => false, + 'example' => 'eni-askldfas****', + ], + ], + [ + 'name' => 'TrafficType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of traffic to collect. Values:'."\n" + .'- **All**: All traffic.'."\n" + .'- **Allow**: Traffic allowed by access control.'."\n" + .'- **Drop**: Traffic denied by access control.', + 'type' => 'string', + 'required' => false, + 'example' => 'All', + ], + ], + [ + 'name' => 'ProjectName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Project that manages the captured traffic.', + 'type' => 'string', + 'required' => false, + 'example' => 'FlowLogProject', + ], + ], + [ + 'name' => 'LogStoreName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Logstore that stores the captured traffic.', + 'type' => 'string', + 'required' => false, + 'example' => 'FlowLogStore', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the flow log. Values:'."\n" + .'- **Active**: The flow log is in an active state.'."\n" + .'- **Activating**: The flow log is being created.'."\n" + .'- **Inactive**: The flow log is in an inactive state.', + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number, with a default value of **1**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of items per page in a paginated query, with a maximum value of **50** and a default value of **20**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + 'default' => '20', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC for which you want to view the flow log.', + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1nwd16gvo1wgs****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID of the flow log.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag. Up to 20 tag keys are supported. If you need to pass this value, it cannot be an empty string.'."\n" + ."\n" + .'A tag key can have up to 128 characters and cannot start with `aliyun` or `acs:`. It also cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag. Up to 20 tag values are supported. If you need to pass this value, it can be an empty string.'."\n" + ."\n" + .'A tag value can have up to 128 characters and cannot start with `aliyun` or `acs:`. It also cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'Detailed information about the flow logs.', + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of items per page in a paginated query.', + 'type' => 'string', + 'example' => '20', + ], + 'PageNumber' => [ + 'description' => 'The page number.', + 'type' => 'string', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries in the queried flow log list.', + 'type' => 'string', + 'example' => '1', + ], + 'Success' => [ + 'description' => 'Indicates whether the call was successful. Values:'."\n" + .'- **true**: The call was successful.'."\n" + .'- **false**: The call failed.', + 'type' => 'string', + 'example' => 'true', + ], + 'FlowLogs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'FlowLog' => [ + 'description' => 'List of flow logs.', + 'type' => 'array', + 'items' => [ + 'description' => 'List of flow logs.', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the flow log. Values:'."\n" + .'- **Active**: The flow log is in an active state.'."\n" + ."\n" + .'- **Activating**: The flow log is being created.'."\n" + ."\n" + .'- **Inactive**: The flow log is in an inactive state.', + 'type' => 'string', + 'example' => 'Active', + ], + 'CreationTime' => [ + 'description' => 'The creation time of the flow log.', + 'type' => 'string', + 'example' => '2022-01-21T03:08:50Z', + ], + 'FlowLogName' => [ + 'description' => 'The name of the flow log.', + 'type' => 'string', + 'example' => 'myFlowlog', + ], + 'TrafficType' => [ + 'description' => 'The type of traffic captured by the flow log. Values:'."\n" + ."\n" + .'- **All**: All traffic.'."\n" + .'- **Allow**: Traffic allowed by access control.'."\n" + .'- **Drop**: Traffic denied by access control.', + 'type' => 'string', + 'example' => 'All', + ], + 'ResourceType' => [ + 'description' => 'The resource type of the traffic captured by the flow log:'."\n" + ."\n" + .'- **NetworkInterface**: Elastic network interface.'."\n" + .'- **VSwitch**: All elastic network interfaces within a VSwitch.'."\n" + .'- **VPC**: All elastic network interfaces within a VPC.', + 'type' => 'string', + 'example' => 'NetworkInterface', + ], + 'Description' => [ + 'description' => 'The description of the flow log.', + 'type' => 'string', + 'example' => 'Description', + ], + 'ProjectName' => [ + 'description' => 'The Project that manages the captured traffic.', + 'type' => 'string', + 'example' => 'FlowLogProject', + ], + 'LogStoreName' => [ + 'description' => 'The Logstore where the captured traffic is stored.', + 'type' => 'string', + 'example' => 'FlowLogStore', + ], + 'ResourceId' => [ + 'description' => 'The resource ID of the traffic captured by the flow log.', + 'type' => 'string', + 'example' => 'eni-askldfas****', + ], + 'RegionId' => [ + 'description' => 'The region ID to which the flow log belongs.', + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'FlowLogId' => [ + 'description' => 'The ID of the flow log.', + 'type' => 'string', + 'example' => 'fl-bp1f6qqhsrc2c12ta****', + ], + 'BusinessStatus' => [ + 'description' => 'The business status. Values:'."\n" + ."\n" + .'- **Normal**: Normal status.'."\n" + .'- **FinancialLocked**: Locked due to unpaid bills.', + 'type' => 'string', + 'example' => 'Normal', + ], + 'AggregationInterval' => [ + 'description' => 'The sampling interval of the flow log. Unit: minutes.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TrafficPath' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TrafficPathList' => [ + 'description' => 'The path of the captured traffic. Values:'."\n" + ."\n" + .'- **all**: Indicates full collection.'."\n" + .'- **internetGateway**: Indicates public network traffic collection.', + 'type' => 'array', + 'items' => [ + 'description' => 'The path of the collected traffic. Values:'."\n" + .'- **all** (default): indicates full collection. '."\n" + .'- **internetGateway**: indicates public network traffic collection.', + 'type' => 'string', + 'example' => 'all', + ], + ], + ], + ], + 'ServiceType' => [ + 'description' => 'The hosting type of the cloud service.'."\n" + .'- It can be empty, indicating that the flow log was created by the user. '."\n" + .'- When not empty, the only supported value is: **sls**, indicating that the flow log was created through the Log Service console.'."\n" + .'> Flow log instances created through the Log Service console can be displayed in the VPC list, but they cannot be modified, started, stopped, or deleted within the VPC. If you need to perform these operations on the flow log, you can log in to the [Log Service console](https://sls.console.aliyun.com) to modify, start, stop, or delete it.', + 'type' => 'string', + 'example' => 'sls', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the flow log belongs.', + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'List of tags', + 'type' => 'array', + 'items' => [ + 'description' => 'List of tags', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'Tag key.', + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'Tag value.', + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + 'FlowLogDeliverStatus' => [ + 'description' => 'The delivery status of the flow log, with values:'."\n" + .'- **SUCCESS**: Delivery succeeded. '."\n" + .'- **FAILED**: Delivery failed.', + 'type' => 'string', + 'example' => 'FAILED', + ], + 'FlowLogDeliverErrorMessage' => [ + 'description' => 'When log delivery fails, you can troubleshoot based on the error messages. Possible error messages include:'."\n" + .'- **UnavaliableTarget**: The Logstore of the Log Service SLS is unavailable and cannot receive logs. It is recommended to check if the corresponding Logstore actually exists and is accessible. '."\n" + .'- **ProjectNotExist**: The Project of the Log Service SLS does not exist. It is suggested to delete the original flow log and create a new one pointing to an existing Project. '."\n" + .'- **UnknownError**: An internal error has occurred. Please try again later.', + 'type' => 'string', + 'example' => 'UnavaliableTarget', + ], + 'IpVersion' => [ + 'description' => 'The type of IP address for collecting flow log traffic.', + 'type' => 'string', + 'example' => 'IPv4', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'ProjectOrLogstoreNotExist', + 'errorMessage' => 'The specified project or logstore does not exist.', + ], + [ + 'errorCode' => 'SourceProjectNotExist', + 'errorMessage' => 'The Source Project or logstore does not exist.', + ], + [ + 'errorCode' => 'Unauthorized', + 'errorMessage' => 'This api does not support sub user or role.', + ], + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'Invalid parameter.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": \\"20\\",\\n \\"PageNumber\\": \\"1\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\",\\n \\"TotalCount\\": \\"1\\",\\n \\"Success\\": \\"true\\",\\n \\"FlowLogs\\": {\\n \\"FlowLog\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"CreationTime\\": \\"2022-01-21T03:08:50Z\\",\\n \\"FlowLogName\\": \\"myFlowlog\\",\\n \\"TrafficType\\": \\"All\\",\\n \\"ResourceType\\": \\"NetworkInterface\\",\\n \\"Description\\": \\"Description\\",\\n \\"ProjectName\\": \\"FlowLogProject\\",\\n \\"LogStoreName\\": \\"FlowLogStore\\",\\n \\"ResourceId\\": \\"eni-askldfas****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"FlowLogId\\": \\"fl-bp1f6qqhsrc2c12ta****\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"AggregationInterval\\": 10,\\n \\"TrafficPath\\": {\\n \\"TrafficPathList\\": [\\n \\"all\\"\\n ]\\n },\\n \\"ServiceType\\": \\"sls\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"FlowLogDeliverStatus\\": \\"FAILED\\",\\n \\"FlowLogDeliverErrorMessage\\": \\"UnavaliableTarget\\",\\n \\"IpVersion\\": \\"IPv4\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 20\\n 1\\n F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\n 1\\n true\\n \\n Active\\n 2022-01-21T03:08:50Z\\n myFlowlog\\n All\\n NetworkInterface\\n Description\\n FlowLogProject\\n FlowLogStore\\n eni-askldfas****\\n cn-hangzhou\\n fl-bp1f6qqhsrc2c12ta****\\n Normal\\n 10\\n all\\n sls\\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n FAILED\\n UnavaliableTarget\\n \\n","errorExample":""}]', + 'title' => 'Query Flow Logs', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'AssociateNetworkAcl' => [ + 'summary' => 'Associates a network access control list (ACL) with a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Resource', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the associated resources.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ResourceType' => [ + 'description' => 'The type of resource with which you want to associate the network ACL. Set the value to **VSwitch**.'."\n" + ."\n" + .'Valid values of **N**: **0** to **29**. You can associate a network ACL with up to 30 vSwitches.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'VSwitch', + ], + 'ResourceId' => [ + 'description' => 'The ID of the associated resource.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-bp1de348lntdw****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'nacl-a2do9e413e0sp****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4CF20CC7-D1FC-425B-A15B-DF7C8E2131A7', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.NetworkAclId', + 'errorMessage' => 'ParameterMissing.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.NetworkAclId', + 'errorMessage' => 'ParameterEmpty.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterMissing.Resources', + 'errorMessage' => 'ParameterMissing.Resources', + ], + [ + 'errorCode' => 'ParameterEmpty.Resources', + 'errorMessage' => 'ParameterEmpty.Resources', + ], + [ + 'errorCode' => 'InvalidNetworkAcl.NotFound', + 'errorMessage' => 'The special Network Acl is not found.', + ], + [ + 'errorCode' => 'NetworkStatus.Modifying', + 'errorMessage' => 'The special Network Acl is in modifying.', + ], + [ + 'errorCode' => 'ResourceStatus.Error', + 'errorMessage' => 'The binding instance is in middle status.', + ], + [ + 'errorCode' => 'InvalidResource.NotFound', + 'errorMessage' => 'The binding instance is not found.', + ], + [ + 'errorCode' => 'InvalidResource.VpcError', + 'errorMessage' => 'The network acl and resource not in same vpc.', + ], + [ + 'errorCode' => 'InvalidResource.BindingExist', + 'errorMessage' => 'The binding instance has been binded.', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + [ + 'errorCode' => 'ParameterIllegal.ResourceType', + 'errorMessage' => 'The specified resource type is illegal.', + ], + [ + 'errorCode' => 'MissingParam.Resource', + 'errorMessage' => 'Missing parameter Resource.', + ], + [ + 'errorCode' => 'OperationDenied.NetworkAclAttachmentInMiddleStatus', + 'errorMessage' => 'The network ACL is being bound to or unbound from the switch.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeNetworkAcls', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4CF20CC7-D1FC-425B-A15B-DF7C8E2131A7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4CF20CC7-D1FC-425B-A15B-DF7C8E2131A7\\n","errorExample":""}]', + 'title' => 'AssociateNetworkAcl', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **AssociateNetworkAcl** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeNetworkAclAttributes](~~116542~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the network ACL is in the **BINDING** state, the network ACL is being associated.'."\n" + .' * If the network ACL is in the **BINDED** state, the network ACL is associated.'."\n" + ."\n" + .'* You cannot repeatedly call the **AssociateNetworkAcl** operation to associate a network ACL within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateNetworkAcl' => [ + 'summary' => 'Creates a network ACL.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the network ACL belongs.'."\n" + ."\n" + .'If the VPC contains Elastic Compute Service (ECS) instances of the following instance families, you must upgrade the ECS instances or release the ECS instances. Otherwise, you cannot create a network ACL for the VPC.'."\n" + ."\n" + .'ecs.c1, ecs.c2, ecs.c4, ecs.c5, ecs.ce4, ecs.cm4, ecs.d1, ecs.e3, ecs.e4, ecs.ga1, ecs.gn4, ecs.gn5, ecs.i1, ecs.m1, ecs.m2, ecs.mn4, ecs.n1, ecs.n2, ecs.n4, ecs.s1, ecs.s2, ecs.s3, ecs.se1, ecs.sn1, ecs.sn2, ecs.t1, and ecs.xn4.'."\n" + ."\n" + .'* For more information about how to upgrade an ECS instance, see [Upgrade subscription instances](~~25438~~) and [Change the specifications of pay-as-you-go instances](~~60051~~).'."\n" + .'* For more information about how to release an ECS instance, see [Release an ECS instance](~~25442~~).'."\n" + ."\n" + .'> If the VPC contains an ECS instance that does not support network ACLs, upgrade the ECS instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-dsfd34356vdf****', + ], + ], + [ + 'name' => 'NetworkAclName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the network ACL.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acl-1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the network ACL.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is my NetworkAcl.', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclId' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'nacl-a2do9e413e0spzasx****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'NetworkAclAttribute' => [ + 'description' => 'The attributes of the network ACL.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the network ACL. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'example' => 'Modifying', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the network ACL belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-a2d33rfpl72k5xsscd****', + ], + 'CreationTime' => [ + 'description' => 'The time when the network ACL was created.'."\n", + 'type' => 'string', + 'example' => '2021-12-25 11:33:27', + ], + 'Description' => [ + 'description' => 'The description of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'This is my NetworkAcl.', + ], + 'NetworkAclName' => [ + 'description' => 'The name of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'acl-1 ', + ], + 'NetworkAclId' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'nacl-a2do9e413e0spdefr****', + ], + 'RegionId' => [ + 'description' => 'The region ID of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou ', + ], + 'IngressAclEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IngressAclEntry' => [ + 'description' => 'The inbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'nae-a2dk86arlydmexscd****', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'acl-3 ', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'Description' => [ + 'description' => 'The description of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'This is IngressAclEntries. ', + ], + 'SourceCidrIp' => [ + 'description' => 'The source CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24 ', + ], + 'Protocol' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'example' => 'all', + ], + 'Port' => [ + 'description' => 'The destination port range of the inbound traffic.'."\n" + ."\n" + .'* If the **protocol** of the inbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specifies all ports.'."\n" + .'* If the **protocol** of the inbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid ports: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '-1/-1', + ], + ], + ], + ], + ], + ], + 'EgressAclEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EgressAclEntry' => [ + 'description' => 'The outbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'nae-a2d447uw4tillxsdc****', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'acl-2', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'Description' => [ + 'description' => 'The description of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'This is EgressAclEntries.', + ], + 'Protocol' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'example' => 'all', + ], + 'DestinationCidrIp' => [ + 'description' => 'The destination CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'Port' => [ + 'description' => 'The destination port range of the outbound traffic.'."\n" + ."\n" + .'* If the **protocol** of the outbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specified all ports.'."\n" + .'* If the **protocol** of the outbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid values for a port: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '-1/-1 ', + ], + ], + ], + ], + ], + ], + 'Resources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Resource' => [ + 'description' => 'The information about the associated resources.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The association status of the resource. Valid values:'."\n" + ."\n" + .'* **BINDED**'."\n" + .'* **BINDING**'."\n" + .'* **UNBINDING**'."\n", + 'type' => 'string', + 'example' => 'BINDED', + ], + 'ResourceType' => [ + 'description' => 'The type of resource with which you want to associate the network ACL.'."\n", + 'type' => 'string', + 'example' => 'VSwitch', + ], + 'ResourceId' => [ + 'description' => 'The ID of the associated resource.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1de348lntdwgthy****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.VpcId', + 'errorMessage' => 'ParameterMissing.VpcId', + ], + [ + 'errorCode' => 'ParameterLengthIllegal.Name', + 'errorMessage' => 'ParameterLengthIllegal.Name', + ], + [ + 'errorCode' => 'ParameterIllegal.Name', + 'errorMessage' => 'ParameterIllegal.Name', + ], + [ + 'errorCode' => 'ParameterLengthIllegal.Description', + 'errorMessage' => 'ParameterLengthIllegal.Description', + ], + [ + 'errorCode' => 'ParameterIllegal.Description', + 'errorMessage' => 'ParameterIllegal.Description', + ], + [ + 'errorCode' => 'ParameterEmpty.VpcId', + 'errorMessage' => 'ParameterEmpty.VpcId', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'The vpc is not exist.', + ], + [ + 'errorCode' => 'QuotaExceed.NetworkAcl', + 'errorMessage' => 'Network acl is over limit.', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + [ + 'errorCode' => 'IllegalParamFormat.%s', + 'errorMessage' => 'The param format of %s is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeNetworkAcls', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NetworkAclId\\": \\"nacl-a2do9e413e0spzasx****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"NetworkAclAttribute\\": {\\n \\"Status\\": \\"Modifying\\",\\n \\"VpcId\\": \\"vpc-a2d33rfpl72k5xsscd****\\",\\n \\"CreationTime\\": \\"2021-12-25 11:33:27\\",\\n \\"Description\\": \\"This is my NetworkAcl.\\",\\n \\"NetworkAclName\\": \\"acl-1\\\\t\\",\\n \\"NetworkAclId\\": \\"nacl-a2do9e413e0spdefr****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\\\t\\",\\n \\"IngressAclEntries\\": {\\n \\"IngressAclEntry\\": [\\n {\\n \\"NetworkAclEntryId\\": \\"nae-a2dk86arlydmexscd****\\",\\n \\"NetworkAclEntryName\\": \\"acl-3\\\\t\\",\\n \\"Policy\\": \\"accept\\",\\n \\"Description\\": \\"This is IngressAclEntries.\\\\t\\",\\n \\"SourceCidrIp\\": \\"10.0.0.0/24\\\\t\\",\\n \\"Protocol\\": \\"all\\",\\n \\"Port\\": \\"-1/-1\\"\\n }\\n ]\\n },\\n \\"EgressAclEntries\\": {\\n \\"EgressAclEntry\\": [\\n {\\n \\"NetworkAclEntryId\\": \\"nae-a2d447uw4tillxsdc****\\",\\n \\"NetworkAclEntryName\\": \\"acl-2\\",\\n \\"Policy\\": \\"accept\\",\\n \\"Description\\": \\"This is EgressAclEntries.\\",\\n \\"Protocol\\": \\"all\\",\\n \\"DestinationCidrIp\\": \\"10.0.0.0/24\\",\\n \\"Port\\": \\"-1/-1\\\\t\\"\\n }\\n ]\\n },\\n \\"Resources\\": {\\n \\"Resource\\": [\\n {\\n \\"Status\\": \\"BINDED\\",\\n \\"ResourceType\\": \\"VSwitch\\",\\n \\"ResourceId\\": \\"vsw-bp1de348lntdwgthy****\\"\\n }\\n ]\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n nacl-a2do9e413e0spzasx****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n \\n Modifying\\n vpc-a2d33rfpl72k5xsscd****\\n 2021-12-25 11:33:27\\n This is my NetworkAcl.\\n acl-1\\t\\n nacl-a2do9e413e0spdefr****\\n cn-hangzhou\\t\\n \\n nae-a2dk86arlydmexscd****\\n acl-3\\t\\n accept\\n This is IngressAclEntries.\\t\\n 10.0.0.0/24\\t\\n all\\n -1/-1\\n \\n \\n nae-a2d447uw4tillxsdc****\\n acl-2\\n accept\\n This is EgressAclEntries.\\n all\\n 10.0.0.0/24\\n -1/-1\\t\\n \\n \\n BINDED\\n VSwitch\\n vsw-bp1de348lntdwgthy****\\n \\n \\n","errorExample":""}]', + 'title' => 'CreateNetworkAcl', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CopyNetworkAclEntries' => [ + 'summary' => 'Copies rules of a network access control list (ACL).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'nacl-a2do9e413e0spxxxxxxxx', + ], + ], + [ + 'name' => 'SourceNetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL whose rules you want to copy.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'nacl-ghuo9ehg3e0spxxxxxxxx', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6608E72F-F276-440F-ABEF-419971CEC4D1', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.NetworkAclId', + 'errorMessage' => 'ParameterMissing.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.NetworkAclId', + 'errorMessage' => 'ParameterEmpty.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterMissing.SourceNetworkAclId', + 'errorMessage' => 'ParameterMissing.SourceNetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.SourceNetworkAclId', + 'errorMessage' => 'ParameterEmpty.SourceNetworkAclId', + ], + [ + 'errorCode' => 'InvalidNetworkAcl.NotFound', + 'errorMessage' => 'The special Network Acl is not found.', + ], + [ + 'errorCode' => 'InvalidSourceNetworkAcl.NotFound', + 'errorMessage' => 'The special source network Acl is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeNetworkAcls', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6608E72F-F276-440F-ABEF-419971CEC4D1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 6608E72F-F276-440F-ABEF-419971CEC4D1\\n","errorExample":""}]', + 'title' => 'CopyNetworkAclEntries', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **CopyNetworkAclEntries** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeNetworkAclAttributes](~~116542~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the network ACL is in the **Modifying** state, the rules of the network ACL are being copied.'."\n" + .' * If the network ACL is in the **Available** state, the rules of the network ACL are copied.'."\n" + ."\n" + .'* You cannot repeatedly call the **CopyNetworkAclEntries** operation within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteNetworkAcl' => [ + 'summary' => 'Deletes a network access control list (ACL).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'nacl-bp1lhl0taikrbgnh****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '223e4867-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'**true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4B48E3D-DF70-471B-AA83-089E83A1B45', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.NetworkAclId', + 'errorMessage' => 'ParameterMissing.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.NetworkAclId', + 'errorMessage' => 'ParameterEmpty.NetworkAclId', + ], + [ + 'errorCode' => 'InvalidNetworkAcl.NotFound', + 'errorMessage' => 'The special Network Acl is not found.', + ], + [ + 'errorCode' => 'NetworkStatus.Modifying', + 'errorMessage' => 'The special Network Acl is in modifying.', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + [ + 'errorCode' => 'OperationDenied.NetworkAclAttachmentInMiddleStatus', + 'errorMessage' => 'The network ACL is being bound to or unbound from the switch.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeNetworkAcls', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4B48E3D-DF70-471B-AA83-089E83A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4B48E3D-DF70-471B-AA83-089E83A1B45\\n","errorExample":""}]', + 'title' => 'DeleteNetworkAcl', + 'description' => '## [](#)Description'."\n" + ."\n" + .'You cannot repeatedly call the **DeleteNetworkAcl** operation within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassociateNetworkAcl' => [ + 'summary' => 'Disassociates a network access control list (ACL) from a vSwitch.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Resource', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the associated resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ResourceType' => [ + 'description' => 'The type of the resource from which you want to disassociate the network ACL. Set the value to **VSwitch**.'."\n" + ."\n" + .'Valid values of **N**: 0 to 29. You can disassociate a network ACL from at most 30 resources at a time.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'VSwitch', + ], + 'ResourceId' => [ + 'description' => 'The ID of the resource from which you want to disassociate the network ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-bp1de348lntdw****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL that you want to disassociate from a resource.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'nacl-a2do9e413e0sp****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'**true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'AD024BAA-2D91-48FD-810B-8FB7489B6EE6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.NetworkAclId', + 'errorMessage' => 'ParameterMissing.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.NetworkAclId', + 'errorMessage' => 'ParameterEmpty.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterMissing.Resources', + 'errorMessage' => 'ParameterMissing.Resources', + ], + [ + 'errorCode' => 'ParameterEmpty.Resources', + 'errorMessage' => 'ParameterEmpty.Resources', + ], + [ + 'errorCode' => 'InvalidNetworkAcl.NotFound', + 'errorMessage' => 'The special Network Acl is not found.', + ], + [ + 'errorCode' => 'NetworkStatus.Modifying', + 'errorMessage' => 'The special Network Acl is in modifying.', + ], + [ + 'errorCode' => 'ResourceStatus.Error', + 'errorMessage' => 'The binding instance is in middle status.', + ], + [ + 'errorCode' => 'InvalidResource.NotFound', + 'errorMessage' => 'The binding instance is not found.', + ], + [ + 'errorCode' => 'InvalidResource.VpcError', + 'errorMessage' => 'The network acl and resource not in same vpc.', + ], + [ + 'errorCode' => 'InvalidResource.NotBinding', + 'errorMessage' => 'The resource has not been binded.', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + [ + 'errorCode' => 'Mismatch.NetworkAclAndVSwitch', + 'errorMessage' => 'The specified network ACL and vSwitch are not matched.', + ], + [ + 'errorCode' => 'MissingParam.Resource', + 'errorMessage' => 'Missing parameter Resource.', + ], + [ + 'errorCode' => 'OperationDenied.NetworkAclAttachmentInMiddleStatus', + 'errorMessage' => 'The network ACL is being bound to or unbound from the switch.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeNetworkAcls', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AD024BAA-2D91-48FD-810B-8FB7489B6EE6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n AD024BAA-2D91-48FD-810B-8FB7489B6EE6\\n","errorExample":""}]', + 'title' => 'UnassociateNetworkAcl', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **UnassociateNetworkAcl** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeNetworkAclAttributes](~~116542~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the network ACL is in the **UNBINDING** state, the network ACL is being disassociated from the vSwitch.'."\n" + .' * If the network ACL is in the **UNBINDED** state, the network ACL is disassociated from the vSwitch.'."\n" + ."\n" + .'* You cannot repeatedly call the **UnassociateNetworkAcl** operation to disassociate a network ACL from a vSwitch within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyNetworkAclAttributes' => [ + 'summary' => 'Modifies the attributes of a network access control list (ACL).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'acl-bp1lhl0taikrxxxxxxxx', + ], + ], + [ + 'name' => 'NetworkAclName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the network ACL.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acl-1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the network ACL.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is my NetworkAcl.', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => '8F76C3E4-B39F-465D-B8B3-50BAF03CA833', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.NetworkAclId', + 'errorMessage' => 'ParameterMissing.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.NetworkAclId', + 'errorMessage' => 'ParameterEmpty.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterLengthIllegal.Name', + 'errorMessage' => 'ParameterLengthIllegal.Name', + ], + [ + 'errorCode' => 'ParameterIllegal.Name', + 'errorMessage' => 'ParameterIllegal.Name', + ], + [ + 'errorCode' => 'ParameterLengthIllegal.Description', + 'errorMessage' => 'ParameterLengthIllegal.Description', + ], + [ + 'errorCode' => 'ParameterIllegal.Description', + 'errorMessage' => 'ParameterIllegal.Description', + ], + [ + 'errorCode' => 'InvalidNetworkAcl.NotFound', + 'errorMessage' => 'The special Network Acl is not found.', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + [ + 'errorCode' => 'IllegalParamFormat.%s', + 'errorMessage' => 'The param format of %s is illegal.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8F76C3E4-B39F-465D-B8B3-50BAF03CA833\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 8F76C3E4-B39F-465D-B8B3-50BAF03CA833\\n","errorExample":""}]', + 'title' => 'ModifyNetworkAclAttributes', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateNetworkAclEntries' => [ + 'summary' => 'Updates the rules of a network access control list (ACL).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'IngressAclEntries', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the inbound rule.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the inbound rule.'."\n" + ."\n" + .'Valid values of **N**: **0** to **99**. You can specify at most 100 inbound rules.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nae-2zepn32de59j8m4****', + ], + 'EntryType' => [ + 'description' => 'The type of the rule. Set the value to **custom**, which specifies custom rules.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'custom', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the inbound rule.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acl-3', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'drop' => 'drop', + 'accept' => 'accept', + ], + 'example' => 'accept', + ], + 'SourceCidrIp' => [ + 'description' => 'The source CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'IpVersion' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4** (default)'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'IPv6' => 'IPv6', + 'IPv4' => 'IPv4', + ], + 'example' => 'IPv4', + ], + 'Description' => [ + 'description' => 'The description of the inbound rule.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is IngressAclEntries.', + ], + 'Protocol' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'all' => 'all', + 'tcp' => 'tcp', + 'udp' => 'udp', + 'gre' => 'gre', + 'icmp' => 'icmp', + 'icmpv6' => 'icmpv6', + ], + 'example' => 'all', + ], + 'Port' => [ + 'description' => 'The source port range of the inbound rule.'."\n" + ."\n" + .'* If the **protocol** of the inbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specifies all ports.'."\n" + .'* If the **protocol** of the inbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid ports: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-1/-1', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'EgressAclEntries', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the outbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the outbound rule.'."\n" + ."\n" + .'Valid values of **N**: **0** to **99**. You can specify at most 100 outbound rules.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nae-2zecs97e0brcge46****', + ], + 'EntryType' => [ + 'description' => 'The type of the rule. Set the value to **custom**, which specifies custom rules.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'custom', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the outbound rule.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acl-2', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'drop' => 'drop', + 'accept' => 'accept', + ], + 'example' => 'accept', + ], + 'Description' => [ + 'description' => 'The description of the outbound rule.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is EgressAclEntries.', + ], + 'Protocol' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'all' => 'all', + 'tcp' => 'tcp', + 'udp' => 'udp', + 'gre' => 'gre', + 'icmp' => 'icmp', + 'icmpv6' => 'icmpv6', + ], + 'example' => 'all', + ], + 'DestinationCidrIp' => [ + 'description' => 'The destination CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'IpVersion' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4** (default)'."\n" + .'* **IPv6**', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'IPv6' => 'IPv6', + 'IPv4' => 'IPv4', + ], + 'example' => 'IPv4', + ], + 'Port' => [ + 'description' => 'The destination port range of the outbound traffic.'."\n" + ."\n" + .'* If the **protocol** of the outbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specified all ports.'."\n" + .'* If the **protocol** of the outbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid values for a port: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-1/-1', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'UpdateIngressAclEntries', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to update inbound rules. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n" + ."\n" + .'> This parameter cannot be used to add inbound rules to ACLs. If you want to add more inbound rules to ACLs, you must specify both the existing rule and the rule that you want to add when you call this API operation. If you specify only the rule that you want to add, it overwrites the existing rule.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'UpdateEgressAclEntries', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to update outbound rules. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n" + ."\n" + .'> This parameter cannot be used to add outbound rules to ACLs. If you want to add more outbound rules to ACLs, specify both the existing rule and the rule that you want to add when you call this API operation. If you specify only the rule that you want to add, it overwrites the existing rule.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'nacl-bp1lhl0taikrzxsc****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the request for potential issues, including the AccessKey pair, the permissions of the RAM user, and the required parameters. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '1170A5A0-E760-4331-9133-A7D38D973215', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.NetworkAclId', + 'errorMessage' => 'ParameterMissing.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.NetworkAclId', + 'errorMessage' => 'ParameterEmpty.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterMissing.Port', + 'errorMessage' => 'ParameterMissing.Port', + ], + [ + 'errorCode' => 'ParameterIllegal.Port', + 'errorMessage' => 'ParameterIllegal.Port', + ], + [ + 'errorCode' => 'ParameterIllegal.Policy', + 'errorMessage' => 'ParameterIllegal.Policy', + ], + [ + 'errorCode' => 'ParameterMissing.Policy', + 'errorMessage' => 'ParameterMissing.Policy', + ], + [ + 'errorCode' => 'ParameterIllegal.Protocol', + 'errorMessage' => 'ParameterIllegal.Protocol', + ], + [ + 'errorCode' => 'ParameterMissing.Protocol', + 'errorMessage' => 'ParameterMissing.Protocol', + ], + [ + 'errorCode' => 'ParameterLengthIllegal.Name', + 'errorMessage' => 'ParameterLengthIllegal.Name', + ], + [ + 'errorCode' => 'ParameterIllegal.Name', + 'errorMessage' => 'ParameterIllegal.Name', + ], + [ + 'errorCode' => 'ParameterLengthIllegal.Description', + 'errorMessage' => 'ParameterLengthIllegal.Description', + ], + [ + 'errorCode' => 'ParameterIllegal.Description', + 'errorMessage' => 'ParameterIllegal.Description', + ], + [ + 'errorCode' => 'ParameterIllegal.SourceCidrIp', + 'errorMessage' => 'ParameterIllegal.SourceCidrIp', + ], + [ + 'errorCode' => 'ParameterMissing.SourceCidrIp', + 'errorMessage' => 'ParameterMissing.SourceCidrIp', + ], + [ + 'errorCode' => 'ParameterIllegal.DestinationCidrIp', + 'errorMessage' => 'ParameterIllegal.DestinationCidrIp', + ], + [ + 'errorCode' => 'ParameterMissing.DestinationCidrIp', + 'errorMessage' => 'ParameterMissing.DestinationCidrIp', + ], + [ + 'errorCode' => 'QuotaExceed.NetworkAclEntry', + 'errorMessage' => 'Network acl entry is over limit.', + ], + [ + 'errorCode' => 'InvalidNetworkAcl.NotFound', + 'errorMessage' => 'The special Network Acl is not found.', + ], + [ + 'errorCode' => 'NetworkStatus.Modifying', + 'errorMessage' => 'The special Network Acl is in modifying.', + ], + [ + 'errorCode' => 'ResourceStatus.Error', + 'errorMessage' => 'The binding instance is in middle status.', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + [ + 'errorCode' => 'IllegalParam.IngressAclEntryId', + 'errorMessage' => 'The specified IngressAclEntryId is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.EgressAclEntryId', + 'errorMessage' => 'The specified EgressAclEntryId is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.VpcIpv6NotEnabled', + 'errorMessage' => 'IPv6 has not been enabled for the VPC.', + ], + [ + 'errorCode' => 'IllegalParam.SourceCidrIp', + 'errorMessage' => 'Param SourceCidrIp is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Policy', + 'errorMessage' => 'Param Policy illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Protocol', + 'errorMessage' => 'Param Protocol illegal.', + ], + [ + 'errorCode' => 'IllegalParam.DestinationCidrIp', + 'errorMessage' => 'Param DestinationCidrIp illegal.', + ], + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => 'Param IpVersion illegal.', + ], + [ + 'errorCode' => 'IllegalParam.PortRange', + 'errorMessage' => 'The specified port range is invalid.', + ], + [ + 'errorCode' => 'ResourceNotFound.PrefixList', + 'errorMessage' => 'The specified resource of prefixList is not found.', + ], + [ + 'errorCode' => 'OperationDenied.IpVersionInconsistencyWithPrefixList', + 'errorMessage' => 'The ip version of the prefix list %s you passed in is inconsistent with the actual ip version of the prefix list.', + ], + [ + 'errorCode' => 'OperationDenied.SystemPrefixList', + 'errorMessage' => 'The operation is not allowed because of SystemPrefixList.', + ], + [ + 'errorCode' => 'IncorrectStatus.PrefixList', + 'errorMessage' => 'The status of prefixList is incorrect.', + ], + [ + 'errorCode' => 'UnsupportedRegion.PrefixListEntry', + 'errorMessage' => 'The feature of prefixList entry is not supported in this region.', + ], + [ + 'errorCode' => 'OperationDenied.NetworkAclAttachmentInMiddleStatus', + 'errorMessage' => 'The network ACL is being bound to or unbound from the switch.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeNetworkAcls', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1170A5A0-E760-4331-9133-A7D38D973215\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 1170A5A0-E760-4331-9133-A7D38D973215\\n","errorExample":""}]', + 'title' => 'UpdateNetworkAclEntries', + 'description' => '* **UpdateNetworkAclEntries** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeNetworkAclAttributes](~~116542~~) operation to query the status of a network ACL:'."\n" + ."\n" + .' * If the network ACL is in the **Modifying** state, the rules of the network ACL are being updated.'."\n" + .' * If the network ACL is in the **Available** state, the rules of the network ACL are updated.'."\n" + ."\n" + .'* You cannot repeatedly call the **UpdateNetworkAclEntries** operation to update the rules of a network ACL within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeNetworkAclAttributes' => [ + 'summary' => 'Queries network access control lists (ACLs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'nacl-a2do9e413e0spzasx****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F5905F9C-0161-4E72-9CB1-1F3F3CF6268A', + ], + 'NetworkAclAttribute' => [ + 'description' => 'The details of the network ACLs.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The association status of the resource. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the network ACL belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-a2d33rfpl72k5defr****', + ], + 'CreationTime' => [ + 'description' => 'The time when the network ACL was created.'."\n", + 'type' => 'string', + 'example' => '2021-12-25 11:33:27', + ], + 'Description' => [ + 'description' => 'The description of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'This is my NetworkAcl.', + ], + 'NetworkAclName' => [ + 'description' => 'The name of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'acl-1', + ], + 'NetworkAclId' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'nacl-a2do9e413e0spnhmj****', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the network ACL belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '253460731706911258', + ], + 'RegionId' => [ + 'description' => 'The region ID of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'IngressAclEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IngressAclEntry' => [ + 'description' => 'The information about the inbound rules of the network ACL.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'nae-a2dk86arlydmevfbg****', + ], + 'EntryType' => [ + 'description' => 'The type of the inbound rule.'."\n" + ."\n" + .'- **custom**'."\n" + ."\n" + .'- **system**', + 'type' => 'string', + 'example' => 'custom', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'acl-3', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'Description' => [ + 'description' => 'The description of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'This is IngressAclEntries.', + ], + 'SourceCidrIp' => [ + 'description' => 'The source CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'IpVersion' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4**'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'example' => 'IPv4', + ], + 'Protocol' => [ + 'description' => 'The protocol type. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'example' => 'all', + ], + 'Port' => [ + 'description' => 'The destination port range of the inbound traffic.'."\n" + ."\n" + .'* If the **protocol** of the inbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specifies all ports.'."\n" + .'* If the **protocol** of the inbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid ports: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '-1/-1', + ], + ], + ], + ], + ], + ], + 'EgressAclEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EgressAclEntry' => [ + 'description' => 'The information about the outbound rules of the network ACL.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'nae-a2d447uw4tillxdcv****', + ], + 'EntryType' => [ + 'description' => 'The type of the inbound rule.'."\n" + ."\n" + .'- **custom**'."\n" + ."\n" + .'- **system**', + 'type' => 'string', + 'example' => 'custom', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'acl-2', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'Description' => [ + 'description' => 'The description of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'This is EgressAclEntries.', + ], + 'Protocol' => [ + 'description' => 'The protocol type. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'example' => 'all', + ], + 'DestinationCidrIp' => [ + 'description' => 'The destination CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'IpVersion' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4**'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'example' => 'IPv4', + ], + 'Port' => [ + 'description' => 'The destination port range of the outbound traffic.'."\n" + ."\n" + .'* If the **protocol** of the outbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specified all ports.'."\n" + .'* If the **protocol** of the outbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid values for a port: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '-1/-1', + ], + ], + ], + ], + ], + ], + 'Resources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Resource' => [ + 'description' => 'The resources that are associated with the network ACL.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The association status of the resource. Valid values:'."\n" + ."\n" + .'* **BINDED**'."\n" + .'* **BINDING**'."\n" + .'* **UNBINDING**'."\n", + 'type' => 'string', + 'example' => 'BINDED', + ], + 'ResourceType' => [ + 'description' => 'The type of resource with which you want to associate the network ACL. The value is set to **VSwitch**.'."\n", + 'type' => 'string', + 'example' => 'VSwitch', + ], + 'ResourceId' => [ + 'description' => 'The ID of the associated resource.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1de348lntdwxscd****', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'ParameterMissing.NetworkAclId', + 'errorMessage' => 'ParameterMissing.NetworkAclId', + ], + [ + 'errorCode' => 'ParameterEmpty.NetworkAclId', + 'errorMessage' => 'ParameterEmpty.NetworkAclId', + ], + [ + 'errorCode' => 'InvalidNetworkAcl.NotFound', + 'errorMessage' => 'The special Network Acl is not found.', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F5905F9C-0161-4E72-9CB1-1F3F3CF6268A\\",\\n \\"NetworkAclAttribute\\": {\\n \\"Status\\": \\"Available\\",\\n \\"VpcId\\": \\"vpc-a2d33rfpl72k5defr****\\",\\n \\"CreationTime\\": \\"2021-12-25 11:33:27\\",\\n \\"Description\\": \\"This is my NetworkAcl.\\",\\n \\"NetworkAclName\\": \\"acl-1\\",\\n \\"NetworkAclId\\": \\"nacl-a2do9e413e0spnhmj****\\",\\n \\"OwnerId\\": 0,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"IngressAclEntries\\": {\\n \\"IngressAclEntry\\": [\\n {\\n \\"NetworkAclEntryId\\": \\"nae-a2dk86arlydmevfbg****\\",\\n \\"EntryType\\": \\"custom\\",\\n \\"NetworkAclEntryName\\": \\"acl-3\\",\\n \\"Policy\\": \\"accept\\",\\n \\"Description\\": \\"This is IngressAclEntries.\\",\\n \\"SourceCidrIp\\": \\"10.0.0.0/24\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"Protocol\\": \\"all\\",\\n \\"Port\\": \\"-1/-1\\"\\n }\\n ]\\n },\\n \\"EgressAclEntries\\": {\\n \\"EgressAclEntry\\": [\\n {\\n \\"NetworkAclEntryId\\": \\"nae-a2d447uw4tillxdcv****\\",\\n \\"EntryType\\": \\"custom\\",\\n \\"NetworkAclEntryName\\": \\"acl-2\\",\\n \\"Policy\\": \\"accept\\",\\n \\"Description\\": \\"This is EgressAclEntries.\\",\\n \\"Protocol\\": \\"all\\",\\n \\"DestinationCidrIp\\": \\"10.0.0.0/24\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"Port\\": \\"-1/-1\\"\\n }\\n ]\\n },\\n \\"Resources\\": {\\n \\"Resource\\": [\\n {\\n \\"Status\\": \\"BINDED\\",\\n \\"ResourceType\\": \\"VSwitch\\",\\n \\"ResourceId\\": \\"vsw-bp1de348lntdwxscd****\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n F5905F9C-0161-4E72-9CB1-1F3F3CF6268A\\n \\n Available\\n vpc-a2d33rfpl72k5defr****\\n 2021-12-25 11:33:27\\n This is my NetworkAcl.\\n acl-1\\n nacl-a2do9e413e0spnhmj****\\n 253460731706911260\\n cn-hangzhou\\n \\n nae-a2dk86arlydmevfbg****\\n acl-3\\n accept\\n This is IngressAclEntries.\\n 10.0.0.0/24\\n all\\n -1/-1\\n \\n \\n nae-a2d447uw4tillxdcv****\\n acl-2\\n accept\\n This is EgressAclEntries.\\n all\\n 10.0.0.0/24\\n -1/-1\\n \\n \\n BINDED\\n VSwitch\\n vsw-bp1de348lntdwxscd****\\n \\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeNetworkAclAttributes', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeNetworkAcls' => [ + 'summary' => 'Queries network ACLs.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'NetworkAclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nacl-bp1lhl0taikrbgnh****', + ], + ], + [ + 'name' => 'NetworkAclName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the network ACL.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acl-1', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which the network ACL belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-m5ebpc2xh64mqm27e****', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the associated instance. Set the value to **VSwitch**.'."\n" + ."\n" + .'This parameter is valid only if **ResourceType** and **ResourceId** are both specified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VSwitch', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the associated instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1de348lntdwnhbg****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network ACL.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'string', + 'example' => '2', + ], + 'NetworkAcls' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NetworkAcl' => [ + 'description' => 'The details of the network ACLs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the network ACL. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'VpcId' => [ + 'description' => 'The ID of the associated VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-m5ebpc2xh64mqm27e****', + ], + 'CreationTime' => [ + 'description' => 'The time when the network ACL was created.'."\n", + 'type' => 'string', + 'example' => '2021-12-25 11:44:17', + ], + 'Description' => [ + 'description' => 'The description of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'This is my NetworkAcl.', + ], + 'NetworkAclName' => [ + 'description' => 'The name of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'acl-1', + ], + 'NetworkAclId' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'nacl-a2do9e413e0spxscd****', + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the network ACL belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '253460731706911258', + ], + 'RegionId' => [ + 'description' => 'The region ID of the network ACL.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'IngressAclEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IngressAclEntry' => [ + 'description' => 'The configurations of the inbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'nae-a2dk86arlydmezasw****', + ], + 'EntryType' => [ + 'description' => 'The type of the inbound rule.'."\n" + ."\n" + .'- **custom**'."\n" + ."\n" + .'- **system**', + 'type' => 'string', + 'example' => 'custom', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'acl-3 ', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'Description' => [ + 'description' => 'The description of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'This is IngressAclEntries.', + ], + 'SourceCidrIp' => [ + 'description' => 'The source CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24 ', + ], + 'IpVersion' => [ + 'description' => 'The IP version. '."\n" + ."\n" + .'* **IPv4**'."\n" + .'* **IPv6**', + 'type' => 'string', + 'example' => 'IPv4', + ], + 'Protocol' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'example' => 'all', + ], + 'Port' => [ + 'description' => 'The destination port range of the inbound traffic.'."\n" + ."\n" + .'* If the **protocol** of the inbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specifies all ports.'."\n" + .'* If the **protocol** of the inbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid ports: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '-1/-1 ', + ], + ], + ], + ], + ], + ], + 'EgressAclEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EgressAclEntry' => [ + 'description' => 'The outbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'NetworkAclEntryId' => [ + 'description' => 'The ID of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'nae-a2d447uw4tillfvgb****', + ], + 'EntryType' => [ + 'description' => 'The type of the inbound rule.'."\n" + ."\n" + .'- **custom**'."\n" + ."\n" + .'- **system**', + 'type' => 'string', + 'example' => 'custom', + ], + 'NetworkAclEntryName' => [ + 'description' => 'The name of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'acl-2 ', + ], + 'Policy' => [ + 'description' => 'The action to be performed on network traffic that matches the rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'Description' => [ + 'description' => 'The description of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'This is EgressAclEntries.', + ], + 'Protocol' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **icmp**'."\n" + .'* **gre**'."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n" + .'* **all**'."\n", + 'type' => 'string', + 'example' => 'all', + ], + 'DestinationCidrIp' => [ + 'description' => 'The destination CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24 ', + ], + 'IpVersion' => [ + 'description' => 'The IP version. '."\n" + ."\n" + .'* **IPv4**'."\n" + .'* **IPv6**', + 'type' => 'string', + 'example' => 'IPV4', + ], + 'Port' => [ + 'description' => 'The destination port range of the outbound traffic.'."\n" + ."\n" + .'* If the **protocol** of the outbound rule is set to **all**, **icmp**, or **gre**, the port range is -1/-1, which specified all ports.'."\n" + .'* If the **protocol** of the outbound rule is set to **tcp** or **udp**, set the port range in the following format: **1/200** or **80/80**, which specifies port 1 to port 200 or port 80. Valid values for a port: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '-1/-1 ', + ], + ], + ], + ], + ], + ], + 'Resources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Resource' => [ + 'description' => 'The resources that are associated with the network ACL.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The association status of the resource. Valid values:'."\n" + ."\n" + .'* **BINDED**'."\n" + .'* **BINDING**'."\n" + .'* **UNBINDING**'."\n", + 'type' => 'string', + 'example' => 'BINDED', + ], + 'ResourceType' => [ + 'description' => 'The type of resource with which you want to associate the network ACL.'."\n", + 'type' => 'string', + 'example' => 'VSwitch', + ], + 'ResourceId' => [ + 'description' => 'The ID of the associated resource.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1de348lntdwcdf****', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ParameterMissing.AliUid', + 'errorMessage' => 'ParameterMissing.AliUid', + ], + [ + 'errorCode' => 'ParameterMissing.Bid', + 'errorMessage' => 'ParameterMissing.Bid', + ], + [ + 'errorCode' => 'ParameterMissing.RegionId', + 'errorMessage' => 'ParameterMissing.RegionId', + ], + [ + 'errorCode' => 'ParameterEmpty.RegionId', + 'errorMessage' => 'ParameterEmpty.RegionId', + ], + [ + 'errorCode' => 'NotSupport.NetworkAcl', + 'errorMessage' => 'Network acl is not support now.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": \\"10\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\",\\n \\"PageNumber\\": \\"1\\",\\n \\"TotalCount\\": \\"2\\",\\n \\"NetworkAcls\\": {\\n \\"NetworkAcl\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"VpcId\\": \\"vpc-m5ebpc2xh64mqm27e****\\",\\n \\"CreationTime\\": \\"2021-12-25 11:44:17\\",\\n \\"Description\\": \\"This is my NetworkAcl.\\",\\n \\"NetworkAclName\\": \\"acl-1\\",\\n \\"NetworkAclId\\": \\"nacl-a2do9e413e0spxscd****\\",\\n \\"OwnerId\\": 253460731706911260,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"IngressAclEntries\\": {\\n \\"IngressAclEntry\\": [\\n {\\n \\"NetworkAclEntryId\\": \\"nae-a2dk86arlydmezasw****\\",\\n \\"EntryType\\": \\"custom\\",\\n \\"NetworkAclEntryName\\": \\"acl-3\\\\t\\",\\n \\"Policy\\": \\"accept\\",\\n \\"Description\\": \\"This is IngressAclEntries.\\",\\n \\"SourceCidrIp\\": \\"10.0.0.0/24\\\\t\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"Protocol\\": \\"all\\",\\n \\"Port\\": \\"-1/-1\\\\t\\"\\n }\\n ]\\n },\\n \\"EgressAclEntries\\": {\\n \\"EgressAclEntry\\": [\\n {\\n \\"NetworkAclEntryId\\": \\"nae-a2d447uw4tillfvgb****\\",\\n \\"EntryType\\": \\"custom\\",\\n \\"NetworkAclEntryName\\": \\"acl-2\\\\t\\",\\n \\"Policy\\": \\"accept\\",\\n \\"Description\\": \\"This is EgressAclEntries.\\",\\n \\"Protocol\\": \\"all\\",\\n \\"DestinationCidrIp\\": \\"10.0.0.0/24\\\\t\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"Port\\": \\"-1/-1\\\\t\\"\\n }\\n ]\\n },\\n \\"Resources\\": {\\n \\"Resource\\": [\\n {\\n \\"Status\\": \\"BINDED\\",\\n \\"ResourceType\\": \\"VSwitch\\",\\n \\"ResourceId\\": \\"vsw-bp1de348lntdwcdf****\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\n 1\\n 2\\n \\n Available\\n vpc-m5ebpc2xh64mqm27e****\\n 2021-12-25 11:44:17\\n This is my NetworkAcl.\\n acl-1\\n nacl-a2do9e413e0spxscd****\\n 253460731706911260\\n cn-hangzhou\\n \\n nae-a2dk86arlydmezasw****\\n acl-3\\t\\n accept\\n This is IngressAclEntries.\\n 10.0.0.0/24\\t\\n all\\n -1/-1\\t\\n \\n \\n nae-a2d447uw4tillfvgb****\\n acl-2\\t\\n accept\\n This is EgressAclEntries.\\n all\\n 10.0.0.0/24\\t\\n -1/-1\\t\\n \\n \\n BINDED\\n VSwitch\\n vsw-bp1de348lntdwcdf****\\n \\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeNetworkAcls', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateHaVip' => [ + 'summary' => 'Creates a high-availability virtual IP address (HaVip).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the HaVip.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that the value is unique among all requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the HaVip. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which the HaVip belongs.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-asdfjlnaue4g****', + ], + ], + [ + 'name' => 'IpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the HaVip.'."\n" + ."\n" + .'The specified IP address must be an idle IP address that falls within the CIDR block of the vSwitch. If this parameter is not set, an idle IP address from the CIDR block of the vSwitch is randomly assigned to the HaVip.', + 'type' => 'string', + 'required' => false, + 'example' => '192.XX.XX.10', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the HaVip.'."\n" + ."\n" + .'The description must be 1 to 255 characters in length and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'This is my HaVip.', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the HaVip belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, but cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + 'IpAddress' => [ + 'description' => 'The IP address of the HaVip.', + 'type' => 'string', + 'example' => '192.XX.XX.10', + ], + 'HaVipId' => [ + 'description' => 'The ID of the HaVip.', + 'type' => 'string', + 'example' => 'havip-2zeo05qre24nhrqpy****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidIPAddress.OutOfRange', + 'errorMessage' => 'The specified IPAddress is out of VSwitch CIDR.', + ], + [ + 'errorCode' => 'InvalidIPAddress.NotAvailable', + 'errorMessage' => 'The specified IPAddress is not available because it is a system reserved IPAddress.', + ], + [ + 'errorCode' => 'InvalidIPAddress.AlreadyUsed', + 'errorMessage' => 'The specified IPAddress is already used by other resource.', + ], + [ + 'errorCode' => 'InvalidIPAddress.Malformed', + 'errorMessage' => 'The specified IPAddress is not a valid or strict address.', + ], + [ + 'errorCode' => 'Abs.Vpc.InvalidName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidIPAddress.OutOfVswCIDR', + 'errorMessage' => 'The specified IPAddress is out of VSwitch CIDR.', + ], + [ + 'errorCode' => 'InvalidIPAddress.AlreadyInUse', + 'errorMessage' => 'The specified IPAddress is already used by other resource.', + ], + [ + 'errorCode' => 'UnsupportedFeature.CloudBoxHaVip', + 'errorMessage' => 'The HAVIP feature is not supported in cloud box.', + ], + [ + 'errorCode' => 'CountLimitExceed.HaVipInVpc', + 'errorMessage' => 'Specified Vpc exceeds the quota of max number of ha-vip count.', + ], + [ + 'errorCode' => 'Forbidden.HaVip', + 'errorMessage' => 'No permissions to perform operations on HAVIPs. Please apply for privilege--vpc_privilege_allow_buy_havip_instance.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidIpReservedByVSwitch', + 'errorMessage' => 'The specified ip address is the reserved address of the switch.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceGroupId', + 'errorMessage' => 'Invalid ResourceGroupld value.', + ], + [ + 'errorCode' => 'IncorrectStatus.VSwitch', + 'errorMessage' => 'The specified vSwitch status is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'CountLimitExceed.HaVipInVpc', + 'errorMessage' => 'Specified Vpc exceeds the quota of max number of ha-vip count.', + ], + [ + 'errorCode' => 'QuotaExceeded.HaVip', + 'errorMessage' => 'Living HaVip quota exceeded.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified VSwitch does not exist in the specified region.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\",\\n \\"IpAddress\\": \\"192.XX.XX.10\\",\\n \\"HaVipId\\": \\"havip-2zeo05qre24nhrqpy****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C44F62BE-9CE7-4277-B117-69243F3988BF\\n 192.XX.XX.10\\n havip-2zeo05qre24nhrqpy****\\n","errorExample":""}]', + 'title' => 'CreateHaVip', + 'description' => '**CreateHaVip** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeHaVips](~~114611~~) operation to query the status of the task:'."\n" + ."\n" + .'* If the HaVip is in the **Creating** state, the HaVip is being created.'."\n" + .'* If the HaVip is in the **Available** state, the HaVip is created.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssociateHaVip' => [ + 'summary' => 'Associates a high-availability virtual IP address (HaVip) with an Elastic Compute Service (ECS) instance or an elastic network interface (ENI).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. The value of **RequestId** in each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the HaVip belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'HaVipId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the HaVip.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'havip-2zeo05qre24nhrqpy****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECS instance to be associated with the HaVip.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-faf344422ffsfad****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the instance to be associated with the HaVip. Valid values:'."\n" + ."\n" + .'* **EcsInstance**: an ECS instance'."\n" + .'* **NetworkInterface**: an ENI. If you want to associate the HaVip with an ENI, this parameter is required.', + 'type' => 'string', + 'required' => false, + 'example' => 'EcsInstance', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationUnsupported.BindOnFreeNetworkInterface', + 'errorMessage' => 'The network interface must be attached to an ECS instance.', + ], + [ + 'errorCode' => 'OperationUnsupported.BindMultipleType', + 'errorMessage' => 'You cannot bind HaVip to multiple instance types.', + ], + [ + 'errorCode' => 'OperationUnsupported.BindOnMultipleVswitch', + 'errorMessage' => 'The bound instance and HaVip must be on the same vSwitch.', + ], + [ + 'errorCode' => 'InvalidVip.Status', + 'errorMessage' => 'vip invalid status', + ], + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'HaVip can be operated by this action only when it\'s status is Available or InUse.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'ECS instance can be operated by this action only when it?s status is Running or Stopped.', + ], + [ + 'errorCode' => 'CountLimitExceed.HaVipOnInstance', + 'errorMessage' => 'The amount of HaVip associated with the specified Instance reach its limits.', + ], + [ + 'errorCode' => 'CountLimitExceeded.HaVipOnECSInstance', + 'errorMessage' => 'The amount of Instance associated with the specified HaVip reach its limits.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'InvalidNetworkInterfaceId.NotFound', + 'errorMessage' => 'The network interface is not found.', + ], + [ + 'errorCode' => 'OperationFailed.QueryNetworkInterfaceInfo', + 'errorMessage' => 'Failed to query network interface information.', + ], + [ + 'errorCode' => 'IllegalParam.InstanceType', + 'errorMessage' => 'The specified instance type is invalid. Only ECS instances and network interface are allowed.', + ], + [ + 'errorCode' => 'OperationUnsupported.BindOnSameEcs', + 'errorMessage' => 'You cannot bind two network interfaces on the same ECS instance.', + ], + [ + 'errorCode' => 'OperationUnsupported.HavipBindType', + 'errorMessage' => 'You cannot bind HAVIP to network interface in the specified region.', + ], + [ + 'errorCode' => 'InvalidInstance.NotExist', + 'errorMessage' => 'InvalidInstance.NotExist : The specified Instance does not exist in the specified region. i-bp136w25mhx503ptilrh\\r\\nRequestId : A961CC27-D797-4E16-B1B3-19B9ECBA1495', + ], + [ + 'errorCode' => 'OperationDenied.BindOnSameEcs', + 'errorMessage' => 'The operation is not allowed because networkinterface bind on same instance.', + ], + [ + 'errorCode' => 'Forbidden.HaVip', + 'errorMessage' => 'No permissions to perform operations on HAVIPs. Please apply for privilege--vpc_privilege_allow_buy_havip_instance.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified Instance does not exist in the specified region.', + ], + [ + 'errorCode' => 'ResourceNotFound.EcsInstance', + 'errorMessage' => 'The specified resource of ECS instance is not found.', + ], + [ + 'errorCode' => 'InvalidStatus.NotAllow', + 'errorMessage' => 'Bind instance status invalid', + ], + [ + 'errorCode' => 'InvalidHaVip.Exist', + 'errorMessage' => 'haVip already bind exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'QuotaExceeded.HaVipBindInstance', + 'errorMessage' => 'The amount of instance associated with the specified haVip reach its limits.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidHaVipId.NotFound', + 'errorMessage' => 'The specified HaVip does not exist in the specified region.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified Instance does not exist in the specified region.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C44F62BE-9CE7-4277-B117-69243F3988BF\\n","errorExample":""}]', + 'title' => 'AssociateHaVip', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* An HaVip immediately takes effect after it is associated. You do not need to restart the ECS instance. However, you must associate the HaVip with the ENI of the ECS instance.'."\n" + ."\n" + .'* The HaVip and ECS instance must belong to the same vSwitch.'."\n" + ."\n" + .'* You can associate an HaVip with at most two ECS instances.'."\n" + ."\n" + .'* The ECS instance must be in the **Running** or **Stopped** state.'."\n" + ."\n" + .'* The HaVip must be in the **Available** or **InUse** state.'."\n" + ."\n" + .'* The **AssociateHaVip** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [DescribeHaVips](~~114611~~) operation to query the status of an HaVip:'."\n" + ."\n" + .' * If the HaVip is in the **Associating** state, the HaVip is being associated.'."\n" + .' * If the HaVip is in the **InUse** state, the HaVip is associated.'."\n" + ."\n" + .'* You cannot repeatedly call the **AssociateHaVip** operation to associate an HaVip within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteHaVip' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. The value of **RequestId** in each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region where the HaVip resides. Call the [DescribeRegions](~~36063~~) operation to query the region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'HaVipId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the HaVip that you want to delete.', + 'type' => 'string', + 'required' => true, + 'example' => 'havip-2zeo05qre24nhrqpy****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus', + 'errorMessage' => 'HaVip can be deleted only when it is status is Available.', + ], + [ + 'errorCode' => 'DependencyViolation.HaVipReferedByRouteEntry', + 'errorMessage' => 'HaVip cannot be deleted when it is refered by a route table entry as next hop.', + ], + [ + 'errorCode' => 'DependencyViolation.HaVipAssociatedWithEIP', + 'errorMessage' => 'HaVip cannot be deleted when it is associated with EIP.', + ], + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'HaVip?s status is invalid.', + ], + [ + 'errorCode' => 'Forbidden.HaVip', + 'errorMessage' => 'No permissions to perform operations on HAVIPs. Please apply for privilege--vpc_privilege_allow_buy_havip_instance.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidHaVipId.NotFound', + 'errorMessage' => 'The specified HaVip does not exist in the specified region.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\"\\n}","errorExample":""},{"type":"xml","example":" \\r\\nC44F62BE-9CE7-4277-B117-69243F3988BF \\r\\n","errorExample":""}]', + 'title' => 'DeleteHaVip', + 'summary' => 'Deletes a high-availability virtual IP address (HaVip).', + 'description' => 'When you call this operation, take note of the following rules:'."\n" + ."\n" + .'* The HaVip must be in the available state before it can be deleted.'."\n" + ."\n" + .'* Make sure that no routes are destined for the HaVip.'."\n" + ."\n" + .'* Make sure that no elastic IP addresses (EIPs) are associated with the HaVip.'."\n" + ."\n" + .'* **DeleteHaVip** is an asynchronous operation. After a request is sent, the system returns a request ID while deleting the HaVip in the background. Call the [DescribeHaVips](~~114611~~) operation to query the status of an HaVip:'."\n" + ."\n" + .' * The **Deleting** state indicates the HaVip is being deleted.'."\n" + .' * If no HaVip is found, the HaVip is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteHaVip** operation to delete the same HaVip.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassociateHaVip' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The `token` can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the HAVIP.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'HaVipId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the HAVIP that you want to disassociate.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'havip-2zeo05qre24nhrqpy****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECS instance or ENI from which you want to disassociate the HAVIP.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-faf344422ffsfad****', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully disassociate the HAVIP from the ECS instance or ENI. Valid values:'."\n" + ."\n" + .'* **True**'."\n" + .'* **False** (default)'."\n" + ."\n" + .'> If you set the value to **False**, you cannot disassociate the HAVIP from the primary instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'True', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the instance from which you want to disassociate the HAVIP. Valid values:'."\n" + ."\n" + .'* **EcsInstance**: an ECS instance'."\n" + .'* **NetworkInterface**: an ENI'."\n" + ."\n" + .'> If you want to disassociate the HAVIP from an ENI, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsInstance', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'HaVip can be operated by this action only when it\'s status is InUse.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'ECS instance can be operated by this action only when it\'s status is Running or Stopped.', + ], + [ + 'errorCode' => 'ResourceNotAssociated', + 'errorMessage' => 'The HaVip and ECS instance are not associated.', + ], + [ + 'errorCode' => 'Forbidden.UnassociateMaster', + 'errorMessage' => 'Unassociating a master instance is not allowed unless the parameter Force is True.', + ], + [ + 'errorCode' => 'HA.VIP.NOT.ASSOCIATED.WITH.INSTANCE', + 'errorMessage' => 'ha vip not associated with instance.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'OperationFailed.QueryNetworkInterfaceInfo', + 'errorMessage' => 'Failed to query network interface information.', + ], + [ + 'errorCode' => 'IllegalParam.InstanceType', + 'errorMessage' => 'The specified instance type is invalid. Only ECS instances and network interface are allowed.', + ], + [ + 'errorCode' => 'InvalidNetworkInterfaceId.NotFound', + 'errorMessage' => 'The network interface is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.Instance', + 'errorMessage' => 'The specified binding resource is not found.', + ], + [ + 'errorCode' => 'Forbidden.HaVip', + 'errorMessage' => 'No permissions to perform operations on HAVIPs. Please apply for privilege--vpc_privilege_allow_buy_havip_instance.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidHaVipId.NotFound', + 'errorMessage' => 'The specified HaVip does not exist in the specified region.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified Instance does not exist in the specified region.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C44F62BE-9CE7-4277-B117-69243F3988BF\\n","errorExample":""}]', + 'title' => 'UnassociateHaVip', + 'summary' => 'Disassociates a high-availability virtual IP address (HaVip) from an Elastic Compute Service (ECS) in a virtual private cloud (VPC) or from an elastic network interface (ENI).', + 'description' => '## [](#)'."\n" + ."\n" + .'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* The ECS instance must be in the **Running** or **Stopped** state.'."\n" + ."\n" + .'* The HaVip must be in the **Available** or **InUse** state.'."\n" + ."\n" + .'* **UnassociateHaVip** is an asynchronous operation. After a request is sent, the system returns a request ID and an instance ID and runs the task in the background. You can call the [DescribeHaVips](~~114611~~) operation to query the status of an HaVip:'."\n" + ."\n" + .' * If the HaVip is in the **Unassociating** state, the HaVip is being disassociated.'."\n" + .' * If the HaVip is in the **Inuse** or **Available** state, the HaVip is disassociated.'."\n" + ."\n" + .'* You cannot repeatedly call the **UnassociateHaVip** operation to disassociate an HaVip within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyHaVipAttribute' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e0****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the HaVip belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'HaVipId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the HaVip.', + 'type' => 'string', + 'required' => true, + 'example' => 'havip-2zeo05qre24nhrqp****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the HaVip.'."\n" + ."\n" + .'The description must be 1 to 255 characters in length and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'This is my HaVip.', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the HaVip.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus', + 'errorMessage' => 'HaVip can be deleted only when it\'s status is Available or InUse.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is wrongly formed.', + ], + [ + 'errorCode' => 'Abs.Vpc.InvalidName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'Forbidden.HaVip', + 'errorMessage' => 'No permissions to perform operations on HAVIPs. Please apply for privilege--vpc_privilege_allow_buy_havip_instance.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidHaVipId.NotFound', + 'errorMessage' => 'The specified HaVip does not exist in the specified region.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C44F62BE-9CE7-4277-B117-69243F3988BF\\n","errorExample":""}]', + 'title' => 'ModifyHaVipAttribute', + 'summary' => 'Modifies the name and description of a high-availability virtual IP address (HaVip).', + 'description' => 'You cannot repeatedly call the **ModifyHaVipAttribute** operation to modify the name and description of an HaVip within the specified periods of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeHaVips' => [ + 'summary' => 'Queries HaVips in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the HaVip.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the returned page. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The details of the filter condition.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The filter keys. You can specify at most five filter keys. Valid values of **N**: **1 to 5**. The following filter keys are supported:'."\n" + ."\n" + .'* **VpcId**: virtual private cloud (VPC) ID'."\n" + .'* **VSwitchId**: vSwitch ID'."\n" + .'* **Status**: HaVip status'."\n" + .'* **HaVipId**: HaVip ID'."\n" + .'* **HaVipAddress**: HaVip IP address'."\n" + ."\n" + .'You can specify multiple values for each filter key. The logical operator among multiple values is OR. If one value is matched, the filter key is matched.'."\n" + ."\n" + .'The logical operator among multiple filter keys is AND. HaVips can be queried only if all filter keys are matched.', + 'type' => 'string', + 'required' => false, + 'example' => 'HaVipId', + ], + 'Value' => [ + 'description' => 'The value of the filter key. Valid values of **N**: **1 to 5**.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The filter values for filter keys. You can specify multiple filter values for one key. The logical operator between filter values is OR. If one filter value is matched, the filter key is matched.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + 'required' => false, + 'example' => 'havip-bp19o63nequs01i8d****', + 'maxItems' => 10, + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 6, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the HaVip belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '33E480C5-B46F-4CA5-B6FD-D77C746E86AB', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'HaVips' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'HaVip' => [ + 'description' => 'The details about the HaVip.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the HaVip belongs.', + 'type' => 'string', + 'example' => 'vpc-bp1kcm36tevkpms97****', + ], + 'Status' => [ + 'description' => 'The status of the HaVip. Valid values:'."\n" + ."\n" + .'* **Creating**: The server group is being created.'."\n" + .'* **Available**: The FULLNAT entry is available.'."\n" + .'* **Deleting**', + 'type' => 'string', + 'example' => 'Available', + ], + 'HaVipId' => [ + 'description' => 'The ID of the HaVip.', + 'type' => 'string', + 'example' => 'havip-bp149uyvut73dpld****', + ], + 'AssociatedInstanceType' => [ + 'description' => 'The type of the instance with which the HaVip is associated. Valid values:'."\n" + ."\n" + .'* **EcsInstance**: Elastic Compute Service (ECS) instance'."\n" + .'* **NetworkInterface**: elastic network interface (ENI)', + 'type' => 'string', + 'example' => 'EcsInstance', + ], + 'CreateTime' => [ + 'description' => 'The time when the HaVip was created.', + 'type' => 'string', + 'example' => '2021-07-03T14:25:26Z', + ], + 'ChargeType' => [ + 'description' => 'The parameter is invalid. No value is returned.'."\n", + 'type' => 'string', + 'example' => 'none', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the HaVip belongs.', + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which the HaVip belongs.', + 'type' => 'string', + 'example' => 'vsw-bp1pkt1fba8e824ez****', + ], + 'IpAddress' => [ + 'description' => 'The private IP address of the HaVip.', + 'type' => 'string', + 'example' => '192.168.24.5', + ], + 'Description' => [ + 'description' => 'The description of the HaVip.', + 'type' => 'string', + 'example' => 'My HaVip', + ], + 'MasterInstanceId' => [ + 'description' => 'The ID of the active instance that is associated with the HaVip.', + 'type' => 'string', + 'example' => 'i-bp145q7glnuzdvz****', + ], + 'Name' => [ + 'description' => 'The name of the HaVip.', + 'type' => 'string', + 'example' => 'test', + ], + 'AssociatedEipAddresses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'associatedEipAddresse' => [ + 'description' => 'The list of EIPs associated with the HaVip.', + 'type' => 'array', + 'items' => [ + 'description' => 'The EIP that is associated with the HaVip.', + 'type' => 'string', + 'example' => '121.12.XX.XX', + ], + ], + ], + ], + 'AssociatedInstances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'associatedInstance' => [ + 'description' => 'The information about the instance associated with the HaVip.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the instance with which the HaVip is associated.', + 'type' => 'string', + 'example' => 'i-bp145q7glnuzdvzu21****', + ], + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the HaVip belongs.', + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.HaVip', + 'errorMessage' => 'No permissions to perform operations on HAVIPs. Please apply for privilege--vpc_privilege_allow_buy_havip_instance.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidFilterKey.ValueNotSupported', + 'errorMessage' => 'Specified filter key is not supported: Filter.X.key', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"33E480C5-B46F-4CA5-B6FD-D77C746E86AB\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"HaVips\\": {\\n \\"HaVip\\": [\\n {\\n \\"VpcId\\": \\"vpc-bp1kcm36tevkpms97****\\",\\n \\"Status\\": \\"Available\\",\\n \\"HaVipId\\": \\"havip-bp149uyvut73dpld****\\",\\n \\"AssociatedInstanceType\\": \\"EcsInstance\\",\\n \\"CreateTime\\": \\"2021-07-03T14:25:26Z\\",\\n \\"ChargeType\\": \\"none\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"VSwitchId\\": \\"vsw-bp1pkt1fba8e824ez****\\",\\n \\"IpAddress\\": \\"192.168.24.5\\",\\n \\"Description\\": \\"My HaVip\\",\\n \\"MasterInstanceId\\": \\"i-bp145q7glnuzdvz****\\",\\n \\"Name\\": \\"test\\",\\n \\"AssociatedEipAddresses\\": {\\n \\"associatedEipAddresse\\": [\\n \\"121.12.XX.XX\\"\\n ]\\n },\\n \\"AssociatedInstances\\": {\\n \\"associatedInstance\\": [\\n \\"i-bp145q7glnuzdvzu21****\\"\\n ]\\n },\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 33E480C5-B46F-4CA5-B6FD-D77C746E86AB\\n 1\\n 1\\n \\n vpc-bp1kcm36tevkpms97****\\n Available\\n havip-bp149uyvut73dpld****\\n EcsInstance\\n 2021-07-03T14:25:26Z\\n none\\n cn-hangzhou\\n vsw-bp1pkt1fba8e824ez****\\n 192.168.24.5\\n My HaVip\\n i-bp145q7glnuzdvz****\\n test\\n 121.12.XX.XX\\n i-bp145q7glnuzdvzu21****\\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeHaVips', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateTrafficMirrorFilterRules' => [ + 'summary' => 'Creates an inbound or outbound rule for traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorFilterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: checks the request without performing the operation. The system checks the required parameters, request format, and limits. If the request fails the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the check, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IngressRules', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the inbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the inbound rule.'."\n", + 'type' => 'object', + 'properties' => [ + 'Action' => [ + 'description' => 'The policy of the inbound rule. Valid values:'."\n" + ."\n" + .'* **accept**: collects network traffic.'."\n" + .'* **drop**: drops network traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'accept', + ], + 'SourceCidrBlock' => [ + 'description' => 'The source CIDR block of the inbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'Protocol' => [ + 'description' => 'The protocol that is used by the inbound traffic to be mirrored. Valid values:'."\n" + ."\n" + .'* **ALL**: all protocols'."\n" + .'* **ICMP**: Internet Control Message Protocol.'."\n" + .'* **TCP**: Transmission Control Protocol.'."\n" + .'* **UDP**: User Datagram Protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'TCP', + ], + 'IpVersion' => [ + 'description' => 'The IP version of the instance. The following value may be returned:'."\n" + ."\n" + .'* **IPv4**: IPv4'."\n" + .'* **IPv6**: IPv6'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'IPv4', + ], + 'DestinationPortRange' => [ + 'description' => 'The destination port range of the inbound traffic. Valid value: **1** to **65535**. Separate the first and the last port with a forward slash (/). For example, **1/200** or **80/80**.'."\n" + ."\n" + .'> If the **IngressRules.N.Protocol** parameter is set to **ALL** or **ICMP**, you do not need to set this parameter. In this case, all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/120', + ], + 'Priority' => [ + 'description' => 'The priority of the inbound rule. A smaller value indicates a higher priority. The maximum value of **N** is **10**. You can configure up to 10 inbound rules for a filter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the inbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the inbound traffic. Valid value: **1** to **65535**. Separate the first and last port with a forward slash (/). For example **1/200** and **80/80**. You cannot set this parameter to \\*\\*-1/-1\\*\\*, which indicates all ports.'."\n" + ."\n" + .'> If the **IngressRules.N.Protocol** parameter is set to **ALL** or **ICMP**, you do not need to set this parameter. In this case, all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/120', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'EgressRules', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the outbound rule.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the outbound rule.'."\n", + 'type' => 'object', + 'properties' => [ + 'Action' => [ + 'description' => 'The collection policy of the outbound rule. Valid values:'."\n" + ."\n" + .'* **accept**: accepts network traffic.'."\n" + .'* **drop**: drops network traffic.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'accept', + ], + 'SourceCidrBlock' => [ + 'description' => 'The source CIDR block of the outbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'Protocol' => [ + 'description' => 'The protocol that is used by the outbound traffic to be mirrored. Valid values:'."\n" + ."\n" + .'* **ALL**: all protocols'."\n" + .'* **ICMP**: Internet Control Message Protocol.'."\n" + .'* **TCP**: Transmission Control Protocol.'."\n" + .'* **UDP**: User Datagram Protocol.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'TCP', + ], + 'IpVersion' => [ + 'description' => 'The IP version of the instance. Valid values:'."\n" + ."\n" + .'* **IPv4**: IPv4'."\n" + .'* **IPv6**: IPv6'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'IPv4', + ], + 'DestinationPortRange' => [ + 'description' => 'The destination port range of the outbound traffic. Valid value: **1** to **65535**. Separate the first and last port with a forward slash (/). For example **1/200** and **80/80**. You cannot set this parameter to \\*\\*-1/-1\\*\\*, which indicates all ports.'."\n" + ."\n" + .'> If **EgressRules.N.Protocol** is set to **ALL** or **ICMP**, you do not need to set this parameter. In this case, all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '22/40', + ], + 'Priority' => [ + 'description' => 'The priority of the outbound rule. A smaller value indicates a higher priority. The maximum value of **N** is **10**. You can configure up to 10 outbound rules for a filter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the outbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the outbound traffic. Valid value: **1** to **65535**. Separate the first and last port with a forward slash (/). For example **1/200** and **80/80**. You cannot set this parameter to \\*\\*-1/-1\\*\\*, which indicates all ports.'."\n" + ."\n" + .'> If **EgressRules.N.Protocol** is set to **ALL** or **ICMP**, you do not need to set this parameter. In this case, all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '22/40', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '07F272E2-6AD5-433A-8207-A607C76F1676', + ], + 'IngressRules' => [ + 'description' => 'The list of inbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'tmr-j6c6rtallo51ouzv3****', + ], + ], + ], + ], + 'EgressRules' => [ + 'description' => 'The list of outbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'tmr-j6cok23ugp53eeib5****', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorFilter', + 'errorMessage' => 'The specified resource of traffic mirror filter is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorFilter', + 'errorMessage' => 'The status of traffic mirror filter is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorSession', + 'errorMessage' => 'The status of traffic mirror session is incorrect.', + ], + [ + 'errorCode' => 'QuotaExceeded.TrafficMirrorRulesPerFilter', + 'errorMessage' => 'The quota of the number of traffic mirror rules per filter is exceeded.', + ], + [ + 'errorCode' => 'DuplicatedParam.Priority', + 'errorMessage' => 'The specified priority conflicts with the existing priority.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The specified CidrBlock is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.SourceCidrBlock', + 'errorMessage' => 'The param of SourceCidrBlock %s is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.DestinationCidrBlock', + 'errorMessage' => 'The param of DestinationCidrBlock %s is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Protocol', + 'errorMessage' => 'The specified Protocol %s is invalid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"07F272E2-6AD5-433A-8207-A607C76F1676\\",\\n \\"IngressRules\\": [\\n {\\n \\"InstanceId\\": \\"tmr-j6c6rtallo51ouzv3****\\"\\n }\\n ],\\n \\"EgressRules\\": [\\n {\\n \\"InstanceId\\": \\"tmr-j6cok23ugp53eeib5****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 07F272E2-6AD5-433A-8207-A607C76F1676\\n \\n tmr-j6c6rtallo51ouzv3****\\n \\n \\n tmr-j6cok23ugp53eeib5****\\n \\n","errorExample":""}]', + 'title' => 'CreateTrafficMirrorFilterRules', + 'description' => '* **CreateTrafficMirrorFilterRules** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListTrafficMirrorFilters](~~261353~~) to query the status of the task.'."\n" + ."\n" + .' * If the inbound or outbound rule is in the **Creating** state, the rule is being created.'."\n" + .' * If the inbound or outbound rule is in the **Created** state, the rule is created.'."\n" + ."\n" + .'* You cannot call **CreateTrafficMirrorFilterRules** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteTrafficMirrorFilterRules' => [ + 'summary' => 'Deletes an inbound or outbound rule of a filter for traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorFilterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: checks the API request without performing the operation. The system checks the required parameters, request format, and limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the check, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TrafficMirrorFilterRuleIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the inbound or outbound rule.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the inbound or outbound rule.', + 'type' => 'string', + 'required' => false, + 'example' => 'tmr-j6cbmubn323k7jlq3****', + ], + 'required' => true, + 'example' => 'tmr-j6cbmubn323k7jlq3****', + 'maxLength' => 128, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'BD8A3F71-00C5-4655-8F55-11F3976C3274', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorRule', + 'errorMessage' => 'The specified resource of traffic mirror rule is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorRule', + 'errorMessage' => 'The status of traffic mirror rule is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorFilter', + 'errorMessage' => 'The status of traffic mirror filter is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorFilter', + 'errorMessage' => 'The specified resource of traffic mirror filter is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorSession', + 'errorMessage' => 'The status of traffic mirror session is incorrect.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListTrafficMirrorFilters', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BD8A3F71-00C5-4655-8F55-11F3976C3274\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\nBD8A3F71-00C5-4655-8F55-11F3976C3274\\r\\n","errorExample":""}]', + 'title' => 'DeleteTrafficMirrorFilterRules', + 'description' => '* **DeleteTrafficMirrorFilterRules** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListTrafficMirrorFilters](~~261353~~) to query the status of the task.'."\n" + ."\n" + .' * If the inbound or outbound rule is in the **Deleting** state, the rule is being deleted.'."\n" + .' * If you cannot query the rule, the rule is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call **DeleteTrafficMirrorFilterRules** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateTrafficMirrorFilterRuleAttribute' => [ + 'summary' => 'Modifies the configuration of an inbound or outbound rule for traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorFilterRuleId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the inbound or outbound rule.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tmr-j6c89rzmtd3hhdugq****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: only checks the API request. The configuration of the inbound or outbound rule is not modified. The system checks the required parameters, request syntax, and limits. If the request fails to pass the check, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the request. This is the default value. If the request passes the check, a 2xx HTTP status code is returned and the configuration of the inbound or outbound rule is modified.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new priority of the inbound or outbound rule. A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Protocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new protocol that is used by the traffic to be mirrored by the inbound or outbound rule. Valid values:'."\n" + ."\n" + .'* **ALL**: all protocols'."\n" + .'* **ICMP**: Internet Control Message Protocol (ICMP)'."\n" + .'* **TCP**: TCP'."\n" + .'* **UDP**: User Datagram Protocol (UDP)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ICMP', + ], + ], + [ + 'name' => 'RuleAction', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new action of the inbound or outbound rule. Valid values:'."\n" + ."\n" + .'* **accept**: accepts network traffic.'."\n" + .'* **drop**: drops network traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accept', + ], + ], + [ + 'name' => 'DestinationCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new destination CIDR block of the inbound or outbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'SourceCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new source CIDR block of the inbound or outbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0.0.0.0/0', + ], + ], + [ + 'name' => 'DestinationPortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new destination port range of the inbound or outbound traffic.'."\n" + ."\n" + .'> If you set **Protocol** to **ICMP**, you cannot change the port range.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-1/-1', + ], + ], + [ + 'name' => 'SourcePortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new source port range of the inbound or outbound traffic.'."\n" + ."\n" + .'> If you set **Protocol** to **ICMP**, you cannot change the port range.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '22/40', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirroring, see [Overview of traffic mirroring](~~207513~~).'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '02EB8585-D4DC-4E29-A0F4-7C588C82863C', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorRule', + 'errorMessage' => 'The specified resource of traffic mirror rule is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorRule', + 'errorMessage' => 'The status of traffic mirror rule is incorrect.', + ], + [ + 'errorCode' => 'DuplicatedParam.Priority', + 'errorMessage' => 'The specified priority conflicts with the existing priority.', + ], + [ + 'errorCode' => 'IllegalParam.Protocol', + 'errorMessage' => 'The specified Protocol is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.SourceCidrBlock', + 'errorMessage' => 'The param of SourceCidrBlock is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.DestinationCidrBlock', + 'errorMessage' => 'The param of DestinationCidrBlock is illegal.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"02EB8585-D4DC-4E29-A0F4-7C588C82863C\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 02EB8585-D4DC-4E29-A0F4-7C588C82863C\\n","errorExample":""}]', + 'title' => 'UpdateTrafficMirrorFilterRuleAttribute', + 'description' => '* The **UpdateTrafficMirrorFilterRuleAttribute** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [ListTrafficMirrorFilters](~~261353~~) operation to query the status of an inbound or outbound rule:'."\n" + ."\n" + .' * If the rule is in the **Modifying** state, the rule is being modified.'."\n" + .' * If the rule is in the **Created** state, the rule is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **UpdateTrafficMirrorFilterRuleAttribute** operation to modify an inbound or outbound rule within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateTrafficMirrorFilter' => [ + 'summary' => 'Creates a filter for traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorFilterDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the filter.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'this is a filter.', + ], + ], + [ + 'name' => 'TrafficMirrorFilterName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the filter.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that the value is unique among all requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the required parameters, request syntax, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IngressRules', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about inbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about inbound rules.'."\n", + 'type' => 'object', + 'properties' => [ + 'Action' => [ + 'description' => 'The collection policy of the inbound rule. Valid values:'."\n" + ."\n" + .'* **accept**: collects the network traffic.'."\n" + .'* **drop**: does not collect the network traffic.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'accept', + ], + 'SourceCidrBlock' => [ + 'description' => 'The source CIDR block of the inbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'Protocol' => [ + 'description' => 'The type of the protocol is used by the inbound traffic that you want to mirror. Valid values:'."\n" + ."\n" + .'* **ALL**: all protocols'."\n" + .'* **ICMP**: Internet Control Message Protocol.'."\n" + .'* **TCP**: Transmission Control Protocol.'."\n" + .'* **UDP**: User Datagram Protocol.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'TCP', + ], + 'IpVersion' => [ + 'description' => 'The IP version of the instance. The following value may be returned:'."\n" + ."\n" + .'* **IPv4**'."\n" + .'* **IPv6**'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'IPv4', + ], + 'DestinationPortRange' => [ + 'description' => 'The destination port range of the inbound traffic. Valid value: **1** to **65535**. Separate the first port and last port with a forward slash (/). For example, **1/200** or **80/80**.'."\n" + ."\n" + .'> If you set **IngressRules.N.Protocol** to **ALL** or **ICMP**, you do not need to set this parameter. In this case, all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/120', + ], + 'Priority' => [ + 'description' => 'The priority of the inbound rule. A smaller value indicates a higher priority. The maximum value of **N** is **10**. You can configure up to 10 inbound rules for a filter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the inbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the inbound traffic. Valid value: **1** to **65535**. Separate the first port and last port with a forward slash (/). For example, **1/200** or **80/80**.'."\n" + ."\n" + .'> If **IngressRules.N.Protocol** is set to **ALL** or **ICMP**, you do not need to specify this parameter. This indicates that all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/120', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'EgressRules', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the outbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the outbound rules.'."\n", + 'type' => 'object', + 'properties' => [ + 'Action' => [ + 'description' => 'The collection policy of the outbound rule. Valid values:'."\n" + ."\n" + .'* **accept**: collects the network traffic.'."\n" + .'* **drop**: does not collect the network traffic.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'accept', + ], + 'SourceCidrBlock' => [ + 'description' => 'The source CIDR block of the outbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'Protocol' => [ + 'description' => 'The type of the protocol that is used by the outbound traffic that you want to mirror. Valid values:'."\n" + ."\n" + .'* **ALL**: all protocols'."\n" + .'* **ICMP**: Internet Control Message Protocol.'."\n" + .'* **TCP**: Transmission Control Protocol.'."\n" + .'* **UDP**: User Datagram Protocol.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'TCP', + ], + 'IpVersion' => [ + 'description' => 'The IP version of the instance. The following value may be returned:'."\n" + ."\n" + .'* **IPv4**: IPv4'."\n" + .'* **IPv6**: IPv6'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'IPv4', + ], + 'DestinationPortRange' => [ + 'description' => 'The destination port range of the outbound traffic. Valid values for a port: **1** to **65535**. Separate the first port and the last port with a forward slash (/). Examples: **1/200** and **80/80**. You cannot set this parameter to only -1/-1, which specifies all ports.'."\n" + ."\n" + .'> If **EgressRules.N.Protocol** is set to **ALL** or **ICMP**, you do not need to specify this parameter. This indicates that all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '22/40', + ], + 'Priority' => [ + 'description' => 'The priority of the outbound rule. A smaller value indicates a higher priority. The maximum value of **N** is **10**. You can configure up to 10 outbound rules for a filter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the outbound traffic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the outbound traffic. Valid values: **1** to **65535**. Separate the first port and the last port with a forward slash (/). Examples: **1/200** and **80/80**. You cannot set this parameter to only -1/-1, which specifies all ports.'."\n" + ."\n" + .'> If **EgressRules.N.Protocol** is set to **ALL** or **ICMP**, you do not need to specify this parameter. This indicates that all ports are available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '22/40', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the mirrored traffic belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. The tag key cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TrafficMirrorFilterId' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '28DB147D-217B-43E8-9E94-A3F6837DDC8A', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the mirrored traffic belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedFeature.IpVersion', + 'errorMessage' => 'The ipversion type is not supported.', + ], + [ + 'errorCode' => 'IncorrectBusinessStatus.TrafficMirror', + 'errorMessage' => 'The business status of traffic mirror is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.TrafficMirror', + 'errorMessage' => 'You need to subscribe to the traffic mirror service first.', + ], + [ + 'errorCode' => 'QuotaExceeded.TrafficMirrorFilter', + 'errorMessage' => 'The maximum number of traffic image filters is exceeded.', + ], + [ + 'errorCode' => 'DuplicatedParam.Priority', + 'errorMessage' => 'The specified priority conflicts with the existing priority.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'IllegalParamFormat.SrcCidrBlock', + 'errorMessage' => 'The format of the specified source CIDR block is invalid.', + ], + [ + 'errorCode' => 'IllegalParamFormat.DstCidrBlock', + 'errorMessage' => 'The format of the specified dst CIDR block is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.DestinationCidrBlock', + 'errorMessage' => 'The param of DestinationCidrBlock %s is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.SourceCidrBlock', + 'errorMessage' => 'The param of SourceCidrBlock %s is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Protocol', + 'errorMessage' => 'The specified Protocol %s is invalid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"TrafficMirrorFilterId\\": \\"tmf-j6cmls82xnc86vtpe****\\",\\n \\"RequestId\\": \\"28DB147D-217B-43E8-9E94-A3F6837DDC8A\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n tmf-j6cmls82xnc86vtpe****\\n 28DB147D-217B-43E8-9E94-A3F6837DDC8A\\n rg-bp67acfmxazb4ph****\\n","errorExample":""}]', + 'title' => 'CreateTrafficMirrorFilter', + 'description' => '**CreateTrafficMirrorFilter** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListTrafficMirrorFilters](~~261353~~) operation to query the status of the task.'."\n" + ."\n" + .'* If the filter is in the **Creating** state, the filter is being created.'."\n" + .'* If the filter is in the **Created** state, the filter is created.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteTrafficMirrorFilter' => [ + 'summary' => 'Deletes a filter of traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorFilterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: checks the request without performing the operation. The system checks the required parameters, request format, and limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the check, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '07F272E2-6AD5-433A-8207-A607C76F1676', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorFilter', + 'errorMessage' => 'The specified resource of traffic mirror filter is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorFilter', + 'errorMessage' => 'The status of traffic mirror filter is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorRule', + 'errorMessage' => 'The status of traffic mirror rule is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.TrafficMirrorSession', + 'errorMessage' => 'Some traffic mirror sessions depend on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListTrafficMirrorFilters', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"07F272E2-6AD5-433A-8207-A607C76F1676\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n07F272E2-6AD5-433A-8207-A607C76F1676\\r\\n","errorExample":""}]', + 'title' => 'DeleteTrafficMirrorFilter', + 'description' => '* The **DeleteTrafficMirrorFilter** operation is asynchronous. After you send the request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [ListTrafficMirrorFilters](~~261353~~) operation to query the status of a filter:'."\n" + ."\n" + .' * If the filter is in the **Deleting** state, the filter is being deleted.'."\n" + .' * If you cannot query the filter, the filter is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteTrafficMirrorFilter** operation to delete a filter within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateTrafficMirrorFilterAttribute' => [ + 'summary' => 'Modifies the configuration of a filter for traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorFilterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + ], + [ + 'name' => 'TrafficMirrorFilterDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the filter.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is a new filter.', + ], + ], + [ + 'name' => 'TrafficMirrorFilterName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the filter.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: checks the request without performing the operation. The system checks the required parameters, request syntax, and limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '5816D35F-94D5-48CE-838F-2327C8EE8D49', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorFilter', + 'errorMessage' => 'The specified resource of traffic mirror filter is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorFilter', + 'errorMessage' => 'The status of traffic mirror filter is incorrect.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5816D35F-94D5-48CE-838F-2327C8EE8D49\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5816D35F-94D5-48CE-838F-2327C8EE8D49\\n","errorExample":""}]', + 'title' => 'UpdateTrafficMirrorFilterAttribute', + 'description' => 'You cannot repeatedly call the **UpdateTrafficMirrorFilterAttribute** operation to modify the configuration of a filter for traffic mirror within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListTrafficMirrorFilters' => [ + 'summary' => 'Queries filters for traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorFilterName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the filter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries to return.'."\n" + ."\n" + .'Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'TrafficMirrorFilterIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the traffic mirror filter. The maximum value of **N** is **100**, which specifies that you can query up to 100 filters at a time.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the traffic mirror filter. The maximum value of **N** is **100**, which specifies that you can query up to 100 filters at a time.', + 'type' => 'string', + 'required' => false, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + 'required' => false, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + 'maxLength' => 128, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the mirrored traffic belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value is the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '739CA01C-92EB-4C69-BCC0-280149C6F41E', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'MaxResults' => [ + 'description' => 'The maximum number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'Count' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'TrafficMirrorFilters' => [ + 'description' => 'The information about the filters.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TrafficMirrorFilterStatus' => [ + 'description' => 'The status of the filter. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'TrafficMirrorFilterDescription' => [ + 'description' => 'The description of the filter.'."\n", + 'type' => 'string', + 'example' => 'This is a filter.', + ], + 'TrafficMirrorFilterId' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + 'TrafficMirrorFilterName' => [ + 'description' => 'The filter name.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'IngressRules' => [ + 'description' => 'The information about the inbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TrafficMirrorFilterRuleStatus' => [ + 'description' => 'The status of the inbound rule. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'Action' => [ + 'description' => 'The action of the inbound rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'SourceCidrBlock' => [ + 'description' => 'The source CIDR block of the inbound traffic.'."\n", + 'type' => 'string', + 'example' => '0.0.0.0/0', + ], + 'TrafficDirection' => [ + 'description' => 'The direction of the network traffic. Valid values:'."\n" + ."\n" + .'* **egress**'."\n" + .'* **ingress**'."\n", + 'type' => 'string', + 'example' => 'ingress', + ], + 'Protocol' => [ + 'description' => 'The protocol that is used by the inbound traffic to be mirrored. Valid values:'."\n" + ."\n" + .'* **ALL**'."\n" + .'* **ICMP**'."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'example' => 'ALL', + ], + 'IpVersion' => [ + 'description' => 'The version of IP protocol.', + 'type' => 'string', + 'example' => 'IPv4', + ], + 'DestinationPortRange' => [ + 'description' => 'The destination port range of the inbound traffic.'."\n", + 'type' => 'string', + 'example' => '-1/-1', + ], + 'TrafficMirrorFilterRuleId' => [ + 'description' => 'The ID of the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'tmr-j6cezu8e68rnpepet****', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the inbound traffic.'."\n", + 'type' => 'string', + 'example' => '0.0.0.0/0', + ], + 'Priority' => [ + 'description' => 'The priority of the inbound rule. A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TrafficMirrorFilterId' => [ + 'description' => 'The ID of the filter associated with the inbound rule.'."\n", + 'type' => 'string', + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + 'SourcePortRange' => [ + 'description' => 'The destination port range of the inbound traffic.'."\n", + 'type' => 'string', + 'example' => '-1/-1', + ], + ], + ], + ], + 'EgressRules' => [ + 'description' => 'The information about the outbound rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TrafficMirrorFilterRuleStatus' => [ + 'description' => 'The status of the outbound rule. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'Action' => [ + 'description' => 'The action of the outbound rule. Valid values:'."\n" + ."\n" + .'* **accept**'."\n" + .'* **drop**'."\n", + 'type' => 'string', + 'example' => 'accept', + ], + 'SourceCidrBlock' => [ + 'description' => 'The source CIDR block of the outbound traffic.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'TrafficDirection' => [ + 'description' => 'The direction of the network traffic. Valid values:'."\n" + ."\n" + .'* **egress**'."\n" + .'* **ingress**'."\n", + 'type' => 'string', + 'example' => 'egress', + ], + 'Protocol' => [ + 'description' => 'The protocol that is used by the outbound traffic to be mirrored. Valid values:'."\n" + ."\n" + .'* **ALL**'."\n" + .'* **ICMP**'."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'example' => 'TCP', + ], + 'IpVersion' => [ + 'description' => 'The version of IP protocol.', + 'type' => 'string', + 'example' => 'IPv4', + ], + 'DestinationPortRange' => [ + 'description' => 'The destination port range of the outbound traffic.'."\n", + 'type' => 'string', + 'example' => '22/40', + ], + 'TrafficMirrorFilterRuleId' => [ + 'description' => 'The ID of the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'tmr-j6c89rzmtd3hhdugq****', + ], + 'DestinationCidrBlock' => [ + 'description' => 'The destination CIDR block of the outbound traffic.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'Priority' => [ + 'description' => 'The priority of the outbound rule. A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TrafficMirrorFilterId' => [ + 'description' => 'The ID of the filter associated with the outbound rule.'."\n", + 'type' => 'string', + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the outbound traffic.'."\n", + 'type' => 'string', + 'example' => '22/40', + ], + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the traffic mirror session belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + 'CreationTime' => [ + 'description' => 'The time when the filter is created.', + 'type' => 'string', + 'example' => '2023-09-05T15:26Z', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"739CA01C-92EB-4C69-BCC0-280149C6F41E\\",\\n \\"TotalCount\\": \\"1\\",\\n \\"MaxResults\\": 20,\\n \\"Count\\": 5,\\n \\"TrafficMirrorFilters\\": [\\n {\\n \\"TrafficMirrorFilterStatus\\": \\"Created\\",\\n \\"TrafficMirrorFilterDescription\\": \\"This is a filter.\\",\\n \\"TrafficMirrorFilterId\\": \\"tmf-j6cmls82xnc86vtpe****\\",\\n \\"TrafficMirrorFilterName\\": \\"abc\\",\\n \\"IngressRules\\": [\\n {\\n \\"TrafficMirrorFilterRuleStatus\\": \\"Created\\",\\n \\"Action\\": \\"accept\\",\\n \\"SourceCidrBlock\\": \\"0.0.0.0/0\\",\\n \\"TrafficDirection\\": \\"ingress\\",\\n \\"Protocol\\": \\"ALL\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"DestinationPortRange\\": \\"-1/-1\\",\\n \\"TrafficMirrorFilterRuleId\\": \\"tmr-j6cezu8e68rnpepet****\\",\\n \\"DestinationCidrBlock\\": \\"0.0.0.0/0\\",\\n \\"Priority\\": 1,\\n \\"TrafficMirrorFilterId\\": \\"tmf-j6cmls82xnc86vtpe****\\",\\n \\"SourcePortRange\\": \\"-1/-1\\"\\n }\\n ],\\n \\"EgressRules\\": [\\n {\\n \\"TrafficMirrorFilterRuleStatus\\": \\"Created\\",\\n \\"Action\\": \\"accept\\",\\n \\"SourceCidrBlock\\": \\"10.0.0.0/24\\",\\n \\"TrafficDirection\\": \\"egress\\",\\n \\"Protocol\\": \\"TCP\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"DestinationPortRange\\": \\"22/40\\",\\n \\"TrafficMirrorFilterRuleId\\": \\"tmr-j6c89rzmtd3hhdugq****\\",\\n \\"DestinationCidrBlock\\": \\"10.0.0.0/24\\",\\n \\"Priority\\": 1,\\n \\"TrafficMirrorFilterId\\": \\"tmf-j6cmls82xnc86vtpe****\\",\\n \\"SourcePortRange\\": \\"22/40\\"\\n }\\n ],\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"CreationTime\\": \\"2023-09-05T15:26Z\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 739CA01C-92EB-4C69-BCC0-280149C6F41E\\n 1\\n 20\\n 5\\n \\n Created\\n This is a filter.\\n tmf-j6cmls82xnc86vtpe****\\n abc\\n \\n Created\\n accept\\n 0.0.0.0/0\\n ingress\\n ALL\\n -1/-1\\n tmr-j6cezu8e68rnpepet****\\n 0.0.0.0/0\\n 1\\n tmf-j6cmls82xnc86vtpe****\\n -1/-1\\n \\n \\n Created\\n accept\\n 10.0.0.0/24\\n egress\\n TCP\\n 22/40\\n tmr-j6c89rzmtd3hhdugq****\\n 10.0.0.0/24\\n 1\\n tmf-j6cmls82xnc86vtpe****\\n 22/40\\n \\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n 2023-09-05T15:26Z\\n \\n","errorExample":""}]', + 'title' => 'ListTrafficMirrorFilters', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AddSourcesToTrafficMirrorSession' => [ + 'summary' => 'Adds a traffic mirror source to a traffic mirror session.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TrafficMirrorSessionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror session.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tms-j6cla50buc44ap8tu****', + ], + ], + [ + 'name' => 'TrafficMirrorSourceIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the traffic mirror source. You can specify only an elastic network interface (ENI) as the traffic mirror source. The default value of **N** is **1**, which indicates that you can add only one traffic mirror source to a traffic mirror session.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the traffic mirror source. You can specify only an elastic network interface (ENI) as the traffic mirror source. The default value of **N** is **1**, which indicates that you can add only one traffic mirror source to a traffic mirror session.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-j6c8znm5l1yt4sox****', + ], + 'required' => true, + 'docRequired' => true, + 'example' => 'eni-j6ccmrl8z3xkvxgw****', + 'maxLength' => 128, + 'maxItems' => 30, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the traffic mirror session belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n" + ."\n" + .'For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '87F70089-5B38-41A8-BAD8-0B55E2F8DC57', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.TrafficMirror', + 'errorMessage' => 'The business status of traffic mirror is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.TrafficMirror', + 'errorMessage' => 'You need to subscribe to the traffic mirror service first.', + ], + [ + 'errorCode' => 'DuplicatedParam.SourceInstanceIds', + 'errorMessage' => 'The parameter of source instance IDs contains duplicate values.', + ], + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorSession', + 'errorMessage' => 'The specified resource of traffic mirror session is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorSession', + 'errorMessage' => 'The status of traffic mirror session is incorrect.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.TrafficMirrorSource', + 'errorMessage' => 'The specified traffic mirror source and session are already associated.', + ], + [ + 'errorCode' => 'ResourceNotFound.NetworkInterface', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.EcsInstance', + 'errorMessage' => 'The specified resource of ECS instance is not found.', + ], + [ + 'errorCode' => 'OperationDenied.EcsNotSupportTrafficMirror', + 'errorMessage' => 'The ECS instance does not support traffic mirroring.', + ], + [ + 'errorCode' => 'OperationDenied.DuplicateRole', + 'errorMessage' => 'The network interface must not be the source and the target of traffic mirror sessions at the same time.', + ], + [ + 'errorCode' => 'QuotaExceeded.NetworkInterfaceRelatedSession', + 'errorMessage' => 'The quota of the number of traffic mirror sessions related to one network interface is exceeded.', + ], + [ + 'errorCode' => 'OperationDenied.FreeNetworkInterface', + 'errorMessage' => 'The network interface is not attached to any ECS instance.', + ], + [ + 'errorCode' => 'QuotaExceeded.SourceNumPerSession', + 'errorMessage' => 'The quota of the number of traffic mirror sources per session is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.SourceNumPerTarget', + 'errorMessage' => 'The maximum number of traffic mirror sources for a target is exceeded.', + ], + [ + 'errorCode' => 'OperationUnsupported.BondingNetworkInterface', + 'errorMessage' => 'The specified traffic mirror source is bonding eni without slave.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedTargetType', + 'errorMessage' => 'Traffic mirror target must be SLB if traffic mirror sources contain nat gateway network interface.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidSourceBondEniType', + 'errorMessage' => 'The traffic mirroring source does not support the entered bond ENI type.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"87F70089-5B38-41A8-BAD8-0B55E2F8DC57\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 87F70089-5B38-41A8-BAD8-0B55E2F8DC57\\n","errorExample":""}]', + 'title' => 'AddSourcesToTrafficMirrorSession', + 'description' => '* **AddSourcesToTrafficMirrorSession** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListTrafficMirrorSessions](~~261367~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the traffic mirror session is in the **Modifying** state, the traffic mirror source is being added to the traffic mirror session.'."\n" + .' * If the traffic mirror session is in the **Created** state, the traffic mirror source is added to the traffic mirror session.'."\n" + ."\n" + .'* You cannot repeatedly call the **AddSourcesToTrafficMirrorSession** operation to add a traffic mirror source to a traffic mirror session within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateTrafficMirrorSession' => [ + 'summary' => 'Creates a traffic mirror session.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorSessionDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the traffic mirror session.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is a trafficmirrorsession.', + ], + ], + [ + 'name' => 'TrafficMirrorSessionName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the traffic mirror session.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that the value is unique among all requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** might be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the required parameters, request format, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TrafficMirrorTargetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror destination. You can specify only an elastic network interface (ENI) or a Server Load Balancer (SLB) instance as a traffic mirror destination.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eni-j6c8znm5l1yt4sox****', + ], + ], + [ + 'name' => 'TrafficMirrorTargetType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the traffic mirror destination. Valid values:'."\n" + ."\n" + .'* **NetworkInterface**: an ENI'."\n" + .'* **SLB**: an SLB instance'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'NetworkInterface', + ], + ], + [ + 'name' => 'TrafficMirrorFilterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + ], + [ + 'name' => 'VirtualNetworkId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VXLAN network identifier (VNI). Valid values: **0** to **16777215**.'."\n" + ."\n" + .'You can use VNIs to identify mirrored traffic from different sessions at the traffic mirror destination. You can specify a custom VNI or use a random VNI allocated by the system. If you want the system to randomly allocate a VNI, do not enter a value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the traffic mirror session. Valid values: **1** to **32766**.'."\n" + ."\n" + .'A smaller value indicates a higher priority. You cannot specify identical priorities for traffic mirror sessions that are created in the same region by using the same account.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'maximum' => '32766', + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'Enabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the traffic mirror session. Valid values:'."\n" + ."\n" + .'* **false** (default): does not enable the traffic mirror session.'."\n" + .'* **true**: enables the traffic mirror session.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PacketLength', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum transmission unit.'."\n" + ."\n" + .'Valid values: **64 to 9600**. Default value: **1500**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1500', + ], + ], + [ + 'name' => 'TrafficMirrorSourceIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the traffic mirror source. You can specify only an elastic network interface (ENI) as the traffic mirror source. The default value of **N** is **1**, which indicates that you can add only one traffic mirror source to a traffic mirror session.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the traffic mirror source. You can specify only an ENI as the traffic mirror source. The default value of **N** is **1**, which means that you can add only one traffic mirror source to a traffic mirror session.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-j6c2fp57q8rr47rp****', + ], + 'required' => true, + 'docRequired' => true, + 'example' => 'eni-j6c2fp57q8rr47rp****', + 'maxLength' => 128, + 'maxItems' => 30, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the traffic mirror session belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the mirrored traffic belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TrafficMirrorSessionId' => [ + 'description' => 'The ID of the traffic mirror session.'."\n", + 'type' => 'string', + 'example' => 'tms-j6ce5di4w7nvigfjz****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the mirrored traffic belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.TrafficMirror', + 'errorMessage' => 'The business status of traffic mirror is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.TrafficMirror', + 'errorMessage' => 'You need to subscribe to the traffic mirror service first.', + ], + [ + 'errorCode' => 'DuplicatedParam.SourceInstanceIds', + 'errorMessage' => 'The parameter of source instance IDs contains duplicate values.', + ], + [ + 'errorCode' => 'OperationDenied.DuplicateRole', + 'errorMessage' => 'The network interface must not be the source and the target of traffic mirror sessions at the same time.', + ], + [ + 'errorCode' => 'ResourceNotFound.NetworkInterface', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.EcsInstance', + 'errorMessage' => 'The specified resource of ECS instance is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.Slb', + 'errorMessage' => 'The specified resource of SLB is not found.', + ], + [ + 'errorCode' => 'OperationDenied.SlbNotInVpc', + 'errorMessage' => 'The specified SLB is not in any VPC.', + ], + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorFilter', + 'errorMessage' => 'The specified resource of traffic mirror filter is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorFilter', + 'errorMessage' => 'The status of traffic mirror filter is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.EcsNotSupportTrafficMirror', + 'errorMessage' => 'The ECS instance does not support traffic mirroring.', + ], + [ + 'errorCode' => 'QuotaExceeded.SessionNum', + 'errorMessage' => 'The quota of the number of traffic mirror sessions is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.FilterRelatedSession', + 'errorMessage' => 'The quota of the number of traffic mirror sessions related to one filter is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.SourceNumPerSession', + 'errorMessage' => 'The quota of the number of traffic mirror sources per session is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.NetworkInterfaceRelatedSession', + 'errorMessage' => 'The quota of the number of traffic mirror sessions related to one network interface is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.SlbRelatedSession', + 'errorMessage' => 'The quota of the number of traffic mirror sessions related to one SLB is exceeded.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'InvalidLoadBalancerId.NotFound', + 'errorMessage' => 'The specified resource of load balancer is not found.', + ], + [ + 'errorCode' => 'OperationDenied.FreeNetworkInterface', + 'errorMessage' => 'The network interface is not attached to any ECS instance.', + ], + [ + 'errorCode' => 'OperationDenied.ClassicSLB', + 'errorMessage' => 'The operation is not allowed because of ClassicSLB.', + ], + [ + 'errorCode' => 'ResourceNotFound.TargetInstance', + 'errorMessage' => 'The specified target instance for traffic mirroring is not found.', + ], + [ + 'errorCode' => 'QuotaExceeded.SourceNumPerTarget', + 'errorMessage' => 'The maximum number of traffic mirror sources for a target is exceeded.', + ], + [ + 'errorCode' => 'IncorrectStatus.NetworkInterface', + 'errorMessage' => 'The status of network interface is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.NotSupportBizType', + 'errorMessage' => 'The specified instance type does not support the operation.', + ], + [ + 'errorCode' => 'IllegalParam.Priority', + 'errorMessage' => 'The specified Priority is illegal or the same as other mirroring sessions.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedTargetType', + 'errorMessage' => 'Traffic mirror target must be SLB if traffic mirror sources contain nat gateway network interface.', + ], + [ + 'errorCode' => 'OperationDenied.TargetTypeNotSupportGatewayLoadBalancerEndpoint', + 'errorMessage' => 'Operation denied because of target type can not be GatewayLoadBalancerEndpoint.', + ], + [ + 'errorCode' => 'OperationDenied.TargetTypeNotSupportBondEni', + 'errorMessage' => 'Operation denied because of target type can not be Bond Network Interface.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidTargetBondEniType', + 'errorMessage' => 'The traffic mirroring target does not support the entered bond ENI type.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidSourceBondEniType', + 'errorMessage' => 'The traffic mirroring source does not support the entered bond ENI type.', + ], + [ + 'errorCode' => 'OperationDenied.TargetTypeNotSupportTrafficMirrorFullPacket', + 'errorMessage' => 'The traffic mirror session target type does not support the feature of mirroring source full packet.', + ], + [ + 'errorCode' => 'OperationDenied.TrafficMirrorSessionSourceFullPacketNotSupport', + 'errorMessage' => 'The traffic mirror session does not support the feature of mirroring source full packet.', + ], + [ + 'errorCode' => 'QuotaExceeded.SessionNumPerTarget', + 'errorMessage' => 'The quota of the number of traffic mirror sessions per target is exceeded.', + ], + [ + 'errorCode' => 'OperationDenied.NotSupportBondEniAsTrafficMirrorSource', + 'errorMessage' => 'The operation is not allowed because bond eni cannot be the source of traffic mirror.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorSessionTarget', + 'errorMessage' => 'The status of the target of the traffic mirror session is incorrect.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"TrafficMirrorSessionId\\": \\"tms-j6ce5di4w7nvigfjz****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n tms-j6ce5di4w7nvigfjz****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n rg-bp67acfmxazb4ph****\\n","errorExample":""}]', + 'title' => 'CreateTrafficMirrorSession', + 'description' => '**CreateTrafficMirrorSession** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListTrafficMirrorSessions](~~261367~~) to query the status of the task.'."\n" + ."\n" + .'* If the traffic mirror session is in the **Creating** state, it is being created.'."\n" + .'* If the traffic mirror session is in the **Created** state, it is created.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteTrafficMirrorSession' => [ + 'summary' => 'Deletes a traffic mirror session.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the required parameters, request format, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TrafficMirrorSessionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror session.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tms-j6cla50buc44ap8tu****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the traffic mirror session belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorSession', + 'errorMessage' => 'The specified resource of traffic mirror session is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorSession', + 'errorMessage' => 'The status of traffic mirror session is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorFilter', + 'errorMessage' => 'The status of traffic mirror filter is incorrect.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\r\\n","errorExample":""}]', + 'title' => 'DeleteTrafficMirrorSession', + 'description' => '* **DeleteTrafficMirrorSession** is an asynchronous operation. After you send the request, the system returns a request ID and runs the task in the background. You can call the [ListTrafficMirrorSessions](~~261367~~) operation to query the status of a traffic mirror session.'."\n" + ."\n" + .' * If the traffic mirror session is in the **Deleting** state, the traffic mirror session is being deleted.'."\n" + .' * If you cannot query the traffic mirror session, the traffic mirror session is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteTrafficMirrorSession** operation to delete a traffic mirror session within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateTrafficMirrorSessionAttribute' => [ + 'summary' => 'Modifies the configuration of a traffic mirror session.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorSessionDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the traffic mirror session.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is a new session.', + ], + ], + [ + 'name' => 'TrafficMirrorSessionName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the traffic mirror session.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run, without performing the actual request. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TrafficMirrorSessionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror session.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tms-j6cla50buc44ap8tu****', + ], + ], + [ + 'name' => 'TrafficMirrorTargetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror destination.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-j6c2fp57q8rr47rp*****', + ], + ], + [ + 'name' => 'TrafficMirrorTargetType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new type of the traffic mirror destination. Valid values:'."\n" + ."\n" + .'* **NetworkInterface**: an elastic network interface (ENI)'."\n" + .'* **SLB**: an internal-facing Server Load Balancer (SLB) instance'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'NetworkInterface', + ], + ], + [ + 'name' => 'TrafficMirrorFilterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror filter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + ], + [ + 'name' => 'VirtualNetworkId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VXLAN network identifier (VNI) that is used to distinguish different mirrored traffic. Valid values: **0** to **16777215**.'."\n" + ."\n" + .'You can use VNIs to identify mirrored traffic from different sessions at the traffic mirror destination. If you do not specify a VNI, the system randomly allocates a VNI. If you want the system to randomly allocate a VNI, ignore this parameter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new priority of the traffic mirror session. Valid values: **1** to **32766**.'."\n" + ."\n" + .'A smaller value indicates a higher priority. You cannot specify identical priorities for traffic mirror sessions that are created in the same region by using the same account.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'PacketLength', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum transmission unit (MTU).'."\n" + ."\n" + .'Valid values: **64 to 9600**. Default value: **1500**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1500', + ], + ], + [ + 'name' => 'Enabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the traffic mirror session. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the traffic mirror session. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about the regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '64DCAF03-E2C7-479A-ACEA-38B79876B006', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.TrafficMirror', + 'errorMessage' => 'The business status of traffic mirror is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.TrafficMirror', + 'errorMessage' => 'You need to subscribe to the traffic mirror service first.', + ], + [ + 'errorCode' => 'DuplicatedParam.Priority', + 'errorMessage' => 'The specified priority conflicts with the existing priority.', + ], + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorSession', + 'errorMessage' => 'The specified resource of traffic mirror session is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorSession', + 'errorMessage' => 'The status of traffic mirror session is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorFilter', + 'errorMessage' => 'The specified resource of traffic mirror filter is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorFilter', + 'errorMessage' => 'The status of traffic mirror filter is incorrect.', + ], + [ + 'errorCode' => 'QuotaExceeded.FilterRelatedSession', + 'errorMessage' => 'The quota of the number of traffic mirror sessions related to one filter is exceeded.', + ], + [ + 'errorCode' => 'ResourceNotFound.NetworkInterface', + 'errorMessage' => 'The specified resource of network interface is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.EcsInstance', + 'errorMessage' => 'The specified resource of ECS instance is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.Slb', + 'errorMessage' => 'The specified resource of SLB is not found.', + ], + [ + 'errorCode' => 'OperationDenied.SlbNotInVpc', + 'errorMessage' => 'The specified SLB is not in any VPC.', + ], + [ + 'errorCode' => 'QuotaExceeded.NetworkInterfaceRelatedSession', + 'errorMessage' => 'The quota of the number of traffic mirror sessions related to one network interface is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.SlbRelatedSession', + 'errorMessage' => 'The quota of the number of traffic mirror sessions related to one SLB is exceeded.', + ], + [ + 'errorCode' => 'OperationDenied.EcsNotSupportTrafficMirror', + 'errorMessage' => 'The ECS instance does not support traffic mirroring.', + ], + [ + 'errorCode' => 'OperationDenied.DuplicateRole', + 'errorMessage' => 'The network interface must not be the source and the target of traffic mirror sessions at the same time.', + ], + [ + 'errorCode' => 'InvalidLoadBalancerId.NotFound', + 'errorMessage' => 'The specified resource of load balancer is not found.', + ], + [ + 'errorCode' => 'OperationDenied.FreeNetworkInterface', + 'errorMessage' => 'The network interface is not attached to any ECS instance.', + ], + [ + 'errorCode' => 'OperationDenied.ClassicSLB', + 'errorMessage' => 'The operation is not allowed because of ClassicSLB.', + ], + [ + 'errorCode' => 'QuotaExceeded.SourceNumPerTarget', + 'errorMessage' => 'The maximum number of traffic mirror sources for a target is exceeded.', + ], + [ + 'errorCode' => 'OperationFailed.NotSupportBizType', + 'errorMessage' => 'The specified instance type does not support the operation.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedTargetType', + 'errorMessage' => 'Traffic mirror target must be SLB if traffic mirror sources contain nat gateway network interface.', + ], + [ + 'errorCode' => 'OperationDenied.TargetTypeNotSupportBondEni', + 'errorMessage' => 'Operation denied because of target type can not be Bond Network Interface.', + ], + [ + 'errorCode' => 'OperationDenied.TargetTypeNotSupportGatewayLoadBalancerEndpoint', + 'errorMessage' => 'Operation denied because of target type can not be GatewayLoadBalancerEndpoint.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidTargetBondEniType', + 'errorMessage' => 'The traffic mirroring target does not support the entered bond ENI type.', + ], + [ + 'errorCode' => 'OperationDenied.TargetTypeNotSupportTrafficMirrorFullPacket', + 'errorMessage' => 'The traffic mirror session target type does not support the feature of mirroring source full packet.', + ], + [ + 'errorCode' => 'OperationDenied.TrafficMirrorSessionSourceFullPacketNotSupport', + 'errorMessage' => 'The traffic mirror session does not support the feature of mirroring source full packet.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationFailed.GetEniInfo', + 'errorMessage' => 'The back-end service failed to query the NIC information.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"64DCAF03-E2C7-479A-ACEA-38B79876B006\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 64DCAF03-E2C7-479A-ACEA-38B79876B006\\n","errorExample":""}]', + 'title' => 'UpdateTrafficMirrorSessionAttribute', + 'description' => '## Usage notes'."\n" + ."\n" + .'* **UpdateTrafficMirrorSessionAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListTrafficMirrorSessions](~~261367~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the traffic mirror session is in the **Modifying** state, the configuration of the traffic mirror session is being modified.'."\n" + .' * If the traffic mirror session is in the **Created** state, the configuration of the traffic mirror session is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **UpdateTrafficMirrorSessionAttribute** operation within a specific period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListTrafficMirrorSessions' => [ + 'summary' => 'Queries the details of a traffic mirror session.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'TrafficMirrorSessionName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the traffic mirror session.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries to return. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If this is your first query and no next queries are to be sent, ignore this parameter.'."\n" + .'* If a next query is to be sent, set the value to the value of NextToken that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'TrafficMirrorSourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror source. You can specify only an elastic network interface (ENI) as the mirror source.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-j6c8znm5l1yt4sox*****', + ], + ], + [ + 'name' => 'TrafficMirrorTargetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror destination. You can specify only an ENI or a Server Load Balancer (SLB) instance as a traffic mirror destination.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-j6c2fp57q8rr47rp****', + ], + ], + [ + 'name' => 'TrafficMirrorFilterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror filter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + ], + [ + 'name' => 'VirtualNetworkId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VXLAN network identifier (VNI) that is used to distinguish different mirrored traffic. Valid values: **0** to **16777215**. You can use VNIs to identify mirrored traffic from different sessions at the traffic mirror destination. You can specify a custom VNI or use a random VNI that is allocated by the system. If you want the system to randomly allocate a VNI, ignore this parameter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the traffic mirror session. Valid values: **1** to **32766**.'."\n" + ."\n" + .'A smaller value indicates a higher priority. You cannot specify identical priorities for traffic mirror sessions that are created in the same region by using the same account.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Enabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the traffic mirror session. Valid values:'."\n" + ."\n" + .'* **false**: does not enable the traffic mirror session.'."\n" + .'* **true**: enables the traffic mirror session.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TrafficMirrorSessionIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the traffic mirror session. The maximum value of N is 100, which indicates that you can query up to 100 traffic mirror sessions at a time.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the traffic mirror session. The maximum value of **N** is **100**, which indicates that you can query up to 100 traffic mirror sessions at a time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tms-j6cla50buc44ap8tu****', + ], + 'required' => false, + 'example' => 'tms-j6cla50buc44ap8tu****', + 'maxLength' => 128, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the traffic mirror session belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the mirrored traffic belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The key cannot exceed 64 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter but cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If a value of **NextToken** is returned, the value is the token that is used for the subsequent query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '739CA01C-92EB-4C69-BCC0-280149C6F41E', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'TrafficMirrorSessions' => [ + 'description' => 'The details about the traffic mirror session.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TrafficMirrorTargetId' => [ + 'description' => 'The ID of the traffic mirror destination.'."\n", + 'type' => 'string', + 'example' => 'eni-j6c2fp57q8rr47rp****', + ], + 'TrafficMirrorSessionId' => [ + 'description' => 'The ID of the traffic mirror session.'."\n", + 'type' => 'string', + 'example' => 'tms-j6cla50buc44ap8tu****', + ], + 'Priority' => [ + 'description' => 'The priority of the traffic mirror session.'."\n" + ."\n" + .'A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TrafficMirrorTargetType' => [ + 'description' => 'The type of the traffic mirror destination. Valid values:'."\n" + ."\n" + .'* **NetworkInterface**: an elastic network interface (ENI)'."\n" + .'* **SLB**: an internal-facing Server Load Balancer (SLB) instance'."\n", + 'type' => 'string', + 'example' => 'NetworkInterface', + ], + 'PacketLength' => [ + 'description' => 'The maximum transmission unit.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1500', + ], + 'TrafficMirrorSessionDescription' => [ + 'description' => 'The description of the traffic mirror session.'."\n", + 'type' => 'string', + 'example' => 'This is a session.', + ], + 'TrafficMirrorSessionStatus' => [ + 'description' => 'The status of the traffic mirror session. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the traffic mirror session was enabled.'."\n" + ."\n" + .'* **false** '."\n" + .'* **true**', + 'type' => 'boolean', + 'example' => 'false', + ], + 'TrafficMirrorSessionBusinessStatus' => [ + 'description' => 'The status of the traffic mirror session.'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'VirtualNetworkId' => [ + 'description' => 'You can specify VNIs to distinguish different mirrored traffic.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TrafficMirrorFilterId' => [ + 'description' => 'The ID of the filter.'."\n", + 'type' => 'string', + 'example' => 'tmf-j6cmls82xnc86vtpe****', + ], + 'TrafficMirrorSessionName' => [ + 'description' => 'The name of the traffic mirror session.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'TrafficMirrorSourceIds' => [ + 'description' => 'The ID of the traffic mirror source.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the traffic mirror source.'."\n", + 'type' => 'string', + 'example' => 'eni-j6c8znm5l1yt4sox****', + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the traffic mirror session belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + 'CreationTime' => [ + 'description' => 'The time when the session is created.', + 'type' => 'string', + 'example' => '2023-09-05T15:26Z', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"739CA01C-92EB-4C69-BCC0-280149C6F41E\\",\\n \\"TotalCount\\": \\"1\\",\\n \\"TrafficMirrorSessions\\": [\\n {\\n \\"TrafficMirrorTargetId\\": \\"eni-j6c2fp57q8rr47rp****\\",\\n \\"TrafficMirrorSessionId\\": \\"tms-j6cla50buc44ap8tu****\\",\\n \\"Priority\\": 1,\\n \\"TrafficMirrorTargetType\\": \\"NetworkInterface\\",\\n \\"PacketLength\\": 1500,\\n \\"TrafficMirrorSessionDescription\\": \\"This is a session.\\",\\n \\"TrafficMirrorSessionStatus\\": \\"Created\\",\\n \\"Enabled\\": false,\\n \\"TrafficMirrorSessionBusinessStatus\\": \\"Normal\\",\\n \\"VirtualNetworkId\\": 10,\\n \\"TrafficMirrorFilterId\\": \\"tmf-j6cmls82xnc86vtpe****\\",\\n \\"TrafficMirrorSessionName\\": \\"abc\\",\\n \\"TrafficMirrorSourceIds\\": [\\n \\"eni-j6c8znm5l1yt4sox****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"CreationTime\\": \\"2023-09-05T15:26Z\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 739CA01C-92EB-4C69-BCC0-280149C6F41E\\n 1\\n \\n eni-j6c2fp57q8rr47rp****\\n tms-j6cla50buc44ap8tu****\\n 1\\n NetworkInterface\\n 1500\\n This is a session.\\n Created\\n false\\n Normal\\n 10\\n tmf-j6cmls82xnc86vtpe****\\n abc\\n eni-j6c8znm5l1yt4sox****\\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n 2023-09-05T15:26Z\\n \\n","errorExample":""}]', + 'title' => 'ListTrafficMirrorSessions', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RemoveSourcesFromTrafficMirrorSession' => [ + 'summary' => 'Deletes a traffic mirror source from a traffic mirror session.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that the value is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n" + ."\n" + .'* **true**: checks the request without performing the operation. The system checks the required parameters, request format, and limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the check, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TrafficMirrorSessionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the traffic mirror session from which you want to delete a traffic mirror source.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'tms-j6cla50buc44ap8tu****', + ], + ], + [ + 'name' => 'TrafficMirrorSourceIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the traffic mirror source to be deleted. Maximum value of N: 10.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the traffic mirror source to be deleted. Maximum value of **N**: **10**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-j6c8znm5l1yt4sox****', + ], + 'required' => true, + 'example' => 'eni-j6c8znm5l1yt4sox****', + 'maxLength' => 128, + 'maxItems' => 30, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the traffic mirror session belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list. For more information about regions that support traffic mirror, see [Overview of traffic mirror](~~207513~~).', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hongkong', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'A33B2C6A-89D1-4DEA-A807-A6E8CC552484', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectBusinessStatus.TrafficMirror', + 'errorMessage' => 'The business status of traffic mirror is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.TrafficMirror', + 'errorMessage' => 'You need to subscribe to the traffic mirror service first.', + ], + [ + 'errorCode' => 'DuplicatedParam.SourceInstanceIds', + 'errorMessage' => 'The parameter of source instance IDs contains duplicate values.', + ], + [ + 'errorCode' => 'ResourceNotFound.TrafficMirrorSession', + 'errorMessage' => 'The specified resource of traffic mirror session is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.TrafficMirrorSession', + 'errorMessage' => 'The status of traffic mirror session is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotAssociated.TrafficMirrorSource', + 'errorMessage' => 'The specified traffic mirror source and session are not associated.', + ], + [ + 'errorCode' => 'ResourceNotFound.NetworkInterface', + 'errorMessage' => 'The specified resource of network interface is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.EcsInstance', + 'errorMessage' => 'The specified resource of ECS instance is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListTrafficMirrorSessions', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A33B2C6A-89D1-4DEA-A807-A6E8CC552484\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\nA33B2C6A-89D1-4DEA-A807-A6E8CC552484\\r\\n","errorExample":""}]', + 'title' => 'RemoveSourcesFromTrafficMirrorSession', + 'description' => '* **RemoveSourcesFromTrafficMirrorSession** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListTrafficMirrorSessions](~~261367~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the traffic mirror session is in the **Modifying** state, the traffic mirror source is being deleted.'."\n" + .' * If the traffic mirror session is in the **Created** state, the traffic mirror source is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call **RemoveSourcesFromTrafficMirrorSession** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'OpenTrafficMirrorService' => [ + 'summary' => 'Enables traffic mirror.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + [ + 'APP' => [], + ], + [ + 'PrivateKey' => [], + ], + [ + 'BearerToken' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => false, + 'notSupportAutoTestReason' => '服务开通接口,不可重入', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655442222', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4FCCF008-4C13-4231-BE77-D5203801A9E2', + ], + 'Code' => [ + 'description' => 'The error code.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The information returned after traffic mirror is enabled.', + 'type' => 'string', + 'example' => 'successful', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ExceedPurchaseLimit', + 'errorMessage' => 'You have reached the limit of purchase quantity.', + ], + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource', + ], + [ + 'errorCode' => 'OperationFailed.AliGroupUserCanNotBuyInnerCommodity', + 'errorMessage' => 'Vpc_flowlog_public has no group cloud product label, and users within the group are not allowed to purchase.', + ], + [ + 'errorCode' => 'OperationFailed.QuotaNotEnough', + 'errorMessage' => 'Your quota is insufficient. Please contact your channel partner to increase your quota', + ], + [ + 'errorCode' => 'Order.NoRealNameAuthentication', + 'errorMessage' => 'Real-name verification has not been completed for the account.', + ], + [ + 'errorCode' => 'OperationFailed.BasicInfoUncompleted', + 'errorMessage' => 'You have not completed your basic personal information, please complete the information and try again.', + ], + [ + 'errorCode' => 'OperationDenied.TrafficMirrorServiceOpened', + 'errorMessage' => 'The operation is not allowed because the traffic mirror service has been opened.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4FCCF008-4C13-4231-BE77-D5203801A9E2\\",\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"successful\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4FCCF008-4C13-4231-BE77-D5203801A9E2\\n 200\\n successful\\n","errorExample":""}]', + 'title' => 'OpenTrafficMirrorService', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'You can enable traffic mirror for different regions. You cannot repeatedly call the **OpenTrafficMirrorService** operation to enable traffic mirror for one region within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'GetTrafficMirrorServiceStatus' => [ + 'summary' => 'Queries the status of the traffic mirror feature.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The **client token** can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the mirrored traffic belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'Enabled' => [ + 'description' => 'Indicates whether the traffic mirror feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**', + 'type' => 'boolean', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '37626066-2C6C-4B62-ADD3-498920C409C5', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Enabled\\": true,\\n \\"RequestId\\": \\"37626066-2C6C-4B62-ADD3-498920C409C5\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n 37626066-2C6C-4B62-ADD3-498920C409C5\\n","errorExample":""}]', + 'title' => 'GetTrafficMirrorServiceStatus', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'SwitchActiveRouteTarget' => [ + 'summary' => 'Performs primary and secondary switchover for the route target group.', + 'description' => 'Switch Active and Standby For RouteTargetGroup.', + 'path' => '/', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RouteTargetGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID of the RouteTargetGroup.', + 'type' => 'string', + 'required' => true, + 'example' => 'rtg-xxxx', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID where the RouteTargetGroup is located.'."\n" + ."\n" + .'You can obtain the region ID by calling the [DescribeRegions](~~36063~~) API.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Client token, used to ensure the idempotence of the request. Generate a unique value for this parameter from your client to ensure that it is unique across different requests. The ClientToken only supports ASCII characters. Note: If you do not specify this, the system will automatically use the RequestId of the API request as the ClientToken identifier. The RequestId may differ for each API request.', + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe6****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Resource tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'List of resource tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the resource tag. Up to 20 tag keys are supported. If you need to pass this value, you cannot input an empty string.'."\n" + ."\n" + .'Each tag key can have up to 128 characters and cannot start with `aliyun` or `acs:`. It also cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the resource tag. Up to 20 tag values are supported. If you need to pass this value, you can input an empty string. A maximum of 128 characters is allowed. The value cannot start with `aliyun` or `acs:`, and it must not contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'Request ID.', + 'type' => 'string', + 'example' => 'C1221A1F-2ACD-4592-8F27-474E02883159', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.RouteTargetGroup', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTargetGroup', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.SwitchToAbnormalMember', + 'errorMessage' => 'The operation is not allowed because of the inability to switch the RouteTargetMember when the disabled member is in an unhealthy state.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C1221A1F-2ACD-4592-8F27-474E02883159\\"\\n}","type":"json"}]', + 'title' => 'SwitchActiveRouteTarget', + 'translator' => 'machine', + ], + 'UpdateRouteTargetGroup' => [ + 'summary' => 'Updates the information about a routing target group instance, including the name, description, and members that are not enabled.', + 'path' => '', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RouteTargetGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route target group instance.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'rtg-xxx', + ], + ], + [ + 'name' => 'RouteTargetGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route target group.'."\n" + ."\n" + .'The name length should be between 1 and 128 characters, and cannot start with http:// or https://.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'myRouteTargetGroupName', + ], + ], + [ + 'name' => 'RouteTargetGroupDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'Description of the route target group. '."\n" + ."\n" + .'The description length should be between 1 to 256 characters and must not start with http:// or https://.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'myRouteTargetGroupDescription', + ], + ], + [ + 'name' => 'RouteTargetMemberList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'List of members in the route target group.'."\n" + .'Under the primary-standby mode, there are the following restrictions on the members of the route target group:'."\n" + .'1. The number of members in the route target group must be 2. '."\n" + .'2. The members of the route target group must belong to different availability zones.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'MemberId' => [ + 'description' => 'ID of the route target group member instance.', + 'type' => 'string', + 'required' => false, + 'example' => 'ep-xxxx', + ], + 'MemberType' => [ + 'description' => 'The member type of the route target group. '."\n" + ."\n" + .'Currently supported types: - **GatewayLoadBalancerEndpoint** '."\n" + ."\n" + .'In active-standby mode, all members of the route target group must be of the same type.', + 'type' => 'string', + 'required' => false, + 'example' => 'GatewayLoadBalancerEndpoint', + ], + 'Weight' => [ + 'description' => 'The weight value of the route target group member. Values:'."\n" + .'- 100: indicates the member is the primary instance. '."\n" + .'- 0: indicates the member is the backup instance.'."\n" + .'The weight value can only be set during creation and cannot be modified.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '100', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the route target group instance belongs. You can obtain the region ID by calling the [DescribeRegions](~~36063~~) interface.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Client Token, used to ensure the idempotence of requests. Generate a unique value for this parameter from your client for each request. ClientToken supports only ASCII characters. Note that if you do not specify this, the system will automatically use the RequestId of the API request as the ClientToken identifier. The RequestId may differ for each API request.', + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'Request ID.', + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.RouteTargetGroup', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTargetGroup', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'Mismatch.GroupVpcIdAndInstanceVpcId', + 'errorMessage' => 'The RouteTargetGroup VPC %s and the RouteTargetConfig VPC %s are mismatched.', + ], + [ + 'errorCode' => 'OperationDenied.UpdateMemberType', + 'errorMessage' => 'The operation is not allowed because of the inability to update memberType.', + ], + [ + 'errorCode' => 'OperationDenied.MemberWithSameAz', + 'errorMessage' => 'The operation is not allowed because of all members being in the same availability zone.', + ], + [ + 'errorCode' => 'OperationDenied.UpdateEnableRouteTargetMember', + 'errorMessage' => 'The operation is not allowed because of the inability to update the RouteTargetMember when it is in the enabled state.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC\\"\\n}","type":"json"}]', + 'title' => 'UpdateRouteTargetGroup', + 'description' => '- The **UpdateRouteTargetGroup** interface is an asynchronous API, meaning the system will return a request ID, but the route target group has not yet been fully updated, and the system\'s background update task is still in progress. You can call ListRouteTargetGroup to query the update status of the route target group:'."\n" + .' - When the route target group is in the **Updating** state, it indicates that the route target group is being created.'."\n" + .' - When the route target group is in the **Available**, **Unavailable**, **Switched**, or **Abnormal** state, it indicates that the route target group has completed its update.', + 'translator' => 'machine', + ], + 'ListRouteTargetGroups' => [ + 'summary' => 'Queries the list of route target groups.', + 'path' => '', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which the route target group belongs.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'vpc-xxxx', + ], + ], + [ + 'name' => 'RouteTargetGroupIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'List of route target group instance IDs.'."\n" + ."\n" + .'Up to 50 instance IDs can be queried at a time.', + 'type' => 'array', + 'items' => [ + 'description' => 'Route target group instance ID.', + 'type' => 'string', + 'required' => false, + 'example' => 'rtg-xxxx', + ], + 'required' => false, + 'maxItems' => 200, + ], + ], + [ + 'name' => 'MemberId', + 'in' => 'query', + 'schema' => [ + 'description' => 'Route target group member instance ID.'."\n" + .'Filters the route target groups that contain the specified member instance ID.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'ep-xxxx', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'Page size, with a range of **1** to **50**. Default value: **50**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '0', + 'example' => '50', + 'default' => '50', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Token for the next query. Value: If it is the first query or there is no next query, this field does not need to be filled. If there is a next query, the value should be the NextToken returned from the previous API call.', + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC to which the route target group belongs. You can obtain the region ID by calling the DescribeRegions interface.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'Resource group ID. For more information about resource groups, see What is a Resource Group?', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazdjdhd****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Client token used to ensure idempotence of the request. Generate a unique parameter value from your client to ensure uniqueness across different requests. ClientToken only supports ASCII characters. Note: If you do not specify this, the system will automatically use the RequestId of the API request as the ClientToken identifier. The RequestId is different for each API request.', + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'List of tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'Resource tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'Resource tag key. Up to 20 tag keys are supported. If you need to pass this value, you cannot input an empty string.'."\n" + ."\n" + .'A tag key can have up to 128 characters and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + 'Value' => [ + 'description' => 'Resource tag value. Up to 20 tag values are supported. If you need to pass this value, you can input an empty string.'."\n" + ."\n" + .'A tag value can have up to 128 characters and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'ID of the request', + 'type' => 'string', + 'example' => 'DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6', + ], + 'NextToken' => [ + 'description' => 'Token for the next query. Value: If NextToken is empty, it indicates there is no next query. If NextToken has a return value, it indicates the token for the next query.', + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'Number of items in the list.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RouteTargetGroups' => [ + 'description' => 'List of route target groups.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'Status of the route target group. Values:'."\n" + ."\n" + .'- **Recovering**: Active-Standby rollback in progress'."\n" + .'- **Switched**: Active-Standby switched'."\n" + .'- **Available**: Available'."\n" + .'- **Abnormal**: Standby instance abnormal'."\n" + .'- **Pending**: Creating'."\n" + .'- **Switching**: Active-Standby switching in progress'."\n" + .'- **Deleting**: Deleting'."\n" + .'- **Unavailable**: Both primary and standby instances are abnormal', + 'type' => 'string', + 'enumValueTitles' => [ + 'Recovering' => 'Recovering', + 'Switched' => 'Switched', + 'Available' => 'Available', + 'Abnormal' => 'Abnormal', + 'Pending' => 'Pending', + 'Switching' => 'Switching', + 'Deleting' => 'Deleting', + 'Unavailable' => 'Unavailable', + ], + 'example' => 'Available', + ], + 'RouteTargetGroupDescription' => [ + 'description' => 'Description of the route target group.', + 'type' => 'string', + 'example' => 'myRouteTargetGroupDescription', + ], + 'RouteTargetMemberList' => [ + 'description' => 'The list of route target group members.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of route target group members.', + 'type' => 'object', + 'properties' => [ + 'MemberId' => [ + 'description' => 'The ID of the route target group member instance.', + 'type' => 'string', + 'example' => 'ep-xxxx', + ], + 'EnableStatus' => [ + 'description' => 'The enable status of the route target group member. Values:'."\n" + ."\n" + .'- **Enable**: Enabled.'."\n" + .'- **Disable**: Disabled.'."\n" + ."\n" + .'Only disabled route target group members can be modified to other instances. Enabled route target group members cannot be modified.', + 'type' => 'string', + 'enumValueTitles' => [ + 'Enable' => 'Enable', + 'Disable' => 'Disable', + ], + 'example' => 'Enable', + ], + 'MemberType' => [ + 'description' => 'The type of the route target group member.'."\n" + ."\n" + .'Currently supported types:'."\n" + ."\n" + .'- **GatewayLoadBalancerEndpoint**', + 'type' => 'string', + 'enumValueTitles' => [ + 'GatewayLoadBalancerEndpoint' => 'GatewayLoadBalancerEndpoint', + ], + 'example' => 'GatewayLoadBalancerEndpoint', + ], + 'HealthCheckStatus' => [ + 'description' => 'The health check status of the route target group member. Values:'."\n" + ."\n" + .'- **Normal**: Normal'."\n" + .'- **Abnormal**: Abnormal', + 'type' => 'string', + 'enumValueTitles' => [ + 'Normal' => 'Normal', + 'Abnormal' => 'Abnormal', + ], + 'example' => 'Normal', + ], + 'Weight' => [ + 'description' => 'The weight value of the route target group member. Values:'."\n" + ."\n" + .'- **100**: Indicates that the member is the primary instance.'."\n" + .'- **0**: Indicates that the member is the backup instance.'."\n" + ."\n" + .'The weight value can only be set during creation and cannot be modified.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + ], + ], + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the route target group belongs.', + 'type' => 'string', + 'example' => 'vpc-uf60y8uzhsvbhmuh3l654', + ], + 'RouteTargetGroupId' => [ + 'description' => 'The ID of the route target group instance.', + 'type' => 'string', + 'example' => 'rtg-xxxx', + ], + 'ConfigMode' => [ + 'description' => 'The configuration mode of the route target group. Supported modes are as follows:'."\n" + ."\n" + .'- **Active-Standby**: Active-standby mode.', + 'type' => 'string', + 'enumValueTitles' => [ + 'Active-Standby' => 'Active-Standby', + ], + 'example' => 'Active-Standby', + ], + 'RegionId' => [ + 'description' => 'The region ID of the VPC to which the route target group belongs.'."\n" + ."\n" + .'You can obtain the region ID by calling the [DescribeRegions](~~36063~~) interface.', + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Tags' => [ + 'description' => 'The tag values. A maximum of 20 tag values are supported. If you need to pass this value, you can input an empty string.'."\n" + ."\n" + .'A maximum of 128 characters are supported. The value cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.', + 'type' => 'object', + 'properties' => [ + 'Value' => [ + 'description' => 'The value of the resource tag. Up to 20 tag values are supported. If you need to pass this value, you can input an empty string. A maximum of 128 characters is allowed. The value cannot start with `aliyun` or `acs:`, and it must not contain `http://` or `https://`.', + 'type' => 'string', + 'example' => '8', + ], + 'Key' => [ + 'description' => 'The key of the resource tag.', + 'type' => 'string', + 'example' => 'image/upload/cbbec42e0be33abb27babefcbe0397f0', + ], + ], + ], + ], + 'RouteTargetGroupName' => [ + 'description' => 'The name of the route target group.', + 'type' => 'string', + 'example' => 'myRouteTargetGroupName', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the route target group belongs.', + 'type' => 'string', + 'example' => 'rg-acfm3swh6ta56ri', + ], + 'CreateTime' => [ + 'description' => 'The time when the route target group was created.', + 'type' => 'string', + 'example' => '2025-12-30T06:40:50Z', + ], + ], + ], + ], + 'MaxResults' => [ + 'description' => 'The page size.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 1,\\n \\"RouteTargetGroups\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"RouteTargetGroupDescription\\": \\"myRouteTargetGroupDescription\\",\\n \\"RouteTargetMemberList\\": [\\n {\\n \\"MemberId\\": \\"ep-xxxx\\",\\n \\"EnableStatus\\": \\"Enable\\",\\n \\"MemberType\\": \\"GatewayLoadBalancerEndpoint\\",\\n \\"HealthCheckStatus\\": \\"Normal\\",\\n \\"Weight\\": 100\\n }\\n ],\\n \\"VpcId\\": \\"vpc-uf60y8uzhsvbhmuh3l654\\",\\n \\"RouteTargetGroupId\\": \\"rtg-xxxx\\",\\n \\"ConfigMode\\": \\"Active-Standby\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Tags\\": [\\n {\\n \\"Value\\": \\"8\\",\\n \\"Key\\": \\"image/upload/cbbec42e0be33abb27babefcbe0397f0\\"\\n }\\n ],\\n \\"RouteTargetGroupName\\": \\"myRouteTargetGroupName\\",\\n \\"ResourceGroupId\\": \\"rg-acfm3swh6ta56ri\\",\\n \\"CreateTime\\": \\"2025-12-30T06:40:50Z\\"\\n }\\n ],\\n \\"MaxResults\\": 50\\n}","type":"json"}]', + 'title' => 'ListRouteTargetGroups', + 'description' => 'Lists the route target groups.', + 'translator' => 'machine', + ], + 'GetRouteTargetGroup' => [ + 'summary' => 'Gets the information of a route target group.', + 'description' => 'Get the information of the route target group instance.', + 'path' => '/', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RouteTargetGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'ID of the route target group member instance.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'rtg-xxxx', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'ID of the region to which the route target group belongs. You can obtain the region ID by calling the DescribeRegions interface.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Client token, used to ensure idempotence of the request.'."\n" + ."\n" + .'Generate a parameter value from your client and ensure that it is unique across different requests. ClientToken only supports ASCII characters.'."\n" + ."\n" + .'> If you do not specify this, the system automatically uses the **RequestId** of the API request as the **ClientToken** identifier. The **RequestId** may be different for each API request.', + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Tag information.', + 'type' => 'array', + 'items' => [ + 'description' => 'Collection of resource tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'Resource tag key. Up to 20 tag keys are supported. If you need to pass this value, you cannot input an empty string.'."\n" + ."\n" + .'A tag key can have up to 128 characters and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'Resource tag value. Up to 20 tag values are supported. If you need to pass this value, you can input an empty string.'."\n" + ."\n" + .'A tag value can have up to 128 characters and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RouteTargetGroupId' => [ + 'description' => 'ID of the route target group instance.', + 'type' => 'string', + 'example' => 'rtg-xxxx', + ], + 'RouteTargetGroupName' => [ + 'description' => 'Name of the route target group.', + 'type' => 'string', + 'example' => 'myRouteTargetGroupName', + ], + 'RouteTargetGroupDescription' => [ + 'description' => 'Description of the route target group.', + 'type' => 'string', + 'example' => 'myRouteTargetGroupDescription', + ], + 'VpcId' => [ + 'description' => 'ID of the VPC to which the route target group belongs.', + 'type' => 'string', + 'example' => 'vpc-xxxx', + ], + 'ConfigMode' => [ + 'description' => 'Configuration mode of the route target group. Supported modes are as follows:'."\n" + ."\n" + .'- **Active-Standby**: Active-standby mode.', + 'type' => 'string', + 'enumValueTitles' => [ + 'Active-Standby' => 'Active-Standby', + ], + 'example' => 'Active-Standby', + ], + 'Status' => [ + 'description' => 'The status of the route target group. Values:'."\n" + .'- **Recovering**: In the process of switching back to the primary '."\n" + .'- **Switched**: The primary and secondary have been switched '."\n" + .'- **Available**: Available '."\n" + .'- **Abnormal**: Secondary instance is abnormal '."\n" + .'- **Pending**: In the process of being created '."\n" + .'- **Switching**: In the process of switching between primary and secondary '."\n" + .'- **Deleting**: In the process of being deleted '."\n" + .'- **Unavailable**: Both primary and secondary instances are abnormal', + 'type' => 'string', + 'enumValueTitles' => [ + 'Recovering' => 'Recovering', + 'Switched' => 'Switched', + 'Available' => 'Available', + 'Abnormal' => 'Abnormal', + 'Pending' => 'Pending', + 'Switching' => 'Switching', + 'Deleting' => 'Deleting', + 'Unavailable' => 'Unavailable', + ], + 'example' => 'Available', + ], + 'RouteTargetMemberList' => [ + 'description' => 'List of members in the route target group.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'MemberId' => [ + 'description' => 'ID of the route target group member instance.', + 'type' => 'string', + 'example' => 'ep-xxxx', + ], + 'MemberType' => [ + 'description' => 'Type of the route target group member.'."\n" + ."\n" + .'Currently supported types:'."\n" + ."\n" + .'- **GatewayLoadBalancerEndpoint**', + 'type' => 'string', + 'enumValueTitles' => [ + 'GatewayLoadBalancerEndpoint' => 'GatewayLoadBalancerEndpoint', + ], + 'example' => 'GatewayLoadBalancerEndpoint', + ], + 'Weight' => [ + 'description' => 'Weight value of the route target group member. Values:'."\n" + ."\n" + .'- **100**: Indicates the member is the primary instance.'."\n" + .'- **0**: Indicates the member is the standby instance.'."\n" + ."\n" + .'The weight value can only be set during creation and cannot be modified.', + 'type' => 'integer', + 'format' => 'int32', + 'enumValueTitles' => [ + '0', + 100 => '100', + ], + 'example' => '100', + ], + 'HealthCheckStatus' => [ + 'description' => 'Route target group member health check status. Values:'."\n" + .'- **Normal**: Normal '."\n" + .'- **Abnormal**: Abnormal', + 'type' => 'string', + 'enumValueTitles' => [ + 'Normal' => 'Normal', + 'Abnormal' => 'Abnormal', + ], + 'example' => 'Normal', + ], + 'EnableStatus' => [ + 'description' => 'The enable status of the route target group member. Values:'."\n" + ."\n" + .'- **Enable**: Enabled.'."\n" + .'- **Disable**: Disabled.'."\n" + ."\n" + .'Only disabled route target group members can be modified to other instances. Enabled route target group members cannot be modified.', + 'type' => 'string', + 'enumValueTitles' => [ + 'Enable' => 'Enable', + 'Disable' => 'Disable', + ], + 'example' => 'Enable', + ], + ], + ], + ], + 'Tags' => [ + 'description' => 'Tags of the route target group.', + 'type' => 'array', + 'items' => [ + 'description' => 'Resource tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'Tag key.', + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'Tag value.', + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + 'RegionId' => [ + 'description' => 'The region ID of the VPC to which the route target group belongs. You can obtain the region ID by calling the DescribeRegions interface.', + 'type' => 'string', + 'example' => 'cn-qingdao', + ], + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => '1AE05898-06E5-4782-xxxxx', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the route target group belongs.', + 'type' => 'string', + 'example' => 'rg-acfmxazdjdhd****', + ], + 'CreateTime' => [ + 'description' => 'The time when the route target group was created.', + 'type' => 'string', + 'example' => '2025-12-30T06:40:50Z', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.RouteTargetGroup', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RouteTargetGroupId\\": \\"rtg-xxxx\\",\\n \\"RouteTargetGroupName\\": \\"myRouteTargetGroupName\\",\\n \\"RouteTargetGroupDescription\\": \\"myRouteTargetGroupDescription\\",\\n \\"VpcId\\": \\"vpc-xxxx\\",\\n \\"ConfigMode\\": \\"Active-Standby\\",\\n \\"Status\\": \\"Available\\",\\n \\"RouteTargetMemberList\\": [\\n {\\n \\"MemberId\\": \\"ep-xxxx\\",\\n \\"MemberType\\": \\"GatewayLoadBalancerEndpoint\\",\\n \\"Weight\\": 100,\\n \\"HealthCheckStatus\\": \\"Normal\\",\\n \\"EnableStatus\\": \\"Enable\\"\\n }\\n ],\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"RegionId\\": \\"cn-qingdao\\",\\n \\"RequestId\\": \\"1AE05898-06E5-4782-xxxxx\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazdjdhd****\\",\\n \\"CreateTime\\": \\"2025-12-30T06:40:50Z\\"\\n}","type":"json"}]', + 'title' => 'GetRouteTargetGroup', + 'translator' => 'machine', + ], + 'DeleteRouteTargetGroup' => [ + 'summary' => 'Deletes a route target group.', + 'path' => '', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RouteTargetGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the route target group instance.', + 'type' => 'string', + 'required' => true, + 'example' => 'rtg-xxxx', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource group to be modified.'."\n" + ."\n" + .'You can obtain the region ID by calling the [DescribeRegions](~~36063~~) interface.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Client token used to ensure idempotence of the request.'."\n" + ."\n" + .'This value should be generated by the client and must be unique across different requests, with a maximum length of 64 ASCII characters.'."\n" + ."\n" + .'> If you do not specify this, the system automatically uses the **RequestId** from the API request as the **ClientToken** identifier. The **RequestId** for each API request may differ.', + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'List of tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'Tag key of the resource. Supports up to 20 tag keys. If you need to pass this value, you cannot input an empty string.'."\n" + ."\n" + .'A tag key supports a maximum of 128 characters and cannot start with `aliyun` or `acs:`. It also cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'Tag value of the resource. Supports up to 20 tag values. If you need to pass this value, you can input an empty string.'."\n" + ."\n" + .'Supports a maximum of 128 characters and cannot start with `aliyun` or `acs:`. It also cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'ID of the request', + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.RouteTargetGroup', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTargetGroup', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteEntry', + 'errorMessage' => 'RouteEntry %s depends on the resource %s.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","type":"json"}]', + 'title' => 'DeleteRouteTargetGroup', + 'description' => '- The **DeleteRouteTargetGroup** interface is an asynchronous API, meaning the system will return a request ID, but the route target group has not yet been successfully deleted as the deletion task is still in progress in the background. You can call ListRouteTargetGroup to query the deletion status of the route target group:'."\n" + .' - When the route target group is in the **Deleting** state, it indicates that the route target group is being deleted.'."\n" + .' - If you cannot find the specified route target group, it means the route target group has been successfully deleted.', + 'translator' => 'machine', + ], + 'CreateRouteTargetGroup' => [ + 'summary' => 'Creates a route target group instance.', + 'path' => '', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which the route target group belongs.', + 'type' => 'string', + 'required' => true, + 'docRequired' => false, + 'example' => 'vpc-xxxx', + ], + ], + [ + 'name' => 'RouteTargetGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the route target group.'."\n" + ."\n" + .'The name length must be between 1 and 128 characters, and cannot start with http:// or https://.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'myRouteTargetGroupName', + ], + ], + [ + 'name' => 'RouteTargetGroupDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the route target group.'."\n" + ."\n" + .'The description length must be between 1 and 256 characters, and cannot start with http:// or https://.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'myRouteTargetGroupDescription', + ], + ], + [ + 'name' => 'RouteTargetMemberList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The member list of the route target group.'."\n" + ."\n" + .'In Active-Standby mode, the following restrictions apply to the members of the route target group:'."\n" + ."\n" + .'1. The number of route target group members must be 2.'."\n" + .'2. The route target group members must belong to different availability zones.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'MemberId' => [ + 'description' => 'The instance ID of the route target group member.', + 'type' => 'string', + 'required' => true, + 'example' => 'ep-xxxx', + ], + 'MemberType' => [ + 'description' => 'The type of the route target group member.'."\n" + ."\n" + .'Currently supported types:'."\n" + ."\n" + .'- **GatewayLoadBalancerEndpoint**'."\n" + ."\n" + .'In Active-Standby mode, all members of the route target group must have the same type.', + 'type' => 'string', + 'required' => true, + 'example' => 'GatewayLoadBalancerEndpoint', + ], + 'Weight' => [ + 'description' => 'The weight value of the route target group member. Values:'."\n" + ."\n" + .'- **100**: Indicates the member is a primary instance.'."\n" + .'- **0**: Indicates the member is a standby instance.'."\n" + ."\n" + .'The weight value can only be set during creation and cannot be modified.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '100', + ], + ], + 'required' => true, + ], + 'required' => true, + 'docRequired' => true, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'ConfigMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The configuration mode of the route target group. Supported modes:'."\n" + ."\n" + .'- **Active-Standby**: Active-Standby mode.', + 'type' => 'string', + 'required' => true, + 'example' => 'Active-Standby', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID to which the route target group belongs. You can obtain the region ID by calling the DescribeRegions interface.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID.'."\n" + ."\n" + .'For more information about resource groups, see [What is a Resource Group](~~2381067~~).', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazffggds****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'Client token used to ensure the idempotence of the request. Generate a parameter value from your client to ensure that it is unique across different requests. ClientToken supports only ASCII characters. Note: If you do not specify this, the system automatically uses the RequestId of the API request as the ClientToken identifier. Each API request has a different RequestId.', + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe6****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key of the resource. Up to 20 tag keys are supported. If you need to pass this value, you cannot input an empty string.'."\n" + ."\n" + .'A tag key can have up to 128 characters and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value of the resource. Up to 20 tag values are supported. If you need to pass this value, you can input an empty string.'."\n" + ."\n" + .'A tag value can have up to 128 characters and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'ID of the request.', + 'type' => 'string', + 'example' => '8AA5CE21-2E6A-4530-BDF5-F055849476E6', + ], + 'RouteTargetGroupId' => [ + 'description' => 'The ID of the route target group instance.', + 'type' => 'string', + 'example' => 'rtg-xxxx', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedFeature.RouteTargetGroup', + 'errorMessage' => 'The feature of RouteTargetGroup is not supported.', + ], + [ + 'errorCode' => 'Mismatch.GroupVpcIdAndInstanceVpcId', + 'errorMessage' => 'The RouteTargetGroup VPC %s and the RouteTargetConfig VPC %s are mismatched.', + ], + [ + 'errorCode' => 'OperationDenied.MemberWithSameAz', + 'errorMessage' => 'The operation is not allowed because of all members being in the same availability zone.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayLoadBalancerEndpoint', + 'errorMessage' => 'GatewayLoadBalancerEndpoint instance %s not found.', + ], + [ + 'errorCode' => 'QuotaExceeded.RouteTargetGroup', + 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"8AA5CE21-2E6A-4530-BDF5-F055849476E6\\",\\n \\"RouteTargetGroupId\\": \\"rtg-xxxx\\"\\n}","type":"json"}]', + 'title' => 'CreateRouteTargetGroup', + 'description' => '- The **CreateRouteTargetGroup** interface is an asynchronous interface, meaning the system will return an instance ID, but the route target group instance has not yet been fully created, and the system\'s background creation task is still in progress. You can call **ListRouteTargetGroup** to query the creation status of the route target group:'."\n" + .' - When the route target group is in the **Pending** state, it indicates that the route target group is being created.'."\n" + .' - When the route target group is in the **Available**, **Unavailable**, **Switched**, or **Abnormal** state, it indicates that the route target group has been created.'."\n" + ."\n" + .'- **Active-Standby Mode**: When creating a route target group, you need to configure primary and standby instances that are located in different availability zones and have the same type.'."\n" + ."\n" + .'- **Primary Instance**: The weight is 100. Under normal circumstances, it carries all traffic and takes effect when the health check is normal.'."\n" + ."\n" + .'- **Standby Instance**: The weight is 0. It takes over the traffic after the primary instance fails, serving as a disaster recovery backup.', + 'translator' => 'machine', + ], + 'AllocateEipAddress' => [ + 'summary' => 'Applies for an elastic IP address (EIP).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the EIP. Unit: Mbit/s.'."\n" + ."\n" + .'* Valid values when **InstanceChargeType** is set to **PostPaid** and **InternetChargeType** is set to **PayByBandwidth**: **1** to **500**.****'."\n" + .'* Valid values when **InstanceChargeType** is set to **PostPaid** and **InternetChargeType** is set to **PayByTraffic**: **1** to **200**.****'."\n" + .'* Valid values when **InstanceChargeType** is set to **PrePaid**: **1** to **1000**.****'."\n" + ."\n" + .'Default value: **5**. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription duration of the EIP.'."\n" + ."\n" + .'Valid values when **PricingCycle** is set to **Month**: **1** to **9**.****'."\n" + ."\n" + .'Valid values when **PricingCycle** is set to **Year**: **1** to **5**.****'."\n" + ."\n" + .'This parameter must be specified when **InstanceChargeType** is set to **PrePaid**. This parameter is optional when **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'ISP', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP** (default): BGP (Multi-ISP) All regions support BGP (Multi-ISP) EIPs.'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro Only the following regions support BGP (Multi-ISP) Pro lines: China (Hong Kong), Singapore, Japan (Tokyo), Malaysia (Kuala Lumpur), Philippines (Manila), Indonesia (Jakarta), and Thailand (Bangkok).'."\n" + ."\n" + .'For more information about BGP (Multi-ISP) and BGP (Multi-ISP) Pro, see the "Line types" section of [What is EIP?](~~32321~~)'."\n" + ."\n" + .'* If you are allowed to use single-ISP bandwidth, you can also choose one of the following values:'."\n" + ."\n" + .' * **ChinaTelecom**'."\n" + .' * **ChinaUnicom**'."\n" + .' * **ChinaMobile**'."\n" + .' * **ChinaTelecom_L2**'."\n" + .' * **ChinaUnicom_L2**'."\n" + .' * **ChinaMobile_L2**'."\n" + ."\n" + .'* If your services are deployed in China East 1 Finance, this parameter is required and you must set the value to **BGP_FinanceCloud**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'ActivityId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The promotion code. This parameter is not required.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '123456', + ], + ], + [ + 'name' => 'Netmode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type. Default value: **public**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'public', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payment. Valid values:'."\n" + ."\n" + .'* **false** (default): The automatic payment is disabled. If you select this option, you must go to the Order Center to complete the payment after an order is generated.'."\n" + .'* **true**: The automatic payment is enabled. Payments are automatically complete after an order is generated.'."\n" + ."\n" + .'If **InstanceChargeType** is set to **PrePaid**, this parameter is required. If **InstanceChargeType** is set to **PostPaid**, this parameter is not required.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PricingCycle', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing cycle of the subscription EIP. Valid values:'."\n" + ."\n" + .'* **Month** (default)'."\n" + .'* **Year**'."\n" + ."\n" + .'If **InstanceChargeType** is set to **PrePaid**, this parameter is required. If **InstanceChargeType** is set to **PostPaid**, this parameter is not required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the EIP. Valid values:'."\n" + ."\n" + .'* **PrePaid**: subscription'."\n" + .'* **PostPaid** (default): pay-as-you-go'."\n" + ."\n" + .'If **InstanceChargeType** is set to **PrePaid**, set **InternetChargeType** to **PayByBandwidth**. If **InstanceChargeType** is set to **PostPaid**, set **InternetChargeType** to **PayByBandwidth** or **PayByTraffic**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The metering method of the EIP. Valid values:'."\n" + ."\n" + .'* **PayByBandwidth** (default): pay-by-bandwidth'."\n" + .'* **PayByTraffic**: pay-by-data-transfer'."\n" + ."\n" + .'When **InstanceChargeType** is set to **PrePaid**, set **InternetChargeType** to **PayByBandwidth**.'."\n" + ."\n" + .'When **InstanceChargeType** is set to **PostPaid**, set **InternetChargeType** to **PayByBandwidth** or **PayByTraffic**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + 'default' => 'PayByBandwidth', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazffggds****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The **client token** can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the **client token**. The value of **RequestId** is different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The EIP name.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and start with a letter, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'> You cannot specify this parameter if you create a subscription EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EIP1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the EIP.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.'."\n" + ."\n" + .'> You cannot specify this parameter if you create a subscription EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'SecurityProtectionTypes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The editions of Anti-DDoS.'."\n" + ."\n" + .'* If you do not specify this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'* If you set the parameter to **AntiDDoS_Enhanced**, Anti-DDoS Pro/Premium is used.'."\n" + ."\n" + .'You can specify up to 10 editions of Anti-DDoS.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If you do not specify this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'* If you set the parameter to **AntiDDoS_Enhanced**, Anti-DDoS Pro/Premium is used.'."\n" + ."\n" + .'You can specify up to 10 editions of Anti-DDoS.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AntiDDoS_Enhanced', + ], + 'required' => false, + 'example' => 'AntiDDoS_Enhanced', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP address pool.'."\n" + ."\n" + .'The EIP is allocated from the IP address pool.'."\n" + ."\n" + .'By default, the IP address pool feature is unavailable. To use the IP address pool, apply for the privilege in the Quota Center console. For more information, see the "Request a quota increase in the Quota Center console" section in [Manage EIP quotas](~~108213~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pippool-2vc0kxcedhquybdsz****', + ], + ], + [ + 'name' => 'Zone', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone of the EIP.'."\n" + ."\n" + .'When the service type of the IP address pool specified by **PublicIpAddressPoolId** is CloudBox, the default value is the zone of the IP address pool.'."\n" + ."\n" + .'For more information, see [ListPublicIpAddressPools](~~429433~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-a', + ], + ], + [ + 'name' => 'IpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the EIP that you want to request.'."\n" + ."\n" + .'Specify **IpAddress** or **InstanceId**. If you leave both parameters empty, the system randomly allocates an EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.0.XX.XX', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The EIP ID.'."\n" + ."\n" + .'Specify **IpAddress** or **InstanceId**. If you leave both parameters empty, the system randomly allocates an EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eip-25877c70gddh****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'type' => 'string', + ], + 'Value' => [ + 'type' => 'string', + ], + ], + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'OrderId' => [ + 'description' => 'The order ID. This parameter is returned only when **InstanceChargeType** is set to **PrePaid**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group. This parameter is returned only when **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazfdgdg****', + ], + 'EipAddress' => [ + 'description' => 'The EIP that is allocated. This parameter is returned only when **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'string', + 'example' => '192.0.XX.XX', + ], + 'AllocationId' => [ + 'description' => 'The EIP ID.'."\n", + 'type' => 'string', + 'example' => 'eip-25877c70gddh****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'COMMODITY_NO_EXIST', + 'errorMessage' => 'commodity is not exist', + ], + [ + 'errorCode' => 'QuotaExceeded.Eip', + 'errorMessage' => 'Elastic IP address quota exceeded', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified value of "InternetChargeType" is not valid', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'ReserveIpFail', + 'errorMessage' => 'Reserve eip failed.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support.', + ], + [ + 'errorCode' => 'InvalidBandwidth.Malformed', + 'errorMessage' => 'The specified Bandwidth is invalid.', + ], + [ + 'errorCode' => 'INSTANCE_TYPE_NOT_SUPPORT', + 'errorMessage' => 'The instance type is invalid.', + ], + [ + 'errorCode' => 'QueryParameter.Illegal', + 'errorMessage' => 'query parameter illegal', + ], + [ + 'errorCode' => 'TokenVerfiy.Failed', + 'errorMessage' => 'token verify failed.', + ], + [ + 'errorCode' => 'OrderFailed', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'QuotaExceeded.LargeSpecEip', + 'errorMessage' => 'Elastic IP address with large spec quota exceeded.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'PAYFOR.CREDIT_PAY_INSUFFICIENT_BALANCE', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'SYSTEM.SALE_VALIDATE_UNEXPECTED_ERROR', + 'errorMessage' => 'You have arrears and do not meet the purchase conditions.', + ], + [ + 'errorCode' => 'Trade_Sync_Create_Sub_ERROR', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'InvalidComponent.EipBandwidthMax', + 'errorMessage' => 'The eip_bandwidth_max component is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.RiskControl', + 'errorMessage' => 'Risk control check failed.', + ], + [ + 'errorCode' => 'OperationFailed.SaleValidate', + 'errorMessage' => 'Validate sale condition with subArticle failed.', + ], + [ + 'errorCode' => 'IllegalParam.OrderParamComponent', + 'errorMessage' => 'Product order param has invalid component.', + ], + [ + 'errorCode' => 'OperationFailed.SaleExpression', + 'errorMessage' => 'Get the sales expression exception attached to the item.', + ], + [ + 'errorCode' => 'OperationFailed.CompleteUserInfo', + 'errorMessage' => 'Complete user info failed.', + ], + [ + 'errorCode' => 'OperationFailed.QueryPrice', + 'errorMessage' => 'Query price failed when create order.', + ], + [ + 'errorCode' => 'OperationFailed.InsufficientEIP', + 'errorMessage' => 'Eip resource is not enough.', + ], + [ + 'errorCode' => 'OperationFailed.InvokeInnerApi', + 'errorMessage' => 'Failed to invoke inner api.', + ], + [ + 'errorCode' => 'OperationFailed.AccountMoneyInvalid', + 'errorMessage' => 'Account money is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.QueryCredtiInfo', + 'errorMessage' => 'Failed to query credit info.', + ], + [ + 'errorCode' => 'FrequentPurchase.EIP', + 'errorMessage' => 'eip frequent purchase', + ], + [ + 'errorCode' => 'OperationFailed.QueryUserLabel', + 'errorMessage' => 'Failed to query user label info.', + ], + [ + 'errorCode' => 'PAY.INSUFFICIENT_BALANCE', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'PAY.MAYI_WITHHOLDING_AGREEMENT_ILLEGAL', + 'errorMessage' => 'User withhoding argeement is illegal.', + ], + [ + 'errorCode' => 'OrderError.EIP', + 'errorMessage' => 'FThe Account failed to create order.', + ], + [ + 'errorCode' => 'IellgalParameter.OwnerAccount', + 'errorMessage' => 'The specified parameter OwnerAccount is not valid.', + ], + [ + 'errorCode' => 'ResourceNotFound.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool is not found.', + ], + [ + 'errorCode' => 'ResourceNotEnough.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool is not enough.', + ], + [ + 'errorCode' => 'Mismatch.IpAndPublicIpAddressPool', + 'errorMessage' => 'The Ip and PublicIpAddressPool are mismatched.', + ], + [ + 'errorCode' => 'CreditPayInsufficientBalance', + 'errorMessage' => 'The balance is insufficient, please contact your channel partner to increase the balance', + ], + [ + 'errorCode' => 'OperationDenied.NotOpenDdosOriginProtectService', + 'errorMessage' => 'The operation is not allowed because of you do not open Ddos Origin Protection Service', + ], + [ + 'errorCode' => 'IncorrectStatus.PublicIpAddressPool', + 'errorMessage' => 'The status of PublicIpAddressPool is incorrect.', + ], + [ + 'errorCode' => 'IllegalParam.Isp', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'AccountMoneyValidateError', + 'errorMessage' => 'The available amount of the account is insufficient.', + ], + [ + 'errorCode' => 'OrderFailed.ConcurrentOperate', + 'errorMessage' => 'Failed to create the order due to concurrent operations.', + ], + [ + 'errorCode' => 'OperationFailed.BasicInfoUncompleted', + 'errorMessage' => 'Your information is incomplete. Complete your information before the operation.', + ], + [ + 'errorCode' => 'OperationFailed.QuotaNotEnough', + 'errorMessage' => 'Your quota is insufficient. Please contact your channel partner to increase your quota', + ], + [ + 'errorCode' => 'ExclusiveParam.ZoneAndPublicIpAddressPoolId', + 'errorMessage' => 'The Zone and PublicIpAddressPoolId parameters are mutually exclusive.', + ], + [ + 'errorCode' => 'IllegalParam.Zone', + 'errorMessage' => 'The specified zone is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.AllocateUnfamiliarIp', + 'errorMessage' => 'The operation failed because only IP addresses used within the last seven days can be allocated.', + ], + [ + 'errorCode' => 'Ip.Allocated', + 'errorMessage' => 'The reserve ip has been allocated.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ip', + 'errorMessage' => 'The status of ip is incorrect.', + ], + [ + 'errorCode' => 'UnsupportedFeature.AllocateEipAddressWithZone', + 'errorMessage' => 'The feature of AllocateEipAddressWithZone is not supported.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ip', + 'errorMessage' => 'The specified ip is not found.', + ], + [ + 'errorCode' => 'OperationFailed.CreditPayInsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'OperationFailed.ResourceNotEnough', + 'errorMessage' => 'The resources you have applied for are insufficient.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of bandwidth is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.IpIsLocked', + 'errorMessage' => 'The operation is failed because of ip is locked.', + ], + [ + 'errorCode' => 'Mismatch.EipSecurityProtectionTypeAndPoolSecurityProtectionType', + 'errorMessage' => 'The EipSecurityProtectionType and PoolSecurityProtectionType are mismatched.', + ], + [ + 'errorCode' => 'IllegalParam.SecurityProtectionTypes', + 'errorMessage' => 'The param of securityProtectionTypes is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.ServiceLocation', + 'errorMessage' => 'The param of serviceLocation is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Isp', + 'errorMessage' => 'The feature of Isp is not supported.', + ], + [ + 'errorCode' => 'ExclusiveParam.ZoneAndIpAddress', + 'errorMessage' => 'The specified param Zone and IpAddress or InstanceId are mutually exclusive.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The Description is illeagl.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The attribute name is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.UpgradeCdtServiceFirst', + 'errorMessage' => 'The operation is failed because of cdt is not upgraded.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "RegionId" is not supported.', + ], + [ + 'errorCode' => 'FUWU_BIZ_COMMODITY_VERIFY_FAIL', + 'errorMessage' => '????????, ????????PD.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OrderError.EIP', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'OperationFailed.SystemBusy', + 'errorMessage' => 'Operation failed because system is busy.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeEipAddresses', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"OrderId\\": 10,\\n \\"ResourceGroupId\\": \\"rg-acfmxazfdgdg****\\",\\n \\"EipAddress\\": \\"192.0.XX.XX\\",\\n \\"AllocationId\\": \\"eip-25877c70gddh****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n 10\\n rg-acfmxazfdgdg****\\n 192.0.XX.XX\\n eip-25877c70gddh****\\n","errorExample":""}]', + 'title' => 'AllocateEipAddress', + 'description' => 'Before you call this operation, make sure that you are familiar with the billing methods and pricing of EIPs. For more information, see [Billing overview](~~122035~~).'."\n" + ."\n" + .'After you call this operation, the system randomly allocates an EIP that is in the **Available** state in the specified region. EIPs support only the ICMP, TCP, and UDP transport layer protocols. The IGMP and SCTP protocols are not supported.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AllocateEipAddressPro' => [ + 'summary' => 'Requests a specified elastic IP address (EIP).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the EIP.'."\n" + ."\n" + .'Specify **IpAddress** or **InstanceId**. If you leave both parameters empty, the system randomly allocates an EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.0.XX.XX', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The EIP ID.'."\n" + ."\n" + .'Specify **IpAddress** or **InstanceId**. If you leave both parameters empty, the system randomly allocates an EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eip-25877c70gddh****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the specified EIP. Unit: Mbit/s.'."\n" + ."\n" + .'* When **InstanceChargeType** is set to **PostPaid** and **InternetChargeType** is set to **PayByBandwidth**, valid values for **Bandwidth** are **1** to **500**.'."\n" + .'* When **InstanceChargeType** is set to **PostPaid** and **InternetChargeType** is set to **PayByTraffic**, valid values for **Bandwidth** are **1** to **200**.'."\n" + .'* When **InstanceChargeType** is set to **PrePaid**, valid values for **Bandwidth** are **1** to **1000**.'."\n" + ."\n" + .'Default value: **5** Mbit /s.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription duration.'."\n" + ."\n" + .'* Valid values when **PricingCycle** is set to **Month**: **1 to 9**.****'."\n" + .'* Valid values when **PricingCycle** is set to **Year**: **1 to 3**.****'."\n" + ."\n" + .'This parameter is required if **InstanceChargeType** is set to **PrePaid**.'."\n" + ."\n" + .'Leave this parameter empty if **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'ISP', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP** (default): BGP (Multi-ISP) line The BGP (Multi-ISP) line is supported in all regions.'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro line The BGP (Multi-ISP) Pro line is supported in the China (Hong Kong), Singapore, Malaysia (Kuala Lumpur), Philippines (Manila), Indonesia (Jakarta), and Thailand (Bangkok) regions.'."\n" + ."\n" + .'For more information about the BGP (Multi-ISP) line and BGP (Multi-ISP) Pro line, see the "Line types" section of [What is EIP?](~~32321~~)'."\n" + ."\n" + .'* If you are allowed to use single-ISP bandwidth, you can also choose one of the following values:'."\n" + ."\n" + .' * **ChinaTelecom**'."\n" + .' * **ChinaUnicom**'."\n" + .' * **ChinaMobile**'."\n" + .' * **ChinaTelecom_L2**'."\n" + .' * **ChinaUnicom_L2**'."\n" + .' * **ChinaMobile_L2**'."\n" + ."\n" + .'* If your services are deployed in China East 1 Finance, this parameter is required and you must set the parameter to **BGP_FinanceCloud**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'Netmode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type. By default, this value is set to **public**, which specifies the public network type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'public', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payment. Default value: true. Valid values:'."\n" + ."\n" + .'* **false**: Automatic payment is disabled. After an order is generated, you must go to the Order Center to complete the payment.'."\n" + .'* **true**: Automatic payment is enabled. After an order is generated, the payment is automatically completed.'."\n" + ."\n" + .'This parameter is required if **InstanceChargeType** is set to **PrePaid**. This parameter is optional if **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'PricingCycle', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing cycle of the subscription EIP. Valid values:'."\n" + ."\n" + .'* **Month** (default)'."\n" + .'* **Year**'."\n" + ."\n" + .'This parameter is required if **InstanceChargeType** is set to **PrePaid**. This parameter is optional if **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the EIP. Valid values:'."\n" + ."\n" + .'* **PrePaid**: subscription'."\n" + .'* **PostPaid** (default): pay-as-you-go'."\n" + ."\n" + .'Set the value of **InternetChargeType** to **PayByBandwidth** if **InstanceChargeType** is set to **PrePaid**.'."\n" + ."\n" + .'Valid values when **InstanceChargeType** is set to **PostPaid**: **PayByBandwidth** or **PayByTraffic**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The metering method of the EIP. Valid values:'."\n" + ."\n" + .'* **PayByBandwidth** (default): pay-by-bandwidth.'."\n" + .'* **PayByTraffic**: pay-by-data-transfer.'."\n" + ."\n" + .'If **InstanceChargeType** is set to **PrePaid**, you must set **InternetChargeType** to **PayByBandwidth**.'."\n" + ."\n" + .'If **InstanceChargeType** is set to **PostPaid**, **InternetChargeType** can be set to **PayByBandwidth** or **PayByTraffic**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByBandwidth', + 'default' => 'PayByBandwidth', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the EIP belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-resourcegroup****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe6****', + ], + ], + [ + 'name' => 'SecurityProtectionTypes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The editions of Anti-DDoS.'."\n" + ."\n" + .'* If you do not specify this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'* If you set the parameter to **AntiDDoS_Enhanced**, Anti-DDoS Pro/Premium is used.'."\n" + ."\n" + .'You can configure Anti-DDoS editions for up to 10 EIPs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If you do not specify this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'* If you set the parameter to **AntiDDoS_Enhanced**, Anti-DDoS Pro/Premium is used.'."\n" + ."\n" + .'You can configure Anti-DDoS editions for up to 10 EIPs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AntiDDoS_Enhanced', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP address pool.'."\n" + ."\n" + .'The EIP is allocated from the IP address pool.'."\n" + ."\n" + .'By default, the IP address pool feature is unavailable. If you need to use this feature, contact your account manager.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pippool-2vc0kxcedhquybdsz****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n" + ."\n" + .'This parameter is returned when InstanceChargeType is set to PrePaid. If AutoPay is set to false, you must manually complete the payment in the [Order Center](https://usercenter2-intl.aliyun.com/order/list).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '20190000', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group. This parameter is returned only when **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'string', + 'example' => 'rg-resourcegroup****', + ], + 'EipAddress' => [ + 'description' => 'The IP address that is allocated to the EIP. This parameter is returned only when **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'string', + 'example' => '192.0.XX.XX', + ], + 'AllocationId' => [ + 'description' => 'The EIP ID.'."\n", + 'type' => 'string', + 'example' => 'eip-25877c70gddh****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'FrequentPurchase.EIP', + 'errorMessage' => 'eip frequent purchase', + ], + [ + 'errorCode' => 'COMMODITY_NO_EXIST', + 'errorMessage' => 'commodity is not exist', + ], + [ + 'errorCode' => 'QuotaExceeded.Eip', + 'errorMessage' => 'Elastic IP address quota exceeded', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified value of "InternetChargeType" is not valid', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'ReserveIpFail', + 'errorMessage' => 'Reserve eip failed.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support.', + ], + [ + 'errorCode' => 'InvalidBandwidth.Malformed', + 'errorMessage' => 'The specified Bandwidth is invalid.', + ], + [ + 'errorCode' => 'INSTANCE_TYPE_NOT_SUPPORT', + 'errorMessage' => 'The instance type is invalid.', + ], + [ + 'errorCode' => 'QueryParameter.Illegal', + 'errorMessage' => 'query parameter illegal', + ], + [ + 'errorCode' => 'SYSTEM.UNKNOWN.ERROR', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'TokenVerfiy.Failed', + 'errorMessage' => 'token verify failed.', + ], + [ + 'errorCode' => 'OrderFailed', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'QuotaExceeded.LargeSpecEip', + 'errorMessage' => 'Elastic IP address with large spec quota exceeded.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'Invalid.Reserve.Ip', + 'errorMessage' => 'The reserve ip is invalid.', + ], + [ + 'errorCode' => 'Ip.Allocated', + 'errorMessage' => 'The reserve ip has been allocated.', + ], + [ + 'errorCode' => 'Ip.Keeped', + 'errorMessage' => 'The reserve ip been keeped in an hour.', + ], + [ + 'errorCode' => 'OperationFailed.AllocateUnfamiliarIp', + 'errorMessage' => 'The operation failed because only IP addresses used within the last seven days can be allocated.', + ], + [ + 'errorCode' => 'INVALID_INSTANCE_STATUS', + 'errorMessage' => 'The instance status is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.InstanceNotExist', + 'errorMessage' => 'Eip instanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidStatus.ValueNotSupported', + 'errorMessage' => 'The specified status is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.RiskControl', + 'errorMessage' => 'Risk control check failed.', + ], + [ + 'errorCode' => 'OrderError.EIP', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'ResourceNotEnough.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool is not enough.', + ], + [ + 'errorCode' => 'Mismatch.IpAndPublicIpAddressPool', + 'errorMessage' => 'The Ip and PublicIpAddressPool are mismatched.', + ], + [ + 'errorCode' => 'ResourceNotFound.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ip', + 'errorMessage' => 'The specified ip is not found.', + ], + [ + 'errorCode' => 'OperationDenied.IpBelongToOtherUser', + 'errorMessage' => 'The operation is not allowed because of ip belong to other user.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ip', + 'errorMessage' => 'The status of ip is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.IpIsLocked', + 'errorMessage' => 'The operation is failed because of ip is locked.', + ], + [ + 'errorCode' => 'Mismatch.IpAndIsp', + 'errorMessage' => 'The specified IP address does not match the ISP.', + ], + [ + 'errorCode' => 'IncorrectStatus.PublicIpAddressPool', + 'errorMessage' => 'The status of PublicIpAddressPool is incorrect.', + ], + [ + 'errorCode' => 'IllegalParam.IpAddress', + 'errorMessage' => 'The specified IpAddress (%s) is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.ResourceNotEnough', + 'errorMessage' => 'The resources you have applied for are insufficient.', + ], + [ + 'errorCode' => 'Mismatch.EipSecurityProtectionTypeAndPoolSecurityProtectionType', + 'errorMessage' => 'The EipSecurityProtectionType and PoolSecurityProtectionType are mismatched.', + ], + [ + 'errorCode' => 'IllegalParam.Isp', + 'errorMessage' => 'The param of Isp [%s] is illegal.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "RegionId" is not supported.', + ], + [ + 'errorCode' => 'FUWU_BIZ_COMMODITY_VERIFY_FAIL', + 'errorMessage' => '????????, ????????PD.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"OrderId\\": 20190000,\\n \\"ResourceGroupId\\": \\"rg-resourcegroup****\\",\\n \\"EipAddress\\": \\"192.0.XX.XX\\",\\n \\"AllocationId\\": \\"eip-25877c70gddh****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n 20190000\\n rg-resourcegroup****\\n 192.0.XX.XX\\n eip-25877c70gddh****\\n","errorExample":""}]', + 'title' => 'AllocateEipAddressPro', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ReleaseEipAddress' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AllocationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP that you want to release.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zeerraiwb7uj6i0d****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '748C38F6-9A3D-482E-83FB-DB6C39C68AEA', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectEipStatus', + 'errorMessage' => 'Current elastic IP status does not support this operation.', + ], + [ + 'errorCode' => 'Forbidden.ChargeTypeIsPrepaid', + 'errorMessage' => 'It\'s forbidden to release a prepaid EIP', + ], + [ + 'errorCode' => 'TaskConflict.AssociateGlobalAccelerationInstance', + 'errorMessage' => 'Operate too frequent.', + ], + [ + 'errorCode' => 'InvalidOperation.DeletionProtection', + 'errorMessage' => 'The instance cannnot delete because of deletion protecion.', + ], + [ + 'errorCode' => 'Forbidden.ReleaseSegmentEip', + 'errorMessage' => 'Release single segment eip is forbidden.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'The eip instance owner error', + ], + [ + 'errorCode' => 'Mismatch.%sAnd%s', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation ID is not found.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified region is not found during access authentication.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"748C38F6-9A3D-482E-83FB-DB6C39C68AEA\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 748C38F6-9A3D-482E-83FB-DB6C39C68AEA\\n","errorExample":""}]', + 'title' => 'ReleaseEipAddress', + 'summary' => 'Releases an elastic IP address (EIP).', + 'description' => 'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* Before you release an EIP, make sure that the EIP meets the following requirements:'."\n" + ."\n" + .' * You can release only an EIP that is in the **Available** state.'."\n" + .' * You can release only a pay-as-you-go EIP. You cannot release a subscription EIP.'."\n" + ."\n" + .'* **ReleaseEipAddress** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeEipAddresses](~~120193~~) operation to query the status of the task:'."\n" + ."\n" + .' * If the EIP is in the **Releasing** state, the EIP is being released. In this state, you can only query the EIP and cannot perform other operations.'."\n" + .' * If you cannot query the EIP, the EIP is released.'."\n" + ."\n" + .'* You cannot repeatedly call the **ReleaseEipAddress** operation to release an EIP within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyEipAddressAttribute' => [ + 'summary' => 'Modifies the name, description, and maximum bandwidth of an elastic IP address (EIP).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'AllocationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the pay-as-you-go EIP.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zeerraiwb7uj6i0d****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new maximum bandwidth of the EIP. Valid values:'."\n" + ."\n" + .'* **1** to **200** if the metering method is pay-by-data-transfer. Unit: Mbit/s.'."\n" + .'* **1** to **500** if the metering method is pay-by-bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '100', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the EIP.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the EIP.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test123', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the EIP.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length and start with a letter. The description cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OrderError.EIP', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'InsufficientBalance.Eip', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified value of "Bandwidth" is not supported.', + ], + [ + 'errorCode' => 'Forbidden.ChargeTypeIsPrepaid', + 'errorMessage' => 'It?s forbidden to change prepaid EIP?s bandwidth by API. It can be changed on Aliyun web console.', + ], + [ + 'errorCode' => 'IncorrectEipStatus', + 'errorMessage' => 'Current elastic IP status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidBandwidth.OutOfMaxTrafficBindedOnNatgw', + 'errorMessage' => 'The bandwidth is out of max traffic binded on natgw.', + ], + [ + 'errorCode' => 'QuotaExceeded.LargeSpecEip', + 'errorMessage' => 'Elastic IP address with large spec quota exceeded.', + ], + [ + 'errorCode' => 'InvalidEipAddressName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'ResourceQueryError', + 'errorMessage' => 'The specified resource is queried error.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Invalid description.', + ], + [ + 'errorCode' => 'SYSTEM.UNKNOWN.ERROR', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'Abs.InvalidBandwidth.Malformed', + 'errorMessage' => 'Specified value of Bandwidth is not supported.', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'OperationFailed.SaleValidate', + 'errorMessage' => 'Validate sale condition with subArticle failed.', + ], + [ + 'errorCode' => 'OperationFailed.SyncOrderToSub', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'COMMODITY.INVALID_COMPONENT', + 'errorMessage' => 'The instance component is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.CompleteUserInfo', + 'errorMessage' => 'Complete user info failed.', + ], + [ + 'errorCode' => 'OperationFailed.ConcurrentRequest', + 'errorMessage' => 'Operation failed because concurrent request.', + ], + [ + 'errorCode' => 'IncorrectStatus.ResourceStatus', + 'errorMessage' => 'Resource status is abnormal for renew.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => 'The parameter InstanceId is mandatory.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation id is not found.', + ], + [ + 'errorCode' => 'Forbidden.InCommonBandwidthPackage', + 'errorMessage' => 'Specified allocation ID in common bandwidth package.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified region is not found during access authentication.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'OrderError.EIP', + 'errorMessage' => 'The Account failed to create order.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'ModifyEipAddressAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeEipAddresses' => [ + 'summary' => 'Queries elastic IP addresses (EIPs) created in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the EIP.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to return information about pending orders. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The state of the EIP. Valid values:'."\n" + ."\n" + .'* **Associating**'."\n" + .'* **Unassociating**'."\n" + .'* **InUse**'."\n" + .'* **Available**'."\n" + .'* **Releasing**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Available', + ], + ], + [ + 'name' => 'EipAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The EIP that you want to query.'."\n" + ."\n" + .'You can specify up to 50 EIPs. Separate multiple EIPs with commas (,).'."\n" + ."\n" + .'> If both **EipAddress** and **AllocationId** are specified, you can specify up to 50 EIPs for **EipAddress**, and specify up to 50 EIP IDs for **AllocationId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.75.XX.XX', + ], + ], + [ + 'name' => 'AllocationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP that you want to query.'."\n" + ."\n" + .'You can specify up to 50 EIP IDs. Separate multiple IDs with commas (,).'."\n" + ."\n" + .'> If both **EipAddress** and **AllocationId** are specified, you can specify up to 50 EIP IDs for **AllocationId**, and specify up to 50 EIPs for **EipAddress**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eip-2zeerraiwb7ujxscd****', + ], + ], + [ + 'name' => 'SegmentInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the contiguous EIP group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eipsg-t4nr90yik5oy38xdy****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the EIP belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4pcdvf****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '10', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'ISP', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP** (default): Border Gateway Protocol (BGP) (Multi-ISP) lines. All regions support BGP (Multi-ISP) EIPs.'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro lines. Only the following regions support BGP (Multi-ISP) Pro lines: China (Hong Kong), Singapore, Japan (Tokyo), Malaysia (Kuala Lumpur), Philippines (Manila), Indonesia (Jakarta), and Thailand (Bangkok).'."\n" + ."\n" + .'For more information about BGP (Multi-ISP) and BGP (Multi-ISP) Pro, see the [Line types](~~32321~~) section of the "What is EIP?" topic.'."\n" + ."\n" + .'If you are allowed to use single-ISP bandwidth, you can also use one of the following values:'."\n" + ."\n" + .'* **ChinaTelecom**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaTelecom_L2**'."\n" + .'* **ChinaUnicom_L2**'."\n" + .'* **ChinaMobile_L2**'."\n" + ."\n" + .'If your services are deployed in China East 1 Finance, this parameter is required and you must set the value to **BGP_FinanceCloud**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'Filter.1.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The filter key used to query resources. Set the value to **CreationStartTime**, which specifies the time when the system started to create the resource.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationStartTime', + ], + ], + [ + 'name' => 'Filter.2.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The filter key used to query resources. Set the value to **CreationEndTime**, which specifies the time when the system finished creating the resource.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationEndTime', + ], + ], + [ + 'name' => 'Filter.1.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The filter value used to query resources. Specify the time in the ISO 8601 standard in the `YYYY-MM-DDThh:mmZ` format. The time must be in Coordinated Universal Time (UTC).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2023-01-01T01:00Z', + ], + ], + [ + 'name' => 'Filter.2.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The filter value used to query resources. Specify the time in the ISO 8601 standard in the `YYYY-MM-DDThh:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2023-01-06T02:00Z', + ], + ], + [ + 'name' => 'LockReason', + 'in' => 'query', + 'schema' => [ + 'description' => 'The reason why the EIP is locked. Valid values:'."\n" + ."\n" + .'* **financial**: The EIP is locked due to overdue payments.'."\n" + .'* **security**: The EIP is locked for security reasons.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'financial', + ], + ], + [ + 'name' => 'AssociatedInstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the cloud resource with which you want to associate the EIP. Valid values:'."\n" + ."\n" + .'* **EcsInstance** (default): an Elastic Compute Service (ECS) instance in a virtual private cloud (VPC).'."\n" + .'* **SlbInstance**: a CLB instance in a VPC.'."\n" + .'* **Nat**: a NAT gateway.'."\n" + .'* **HaVip**: an HAVIP.'."\n" + .'* **NetworkInterface**: a secondary ENI.'."\n" + .'* **IpAddress**: an IP address.'."\n" + ."\n" + .'> Each ECS instance, CLB instance, HAVIP, and IP address can be associated with only one EIP. A NAT gateway can be associated with multiple EIPs. The number of EIPs that you can associate with a secondary ENI depends on the association mode. For more information, see [Associate EIPs with and disassociate EIPs from cloud resources](~~72125~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsInstance', + ], + ], + [ + 'name' => 'AssociatedInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance associated with the EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-2zebb08phyccdvf****', + ], + ], + [ + 'name' => 'ChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the EIP. Valid values:'."\n" + ."\n" + .'* **PostPaid**: pay-as-you-go.'."\n" + .'* **PrePaid**: subscription.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'EipName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the EIP.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EIP-01', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags used to filter EIPs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'SecurityProtectionEnabled', + 'in' => 'query', + 'schema' => [ + 'title' => '是否开启安全防护', + 'description' => 'Specifies whether to activate Anti-DDoS Pro/Premium. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address pool to which the EIP that you want to query belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pippool-2vc0kxcedhquybdsz****', + ], + ], + [ + 'name' => 'ServiceManaged', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether the instance is managed. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no.'."\n" + ."\n" + .'If you do not specify this parameter, all instances are queried.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'EipAddresses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EipAddress' => [ + 'description' => 'Details of the EIPs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the EIP.'."\n", + 'type' => 'object', + 'properties' => [ + 'ReservationActiveTime' => [ + 'description' => 'The time when the renewal took effect. The time follows the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2021-05-23T16:00:00Z', + ], + 'Status' => [ + 'description' => 'The status of the EIP. Valid values:'."\n" + ."\n" + .'* **Associating**'."\n" + .'* **Unassociating**'."\n" + .'* **InUse**'."\n" + .'* **Available**'."\n" + .'* **Releasing**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'ReservationOrderType' => [ + 'description' => 'The type of the renewal order. Valid values:'."\n" + ."\n" + .'* **RENEWCHANGE**: renewal with an upgrade or a downgrade.'."\n" + .'* **TEMP_UPGRADE**: temporary upgrade.'."\n" + .'* **UPGRADE**: upgrade.'."\n", + 'type' => 'string', + 'example' => 'RENEWCHANGE', + ], + 'AllocationTime' => [ + 'description' => 'The time when the EIP was created. The time follows the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2021-04-23T01:37:38Z', + ], + 'Netmode' => [ + 'description' => 'The network type. Only **public** may be returned.'."\n", + 'type' => 'string', + 'example' => 'public', + ], + 'ChargeType' => [ + 'description' => 'The billing method of the EIP. Valid values:'."\n" + ."\n" + .'* **PostPaid**: pay-as-you-go.'."\n" + .'* **PrePaid**: subscription.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'Description' => [ + 'description' => 'The description of the EIP.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'Mode' => [ + 'description' => 'The association mode. Valid values:'."\n" + .'- **NAT**: NAT mode'."\n" + .'- **MULTI_BINDED**: multi-EIP-to-ENI mode'."\n" + .'- **BINDED**: cut-through mode', + 'type' => 'string', + 'example' => 'NAT', + ], + 'SegmentInstanceId' => [ + 'description' => 'The ID of the contiguous EIP group.'."\n" + ."\n" + .'This value is returned only when you query contiguous EIPs.'."\n", + 'type' => 'string', + 'example' => 'eipsg-t4nr90yik5oy38xd****', + ], + 'ReservationInternetChargeType' => [ + 'description' => 'The metering method that is used after the renewal takes effect. Valid values:'."\n" + ."\n" + .'* **PayByBandwidth**'."\n" + .'* **PayByTraffic**'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'BandwidthPackageId' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'example' => 'cbwp-bp1ego3i4j07ccdvf****', + ], + 'IpAddress' => [ + 'description' => 'The EIP.'."\n", + 'type' => 'string', + 'example' => '47.75.XX.XX', + ], + 'Bandwidth' => [ + 'description' => 'The maximum bandwidth of the EIP. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '5', + ], + 'ReservationBandwidth' => [ + 'description' => 'The maximum bandwidth after the renewal takes effect. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '12', + ], + 'EipBandwidth' => [ + 'description' => 'The maximum bandwidth of the EIP when it is not associated with an Internet Shared Bandwidth instance. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '101', + ], + 'Name' => [ + 'description' => 'The name of the EIP.'."\n", + 'type' => 'string', + 'example' => 'EIP-01', + ], + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the secondary ENI with which the EIP is associated.', + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'InstanceRegionId' => [ + 'description' => 'The region ID of the associated instance.'."\n", + 'type' => 'string', + 'example' => ' cn-hangzhou', + ], + 'DeletionProtection' => [ + 'description' => 'Indicates whether deletion protection is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InstanceId' => [ + 'description' => 'The ID of the associated instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp15zckdt37cdvf****', + ], + 'SecondLimited' => [ + 'description' => 'Indicates whether level-2 throttling is configured. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'InstanceType' => [ + 'description' => 'The type of the associated instance. Valid values:'."\n" + ."\n" + .'* **EcsInstance**: an ECS instance in a VPC.'."\n" + .'* **SlbInstance**: a CLB instance in a VPC.'."\n" + .'* **Nat**: a NAT gateway.'."\n" + .'* **HaVip**: an HAVIP.'."\n" + .'* **NetworkInterface**: a secondary ENI.'."\n" + .'* **IpAddress**: an IP address.'."\n", + 'type' => 'string', + 'example' => 'EcsInstance', + ], + 'HDMonitorStatus' => [ + 'description' => 'Indicates whether fine-grained monitoring is enabled for the EIP. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'RegionId' => [ + 'description' => 'The region ID of the EIP.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'BandwidthPackageBandwidth' => [ + 'description' => 'The maximum bandwidth of the Internet Shared Bandwidth instance with which the EIP is associated. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '50', + ], + 'ServiceManaged' => [ + 'description' => 'Indicates whether the instance is managed. Valid values:'."\n" + ."\n" + .'* **1**: yes'."\n" + .'* **0**: no'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the EIP expires. The time follows the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2021-05-23T02:00:00Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazcdxs****', + ], + 'AllocationId' => [ + 'description' => 'The ID of the EIP.'."\n", + 'type' => 'string', + 'example' => 'eip-2zeerraiwb7ujcdvf****', + ], + 'InternetChargeType' => [ + 'description' => 'The metering method of the EIP. Valid values:'."\n" + ."\n" + .'* **PayByBandwidth**'."\n" + .'* **PayByTraffic**'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'BusinessStatus' => [ + 'description' => 'The service status of the EIP. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **OperationLock**'."\n" + .'* **Unactivated**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'BandwidthPackageType' => [ + 'description' => 'The type of the bandwidth. Only **CommonBandwidthPackage** may be returned, which indicates Internet Shared Bandwidth.'."\n", + 'type' => 'string', + 'example' => 'CommonBandwidthPackage', + ], + 'HasReservationData' => [ + 'description' => 'Indicates whether renewal data is included. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true** A value of **true** is returned only when **IncludeReservationData** is set to **true** and some orders have not taken effect.'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'ISP' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP**: BGP (Multi-ISP). The BGP (Multi-ISP) line is supported in all regions.'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro lines. BGP (Multi-ISP) Pro line is supported only in the China (Hong Kong), Singapore, Japan (Tokyo), Malaysia (Kuala Lumpur), Philippines (Manila), Indonesia (Jakarta), and Thailand (Bangkok) regions.'."\n" + ."\n" + .'For more information about BGP (Multi-ISP) and BGP (Multi-ISP) Pro, see the [Line types](~~32321~~) section of the "What is EIP?" topic.'."\n" + ."\n" + .'If you are allowed to use single-ISP bandwidth, one of the following values may be returned:'."\n" + ."\n" + .'* **ChinaTelecom**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaTelecom_L2**'."\n" + .'* **ChinaUnicom_L2**'."\n" + .'* **ChinaMobile_L2**'."\n" + ."\n" + .'If your services are deployed in China East 1 Finance, **BGP_FinanceCloud** is returned.'."\n", + 'type' => 'string', + 'example' => 'BGP', + ], + 'OperationLocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LockReason' => [ + 'description' => 'The details about the locked EIP.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The details about the locked EIP.'."\n", + 'type' => 'object', + 'properties' => [ + 'LockReason' => [ + 'description' => 'The reason why the EIP is locked. Valid values:'."\n" + ."\n" + .'* **financial**: The EIP is locked due to overdue payments.'."\n" + .'* **security**: The instance is locked for security purposes.'."\n" + .'* **sharedPool**: The shared IP address pool is locked due to overdue payments.'."\n", + 'type' => 'string', + 'example' => 'financial', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the EIP.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key of the EIP.'."\n", + 'type' => 'string', + 'example' => 'KeyTest', + ], + 'Value' => [ + 'description' => 'The tag value of the EIP.'."\n", + 'type' => 'string', + 'example' => 'ValueTest', + ], + ], + 'example' => '"Tag": [ { "Value": "000", "Key": "yyy" }, { "Value": "111","Key": "kkk" }', + ], + ], + ], + ], + 'SecurityProtectionTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityProtectionType' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If an empty value is returned, it indicates that Anti-DDoS Origin Basic is used.'."\n" + .'* If **AntiDDoS_Enhanced** is returned, it indicates that Anti-DDoS Pro/Premium is used.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If an empty value is returned, it indicates that Anti-DDoS Origin Basic is used.'."\n" + .'* If **AntiDDoS_Enhanced** is returned, it indicates that Anti-DDoS Pro/Premium is used.'."\n", + 'type' => 'string', + 'example' => 'AntiDDoS_Enhanced', + ], + ], + ], + ], + 'PublicIpAddressPoolId' => [ + 'description' => 'The ID of the IP address pool to which the EIP belongs.'."\n", + 'type' => 'string', + 'example' => 'pippool-2vc0kxcedhquybdsz****', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC in which an IPv4 gateway is created and that is deployed in the same region as the EIP.'."\n" + ."\n" + .'When you associate an EIP with an IP address, the system can enable the IP address to access the Internet based on VPC route configurations.'."\n" + ."\n" + .'> This parameter is returned if the value of **InstanceType** is **IpAddress**. In this case, the EIP is associated with an IP address.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp15zckdt37pq72zv****', + ], + 'Zone' => [ + 'description' => 'The zone of the EIP.'."\n" + ."\n" + .'This parameter is returned only when the service type is CloudBox.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-a', + ], + 'BizType' => [ + 'description' => 'The service type. Valid values:'."\n" + ."\n" + .'* **CloudBox** Only cloud box users can select this type.'."\n" + .'* **Default** (default)'."\n", + 'type' => 'string', + 'example' => 'CloudBox', + ], + 'ServiceID' => [ + 'description' => 'The ID of the service provider to which the managed instance belongs.'."\n" + .'> This is only valid when the ServiceManaged parameter is set to True.', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '197*************', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIAssociatedInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified value of AssociatedInstanceType is not supported.', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'The specified ChargeType is not supported.', + ], + [ + 'errorCode' => 'InvalidAliuid', + 'errorMessage' => 'User Id is not valid.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'InstanceType.Invalid', + 'errorMessage' => 'InstanceType is not null', + ], + [ + 'errorCode' => 'InstanceIdLength.Exceed', + 'errorMessage' => 'InstanceId length is exceed', + ], + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'OperationUnsupported.ResourceGroupId', + 'errorMessage' => 'ResourceGroup is not supported in this region.', + ], + [ + 'errorCode' => 'IellgalParameter.OwnerAccount', + 'errorMessage' => 'The specified parameter OwnerAccount is not valid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidFilterValue', + 'errorMessage' => 'The specified FilterValue is not supported.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified region is not found during access authentication.', + ], + [ + 'errorCode' => 'InvalidFilterKey.NotFound', + 'errorMessage' => 'The specified Filterkey is not supported.', + ], + [ + 'errorCode' => 'InvalidLockReason.NotFound', + 'errorMessage' => 'The specified LockReason is not found', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"PageNumber\\": 10,\\n \\"TotalCount\\": 1,\\n \\"EipAddresses\\": {\\n \\"EipAddress\\": [\\n {\\n \\"ReservationActiveTime\\": \\"2021-05-23T16:00:00Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"ReservationOrderType\\": \\"RENEWCHANGE\\",\\n \\"AllocationTime\\": \\"2021-04-23T01:37:38Z\\",\\n \\"Netmode\\": \\"public\\",\\n \\"ChargeType\\": \\"PostPaid\\",\\n \\"Description\\": \\"abc\\",\\n \\"Mode\\": \\"NAT\\",\\n \\"SegmentInstanceId\\": \\"eipsg-t4nr90yik5oy38xd****\\",\\n \\"ReservationInternetChargeType\\": \\"PayByBandwidth\\",\\n \\"BandwidthPackageId\\": \\"cbwp-bp1ego3i4j07ccdvf****\\",\\n \\"IpAddress\\": \\"47.75.XX.XX\\",\\n \\"Bandwidth\\": \\"5\\",\\n \\"ReservationBandwidth\\": \\"12\\",\\n \\"EipBandwidth\\": \\"101\\",\\n \\"Name\\": \\"EIP-01\\",\\n \\"PrivateIpAddress\\": \\"192.168.XX.XX\\",\\n \\"InstanceRegionId\\": \\" cn-hangzhou\\",\\n \\"DeletionProtection\\": true,\\n \\"InstanceId\\": \\"i-bp15zckdt37cdvf****\\",\\n \\"SecondLimited\\": false,\\n \\"InstanceType\\": \\"EcsInstance\\",\\n \\"HDMonitorStatus\\": \\"false\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"BandwidthPackageBandwidth\\": \\"50\\",\\n \\"ServiceManaged\\": 0,\\n \\"ExpiredTime\\": \\"2021-05-23T02:00:00Z\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazcdxs****\\",\\n \\"AllocationId\\": \\"eip-2zeerraiwb7ujcdvf****\\",\\n \\"InternetChargeType\\": \\"PayByBandwidth\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"BandwidthPackageType\\": \\"CommonBandwidthPackage\\",\\n \\"HasReservationData\\": \\"false\\",\\n \\"ISP\\": \\"BGP\\",\\n \\"OperationLocks\\": {\\n \\"LockReason\\": [\\n {\\n \\"LockReason\\": \\"financial\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"KeyTest\\",\\n \\"Value\\": \\"ValueTest\\"\\n }\\n ]\\n },\\n \\"SecurityProtectionTypes\\": {\\n \\"SecurityProtectionType\\": [\\n \\"AntiDDoS_Enhanced\\"\\n ]\\n },\\n \\"PublicIpAddressPoolId\\": \\"pippool-2vc0kxcedhquybdsz****\\",\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\",\\n \\"Zone\\": \\"ap-southeast-1-lzdvn-cb\\",\\n \\"BizType\\": \\"CloudBox\\",\\n \\"ServiceID\\": 0\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n 10\\n 1\\n \\n 2021-05-23T16:00:00Z\\n Available\\n RENEWCHANGE\\n 2021-04-23T01:37:38Z\\n public\\n PostPaid\\n abc\\n eipsg-t4nr90yik5oy38xd****\\n PayByBandwidth\\n cbwp-bp1ego3i4j07ccdvf****\\n 47.75.XX.XX\\n 5\\n 12\\n 101\\n EIP-01\\n cn-hangzhou\\n true\\n i-bp15zckdt37cdvf****\\n false\\n EcsInstance\\n false\\n cn-hangzhou\\n 50\\n 0\\n 2021-05-23T02:00:00Z\\n rg-acfmxazcdxs****\\n eip-2zeerraiwb7ujcdvf****\\n PayByBandwidth\\n Normal\\n CommonBandwidthPackage\\n false\\n BGP\\n \\n financial\\n \\n \\n KeyTest\\n ValueTest\\n \\n AntiDDoS_Enhanced\\n pippool-2vc0kxcedhquybdsz****\\n vpc-bp15zckdt37pq72zv****\\n ap-southeast-1-lzdvn-cb\\n CloudBox\\n \\n","errorExample":""}]', + 'title' => 'DescribeEipAddresses', + 'description' => 'You can call this operation to query information about EIPs in a region, including maximum bandwidth, billing methods, and associated instances.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeEipGatewayInfo' => [ + 'summary' => 'Queries the gateway and subnet mask of an elastic IP address (EIP).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the secondary ENI that is associated with the EIP.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp1d66qjxb3qoin3****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region to which the EIP that you want to query belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-zhangjiakou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region to which the EIP that you want to query belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-zhangjiakou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'The status code of the operation.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The result of the operation.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C0FD0EED-F90D-4479-803D-DD62335357E5 ', + ], + 'EipInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EipInfo' => [ + 'description' => 'The detailed information about the EIP.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Ip' => [ + 'description' => 'The IP address of the EIP.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.236', + ], + 'IpGw' => [ + 'description' => 'The IP address of the gateway that is associated with the EIP.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.1', + ], + 'IpMask' => [ + 'description' => 'The subnet mask of the EIP.'."\n", + 'type' => 'string', + 'example' => '255.255.255.0', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Instance.NotExist', + 'errorMessage' => 'The instance is not exist.', + ], + [ + 'errorCode' => 'InvalidNetworkInterface.NotFound', + 'errorMessage' => 'The specified network interface is not exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"successful\\",\\n \\"RequestId\\": \\"C0FD0EED-F90D-4479-803D-DD62335357E5\\\\t\\",\\n \\"EipInfos\\": {\\n \\"EipInfo\\": [\\n {\\n \\"Ip\\": \\"47.XX.XX.236\\",\\n \\"IpGw\\": \\"47.XX.XX.1\\",\\n \\"IpMask\\": \\"255.255.255.0\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 200\\n successful\\n C0FD0EED-F90D-4479-803D-DD62335357E5\\t\\n \\n 47.XX.XX.236\\n 47.XX.XX.1\\n 255.255.255.0\\n \\n","errorExample":""}]', + 'title' => 'DescribeEipGatewayInfo', + 'description' => 'You can query only EIPs that are associated with secondary elastic network interfaces (ENIs) in multi-EIP-to-ENI mode.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AllocateEipSegmentAddress' => [ + 'summary' => 'Applies for contiguous elastic IP addresses (EIPs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. **ClientToken** can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the contiguous EIP group. Unit: Mbit/s.'."\n" + ."\n" + .'* Valid values when **InstanceChargeType** is set to **PostPaid** and **InternetChargeType** is set to **PayByBandwidth**: **1** to **500**.****'."\n" + .'* Valid values when **InstanceChargeType** is set to **PostPaid** and **InternetChargeType** is set to **PayByTraffic**: **1** to **200**.****'."\n" + .'* Valid values when **InstanceChargeType** is set to **PrePaid**: **1** to **1000**.****'."\n" + ."\n" + .'Default value: **5**. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the contiguous EIP group resides.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'EipMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask of the contiguous EIP group. Valid values:'."\n" + ."\n" + .'* **28**: applies for 16 contiguous EIPs in each call.'."\n" + .'* **27**: applies for 32 contiguous EIPs in each call.'."\n" + .'* **26**: applies for 64 contiguous EIPs in each call.'."\n" + .'* **25**: applies for 128 contiguous EIPs in each call.'."\n" + .'* **24**: applies for 256 contiguous EIPs in each call.'."\n" + ."\n" + .'> Some IP address are reserved for specific purposes. Therefore, the actual number of the contiguous EIPs may be one, three, or four less than the expected number.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '28', + ], + ], + [ + 'name' => 'Netmode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type. Set the value to **public**, which specifies the public network type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'public', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The metering method of contiguous EIPs. Valid values:'."\n" + ."\n" + .'* **PayByBandwidth** (default)'."\n" + .'* **PayByTraffic**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByBandwidth', + 'default' => 'PayByBandwidth', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP** (default): BGP (Multi-ISP) line The BGP (Multi-ISP) line is supported in all regions.'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro line BGP (Multi-ISP) Pro line is supported only in the China (Hong Kong), Singapore, Japan (Tokyo), Malaysia (Kuala Lumpur), Philippines (Manila), Indonesia (Jakarta), and Thailand (Bangkok) regions.'."\n" + ."\n" + .'For more information about the BGP (Multi-ISP) line and BGP (Multi-ISP) Pro line, see [EIP line types](~~32321~~).'."\n" + ."\n" + .'If you are allowed to use single-ISP bandwidth, you can also use one of the following values:'."\n" + ."\n" + .'* **ChinaTelecom**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaTelecom_L2**'."\n" + .'* **ChinaUnicom_L2**'."\n" + .'* **ChinaMobile_L2**'."\n" + ."\n" + .'If your services are deployed in China East 1 Finance, this parameter is required and you must set the parameter to **BGP_FinanceCloud**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'Zone', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone of the contiguous EIP group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-a', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F7A6301A-64BA-41EC-8284-8F4838C15D1F ', + ], + 'EipSegmentInstanceId' => [ + 'description' => 'The ID of the contiguous EIP group.'."\n", + 'type' => 'string', + 'example' => 'eipsg-2zett8ba055tbsxme****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'COMMODITY_NO_EXIST', + 'errorMessage' => 'commodity is not exist', + ], + [ + 'errorCode' => 'QuotaExceeded.Eip', + 'errorMessage' => 'Elastic IP address quota exceeded', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Specified value of "InternetChargeType" is not valid', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'ReserveIpFail', + 'errorMessage' => 'Reserve eip failed.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support.', + ], + [ + 'errorCode' => 'InvalidBandwidth.Malformed', + 'errorMessage' => 'The specified Bandwidth is invalid.', + ], + [ + 'errorCode' => 'INSTANCE_TYPE_NOT_SUPPORT', + 'errorMessage' => 'The instance type is invalid.', + ], + [ + 'errorCode' => 'QueryParameter.Illegal', + 'errorMessage' => 'query parameter illegal', + ], + [ + 'errorCode' => 'TokenVerfiy.Failed', + 'errorMessage' => 'token verify failed.', + ], + [ + 'errorCode' => 'OrderFailed', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'QuotaExceeded.LargeSpecEip', + 'errorMessage' => 'Elastic IP address with large spec quota exceeded.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'PAYFOR.CREDIT_PAY_INSUFFICIENT_BALANCE', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'SYSTEM.SALE_VALIDATE_UNEXPECTED_ERROR', + 'errorMessage' => 'You have arrears and do not meet the purchase conditions.', + ], + [ + 'errorCode' => 'Trade_Sync_Create_Sub_ERROR', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'InvalidComponent.EipBandwidthMax', + 'errorMessage' => 'The eip_bandwidth_max component is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.RiskControl', + 'errorMessage' => 'Risk control check failed.', + ], + [ + 'errorCode' => 'OperationFailed.SaleValidate', + 'errorMessage' => 'Validate sale condition with subArticle failed.', + ], + [ + 'errorCode' => 'IllegalParam.OrderParamComponent', + 'errorMessage' => 'Product order param has invalid component.', + ], + [ + 'errorCode' => 'OperationFailed.SaleExpression', + 'errorMessage' => 'Get the sales expression exception attached to the item.', + ], + [ + 'errorCode' => 'OperationFailed.CompleteUserInfo', + 'errorMessage' => 'Complete user info failed.', + ], + [ + 'errorCode' => 'OperationFailed.QueryPrice', + 'errorMessage' => 'Query price failed when create order.', + ], + [ + 'errorCode' => 'OperationFailed.InsufficientEIP', + 'errorMessage' => 'Eip resource is not enough.', + ], + [ + 'errorCode' => 'OperationFailed.InvokeInnerApi', + 'errorMessage' => 'Failed to invoke inner api.', + ], + [ + 'errorCode' => 'OperationFailed.AccountMoneyInvalid', + 'errorMessage' => 'Account money is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.QueryCredtiInfo', + 'errorMessage' => 'Failed to query credit info.', + ], + [ + 'errorCode' => 'FrequentPurchase.EIP', + 'errorMessage' => 'eip frequent purchase', + ], + [ + 'errorCode' => 'OperationFailed.QueryUserLabel', + 'errorMessage' => 'Failed to query user label info.', + ], + [ + 'errorCode' => 'PAY.INSUFFICIENT_BALANCE', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'ORDER.QUANTITY_INVALID', + 'errorMessage' => 'User quota has exceeded the limit.', + ], + [ + 'errorCode' => 'PAY.MAYI_WITHHOLDING_AGREEMENT_ILLEGAL', + 'errorMessage' => 'User withhoding argeement is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.ChargeTypeInvalid', + 'errorMessage' => 'Operation failed because hybrid netmode do not support PayByTraffic.', + ], + [ + 'errorCode' => 'IllegalParam.EipMask', + 'errorMessage' => 'EipMask is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'Name is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'Description is illegal.', + ], + [ + 'errorCode' => 'InstanceExist.EipSegment', + 'errorMessage' => 'The eipSegment instance already exists.', + ], + [ + 'errorCode' => 'OperationFailed.QuotaExceed', + 'errorMessage' => 'Operation failed because over threshold bandwidth quota exceed.', + ], + [ + 'errorCode' => 'OperationFailed.FrequentPurchase', + 'errorMessage' => 'Operation failed because eip frequent purchase.', + ], + [ + 'errorCode' => 'OperationFailed.AllocateEipSegment', + 'errorMessage' => 'Operation failed because eip segment is out of stock.', + ], + [ + 'errorCode' => 'OperationFailed.CreateOrderFailed', + 'errorMessage' => 'Operation failed because create order failed.', + ], + [ + 'errorCode' => 'MissingParam.Bandwidth', + 'errorMessage' => 'The parameter Bandwidth is mandatory when allocate hybrid EipSegment.', + ], + [ + 'errorCode' => 'OperationFailed.EipQuotaExceed', + 'errorMessage' => 'Operation failed because eip quota exceed.', + ], + [ + 'errorCode' => 'OrderError.EIP', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'UnsupportedFeature.AllocateEipAddressWithZone', + 'errorMessage' => 'The feature of AllocateEipAddressWithZone is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.Zone', + 'errorMessage' => 'The specified zone is invalid.', + ], + [ + 'errorCode' => 'Forbidden.AllocateEipSegmentAddress', + 'errorMessage' => 'Authentication is failed for allocating eip segment address.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "RegionId" is not supported.', + ], + [ + 'errorCode' => 'FUWU_BIZ_COMMODITY_VERIFY_FAIL', + 'errorMessage' => '????????, ????????PD.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'OrderError.EIP', + 'errorMessage' => 'The Account failed to create order.', + ], + ], + ], + 'staticInfo' => [ + 'noSubstitutionReason' => '无替代API,历史原因导致该API被标记为弃用。', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F7A6301A-64BA-41EC-8284-8F4838C15D1F\\",\\n \\"EipSegmentInstanceId\\": \\"eipsg-2zett8ba055tbsxme****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F7A6301A-64BA-41EC-8284-8F4838C15D1F\\t\\n eipsg-2zett8ba055tbsxme****\\n","errorExample":""}]', + 'title' => 'AllocateEipSegmentAddress', + 'description' => '**AllocateEipSegmentAddress** is an asynchronous operation. After a request is sent, the system returns the ID of a contiguous EIP group and runs the task in the background. You can call the [DescribeEipSegment](~~156063~~) operation to query the status of the task.'."\n" + ."\n" + .'* If the contiguous EIP group is in the **Allocating** state, the EIPs are being allocated. In this case, you can only perform the query operation and cannot perform other operations.'."\n" + .'* If the contiguous EIP group is in the **Allocated** state, the EIPs are allocated.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeEipSegment' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001sdfg', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the contiguous EIP group belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SegmentInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the contiguous EIP group that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eipsg-2zett8ba055tbsxme****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F7A6301A-64BA-41EC-8284-8F4838C15D1F', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'EipSegments' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EipSegment' => [ + 'description' => 'The details of the contiguous EIP group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the contiguous EIP group was created. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2020-03-06T12:30:07Z', + ], + 'Status' => [ + 'description' => 'The status of the contiguous EIP group. Valid values:'."\n" + ."\n" + .'* **Allocating**'."\n" + .'* **Allocated**'."\n" + .'* **Releasing**'."\n", + 'type' => 'string', + 'example' => 'Allocated', + ], + 'Descritpion' => [ + 'description' => 'The description of the contiguous EIP group.'."\n", + 'type' => 'string', + 'example' => 'MyEipSegment', + ], + 'InstanceId' => [ + 'description' => 'The ID of the contiguous EIP group.'."\n", + 'type' => 'string', + 'example' => 'eipsg-2zett8ba055tbsxme****', + ], + 'IpCount' => [ + 'description' => 'The number of EIPs in the contiguous EIP group.'."\n", + 'type' => 'string', + 'example' => '16', + ], + 'Name' => [ + 'description' => 'The name of the contiguous EIP group.'."\n", + 'type' => 'string', + 'example' => 'MyEipSegment', + ], + 'Segment' => [ + 'description' => 'The CIDR block and mask of the contiguous EIP group.'."\n", + 'type' => 'string', + 'example' => '161.xx.xx.32/28', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the contiguous EIP group belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Zone' => [ + 'description' => 'The zone of the contiguous EIP group.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-a', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.QueryDbError', + 'errorMessage' => 'Operation failed because query db error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"F7A6301A-64BA-41EC-8284-8F4838C15D1F\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 10,\\n \\"EipSegments\\": {\\n \\"EipSegment\\": [\\n {\\n \\"CreationTime\\": \\"2020-03-06T12:30:07Z\\",\\n \\"Status\\": \\"Allocated\\",\\n \\"Descritpion\\": \\"MyEipSegment\\",\\n \\"InstanceId\\": \\"eipsg-2zett8ba055tbsxme****\\",\\n \\"IpCount\\": \\"16\\",\\n \\"Name\\": \\"MyEipSegment\\",\\n \\"Segment\\": \\"161.xx.xx.32/28\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Zone\\": \\"cn-hangzhou-a\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n F7A6301A-64BA-41EC-8284-8F4838C15D1F\\n 1\\n 10\\n \\n 2020-03-06T12:30:07Z\\n Allocated\\n MyEipSegment\\n eipsg-2zett8ba055tbsxme****\\n 16\\n MyEipSegment\\n 161.xx.xx.32/28\\n cn-hangzhou\\n \\n","errorExample":""}]', + 'title' => 'DescribeEipSegment', + 'summary' => 'Queries contiguous elastic IP address (EIP) groups.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ReleaseEipSegmentAddress' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the contiguous EIPs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SegmentInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the contiguous EIP group to be released.'."\n" + ."\n" + .'The system releases all EIPs in the group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eipsg-2zett8ba055tbsxme****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001sdfg', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F7A6301A-64BA-41EC-8284-8F4838C15D1F', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectEipStatus', + 'errorMessage' => 'Current elastic IP status does not support this operation.', + ], + [ + 'errorCode' => 'Forbidden.ChargeTypeIsPrepaid', + 'errorMessage' => 'It\'s forbidden to release a prepaid EIP', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'The eip instance owener error', + ], + [ + 'errorCode' => 'TaskConflict.AssociateGlobalAccelerationInstance', + 'errorMessage' => 'Operate too frequent.', + ], + [ + 'errorCode' => 'InvalidOperation.DeletionProtection', + 'errorMessage' => 'The instance cannnot delete because of deletion protecion.', + ], + [ + 'errorCode' => 'OperationFailed.InstanceNotExist', + 'errorMessage' => 'Operation failed because eip segment instance not exist.', + ], + [ + 'errorCode' => 'OperationFailed.EipNumInconsistent', + 'errorMessage' => 'Operation failed because the number of eip is inconsistent.', + ], + [ + 'errorCode' => 'OperationFailed.EipStatusInvalid', + 'errorMessage' => 'Operation failed because eip instance status invalid.', + ], + [ + 'errorCode' => 'OperationFailed.EipInBwp', + 'errorMessage' => 'Operation failed because eip instance has been added to the bandwidth package.', + ], + [ + 'errorCode' => 'Forbidden.EipInBwp', + 'errorMessage' => 'The EIP has been associated with an EIP bandwidth plan.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation ID is not found.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified region is not found during access authentication.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F7A6301A-64BA-41EC-8284-8F4838C15D1F\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F7A6301A-64BA-41EC-8284-8F4838C15D1F\\n","errorExample":""}]', + 'title' => 'ReleaseEipSegmentAddress', + 'summary' => 'Releases contiguous elastic IP addresses (EIPs).', + 'description' => '* After you call the **ReleaseEipSegmentAddress** operation, all EIPs in the specified group are released.'."\n" + ."\n" + .'* **ReleaseEipSegmentAddress** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeEipSegment](~~156063~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the group is in the **Releasing** state, EIPs in the group are being released. In this state, you can only query the group and cannot perform other operations.'."\n" + .' * If you cannot query the group of contiguous EIPs, the contiguous EIPs are released.'."\n" + ."\n" + .'* You cannot repeatedly call the **ReleaseEipSegmentAddress** operation to release a group of contiguous EIPs within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyEipForwardMode' => [ + 'summary' => 'Modifies the EIP forwarding mode.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs. You can call the DescribeRegions operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP whose attributes you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-j5ebhbw3br92fy****', + ], + ], + [ + 'name' => 'Mode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The association mode. Valid values:'."\n" + ."\n" + .'* **NAT** (default): the standard NAT mode.'."\n" + .'* **MULTI_BINDED**: the multi-EIP-to-ENI mode.'."\n" + .'* **BINDED**: the cut-through mode.'."\n" + ."\n" + .'> This parameter is required only if **InstanceType** is set to **NetworkInterface**.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'BINDED', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs. You can call the DescribeRegions operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **RequestId** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '62C6A6A5-1534-53D9-AB1E-C9307A147ED5', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Region.NotSupport', + 'errorMessage' => 'Region not support.', + ], + [ + 'errorCode' => 'Instance.ModeError', + 'errorMessage' => 'eip instance mode error.', + ], + [ + 'errorCode' => 'Instance.StatusError', + 'errorMessage' => 'eip status error.', + ], + [ + 'errorCode' => 'ENI.BindEcs', + 'errorMessage' => 'eni bind ecs.', + ], + [ + 'errorCode' => 'Forbidden.PrePaidBindedEip', + 'errorMessage' => 'prepaid eip cannot be direct.', + ], + [ + 'errorCode' => 'BindInstance.NotSupport', + 'errorMessage' => 'eip can only change mode when it is allocated or bind eni.', + ], + [ + 'errorCode' => 'IncorrectStatus.EipInstance', + 'errorMessage' => 'Eip instance\'s status is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'Instance.NotFound', + 'errorMessage' => 'eip instance not found.', + ], + [ + 'errorCode' => 'ENI.NotFound', + 'errorMessage' => 'eni not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"62C6A6A5-1534-53D9-AB1E-C9307A147ED5\\"\\n}","type":"json"}]', + 'title' => 'ModifyEipForwardMode', + ], + 'AssociateEipAddress' => [ + 'summary' => 'Associates an elastic IP address (EIP) with an instance in the same region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AllocationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP that you want to associate with an instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zeerraiwb7ujsxdc****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance with which you want to associate the EIP.'."\n" + ."\n" + .'You can enter the ID of a NAT gateway, CLB instance, ECS instance, secondary ENI, HAVIP, or IP address.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-2zebb08phyczzawe****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the instance with which you want to associate the EIP. Valid values:'."\n" + ."\n" + .'* **Nat**: NAT gateway'."\n" + .'* **SlbInstance**: CLB instance'."\n" + .'* **EcsInstance** (default): ECS instance'."\n" + .'* **NetworkInterface**: secondary ENI'."\n" + .'* **HaVip**: HAVIP'."\n" + .'* **IpAddress**: IP address'."\n" + ."\n" + .'> The default value is **EcsInstance**. If the instance with which you want to associate the EIP is not an ECS instance, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsInstance', + ], + ], + [ + 'name' => 'InstanceRegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the instance with which you want to associate the EIP resides.'."\n" + ."\n" + .'> This parameter is required only when the EIP is added to a shared Global Accelerator (GA) instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address in the CIDR block of the vSwitch.'."\n" + ."\n" + .'If you leave this parameter empty, the system allocates a private IP address based on the VPC ID and vSwitch ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'Mode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The association mode. Valid values:'."\n" + ."\n" + .'* **NAT** (default): NAT mode'."\n" + .'* **MULTI_BINDED**: multi-EIP-to-ENI mode'."\n" + .'* **BINDED**: cut-network interface controller mode'."\n" + ."\n" + .'> This parameter is required only when **InstanceType** is set to **NetworkInterface**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'NAT', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC in which an IPv4 gateway is created. The VPC and the EIP must be in the same region.'."\n" + ."\n" + .'When you associate an EIP with an IP address, the system can enable the IP address to access the Internet based on VPC route configurations.'."\n" + ."\n" + .'> This parameter is required if **InstanceType** is set to **IpAddress**, which indicates that the EIP is to be associated with an IP address.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-257gqcdfvx6n****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidAssociation.Duplicated', + 'errorMessage' => 'Specified instance already is associated.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Specified instance is not in VPC.', + ], + [ + 'errorCode' => 'InvalidParameter.Mismatch', + 'errorMessage' => 'Specified elastic IP address and ECS instance are not in the same region.', + ], + [ + 'errorCode' => 'IncorrectEipStatus', + 'errorMessage' => 'Current elastic IP status does not support this operation', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'Current instance status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified value of InstanceType is not supported.', + ], + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'HaVip can be operated by this action only when it\'s status is Available or InUse.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter is not valid.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The eip operate too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'InvalidBindingStatus', + 'errorMessage' => 'The eip binding status invalid.', + ], + [ + 'errorCode' => 'BIND_INSTANCE_HAVE_PORTMAP_OR_BIND_EIP', + 'errorMessage' => 'The instance may have portMap or already bind eip.', + ], + [ + 'errorCode' => 'EIP_CAN_NOT_ASSOCIATE_WITH_PUBLIC_IP', + 'errorMessage' => 'instance already bind natpublicip,cannot bind eip.', + ], + [ + 'errorCode' => 'BIND_INSTANCE_OWENER_ERROR', + 'errorMessage' => 'Cannot operate the eip.', + ], + [ + 'errorCode' => 'NATGATEWAY_FINANCIALLOCKED', + 'errorMessage' => 'The NatGateway has expire, cannot do bind operation.', + ], + [ + 'errorCode' => 'InvalidParameter.InstanceTypeNotSupport', + 'errorMessage' => 'The specified instance type is not support.', + ], + [ + 'errorCode' => 'QuotaExceeded.NumberOfTrafficEip', + 'errorMessage' => 'The number of traffic eip on natgw exceed limitation.', + ], + [ + 'errorCode' => 'QuotaExceeded.NumberOfEip', + 'errorMessage' => 'Binded eip Quota exceed on this NatGw.', + ], + [ + 'errorCode' => 'Forbidden.EipCanNotBindGatgw', + 'errorMessage' => 'Eip can not bind on natgw.', + ], + [ + 'errorCode' => 'InvalidAction.Denied', + 'errorMessage' => 'Action is denied due to unfinished Eip configuration modification.', + ], + [ + 'errorCode' => 'InstanceType.NotSupport', + 'errorMessage' => 'The instance type is invalid.', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'BindInstance.NotSupported', + 'errorMessage' => 'bind instance type %s is not supported.', + ], + [ + 'errorCode' => 'Forbidden.InstanceBandwidthNotZero', + 'errorMessage' => 'Eip can not bind with instance when it\'s bandwidth is not zero.', + ], + [ + 'errorCode' => 'INSTANCE_TYPE_NOT_SUPPORT', + 'errorMessage' => 'The instance type is invalid.', + ], + [ + 'errorCode' => 'ServerRegion.Invalid', + 'errorMessage' => 'Eip bind remote server region invalid.', + ], + [ + 'errorCode' => 'Eni.Attached', + 'errorMessage' => 'The eni should be detached from ecs when associating with direct eip.', + ], + [ + 'errorCode' => 'Eni.HasSubIp', + 'errorMessage' => 'Eni has sub ip can not bind direct eip.', + ], + [ + 'errorCode' => 'Invalid.DirectEip.BindType', + 'errorMessage' => 'The direct eip can be only associated with eni.', + ], + [ + 'errorCode' => 'InvalidStatus.EcsStatusNotSupport', + 'errorMessage' => 'The special instance status is not support operate', + ], + [ + 'errorCode' => 'Invalid.Function.NotSupported', + 'errorMessage' => 'Multi-IP function is under test, the region or uid is not supported.', + ], + [ + 'errorCode' => 'InvalidStatus.EniStatusNotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniInstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidNexthop.DirectEni', + 'errorMessage' => 'The direct Eni cannot be nexthop.', + ], + [ + 'errorCode' => 'Mode.Conflict', + 'errorMessage' => 'The eni can bind only one mode of eip.', + ], + [ + 'errorCode' => 'Mode.NotSupport', + 'errorMessage' => 'The user cannot use multi direct eip.', + ], + [ + 'errorCode' => 'QuotaExceed.MultiBindedEip', + 'errorMessage' => 'The number of multi binded eip is over limit.', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'OperationFailed.EniSubIp', + 'errorMessage' => 'Eni has sub ip can not bind direct eip.', + ], + [ + 'errorCode' => 'InvalidEip.EipQuotaExceeded', + 'errorMessage' => 'The specified eni assigned eip is more than privateIp.', + ], + [ + 'errorCode' => 'OperationFailed.QueryCommodityInfo', + 'errorMessage' => 'Operation failed because quey commodity info error.', + ], + [ + 'errorCode' => 'OperationUnsupported.MultiIp', + 'errorMessage' => 'Multi ip function is not support.', + ], + [ + 'errorCode' => 'InvalidNicOrVm.NotFound', + 'errorMessage' => 'Bind nic or vm not exist.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipBindModel', + 'errorMessage' => 'The instance type of ecs does not support MULTI_BINDED model Eip.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EipBindRemote.BackendRegionMustBeSingle', + 'errorMessage' => 'eip bind remote instance, backend region must be single', + ], + [ + 'errorCode' => 'InvalidParameter.BindingInstanceRegion', + 'errorMessage' => 'The specified BindingInstanceRegion is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.HavipBoundPortmap', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Mode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidStatus.NotAllow', + 'errorMessage' => 'Bind instance status invalid', + ], + [ + 'errorCode' => 'InvalidInstance.NotExist', + 'errorMessage' => 'Bind instance data not exist', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId not exist.', + ], + [ + 'errorCode' => 'ResourceQueryError', + 'errorMessage' => 'The specified resource is queried error.', + ], + [ + 'errorCode' => 'InvalidStatus.InstanceHasBandWidth', + 'errorMessage' => 'The specified instance bandwidth invalid.', + ], + [ + 'errorCode' => 'OperationDenied.CloudBoxResourceExist', + 'errorMessage' => 'The operation is not allowed because there are resources related to the cloud box in VPC.', + ], + [ + 'errorCode' => 'OperationDenied.CloudBoxVSwitchExist', + 'errorMessage' => 'The operation is not allowed because a cloud box type vSwitch exists in VPC.', + ], + [ + 'errorCode' => 'OperationDenied.NoAvailablePrivateIp', + 'errorMessage' => 'The operation is failed because of vSwitch has not availalbe private ip', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.IpAddress', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.Ipv4GatewayNotOpenedInVpc', + 'errorMessage' => 'The operation is failed because Ipv4Gateway is not opened in Vpc.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv4GatewayNotActivatedInVpc', + 'errorMessage' => 'The operation is failed because Ipv4Gateway is not activated in Vpc.', + ], + [ + 'errorCode' => 'OperationDenied.L2EipBindIpAddress', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'The eip instance owner error', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'UnsupportedFeature.EipBindIpAddress', + 'errorMessage' => 'The feature of EipBindIpAddress is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.InstanceNotExist', + 'errorMessage' => 'The ECS instance does not exist, or is not a VPC VM.', + ], + [ + 'errorCode' => 'OperationDenied.Ipv4GatewayExist', + 'errorMessage' => 'The operation is not allowed because of Ipv4GatewayExist.', + ], + [ + 'errorCode' => 'OperationFailed.EipBindModeConflict', + 'errorMessage' => 'Eips can not bind Eni with NAT mode and MULTI_BINDED mode at the same time.', + ], + [ + 'errorCode' => 'OperationFailed.EcsMigrating', + 'errorMessage' => 'The operation is failed because of ECS is migrating.', + ], + [ + 'errorCode' => 'OperationFailed.IpPrefixConflict', + 'errorMessage' => 'The operation failed due to the IP prefix of the ENI.', + ], + [ + 'errorCode' => 'UnsupportedFeature.EipBindPrefixIp', + 'errorMessage' => 'The feature of EipBindPrefixIp is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedEipBindMode', + 'errorMessage' => 'The operation is not supported for the NAT gateway due to its EIP binding mode.', + ], + [ + 'errorCode' => 'OperationDenied.Unauthorized', + 'errorMessage' => 'The operation is not allowed because the user is not in the whitelist.', + ], + [ + 'errorCode' => 'OperationFailed.SystemBusy', + 'errorMessage' => 'Operation failed because system is busy.', + ], + [ + 'errorCode' => 'OperationFailed.PrivateIpAddressNotExist', + 'errorMessage' => 'The operation failed because the PrivateIpAddress is not found.', + ], + [ + 'errorCode' => 'IllegalParamFormat.%s', + 'errorMessage' => 'The param format of %s is illegal.', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => 'The param of InstanceId can\'t be null or empty.', + ], + [ + 'errorCode' => 'InvalidEniType.SlaveEni', + 'errorMessage' => 'The eni type cannot be slave eni.', + ], + [ + 'errorCode' => 'IllegalParam.PrivateIpAddress', + 'errorMessage' => 'The specified PrivateIpAddress is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation ID is not found.', + ], + [ + 'errorCode' => 'InvalidInstanId.NotFound', + 'errorMessage' => 'Specified instance does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of InstanceRegionId is not supported.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified instance is not found during access authentication.', + ], + [ + 'errorCode' => 'OperationDenied.VpcIpv4GatewayEnabled', + 'errorMessage' => 'The operation is not allowed because of the VPC of the NAT gateway has opened IPv4 Gateway.', + ], + ], + 503 => [ + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The request has failed due to a temporary failure of the server.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'AssociateEipAddress', + 'description' => '* You can associate an EIP with an Elastic Compute Service (ECS) instance, a Classic Load Balancer (CLB) instance, a secondary elastic network interface (ENI), a NAT gateway, or a high-availability virtual IP address (HAVIP) in the same region. The ECS instance and CLB instance must be deployed in a virtual private cloud (VPC).'."\n" + ."\n" + .'* **AssociateEipAddress** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. You can call the [DescribeEipAddresses](~~120193~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the EIP is in the **Associating** state, the EIP is being associated. In this state, you can only query the EIP and cannot perform other operations.'."\n" + .' * If the EIP is in the **InUse** state, the EIP is associated.'."\n" + ."\n" + .'* You cannot call the **AssociateEipAddress** operation to associate an EIP with multiple instances at a time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssociateEipAddressBatch' => [ + 'summary' => 'Associates multiple elastic IP addresses (EIPs) with an instance in the same region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIPs belong. You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BindedInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance with which you want to associate the EIPs.'."\n" + ."\n" + .'The instance can be a NAT gateway or a secondary ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-hp3akk9irtd69jad****', + ], + ], + [ + 'name' => 'BindedInstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the instance with which you want to associate the EIPs. Valid values:'."\n" + ."\n" + .'* **Nat**: NAT gateway'."\n" + .'* **NetworkInterface**: secondary ENI'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'Nat', + ], + ], + [ + 'name' => 'Mode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The association mode. Set the value to **MULTI_BINDED**, which specifies the Multi-EIP-to-ENI mode.'."\n" + ."\n" + .'This parameter is required only when **BindedInstanceType** is set to **NetworkInterface**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'MULTI_BINDED', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The EIPs to be associated with the instance.'."\n" + ."\n" + .'You must enter at least one EIP. You can enter up to 50 EIPs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IDs of the EIPs to be associated with the instance.'."\n" + ."\n" + .'You must enter at least one ID. You can enter up to 50 IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eip-2zeerraiwb7ujsxdc**** ', + ], + 'required' => true, + 'maxItems' => 50, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIPs belong. You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidAssociation.Duplicated', + 'errorMessage' => 'Specified instance already is associated.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Specified instance is not in VPC.', + ], + [ + 'errorCode' => 'InvalidParameter.Mismatch', + 'errorMessage' => 'Specified elastic IP address and ECS instance are not in the same region.', + ], + [ + 'errorCode' => 'IncorrectEipStatus', + 'errorMessage' => 'Current elastic IP status does not support this operation', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'Current instance status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified value of InstanceType is not supported.', + ], + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'HaVip can be operated by this action only when it\'s status is Available or InUse.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter is not valid.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'The eip instance owener error', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The eip operate too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'InvalidBindingStatus', + 'errorMessage' => 'The eip binding status invalid.', + ], + [ + 'errorCode' => 'BIND_INSTANCE_HAVE_PORTMAP_OR_BIND_EIP', + 'errorMessage' => 'The instance may have portMap or already bind eip.', + ], + [ + 'errorCode' => 'EIP_CAN_NOT_ASSOCIATE_WITH_PUBLIC_IP', + 'errorMessage' => 'instance already bind natpublicip,cannot bind eip.', + ], + [ + 'errorCode' => 'BIND_INSTANCE_OWENER_ERROR', + 'errorMessage' => 'Cannot operate the eip.', + ], + [ + 'errorCode' => 'NATGATEWAY_FINANCIALLOCKED', + 'errorMessage' => 'The NatGateway has expire, cannot do bind operation.', + ], + [ + 'errorCode' => 'InvalidParameter.InstanceTypeNotSupport', + 'errorMessage' => 'The specified instance type is not support.', + ], + [ + 'errorCode' => 'QuotaExceeded.NumberOfTrafficEip', + 'errorMessage' => 'The number of traffic eip on natgw exceed limitation.', + ], + [ + 'errorCode' => 'QuotaExceeded.NumberOfEip', + 'errorMessage' => 'Binded eip Quota exceed on this NatGw.', + ], + [ + 'errorCode' => 'InvalidEipBandwidth.OutOfMaxValue', + 'errorMessage' => 'The Eip Bandwidth is invalid.', + ], + [ + 'errorCode' => 'Forbidden.EipCanNotBindGatgw', + 'errorMessage' => 'Eip can not bind on natgw.', + ], + [ + 'errorCode' => 'InvalidAction.Denied', + 'errorMessage' => 'Action is denied due to unfinished Eip configuration modification.', + ], + [ + 'errorCode' => 'InstanceType.NotSupport', + 'errorMessage' => 'The instance type is invalid.', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'BindInstance.NotSupported', + 'errorMessage' => 'bind instance type %s is not supported.', + ], + [ + 'errorCode' => 'Forbidden.InstanceBandwidthNotZero', + 'errorMessage' => 'Eip can not bind with instance when it\'s bandwidth is not zero.', + ], + [ + 'errorCode' => 'INSTANCE_TYPE_NOT_SUPPORT', + 'errorMessage' => 'The instance type is invalid.', + ], + [ + 'errorCode' => 'ServerRegion.Invalid', + 'errorMessage' => 'Eip bind remote server region invalid.', + ], + [ + 'errorCode' => 'Eni.Attached', + 'errorMessage' => 'The eni should be detached from ecs when associating with direct eip.', + ], + [ + 'errorCode' => 'Invalid.DirectEip.BindType', + 'errorMessage' => 'The direct eip can be only associated with eni.', + ], + [ + 'errorCode' => 'Invalid.Function.NotSupported', + 'errorMessage' => 'Multi-IP function is under test, the region or uid is not supported.', + ], + [ + 'errorCode' => 'InvalidStatus.EniStatusNotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniInstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => '%s', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EipBatchBind.TypeNotSupport', + 'errorMessage' => 'eip batch bind type not support', + ], + [ + 'errorCode' => 'OperationFailed.RegionNotMatch', + 'errorMessage' => 'The specified eip is not in this region', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.Unauthorized', + 'errorMessage' => 'The operation is not allowed because the user is not in the whitelist.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedEipBindMode', + 'errorMessage' => 'The operation is not supported for the NAT gateway due to its EIP binding mode.', + ], + [ + 'errorCode' => 'OperationDenied.Ipv4GatewayExist', + 'errorMessage' => 'The operation is not allowed because of Ipv4GatewayExist.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation ID is not found.', + ], + [ + 'errorCode' => 'InvalidInstanId.NotFound', + 'errorMessage' => 'Specified instance does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of InstanceRegionId is not supported.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified instance is not found during access authentication.', + ], + [ + 'errorCode' => 'OperationDenied.VpcIpv4GatewayEnabled', + 'errorMessage' => 'The operation is not allowed because of the VPC of the NAT gateway has opened IPv4 Gateway.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeEipAddresses', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'AssociateEipAddressBatch', + 'description' => '* You can call the **AssociateEipAddressBatch** operation to associate EIPs with an instance in the same region. The instance must be a NAT gateway or a secondary elastic network interface (ENI). For more information about how to associate EIPs with other instances, see [AssociateEipAddress](~~120195~~).'."\n" + ."\n" + .'* **AssociateEipAddressBatch** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeEipAddresses](~~120193~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the EIP is in the **Associating** state, the EIP is being associated. You can only query the EIP and cannot perform other operations.'."\n" + .' * If the EIP is in the **InUse** state, the EIP is associated.'."\n" + ."\n" + .'* You cannot call the **AssociateEipAddressBatch** operation to associate an EIP with multiple instances at a time.'."\n", + ], + 'UnassociateEipAddress' => [ + 'summary' => 'Disassociates an elastic IP address (EIP) from a cloud resource.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to disassociate the EIP from a NAT gateway if a DNAT or SNAT entry is added to the NAT gateway. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AllocationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP that you want to disassociate.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zeerraiwb7uj6i0d****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance from which you want to disassociate the EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-hp3akk9irtd69jad****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of instance from which you want to disassociate the EIP. Valid values:'."\n" + ."\n" + .'* **EcsInstance** (default): an Elastic Compute Service (ECS) instance in a virtual private cloud (VPC)'."\n" + .'* **SlbInstance**: a Server Load Balancer (SLB) instance in a VPC'."\n" + .'* **NetworkInterface**: a secondary elastic network interface (ENI) in a VPC'."\n" + .'* **Nat**: a NAT gateway'."\n" + .'* **HaVip**: a high-availability virtual IP address (HAVIP)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsInstance', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP address of the ECS instance or the secondary ENI from which you want to disassociate the EIP.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.XX.XX.2', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11**** ', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectEipStatus', + 'errorMessage' => 'Current elastic IP status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'Specified instance does not exist.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of instance does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified value of InstanceType is not supported.', + ], + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'This operation is denied because satus of the specified HaVip is neither Available nor InUse.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Eip of default vpc not allow this operation', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter is not valid.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The eip operate too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'InvalidBindingStatus', + 'errorMessage' => 'The eip binding status invalid.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'InvalidIpStatus.HasBeenUsedBySnatTable', + 'errorMessage' => 'The removed ip address has been used by snat table.', + ], + [ + 'errorCode' => 'InvalidIpStatus.HasBeenUsedByForwardEntry', + 'errorMessage' => 'The specified address has been used by forwardTable.', + ], + [ + 'errorCode' => 'Eni.Attached', + 'errorMessage' => 'The eni should be detached from ecs when associating with direct eip.', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'InvalidStatus.EcsStatusNotSupport', + 'errorMessage' => 'The special instance status Pending is not support operate', + ], + [ + 'errorCode' => 'InvalidStatus.EniStatusNotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidStatus.SnatOrDnat', + 'errorMessage' => 'Operation failed because snat or dnat in unstable status.', + ], + [ + 'errorCode' => 'DependencyViolation.SnatEntry', + 'errorMessage' => 'The specified eip is in ip pool.', + ], + [ + 'errorCode' => '%s', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidStatus.NotAllow', + 'errorMessage' => 'Bind instance status invalid', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'The eip instance owener error', + ], + [ + 'errorCode' => 'InvalidLoadBalancerId.NotFound', + 'errorMessage' => 'LoadBalancerId does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.SystemBusy', + 'errorMessage' => 'Operation failed because system is busy.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation ID is not found', + ], + [ + 'errorCode' => 'InvalidBindInstance.NotFound', + 'errorMessage' => 'The specified bind instance does not exist.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified region is not found during access authentication.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'UnassociateEipAddress', + 'description' => '* **UnassociateEipAddress** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeEipAddresses](~~120193~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the EIP is in the **Unassociating** state, the EIP is being disassociated. In this state, you can only query the EIP and cannot perform other operations.'."\n" + .' * If the EIP is in the **Available** state, the EIP is disassociated.'."\n" + ."\n" + .'* You cannot repeatedly call the **UnassociateEipAddress** operation within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreatePublicIpAddressPool' => [ + 'summary' => 'Creates an IP address pool.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP** (default)'."\n" + .'* **BGP_PRO**'."\n" + ."\n" + .'For more information about BGP (Multi-ISP) lines and BGP (Multi-ISP) Pro lines, see the "Line types" section in the [What is EIP?](~~32321~~) topic.'."\n" + ."\n" + .'* If you are allowed to use single-ISP bandwidth, you can also use one of the following values:'."\n" + ."\n" + .' * **ChinaTelecom**'."\n" + .' * **ChinaUnicom**'."\n" + .' * **ChinaMobile**'."\n" + .' * **ChinaTelecom_L2**'."\n" + .' * **ChinaUnicom_L2**'."\n" + .' * **ChinaMobile_L2**'."\n" + ."\n" + .'* If your services are deployed in China East 1 Finance, this parameter is required and you must set the value to **BGP_FinanceCloud**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IP address pool.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AddressPoolName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IP address pool.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AddressPoolDescription', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a value, and you must make sure that each request has a unique token value. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. The value of **RequestId** for each API request is different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to precheck only this request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without creating an IP address pool. The system checks the required parameters, request format, and service limits. If the request fails to pass the precheck, an error code is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the request. This is the default value. If the request passes the precheck, a 2xx HTTP status code is returned and the IP address pool is created.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IP address pool belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4pcdvf****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the IP address pool.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'BizType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The service type of the IP address pool. Valid values:'."\n" + ."\n" + .'* **CloudBox** Only cloud box users can select this type.'."\n" + .'* **Default**: This is the default value.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Default', + ], + ], + [ + 'name' => 'Zones', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The zone of the IP address pool. If you set **BizType** to **CloudBox**, this parameter is required.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The zone of the IP address pool. If you set **BizType** to **CloudBox**, this parameter is required. You can specify only one zone.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ap-southeast-1-lzdvn-cb', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key of the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value of the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'SecurityProtectionTypes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The editions of Anti-DDoS.'."\n" + .'- If you do not specify this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'- If you set the parameter to AntiDDoS_Enhanced, Anti-DDoS Pro/Premium is used.', + 'type' => 'array', + 'items' => [ + 'description' => 'The editions of Anti-DDoS.'."\n" + .'- If you do not specify this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'- If you set the parameter to AntiDDoS_Enhanced, Anti-DDoS Pro/Premium is used.', + 'type' => 'string', + 'required' => false, + 'example' => 'AntiDDoS_Enhanced', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'PulbicIpAddressPoolId' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IP address pool belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4pcdvf****', + ], + 'PublicIpAddressPoolId' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Isp', + 'errorMessage' => 'The param of Isp [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'The param of Name [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'The param of Description [%s] is illegal.', + ], + [ + 'errorCode' => 'Forbidden.CreatePublicIpAddressPool', + 'errorMessage' => 'Authentication is failed for creating public ip address pool.', + ], + [ + 'errorCode' => 'QuotaExceeded.PublicIpAddressPool', + 'errorMessage' => 'The quota of PublicIpAddressPool is exceeded.', + ], + [ + 'errorCode' => 'MissingParam.Zones', + 'errorMessage' => 'The Zones parameter is required.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'IllegalParam.Zones', + 'errorMessage' => 'The values of Zones [%s] are invalid.', + ], + [ + 'errorCode' => 'IllegalParamSize.Zones', + 'errorMessage' => 'An invalid number of zones is specified.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Isp', + 'errorMessage' => 'The feature of Isp is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.ISPNotSupportDdosEnhanced', + 'errorMessage' => 'The operation is not allowed because of DdosEnhanced is not supported by current isp.', + ], + [ + 'errorCode' => 'IllegalParam.SecurityProtectionTypes', + 'errorMessage' => 'The param of securityProtectionTypes is illegal.', + ], + [ + 'errorCode' => 'IncorrectBusinessStatus.PublicIpAddressPool', + 'errorMessage' => 'The business status of publicIpAddressPool is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.PublicIpAddressPool', + 'errorMessage' => 'You are not authorized to use the requested service of publicIpAddressPool. Ensure that you have subscribed to the service you are trying to use.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PulbicIpAddressPoolId\\": \\"pippool-6wetvn6fumkgycssx****\\",\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4pcdvf****\\",\\n \\"PublicIpAddressPoolId\\": \\"pippool-6wetvn6fumkgycssx****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n pippool-6wetvn6fumkgycssx****\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n rg-acfmxazb4pcdvf****\\n pippool-6wetvn6fumkgycssx****\\n","errorExample":""}]', + 'title' => 'CreatePublicIpAddressPool', + 'description' => 'By default, the IP address pool feature is unavailable. You can apply for the privilege to use the **IP address pool feature** in the Quota Center console. For more information, see the "Request a quota increase in the Quota Center console" section in the [Manage EIP quotas](~~108213~~) topic.'."\n", + ], + 'OpenPublicIpAddressPoolService' => [ + 'summary' => 'Enables the IP address pool feature.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => false, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655442455', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region.'."\n" + .'Call [DescribeRegion](https://www.alibabacloud.com/help/en/vpc/developer-reference/api-vpc-2016-04-28-describeregions?spm=a2c63.p38356.0.i2) to get the region ID.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region.'."\n" + .'Call [DescribeRegion](https://www.alibabacloud.com/help/en/vpc/developer-reference/api-vpc-2016-04-28-describeregions?spm=a2c63.p38356.0.i2) to get the region ID.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '28CF47AB-B6C0-5FA2-80C7-2B37726A92CB', + ], + 'Code' => [ + 'description' => 'The error code.', + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The response messages.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ExceedPurchaseLimit', + 'errorMessage' => 'You have reached the limit of purchase quantity.', + ], + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource', + ], + [ + 'errorCode' => 'OperationFailed.QuotaNotEnough', + 'errorMessage' => 'Your quota is insufficient. Please contact your channel partner to increase your quota', + ], + [ + 'errorCode' => 'Order.NoRealNameAuthentication', + 'errorMessage' => 'Real-name verification has not been completed for the account.', + ], + [ + 'errorCode' => 'OperationFailed.BasicInfoUncompleted', + 'errorMessage' => 'You have not completed your basic personal information, please complete the information and try again.', + ], + [ + 'errorCode' => 'Forbidden.OpenPublicIpAddressPool', + 'errorMessage' => 'Authentication is failed for opening public ip address pool. Please apply for permission at the quota center.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"28CF47AB-B6C0-5FA2-80C7-2B37726A92CB\\",\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"successful\\"\\n}","type":"json"}]', + 'title' => 'OpenPublicIpAddressPoolService', + ], + 'AddPublicIpAddressPoolCidrBlock' => [ + 'summary' => 'Adds a CIDR block to an IP address pool.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + ], + [ + 'name' => 'CidrBlock', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The CIDR block.'."\n" + ."\n" + .'> You can specify only one of **CidrBlock** and **CidrMask**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.0.XX.XX/24', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IP address pool to which you want to add the CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'CidrMask', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The subnet mask of the CIDR block. After you enter the subnet mask, the system automatically allocates IP addresses.'."\n" + ."\n" + .'Valid values: **24** to **28**.'."\n" + ."\n" + .'> You can specify only one of **CidrBlock** and **CidrMask**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '24', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'CidrBlock' => [ + 'description' => 'The CIDR block.'."\n", + 'type' => 'string', + 'example' => '47.0.XX.XX/28', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The param of CidrBlock [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlockMask', + 'errorMessage' => 'The param of CidrBlock Mask [%s] is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.PublicIpAddressPool', + 'errorMessage' => 'The status of PublicIpAddressPool [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.CidrBlockBelongToOtherUser', + 'errorMessage' => 'The operation is not allowed because of CidrBlock belong to other user.', + ], + [ + 'errorCode' => 'ResourceNotFound.PublicIpAddressPool', + 'errorMessage' => 'The specified resource ofPublicIpAddressPool [%s] is not found.', + ], + [ + 'errorCode' => 'QuotaExceeded.PoolIpQuantity', + 'errorMessage' => 'The quota of PoolIpQuantity is exceeded.', + ], + [ + 'errorCode' => 'OperationDenied.OperateSharedResource', + 'errorMessage' => 'The operation is not allowed because of the PublicIpAddressPool is a shared resource.', + ], + [ + 'errorCode' => 'MissingParam.CidrBlockOrCidrMask', + 'errorMessage' => 'CidrBlock or CidrMask is not specified.', + ], + [ + 'errorCode' => 'DuplicatedParam.CidrBlockAndCidrMask', + 'errorMessage' => 'CidrBlock and CidrMask cannot be specified at the same time.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The instance is locked due to outstanding payments.', + ], + [ + 'errorCode' => 'ResourceNotEnough.CidrBlock', + 'errorMessage' => 'The specified resource is not enough.', + ], + [ + 'errorCode' => 'MissingParam.PublicIpAddressPoolId', + 'errorMessage' => 'The parameter PublicIpAddressPoolId is missing.', + ], + [ + 'errorCode' => 'OperationFailed.ResourceNotEnough', + 'errorMessage' => 'Insufficient resources.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListPublicIpAddressPoolCidrBlocks', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 3, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"CidrBlock\\": \\"47.0.XX.XX/28\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'AddPublicIpAddressPoolCidrBlock', + 'description' => 'Before you call this operation, take note of the following limits:'."\n" + ."\n" + .'* The CIDR block and the IP address pool must belong to the same region.'."\n" + ."\n" + .'* The CIDR block and the IP address pool must use the same line type.'."\n" + ."\n" + .'* **AddPublicIpAddressPoolCidrBlock** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListPublicIpAddressPoolCidrBlocks](~~429436~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the CIDR block is in the **Modifying** state, the CIDR block is being added. In this state, you can only query the CIDR block and cannot perform other operations.'."\n" + .' * If the CIDR block is in the **Created** state, the CIDR block is added.'."\n" + ."\n" + .'* You cannot repeatedly call the **AddPublicIpAddressPoolCidrBlock** operation to add a CIDR block to an IP address pool within the specified period of time.'."\n", + ], + 'TransformEipSegmentToPublicIpAddressPool' => [ + 'summary' => 'Migrate a contiguous EIP group to an IP address pool.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The ID of the contiguous EIP group to be migrated.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eipsg-2zett8ba055tbsxme****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the contiguous EIP group belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The name of the IP address pool.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AddressPoolName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IP address pool.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AddressPoolDescription', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the address pool belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4pcdvf****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among all requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** is different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PublicIpAddressPoolId' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IP address pool belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4pcdvf****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'The param of Name [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'The param of Description [%s] is illegal.', + ], + [ + 'errorCode' => 'Forbidden.CreatePublicIpAddressPool', + 'errorMessage' => 'Authentication is failed for creating public ip address pool.', + ], + [ + 'errorCode' => 'QuotaExceeded.PublicIpAddressPool', + 'errorMessage' => 'The quota of PublicIpAddressPool is exceeded.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature is not supported in current region.', + ], + [ + 'errorCode' => 'IncorrectBusinessStatus.PublicIpAddressPool', + 'errorMessage' => 'The business status of publicIpAddressPool is incorrect.', + ], + [ + 'errorCode' => 'OptInRequired.PublicIpAddressPool', + 'errorMessage' => 'You are not authorized to use the requested service of publicIpAddressPool. Ensure that you have subscribed to the service you are trying to use.', + ], + [ + 'errorCode' => 'QuotaExceeded.PoolIpQuantity', + 'errorMessage' => 'The quota of PoolIpQuantity is exceeded.', + ], + [ + 'errorCode' => 'ResourceNotFound.EipSegment', + 'errorMessage' => 'The specified resource of Eip Segment is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListPublicIpAddressPools', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PublicIpAddressPoolId\\": \\"pippool-6wetvn6fumkgycssx****\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4pcdvf****\\",\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","type":"json"}]', + 'title' => 'TransformEipSegmentToPublicIpAddressPool', + ], + 'DeletePublicIpAddressPool' => [ + 'summary' => 'Deletes an IP address pool.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe60000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the IP address pool.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.PublicIpAddressPool', + 'errorMessage' => 'The status of PublicIpAddressPool [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceInUse.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool [%s] is in use.', + ], + [ + 'errorCode' => 'OperationFailed.ResourceIsShared', + 'errorMessage' => 'The operation is failed because of PublicIpAddressPool is shared with other users.', + ], + [ + 'errorCode' => 'OperationDenied.OperateSharedResource', + 'errorMessage' => 'The operation is not allowed because of the PublicIpAddressPool is a shared resource.', + ], + [ + 'errorCode' => 'ResourceNotFound.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool [%s] is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListPublicIpAddressPools', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'DeletePublicIpAddressPool', + 'description' => 'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* Before you delete an IP address pool, make sure that no IP address in the pool is being used.'."\n" + ."\n" + .'* **DeletePublicIpAddressPool** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListPublicIpAddressPools](~~429433~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the IP address pool is in the **Deleting** state, the IP address pool is being deleted. In this state. you can only query the IP address pool and cannot perform other operations.'."\n" + .' * If you cannot query the IP address pool, the IP address pool is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeletePublicIpAddressPool** operation to delete an IP address pool within the specified period of time.'."\n", + ], + 'DeletePublicIpAddressPoolCidrBlock' => [ + 'summary' => 'Deletes a CIDR block from an IP address pool.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + ], + [ + 'name' => 'CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '47.0.XX.XX/24', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IP address pool from which you want to delete a CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The param of CidrBlock [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlockMask', + 'errorMessage' => 'The param of CidrBlock Mask [%s] is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.PublicIpAddressPool', + 'errorMessage' => 'The status of PublicIpAddressPool [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool [%s] is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.CidrBlock', + 'errorMessage' => 'The specified resource of CidrBlock [%s] is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.CidrBlock', + 'errorMessage' => 'The status of CidrBlock [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceInUse.CidrBlock', + 'errorMessage' => 'The specified resource of CidrBlock [%s] is in use.', + ], + [ + 'errorCode' => 'OperationDenied.OperateSharedResource', + 'errorMessage' => 'The operation is not allowed because of the PublicIpAddressPool is a shared resource.', + ], + [ + 'errorCode' => 'MissingParam.PublicIpAddressPoolId', + 'errorMessage' => 'The parameter PublicIpAddressPoolId is missing.', + ], + [ + 'errorCode' => 'MissingParam.CidrBlockOrCidrMask', + 'errorMessage' => 'CidrBlock or CidrMask is not specified.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListPublicIpAddressPoolCidrBlocks', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'DeletePublicIpAddressPoolCidrBlock', + 'description' => 'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* Before you delete a CIDR block, make sure that it is not being used.'."\n" + ."\n" + .'* **DeletePublicIpAddressPoolCidrBlock** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListPublicIpAddressPoolCidrBlocks](~~429436~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the CIDR block is in the **Deleting** state, the CIDR block is being deleted. In this state, you can only query the CIDR block and cannot perform other operations.'."\n" + .' * If you cannot query the CIDR block, the CIDR block is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeletePublicIpAddressPoolCidrBlock** operation to delete a CIDR block within the specified period of time.'."\n", + ], + 'UpdatePublicIpAddressPoolAttribute' => [ + 'summary' => 'Modifies the attributes of an IP address pool.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IP address pool.'."\n" + ."\n" + .'This parameter is optional. The name must be 1 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AddressPoolName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IP address pool.'."\n" + ."\n" + .'This parameter is optional. If you enter a description, the description must be 2 to 256 characters in length, and cannot start with http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AddressPoolDescription', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IP address pool that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Name ', + 'errorMessage' => 'The param of Name [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'The param of Description [%s] is illegal.', + ], + [ + 'errorCode' => 'ResourceNotFound.PublicIpAddressPool', + 'errorMessage' => 'The specified resource of PublicIpAddressPool [%s] is not found.', + ], + [ + 'errorCode' => 'OperationDenied.OperateSharedResource', + 'errorMessage' => 'The operation is not allowed because of the PublicIpAddressPool is a shared resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'UpdatePublicIpAddressPoolAttribute', + 'description' => 'You cannot repeatedly call the **UpdatePublicIpAddressPoolAttribute** operation to modify the attributes of an IP address pool within the specified period of time.'."\n", + ], + 'ListPublicIpAddressPools' => [ + 'summary' => 'Queries available IP address pools.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'PublicIpAddressPoolIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the IP address pool.'."\n" + ."\n" + .'You can enter up to 100 IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the IP address pool.'."\n" + ."\n" + .'You can enter up to 100 IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + 'required' => false, + 'maxItems' => 100, + 'minItems' => 0, + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the IP address pool. Valid values:'."\n" + ."\n" + .'* **Created**'."\n" + .'* **Deleting**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Created', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries to return. Valid values: **10** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP** (default): BGP (Multi-ISP) line'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro line'."\n" + ."\n" + .'For more information about the BGP (Multi-ISP) line and BGP (Multi-ISP) Pro line, see the "Line types" section of [What is EIP?](~~32321~~)'."\n" + ."\n" + .'If you are allowed to use single-ISP bandwidth, you can also choose one of the following values:'."\n" + ."\n" + .'* **ChinaTelecom**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaTelecom_L2**'."\n" + .'* **ChinaUnicom_L2**'."\n" + .'* **ChinaMobile_L2**'."\n" + ."\n" + .'If your services are deployed in China East 1 Finance, this parameter is required and you must set the parameter to **BGP_FinanceCloud**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IP address pool.'."\n" + ."\n" + .'If you enter a name, the name must be 1 to 128 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AddressPoolName', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IP address pool belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4pcdvf****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IP address pool that you want to query resides.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'SecurityProtectionEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable Anti-DDoS Pro/Premium. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PublicIpAddressPoolList' => [ + 'description' => 'The IP address pools.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The structure of the IP address pool.'."\n", + 'type' => 'object', + 'properties' => [ + 'PublicIpAddressPoolId' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + 'RegionId' => [ + 'description' => 'The region ID of the IP address pool.'."\n", + 'type' => 'string', + 'example' => 'cn-chengdu', + ], + 'CreationTime' => [ + 'description' => 'The time when the IP address pool was created. The time is displayed in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2022-05-10T01:37:38Z', + ], + 'Isp' => [ + 'description' => 'The line type.'."\n" + ."\n" + .'* **BGP**: BGP (Multi-ISP)'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro'."\n" + ."\n" + .'For more information about BGP (Multi-ISP) and BGP (Multi-ISP) Pro, see [EIP line types](~~32321~~).'."\n" + ."\n" + .'If you are allowed to use single-ISP bandwidth, one of the following values may be returned:'."\n" + ."\n" + .'* **ChinaTelecom**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaTelecom_L2**'."\n" + .'* **ChinaUnicom_L2**'."\n" + .'* **ChinaMobile_L2**'."\n" + ."\n" + .'If your services are deployed in China East 1 Finance, **BGP_FinanceCloud** is returned.'."\n", + 'type' => 'string', + 'example' => 'BGP', + ], + 'Name' => [ + 'description' => 'The name of the IP address pool.'."\n", + 'type' => 'string', + 'example' => 'AddressPoolName', + ], + 'Status' => [ + 'description' => 'The status of the IP address pool.'."\n" + ."\n" + .'* **Created**'."\n" + .'* **Deleting**'."\n" + .'* **Modifying**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'Description' => [ + 'description' => 'The description of the IP address pool.'."\n", + 'type' => 'string', + 'example' => 'AddressPoolDescription', + ], + 'TotalIpNum' => [ + 'description' => 'The total number of available IP addresses in the public IP address pool.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'UsedIpNum' => [ + 'description' => 'The number of used IP addresses in the public IP address pool.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'IpAddressRemaining' => [ + 'description' => 'Indicates whether idle IP addresses exist.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'UserType' => [ + 'description' => 'The user type. Valid values:'."\n" + ."\n" + .'* **admin**: An administrator can delete, modify, and query IP address pools, and can assign elastic IP addresses (EIPs) to the pool.'."\n" + .'* **user**: A user can only assign EIPs to the IP address pool and query the IP address pool, but cannot modify or delete the IP address pool.'."\n", + 'type' => 'string', + 'example' => 'admin', + ], + 'OwnerId' => [ + 'description' => 'The Alibaba Cloud account to which the IP address pool belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '121012345612****', + ], + 'ShareType' => [ + 'description' => 'The sharing type of the IP address pool.'."\n" + ."\n" + .'* If **Shared** is returned, the IP address pool is shared.'."\n" + .'* If an empty value is returned, the IP address pool is not shared.'."\n", + 'type' => 'string', + 'example' => 'Shared', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IP address pool belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4pcdvf****', + ], + 'Tags' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + ], + ], + ], + 'BizType' => [ + 'description' => 'The service type of the IP address pool.'."\n" + ."\n" + .'* **CloudBox** Only cloud box users can select this type.'."\n" + .'* **Default** (default)'."\n", + 'type' => 'string', + 'example' => 'CloudBox', + ], + 'Zones' => [ + 'description' => 'The zone of the IP address pool. This parameter is returned only when the service type of the IP address pool is CloudBox.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The zone of the IP address pool. This parameter is returned only when the service type of the IP address pool is CloudBox.'."\n", + 'type' => 'string', + 'example' => 'ap-southeast-1-lzdvn-cb', + ], + ], + 'SecurityProtectionTypes' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If you do not set this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'* If the value is set to **AntiDDoS_Enhanced**, Anti-DDoS Pro/Premium is used.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If you do not set this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'* If the value is set to **AntiDDoS_Enhanced**, Anti-DDoS Pro/Premium is used.'."\n", + 'type' => 'string', + 'example' => 'AntiDDoS_Enhanced', + ], + ], + 'BusinessStatus' => [ + 'description' => 'The status of the IP address pool.'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Isp', + 'errorMessage' => 'The param of Isp [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 1,\\n \\"PublicIpAddressPoolList\\": [\\n {\\n \\"PublicIpAddressPoolId\\": \\"pippool-6wetvn6fumkgycssx****\\",\\n \\"RegionId\\": \\"cn-chengdu\\",\\n \\"CreationTime\\": \\"2022-05-10T01:37:38Z\\",\\n \\"Isp\\": \\"BGP\\",\\n \\"Name\\": \\"AddressPoolName\\",\\n \\"Status\\": \\"Created\\",\\n \\"Description\\": \\"AddressPoolDescription\\",\\n \\"TotalIpNum\\": 100,\\n \\"UsedIpNum\\": 20,\\n \\"IpAddressRemaining\\": true,\\n \\"UserType\\": \\"admin\\",\\n \\"OwnerId\\": 0,\\n \\"ShareType\\": \\"Shared\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4pcdvf****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceDept\\"\\n }\\n ],\\n \\"BizType\\": \\"CloudBox\\",\\n \\"Zones\\": [\\n \\"ap-southeast-1-lzdvn-cb\\"\\n ],\\n \\"SecurityProtectionTypes\\": [\\n \\"AntiDDoS_Enhanced\\"\\n ],\\n \\"BusinessStatus\\": \\"Normal\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 1\\n \\n pippool-6wetvn6fumkgycssx****\\n cn-chengdu\\n 2022-05-10T01:37:38Z\\n BGP\\n AddressPoolName\\n Created\\n AddressPoolDescription\\n 100\\n 20\\n true\\n false\\n Shared\\n rg-acfmxazb4pcdvf****\\n \\n FinanceDept\\n FinanceDept\\n \\n CloudBox\\n ap-southeast-1-lzdvn-cb\\n \\n","errorExample":""}]', + 'title' => 'ListPublicIpAddressPools', + 'description' => "\n" + ."\n", + ], + 'ListPublicIpAddressPoolCidrBlocks' => [ + 'summary' => 'Queries CIDR blocks in an IP address pool.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'PublicIpAddressPoolId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + ], + [ + 'name' => 'CidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.0.XX.XX/24', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries to return. Valid values: **10** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If this is your first query and no next queries are to be sent, ignore this parameter.'."\n" + .'* If a subsequent query is to be sent, set the parameter to the value of NextToken that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the required parameters, request syntax, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the CIDR blocks.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If **NextToken** was not returned, it indicates that no additional results exist.'."\n" + .'* If **NextToken** is returned, the value is the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The maximum number of entries returned. Valid values: **10** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PublicIpPoolCidrBlockList' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PublicIpAddressPoolId' => [ + 'description' => 'The information about the CIDR blocks.'."\n", + 'type' => 'string', + 'example' => 'pippool-6wetvn6fumkgycssx****', + ], + 'CidrBlock' => [ + 'description' => 'The ID of the IP address pool.'."\n", + 'type' => 'string', + 'example' => '47.0.XX.XX/24', + ], + 'CreationTime' => [ + 'description' => 'The CIDR blocks.'."\n", + 'type' => 'string', + 'example' => '2022-05-10T01:37:38Z', + ], + 'Status' => [ + 'description' => 'The time when the CIDR block was created. The time is displayed in `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'UsedIpNum' => [ + 'description' => 'The status of the CIDR block in the IP address pool. Valid values:'."\n" + ."\n" + .'* **Created**: available'."\n" + .'* **Deleting**: being deleted'."\n" + .'* **Modifying**: being modified'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'TotalIpNum' => [ + 'description' => 'The total number of available IP addresses in the CIDR block.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + [ + 'errorCode' => 'MissingParam.PublicIpAddressPoolId', + 'errorMessage' => 'The parameter PublicIpAddressPoolId is missing.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 10,\\n \\"PublicIpPoolCidrBlockList\\": [\\n {\\n \\"PublicIpAddressPoolId\\": \\"pippool-6wetvn6fumkgycssx****\\",\\n \\"CidrBlock\\": \\"47.0.XX.XX/24\\",\\n \\"CreationTime\\": \\"2022-05-10T01:37:38Z\\",\\n \\"Status\\": \\"Created\\",\\n \\"UsedIpNum\\": 20,\\n \\"TotalIpNum\\": 20\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 10\\n 10\\n \\n pippool-6wetvn6fumkgycssx****\\n 47.0.XX.XX/24\\n 2022-05-10T01:37:38Z\\n Created\\n 20\\n 20\\n \\n","errorExample":""}]', + 'title' => 'ListPublicIpAddressPoolCidrBlocks', + ], + 'GetPublicIpAddressPoolServiceStatus' => [ + 'summary' => 'Queries whether the IP address pool feature is enabled.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655442455', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IP address pool.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IP address pool.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-06F82A1B457', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the IP address pool feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** You can call OpenPublicIpAddressPoolService to enable the IP address pool feature.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'The user is not authorized to operate on the specified resource, or the API operation does not support RAM.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-06F82A1B457\\",\\n \\"Enabled\\": true\\n}","type":"json"}]', + 'title' => 'GetPublicIpAddressPoolServiceStatus', + ], + 'DescribeEipMonitorData' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the EIP belongs. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AllocationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eip-2zeerraiwb7uj6idcfv****', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The beginning of the time range to query. The time must be in UTC. Specify the time in the ISO 8601 standard in `YYYY-MM-DDThh:mm:ssZ` format. For example, `2013-01-10T12:00:00Z` specifies 20:00:00 (UTC+8) on January 10, 2013.'."\n" + ."\n" + .'If the value of seconds (ss) is not 00, the start time is automatically rounded up to the next minute.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '2020-01-05T01:05:05Z', + ], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end of the time range to query. The time must be in UTC. Specify the time in the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format. For example, `2013-01-10T12:00:00Z` specifies 20:00:00 (UTC+8) on January 10, 2013.'."\n" + ."\n" + .'If the value of seconds (ss) is not 00, the end time is automatically rounded up to the next minute.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '2020-01-05T03:05:10Z', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The duration of each monitoring data entry. Unit: seconds. Valid values: **60** (default), **300**, **900**, and **3600**.'."\n" + ."\n" + .'* If the value of **(EndTime** - **StartTime**)/**Period** is greater than 200, a maximum of 200 monitoring data entries are returned at a time.'."\n" + .'* If the value of (**EndTime** - **StartTime**)/**Period** is less than or equal to 200, only the monitoring data collected between the start time and end time is returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '60', + 'default' => '60', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C8B26B44-0189-443E-9816-D951F59623A9', + ], + 'EipMonitorDatas' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EipMonitorData' => [ + 'description' => 'The detailed information about the monitoring data of the EIP.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'EipTX' => [ + 'description' => 'The outbound traffic. Unit: bytes.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '343', + ], + 'EipPackets' => [ + 'description' => 'The number of packets.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3434', + ], + 'EipBandwidth' => [ + 'description' => 'The average bandwidth value. This value is equal to **EipFlow**/**Period**. Unit: byte/s. The default value of **Period** is **60**. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TimeStamp' => [ + 'description' => 'The timestamp of the monitoring data. Specify the time in the ISO8601 standard. Example: `2020-01-21T09:50:23Z`.'."\n", + 'type' => 'string', + 'example' => '2020-01-21T09:50:23Z', + ], + 'EipFlow' => [ + 'description' => 'The sum of inbound and outbound traffic.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '465', + ], + 'EipRX' => [ + 'description' => 'The inbound traffic. Unit: bytes.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '122', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.TooMany', + 'errorMessage' => 'monitor parameter too many data required.', + ], + [ + 'errorCode' => 'InvalidStartTime.Malformed', + 'errorMessage' => 'The specified parameter "StartTime" is not valid.', + ], + [ + 'errorCode' => 'InvalidEndTime.Malformed', + 'errorMessage' => 'The specified parameter "EndTime" is not valid.', + ], + [ + 'errorCode' => 'InvalidPeriod.ValueNotSupported', + 'errorMessage' => 'The specified parameter "Period" is not valid.', + ], + [ + 'errorCode' => 'InvalidStartTime.TooEarly', + 'errorMessage' => 'The specified parameter "StartTime" is too early.', + ], + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation id is not found.', + ], + [ + 'errorCode' => 'OperationDenied.TooManyDataQueried', + 'errorMessage' => 'Specified operation is denied as too many data to return.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidIpInstanceId.NotFound', + 'errorMessage' => 'The specified Eip InstanceId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId provided does not exist in our records.', + ], + [ + 'errorCode' => 'Forbidden.RegionNotFound', + 'errorMessage' => 'Specified region is not found during access authentication.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C8B26B44-0189-443E-9816-D951F59623A9\\",\\n \\"EipMonitorDatas\\": {\\n \\"EipMonitorData\\": [\\n {\\n \\"EipTX\\": 343,\\n \\"EipPackets\\": 3434,\\n \\"EipBandwidth\\": 10,\\n \\"TimeStamp\\": \\"2020-01-21T09:50:23Z\\",\\n \\"EipFlow\\": 465,\\n \\"EipRX\\": 122\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n C8B26B44-0189-443E-9816-D951F59623A9\\n \\n 343\\n 3434\\n 10\\n 2020-01-21T09:50:23Z\\n 465\\n 122\\n \\n","errorExample":""}]', + 'title' => 'DescribeEipMonitorData', + 'summary' => 'Queries the monitoring data of an elastic IP address (EIP). You can query monitoring data within the last 30 days, and get up to 400 data points in each request.', + 'description' => 'To improve user experience in querying monitoring data, we recommend that you call the DescribeMetricList API operation provided by CloudMonitor to query EIP monitoring data. For more information, see [DescribeMetricList](~~51936~~) and [EIP monitoring data](~~162874~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'SetHighDefinitionMonitorLogStatus' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'LogProject', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Simple Log Service (SLS) project.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'hdmonitor-cn-shenzhen', + ], + ], + [ + 'name' => 'LogStore', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Logstore.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'hdmonitor', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance for which you want to configure fine-grained monitoring.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eip-wz9fi6qboho9fwgx7****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. Set the value to **EIP**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EIP', + 'default' => 'EIP', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of fine-grained monitoring. Valid values:'."\n" + ."\n" + .'* **ON**'."\n" + .'* **OFF**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ON', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'Success' => [ + 'description' => 'Indicates whether the operation is performed. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'ProjectOrLogstoreNotExist', + 'errorMessage' => 'The specified project or logstore does not exist.', + ], + [ + 'errorCode' => 'SourceProjectNotExist', + 'errorMessage' => 'The Source Project or logstore does not exist.', + ], + [ + 'errorCode' => 'Unauthorized', + 'errorMessage' => 'This api does not support sub user or role.', + ], + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'Invalid parameter.', + ], + [ + 'errorCode' => 'InvalidAction.NotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'RuleExist', + 'errorMessage' => 'The rule has already existed.', + ], + [ + 'errorCode' => 'InvalidHdMonitorStatus', + 'errorMessage' => 'Current instance status is not valid for this action.', + ], + [ + 'errorCode' => 'HdMonitorEipNumberOverLimit', + 'errorMessage' => 'This user has reached the maximum Eip number of high definination.', + ], + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation id is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n 54B48E3D-DF70-471B-AA93-08E683A1B457\\n","errorExample":""}]', + 'title' => 'SetHighDefinitionMonitorLogStatus', + 'summary' => 'Configures fine-grained monitoring for an elastic IP address (EIP).', + 'description' => 'You cannot repeatedly call **SetHighDefinitionMonitorLogStatus** within a specific period of time.'."\n", + ], + 'DescribeHighDefinitionMonitorLogAttribute' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance whose fine-grained monitoring configurations you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eip-wz9fi6qboho9fwgx7****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the instance. Set the value to **EIP**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EIP', + 'default' => 'EIP', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'LogProject' => [ + 'description' => 'The name of the project.'."\n", + 'type' => 'string', + 'example' => 'hdmonitor-cn-shenzhen-1658206966225390', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457', + ], + 'LogStore' => [ + 'description' => 'The name of the Logstore.'."\n", + 'type' => 'string', + 'example' => 'hdmonitor', + ], + 'Success' => [ + 'description' => 'Indicates whether the operation is performed. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance whose fine-grained monitoring configurations you want to query.'."\n", + 'type' => 'string', + 'example' => 'eip-wz9fi6qboho9fwgx7****', + ], + 'InstanceType' => [ + 'description' => 'The type of instance for which you want to query fine-grained monitoring. Only **EIP** may be returned.'."\n", + 'type' => 'string', + 'example' => 'EIP', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'ProjectNotExist', + 'errorMessage' => 'The Project does not exist.', + ], + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'Invalid parameter.', + ], + [ + 'errorCode' => 'InvalidHdMonitorStatus', + 'errorMessage' => 'Current instance status is not valid for this action.', + ], + [ + 'errorCode' => 'InvalidAction.NotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'InvalidAllocationId.NotFound', + 'errorMessage' => 'Specified allocation id is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"LogProject\\": \\"hdmonitor-cn-shenzhen-1658206966225390\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\",\\n \\"LogStore\\": \\"hdmonitor\\",\\n \\"Success\\": \\"true\\",\\n \\"InstanceId\\": \\"eip-wz9fi6qboho9fwgx7****\\",\\n \\"InstanceType\\": \\"EIP\\"\\n}","errorExample":""},{"type":"xml","example":"\\n54B48E3D-DF70-471B-AA93-08E683A1B457\\nhdmonitor\\neip-wz9fi6qboho9fwgx7****\\nEIP\\nhdmonitor-cn-shenzhen-1658206966225390\\ntrue\\n","errorExample":""}]', + 'title' => 'DescribeHighDefinitionMonitorLogAttribute', + 'summary' => 'Queries configurations about the fine-grained monitoring feature of an elastic IP address (EIP).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribePublicIpAddress' => [ + 'summary' => 'Queries the public IP address range of a virtual private cloud (VPC) in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: **1** to **100**. Default value: **100**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '100', + 'default' => '100', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region that you want to query. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region that you want to query. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4** (default)'."\n" + .'* **IPv6**', + 'type' => 'string', + 'required' => false, + 'example' => 'ipv4', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'Success' => [ + 'description' => 'Indicates whether the call is successful. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Code' => [ + 'description' => 'The HTTP status codes returned.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The response messages.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the public IP addresses belong.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'PublicIpAddress' => [ + 'description' => 'The range of the public IP addresses of the VPC in the region.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The range of the public IP addresses of the VPC in the region.'."\n", + 'type' => 'string', + 'example' => '101.37.XX.XX/24', + ], + 'example' => '110.11.1.0/24', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => 'Param IpVersion illegal.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"Success\\": true,\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"test\\",\\n \\"PageSize\\": 100,\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"PublicIpAddress\\": [\\n \\"101.37.XX.XX/24\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n true\\n 200\\n test\\n 100\\n 1\\n 1\\n cn-hangzhou\\n 101.37.XX.XX/24\\n","errorExample":""}]', + 'title' => 'DescribePublicIpAddress', + 'description' => 'You cannot query the range of public IP addresses of a classic network by calling the **DescribePublicIpAddress** operation.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateCommonBandwidthPackage' => [ + 'summary' => 'Creates an Internet Shared Bandwidth instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Zone', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone of the Internet Shared Bandwidth instance. This parameter is required if you create an Internet Shared Bandwidth instance for a cloud box.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ap-southeast-1-lzdvn-cb', + ], + ], + [ + 'name' => 'ISP', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP** (default) All regions support BGP (Multi-ISP).'."\n" + .'* **BGP_PRO** BGP (Multi-ISP) Pro lines are available in the China (Hong Kong), Singapore, Japan (Tokyo), Philippines (Manila), Malaysia (Kuala Lumpur), Indonesia (Jakarta), and Thailand (Bangkok) regions.'."\n" + ."\n" + .'If you are allowed to use single-ISP bandwidth, you can also use one of the following values:'."\n" + ."\n" + .'* **ChinaTelecom**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaTelecom_L2**'."\n" + .'* **ChinaUnicom_L2**'."\n" + .'* **ChinaMobile_L2**'."\n" + ."\n" + .'If your services are deployed in China East 1 Finance, this parameter is required and you must set the value to **BGP_FinanceCloud**.', + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test123', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.', + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazdjdhd****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the Internet Shared Bandwidth instance. Unit: Mbit/s.'."\n" + ."\n" + .'Valid values: **1** to **1000**. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '1000', + ], + ], + [ + 'name' => 'Ratio', + 'in' => 'query', + 'schema' => [ + 'description' => 'The percentage of the minimum bandwidth commitment. Set the parameter to **20**.'."\n" + ."\n" + .'> This parameter is available only on the Alibaba Cloud China site.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '0', + 'example' => '20', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the Internet Shared Bandwidth instance. Set the value to **PayByTraffic**, which specifies the pay-by-data-transfer billing method.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '', + 'default' => 'PayByBandwidth', + ], + ], + [ + 'name' => 'SecurityProtectionTypes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If you do not set this parameter, Anti-DDoS Origin Basic is used.'."\n" + .'* If you set the value to **AntiDDoS_Enhanced**, Anti-DDoS Pro/Premium is used.'."\n" + ."\n" + .'Valid values of **N**: **1** to **10**. You can specify only one Anti-DDoS edition. If you specify more than one edition, the operation may fail.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AntiDDoS_Enhanced', + ], + 'required' => false, + 'example' => 'AntiDDoS_Enhanced', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'type' => 'string', + ], + 'Value' => [ + 'type' => 'string', + ], + ], + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'BandwidthPackageId' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'example' => 'cbwp-bp1vevu8h3ieh****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'FF39F653-033E-4CD9-9EDF-3CCA5A71FBC3', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazdjdhd****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotEnough.Bandwidth', + 'errorMessage' => 'The specified resource of Bandwidth is not enough.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'BandwidthPackageOperation.conflict', + 'errorMessage' => 'BandwidthPackage operation conflict, please wait a moment and try again.', + ], + [ + 'errorCode' => 'InvalidParameter.Bandwidth', + 'errorMessage' => 'The specified bandwidth is not valid.', + ], + [ + 'errorCode' => 'BandwidthPackage.QuotaExceeded', + 'errorMessage' => 'Create BandwidthPackage has exceeded quota.', + ], + [ + 'errorCode' => 'IllegalParam.Zone', + 'errorMessage' => 'Zone is illegal.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidChargeType', + 'errorMessage' => 'The specified chargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.SaleValidate', + 'errorMessage' => 'Validate sale condition with subArticle failed.', + ], + [ + 'errorCode' => 'OperationFailed.SyncOrderToSub', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'IllegalParam.Ratio', + 'errorMessage' => 'The specified ratio is not valid.', + ], + [ + 'errorCode' => 'OperationUnsupported.InvalidZone', + 'errorMessage' => 'It is not allowed to create CBWP in the specified zone.', + ], + [ + 'errorCode' => 'IllegalParam.AvailableZone', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.NameOrDescription', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.SystemBusy', + 'errorMessage' => 'Operation failed because system is busy.', + ], + [ + 'errorCode' => 'UnsupportedRegion.CloudBoxInternet', + 'errorMessage' => 'The region does not support cloud box public network.', + ], + [ + 'errorCode' => 'ResourceNotEnough.CommonBandWidthPackage', + 'errorMessage' => 'The specified resource commonBandWidthPackage is not enough.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'Specified value of ZoneId is not exists.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"BandwidthPackageId\\": \\"cbwp-bp1vevu8h3ieh****\\",\\n \\"RequestId\\": \\"FF39F653-033E-4CD9-9EDF-3CCA5A71FBC3\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazdjdhd****\\"\\n}","type":"json"}]', + 'title' => 'CreateCommonBandwidthPackage', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AddCommonBandwidthPackageIp' => [ + 'summary' => 'Associates an elastic IP address (EIP) with an Internet Shared Bandwidth instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-2ze2ic1xd2qeqasdf****', + ], + ], + [ + 'name' => 'IpInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zeerraiwb7uqwed****', + ], + ], + [ + 'name' => 'IpType', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'EIP', + 'default' => 'EIP', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => '', + 'type' => 'string', + 'example' => '01FDDD49-C4B7-4D2A-A8E5-A93915C450A6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.SecurityProtectionTypesInconsistent', + 'errorMessage' => 'The operation is not allowed because of SecurityProtectionTypesInconsistent.', + ], + [ + 'errorCode' => 'IpInstanceId.AlreadyInBandwidthPackage', + 'errorMessage' => 'The specified Eip InstanceId already in bandwidthPackage.', + ], + [ + 'errorCode' => 'IpInstanceId.BizStatusInvalid', + 'errorMessage' => 'The specified Eip BizStatus is Disable, Cannot add to bandwidthPackage.', + ], + [ + 'errorCode' => 'IpInstanceId.ChargeType.NotSupport', + 'errorMessage' => 'The specified Eip instance is PrePaid type, Cannot add to BandwidthPackage.', + ], + [ + 'errorCode' => 'BandwidthPackageId.InvalidBizStatus', + 'errorMessage' => 'The specified BandwidthPackageId has been FinancialLocked, Cannot add Ip.', + ], + [ + 'errorCode' => 'IpInstanceId.QuotaExceeded', + 'errorMessage' => 'The specified BandwidthPackageId has too many ip in it. exceed the quota , Cannot add more.', + ], + [ + 'errorCode' => 'EipOperation.TooFrequently', + 'errorMessage' => 'The specified Eip add into bandwidthPackage too frequently. please add later.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'IncorrectStatus.Eip', + 'errorMessage' => 'Eip status error.', + ], + [ + 'errorCode' => 'OperationUnsupported.IpType', + 'errorMessage' => 'Ip type does not support the operation.', + ], + [ + 'errorCode' => 'ParamExclusive.IpInstanceIdAndBandwidthPackageId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidBandwidthPackage.NotExist', + 'errorMessage' => 'Eip bandwidth package not exist.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'OperationFailed.ZoneIdInconsistent', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.BandwidthPackageIpVersion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId is not found.', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'Mismatch.CloudBoxCbwpZoneAndEipZone', + 'errorMessage' => 'The CbwpZone and EipZone are mismatched.', + ], + [ + 'errorCode' => 'MissingParam.BandwidthPackageId', + 'errorMessage' => 'The parameter bandwidthPackageId is mandatory.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified bandwidthPackageId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidIpInstanceId.NotFound', + 'errorMessage' => 'The specified Eip InstanceId does not exist in our records.', + ], + [ + 'errorCode' => 'IpInstanceId.InvalidIpInternetChargeType', + 'errorMessage' => 'The hybrid type eip not support add into bandwidthPackage of PayBytraffic type.', + ], + [ + 'errorCode' => 'BandwidthPackageId.InvalidBandwidth', + 'errorMessage' => 'The hybrid type eip can not add into low bandwidth bandwidthPackage.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\n","errorExample":""}]', + 'title' => 'AddCommonBandwidthPackageIp', + 'description' => 'Associates an elastic IP address (EIP) with an Internet Shared Bandwidth instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AddCommonBandwidthPackageIps' => [ + 'summary' => 'Associates multiple elastic IP addresses (EIPs) with an Internet Shared Bandwidth instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~448570~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-2ze2ic1xd2qeqasdf****', + ], + ], + [ + 'name' => 'IpType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP type. Set the value to **EIP**, which indicates that an EIP is added to the Shared Bandwidth.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EIP', + 'default' => 'EIP', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'IpInstanceIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of EIPs that you want to associate with the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'You can specify at most 10 EIP IDs at a time.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The list of EIPs that you want to associate with the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'You can specify at most 10 EIP IDs at a time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eip-2zeerraiwb7uqwed****', + ], + 'required' => true, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '01FDDD49-C4B7-4D2A-A8E5-A93915C450A6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.SecurityProtectionTypesInconsistent', + 'errorMessage' => 'The operation is not allowed because of SecurityProtectionTypesInconsistent.', + ], + [ + 'errorCode' => 'InvalidIpInstanceId.NotFound', + 'errorMessage' => 'The specified Eip InstanceId does not exist in our records.', + ], + [ + 'errorCode' => 'EIP_ALREADY_IN_BANDWIDTHPACKAGE', + 'errorMessage' => 'The Eip already in bandwidthPackage.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified bandwidthPackageId does not exist in our records.', + ], + [ + 'errorCode' => 'IpInstanceId.AlreadyInBandwidthPackage', + 'errorMessage' => 'The specified Eip InstanceId already in bandwidthPackage.', + ], + [ + 'errorCode' => 'IpInstanceId.BizStatusInvalid', + 'errorMessage' => 'The specified Eip BizStatus is Disable, Cannot add to bandwidthPackage.', + ], + [ + 'errorCode' => 'IpInstanceId.ChargeType.NotSupport', + 'errorMessage' => 'The specified Eip instance is PrePaid type, Cannot add to BandwidthPackage.', + ], + [ + 'errorCode' => 'BandwidthPackageId.InvalidBizStatus', + 'errorMessage' => 'The specified BandwidthPackageId has been FinancialLocked, Cannot add Ip.', + ], + [ + 'errorCode' => 'IpInstanceId.QuotaExceeded', + 'errorMessage' => 'The specified BandwidthPackageId has too many ip in it. exceed the quota , Cannot add more.', + ], + [ + 'errorCode' => 'EipOperation.TooFrequently', + 'errorMessage' => 'The specified Eip add into bandwidthPackage too frequently. please add later.', + ], + [ + 'errorCode' => 'IpInstanceId.InvalidIpInternetChargeType', + 'errorMessage' => 'The hybrid type eip not support add into bandwidthPackage of PayBytraffic type.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'IncorrectStatus.Eip', + 'errorMessage' => 'Eip status error.', + ], + [ + 'errorCode' => 'OperationUnsupported.IpType', + 'errorMessage' => 'Ip type does not support the operation.', + ], + [ + 'errorCode' => 'ParamExclusive.IpInstanceIdAndBandwidthPackageId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidBandwidthPackage.NotExist', + 'errorMessage' => 'Eip bandwidth package not exist.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'BandwidthPackageId.InvalidBandwidth', + 'errorMessage' => 'The hybrid type eip can not add into low bandwidth bandwidthPackage.', + ], + [ + 'errorCode' => 'OperationFailed.ZoneIdInconsistent', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.BandwidthPackageIpVersion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'Mismatch.CloudBoxCbwpZoneAndEipZone', + 'errorMessage' => 'The CbwpZone and EipZone are mismatched.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId is not found.', + ], + [ + 'errorCode' => 'MissingParam.BandwidthPackageId', + 'errorMessage' => 'The parameter bandwidthPackageId is mandatory.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\n","errorExample":""}]', + 'title' => 'AddCommonBandwidthPackageIps', + 'description' => '* When you call this operation to associate EIPs with an Internet Shared Bandwidth instance, make sure that the EIPs meet the following requirements:'."\n" + ."\n" + .' * The EIPs use the pay-as-you-go billing method.'."\n" + .' * The EIP and the Internet Shared Bandwidth instance belong to the same region.'."\n" + .' * The line type of the EIPs is the same as that of the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'* **AddCommonBandwidthPackageIps** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeCommonBandwidthPackages](~~DescribeCommonBandwidthPackages~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the Internet Shared Bandwidth instance is in the **BINDING** state, the EIP is being associated with the Internet Shared Bandwidth instance. In this state, you can only query the Internet Shared Bandwidth instance and cannot perform other operations.'."\n" + .' * If the Internet Shared Bandwidth instance is in the **BINDED** state, the EIP is associated with the Internet Shared Bandwidth instance.'."\n", + ], + 'RemoveCommonBandwidthPackageIp' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-2ze2ic1xd2qeqk145****', + ], + ], + [ + 'name' => 'IpInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zeerraiwb7uj6i0d****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => '', + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IpInstanceId.NotBandwidthPackage', + 'errorMessage' => 'The specified IpInstanceId does not in bandwidthPackage.', + ], + [ + 'errorCode' => 'DependencyViolation.ip', + 'errorMessage' => 'The specified BandwidthPackageId has eip in it.', + ], + [ + 'errorCode' => 'EIP_BIND_NATGATEWAY', + 'errorMessage' => 'The eip have bind natgateway.', + ], + [ + 'errorCode' => 'IncorrectStatus.Eip', + 'errorMessage' => 'Eip status error.', + ], + [ + 'errorCode' => 'OperationFailed.SnatPoolIp', + 'errorMessage' => 'Multi ip in snat pool cannot remove ip from bandwidth package.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteEntry', + 'errorMessage' => 'vpc route table has route entry.', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'Trade_Sync_Create_Sub_ERROR', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'FAILED_INVOKE_INNER_API', + 'errorMessage' => 'Failed to invoke inner api.', + ], + [ + 'errorCode' => 'InvalidIP.IpInSnatPool', + 'errorMessage' => 'Multi ip in snat pool cannot remove ip from bandwidth package.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified bandwidthPackageId does not exist in our records.', + ], + [ + 'errorCode' => 'OperationUnsupported.IpNotInCbwp', + 'errorMessage' => 'The specified eip not exist in the commonBandwidthPackage.', + ], + [ + 'errorCode' => 'InvalidIpInstanceId.Malformed', + 'errorMessage' => 'The specified IpInstanceId is invalid.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipBindRemote', + 'errorMessage' => 'Eip bind remote ecs/slb, cannot remove it from bandwidthPackage.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId not exist.', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.SystemBusy', + 'errorMessage' => 'Operation failed because system is busy.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified bandwidthPackageId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'RemoveCommonBandwidthPackageIp', + 'summary' => 'Disassociates an EIP from an Internet Shared Bandwidth instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteCommonBandwidthPackage' => [ + 'summary' => 'Deletes an Internet Shared Bandwidth instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the Internet Shared Bandwidth instance is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully delete the Internet Shared Bandwidth instance. Valid values:'."\n" + ."\n" + .'* **false** (default): deletes the Internet Shared Bandwidth instance only when no EIPs are associated with the Internet Shared Bandwidth instance.'."\n" + .'* **true**: disassociates all EIPs from the Internet Shared Bandwidth instance and deletes the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-2ze2ic1xd2qeqk145pn4u', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B400EF57-60E3-4D61-B8FB-7FA8F72DF5A6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.%s', + 'errorMessage' => 'The param of %s is missing.', + ], + [ + 'errorCode' => 'DependencyViolation.Ips', + 'errorMessage' => 'The specified BandwidthPackageId has dependent resource ips.', + ], + [ + 'errorCode' => 'ForbiddenAction.PrePaid', + 'errorMessage' => 'The specified BandwidthPackageId is PrePaid.', + ], + [ + 'errorCode' => 'OperationFailed.BandwidthPackageNotEmpty', + 'errorMessage' => 'Eip bandwidth package not empty.', + ], + [ + 'errorCode' => 'InvalidOperation.DeletionProtection', + 'errorMessage' => 'The instance cannnot delete because of deletion protecion.', + ], + [ + 'errorCode' => 'OperationUnsupported.Release95Instance', + 'errorMessage' => 'Releasing instances that payBy95 or payByOld95 is unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.AddIpTaskInProcessing', + 'errorMessage' => 'Operation failed because add ip to common bandwidth task in processing.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B400EF57-60E3-4D61-B8FB-7FA8F72DF5A6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B400EF57-60E3-4D61-B8FB-7FA8F72DF5A6\\n","errorExample":""}]', + 'title' => 'DeleteCommonBandwidthPackage', + 'description' => 'You cannot repeatedly call the **DeleteCommonBandwidthPackage** operation to delete an Internet Shared Bandwidth instance within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyCommonBandwidthPackageAttribute' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the EIP bandwidth plan is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP bandwidth plan.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-2ze2ic1xd2qeqk145****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the EIP bandwidth plan. The name must be 2 to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test123', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the EIP bandwidth plan. The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'B450CAD8-50BC-4506-ADA7-35C6CE63E96B', + ], + ], + 'description' => 'The response.', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId not exist.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified bandwidthPackageId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B450CAD8-50BC-4506-ADA7-35C6CE63E96B\\"\\n}","errorExample":"\\n\\n B450CAD8-50BC-4506-ADA7-35C6CE63E96B\\n"},{"type":"xml","example":"\\r\\n\\r\\n B450CAD8-50BC-4506-ADA7-35C6CE63E96B\\r\\n","errorExample":"{\\n \\"RequestId\\":B450CAD8-50BC-4506-ADA7-35C6CE63E96B6\\"\\n}"}]', + 'title' => 'ModifyCommonBandwidthPackageAttribute', + 'summary' => 'Modifies the name and description of an EIP bandwidth plan.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyCommonBandwidthPackageSpec' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Internet Shared Bandwidth instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-2ze2ic1xd2qeqk145****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the Internet Shared Bandwidth instance. Unit: Mbit/s.'."\n" + ."\n" + .'Valid values: **1** to **1000**.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '1000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7F129000-F929-4AF5-BE8D-BAE434C795306', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotEnough.Bandwidth', + 'errorMessage' => 'The specified resource of Bandwidth is not enough.', + ], + [ + 'errorCode' => 'InvalidParameter.Bandwidth', + 'errorMessage' => 'The specified bandwidth is not valid.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId not exist.', + ], + [ + 'errorCode' => 'InvalidCommonBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.ResourceStatus', + 'errorMessage' => 'Resource status is abnormal for renew.', + ], + [ + 'errorCode' => 'SYSTEM.SALE_VALIDATE_UNEXPECTED_ERROR', + 'errorMessage' => 'You have arrears and do not meet the purchase conditions.', + ], + [ + 'errorCode' => 'OperationFailed.SyncOrderToSub', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'OperationFailed.SaleValidate', + 'errorMessage' => 'Validate sale condition with subArticle failed.', + ], + [ + 'errorCode' => 'OperationFailed.QueryCommodityInfo', + 'errorMessage' => 'Operation failed because quey commodity info error.', + ], + [ + 'errorCode' => 'OperationFailed.QueryPrice', + 'errorMessage' => 'Query price failed when create order.', + ], + [ + 'errorCode' => 'Forbidden.ChargeTypeIsPrepaid', + 'errorMessage' => 'It\'s forbidden to change prepaid CBWP\'s bandwidth by API. It can be changed on Aliyun web console.', + ], + [ + 'errorCode' => 'IncorrectStatus.CbwpModifying', + 'errorMessage' => 'Cbwp Modifying status is invalid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified BandwidthPackageId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidth.ValueNotSupported', + 'errorMessage' => 'The specified value of Bandwidth not supported.', + ], + [ + 'errorCode' => 'BandwidthPackage.FinancialLocked', + 'errorMessage' => 'The specified BandwidthPackage has been Financial Lock.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OrderError.BandwidthPackage', + 'errorMessage' => 'The Account failed to create order.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7F129000-F929-4AF5-BE8D-BAE434C795306\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7F129000-F929-4AF5-BE8D-BAE434C795306\\n","errorExample":""}]', + 'title' => 'ModifyCommonBandwidthPackageSpec', + 'summary' => 'Modifies the maximum bandwidth of an Internet Shared Bandwidth instance.', + 'description' => 'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* **ModifyCommonBandwidthPackageSpec** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeCommonBandwidthPackages](~~120309~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the Internet Shared Bandwidth instance is in the **Modifying** state, the maximum bandwidth of the Internet Shared Bandwidth instance is being modified. In this state, you can only query the Internet Shared Bandwidth instance and cannot perform other operations.'."\n" + .' * If the Internet Shared Bandwidth instance is in the **Available** state, the maximum bandwidth of the Internet Shared Bandwidth instance is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyCommonBandwidthPackageSpec** operation to modify the maximum bandwidth of an Internet Shared Bandwidth instance within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeCommonBandwidthPackages' => [ + 'summary' => 'Queries a list of Internet Shared Bandwidth instances in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to return the information about pending orders. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the Internet Shared Bandwidth instance resides.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cbwp-2ze2ic1xd2qeqk145****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test123', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1 to 50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the Internet Shared Bandwidth instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key to add to the Internet Shared Bandwidth instance. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyTest', + ], + 'Value' => [ + 'description' => 'The tag value to add to the Internet Shared Bandwidth instance. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ValueTest', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'SecurityProtectionEnabled', + 'in' => 'query', + 'schema' => [ + 'title' => '是否开启安全防护', + 'description' => 'Specifies whether to enable Anti-DDoS Pro/Premium. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '20E6FD1C-7321-4DAD-BDFD-EC8769E4AA33', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'CommonBandwidthPackages' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CommonBandwidthPackage' => [ + 'description' => 'The details of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ReservationActiveTime' => [ + 'description' => 'The time when the renewal took effect. The time is displayed in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2018-08-30T16:00:00Z', + ], + 'Status' => [ + 'description' => 'The status of the Internet Shared Bandwidth instance. Valid values:'."\n" + ."\n" + .'* **Available**: The Internet Shared Bandwidth instance is available.'."\n" + .'* **Modifying**: The Internet Shared Bandwidth instance is being modified.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'CreationTime' => [ + 'description' => 'The time when the Internet Shared Bandwidth instance was created. The time is displayed in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2017-06-28T06:39:20Z', + ], + 'ReservationOrderType' => [ + 'description' => 'The renewal method. Valid values:'."\n" + ."\n" + .'* **RENEWCHANGE**: renewal with a specification change'."\n" + .'* **TEMP_UPGRADE**: renewal with a temporary upgrade'."\n" + .'* **UPGRADE**: renewal with an upgrade'."\n", + 'type' => 'string', + 'example' => 'RENEWCHANGE', + ], + 'DeletionProtection' => [ + 'description' => 'Indicates whether deletion protection is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ReservationInternetChargeType' => [ + 'description' => 'The metering method after the configurations are changed. Valid value:'."\n" + ."\n" + .'**PayByTraffic**'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'Ratio' => [ + 'description' => 'The percentage of the minimum bandwidth commitment. Only **20** is returned.'."\n" + ."\n" + .'> This parameter is supported only on the Alibaba Cloud China site.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the Internet Shared Bandwidth instance. Valid value:'."\n" + ."\n" + .'**PostPaid**: pay-as-you-go'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the Internet Shared Bandwidth instance resides.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'BandwidthPackageId' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'example' => 'cbwp-bp1t3sm1ffzmshdki****', + ], + 'ServiceManaged' => [ + 'description' => 'Indicates whether the resource is created by the service account. Valid values:'."\n" + ."\n" + .'* **0**: The resource is not created by the service account.'."\n" + .'* **1**: The resource is created by the service account.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Bandwidth' => [ + 'description' => 'The maximum bandwidth of the Internet Shared Bandwidth instance. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '20', + ], + 'Description' => [ + 'description' => 'The description of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'example' => 'none', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the Internet Shared Bandwidth instance expired. The time is displayed in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2019-01-15T03:08:37Z', + ], + 'ReservationBandwidth' => [ + 'description' => 'The new maximum bandwidth after the configurations are changed. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '1000', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + 'InternetChargeType' => [ + 'description' => 'The metering method of the Internet Shared Bandwidth instance. Valid value:'."\n" + ."\n" + .'**PayByTraffic**'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'BusinessStatus' => [ + 'description' => 'The service status of the Internet Shared Bandwidth instance. Valid values:'."\n" + ."\n" + .'* **Normal**: The Internet Shared Bandwidth instance runs as expected.'."\n" + .'* **FinancialLocked**: An overdue payment occurs in the Internet Shared Bandwidth instance'."\n" + .'* **Unactivated**: The Internet Shared Bandwidth instance is not activated.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Name' => [ + 'description' => 'The name of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'ISP' => [ + 'description' => 'The line type. Valid values:'."\n" + ."\n" + .'* **BGP**: BGP (Multi-ISP) line The BGP (Multi-ISP) line is supported in all regions.'."\n" + .'* **BGP_PRO**: BGP (Multi-ISP) Pro line The BGP (Multi-ISP) Pro line is supported in the China (Hong Kong), Singapore (Singapore), Japan (Tokyo), Philippines (Manila), Malaysia (Kuala Lumpur), Indonesia (Jakarta), and Thailand (Bangkok) regions.'."\n" + ."\n" + .'If you are allowed to use single-ISP bandwidth, one of the following values is returned:'."\n" + ."\n" + .'* **ChinaTelecom**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaTelecom_L2**'."\n" + .'* **ChinaUnicom_L2**'."\n" + .'* **ChinaMobile_L2**'."\n" + ."\n" + .'If your services are deployed in China East 1 Finance, **BGP_FinanceCloud** is returned.'."\n", + 'type' => 'string', + 'example' => 'BGP', + ], + 'HasReservationData' => [ + 'description' => 'Indicates whether the information about pending orders is returned. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'PublicIpAddresses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PublicIpAddresse' => [ + 'description' => 'The elastic IP addresses (EIPs) that are associated with the Internet Shared Bandwidth instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The public IP address.'."\n", + 'type' => 'string', + 'example' => '47.95.XX.XX', + ], + 'AllocationId' => [ + 'description' => 'The ID of the EIP.'."\n", + 'type' => 'string', + 'example' => 'eip-bp13e9i2qst4g6jzi****', + ], + 'BandwidthPackageIpRelationStatus' => [ + 'description' => 'Indicates whether the EIP is associated with the Internet Shared Bandwidth instance. Valid values:'."\n" + ."\n" + .'* **BINDED**'."\n" + .'* **BINDING**'."\n", + 'type' => 'string', + 'example' => 'BINDED', + ], + ], + ], + ], + ], + ], + 'SecurityProtectionTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityProtectionType' => [ + 'description' => 'The editions of Anti-DDoS.'."\n" + ."\n" + .'* If this parameter is empty, Anti-DDoS Origin Basic is enabled.'."\n" + .'* If **AntiDDoS_Enhanced** is returned, Anti-DDoS Pro/Premium is enabled.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The edition of Anti-DDoS.'."\n" + ."\n" + .'* If this parameter is empty, Anti-DDoS Origin Basic is enabled.'."\n" + .'* If **AntiDDoS_Enhanced** is returned, Anti-DDoS Pro/Premium is enabled.'."\n", + 'type' => 'string', + 'example' => 'AntiDDoS_Enhanced', + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tag that is added to the Internet Shared Bandwidth instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key that is added to the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'example' => 'KeyTest', + ], + 'Value' => [ + 'description' => 'The tag value that is added to the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'example' => 'ValueTest', + ], + ], + ], + ], + ], + ], + 'BizType' => [ + 'description' => 'The service type of the Internet Shared Bandwidth instance. Valid values:'."\n" + ."\n" + .'* **CloudBox** The cloud box. Only cloud box users can select this type.'."\n" + .'* **Default** (default): The general service type.'."\n", + 'type' => 'string', + 'example' => 'CloudBox', + ], + 'Zone' => [ + 'description' => 'The zone of the Internet Shared Bandwidth instance. This parameter is returned only when BizType is set to CloudBox. If BizType is set to Default, an empty value is returned.'."\n", + 'type' => 'string', + 'example' => 'ap-southeast-1-lzdvn-cb', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidBandwidthPackageIdNumber.NotSupported', + 'errorMessage' => 'The number of BandwidthPackageIds exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'OperationUnsupported.ResourceGroupId', + 'errorMessage' => 'ResourceGroup is not supported in this region.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"20E6FD1C-7321-4DAD-BDFD-EC8769E4AA33\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"CommonBandwidthPackages\\": {\\n \\"CommonBandwidthPackage\\": [\\n {\\n \\"ReservationActiveTime\\": \\"2018-08-30T16:00:00Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"CreationTime\\": \\"2017-06-28T06:39:20Z\\",\\n \\"ReservationOrderType\\": \\"RENEWCHANGE\\",\\n \\"DeletionProtection\\": true,\\n \\"ReservationInternetChargeType\\": \\"PayByBandwidth\\",\\n \\"Ratio\\": 20,\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"BandwidthPackageId\\": \\"cbwp-bp1t3sm1ffzmshdki****\\",\\n \\"ServiceManaged\\": 1,\\n \\"Bandwidth\\": \\"20\\",\\n \\"Description\\": \\"none\\",\\n \\"ExpiredTime\\": \\"2019-01-15T03:08:37Z\\",\\n \\"ReservationBandwidth\\": \\"1000\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\",\\n \\"InternetChargeType\\": \\"PayByBandwidth\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Name\\": \\"abc\\",\\n \\"ISP\\": \\"BGP\\",\\n \\"HasReservationData\\": \\"false\\",\\n \\"PublicIpAddresses\\": {\\n \\"PublicIpAddresse\\": [\\n {\\n \\"IpAddress\\": \\"47.95.XX.XX\\",\\n \\"AllocationId\\": \\"eip-bp13e9i2qst4g6jzi****\\",\\n \\"BandwidthPackageIpRelationStatus\\": \\"BINDED\\"\\n }\\n ]\\n },\\n \\"SecurityProtectionTypes\\": {\\n \\"SecurityProtectionType\\": [\\n \\"AntiDDoS_Enhanced\\"\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"KeyTest\\",\\n \\"Value\\": \\"ValueTest\\"\\n }\\n ]\\n },\\n \\"BizType\\": \\"CloudBox\\",\\n \\"Zone\\": \\"ap-southeast-1-lzdvn-cb\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 20E6FD1C-7321-4DAD-BDFD-EC8769E4AA33\\n 1\\n 1\\n \\n 2018-08-30T16:00:00Z\\n Available\\n 2017-06-28T06:39:20Z\\n RENEWCHANGE\\n true\\n PayByBandwidth\\n 20\\n PostPaid\\n cn-hangzhou\\n cbwp-bp1t3sm1ffzmshdki****\\n 1\\n 20\\n none\\n 2019-01-15T03:08:37Z\\n 1000\\n rg-acfmxazb4ph****\\n PayByBandwidth\\n Normal\\n abc\\n BGP\\n false\\n \\n 47.95.XX.XX\\n eip-bp13e9i2qst4g6jzi****\\n BINDED\\n \\n AntiDDoS_Enhanced\\n \\n KeyTest\\n ValueTest\\n \\n CloudBox\\n ap-southeast-1-lzdvn-cb\\n \\n","errorExample":""}]', + 'title' => 'DescribeCommonBandwidthPackages', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyCommonBandwidthPackageIpBandwidth' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Internet Shared Bandwidth instance. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-2zep6hw5d6y8exscd****', + ], + ], + [ + 'name' => 'EipId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP that is associated with the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zewysoansu0svfbg****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth for the EIP. This value cannot be larger than the maximum bandwidth of the Internet Shared Bandwidth instance. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '500', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '63D187BF-A30A-4DD6-B68D-FF182C96D8A2 ', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => '%s', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.DistibuteLock', + 'errorMessage' => 'Distibute lock fail.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => '%s', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"63D187BF-A30A-4DD6-B68D-FF182C96D8A2\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\t63D187BF-A30A-4DD6-B68D-FF182C96D8A2\\r\\n","errorExample":""}]', + 'title' => 'ModifyCommonBandwidthPackageIpBandwidth', + 'summary' => 'Sets the maximum bandwidth of an EIP that is associated with an Internet Shared Bandwidth instance.', + 'description' => 'You can call the **ModifyCommonBandwidthPackageIpBandwidth** operation to set the maximum bandwidth of an EIP that is associated with an Internet Shared Bandwidth instance. This prevents an EIP from exhausting the bandwidth resources of an Internet Shared Bandwidth instance.'."\n" + ."\n" + .'For example, two EIPs are associated with an Internet Shared Bandwidth instance whose maximum bandwidth is 800 Mbit/s. In this case, you can set the maximum bandwidth of one EIP to 500 Mbit/s and that of the other EIP to 400 Mbit/s. After you set the maximum bandwidth values, the first EIP cannot consume bandwidth higher than 500 Mbit/s. The second EIP cannot consume bandwidth higher than 400 Mbit/s.'."\n" + ."\n" + .'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* This operation is valid only for EIPs that are associated with Elastic Compute Service (ECS) instances. This operation is invalid for EIPs that are associated with Server Load Balancer (SLB) instances, NAT gateways, secondary elastic network interfaces (ENIs), or high-availability virtual IP addresses (HAVIPs).'."\n" + .'* This operation is in public preview. You can call this operation to set the maximum bandwidth of EIPs only if the EIPs are associated with an Internet Shared Bandwidth instance. The feature is not supported in the console.'."\n" + .'* You cannot repeatedly call this operation to set the maximum bandwidth of an EIP within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CancelCommonBandwidthPackageIpBandwidth' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Internet Shared Bandwidth instance. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BandwidthPackageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-bp13d0m4e2qv8xxxxxxxx', + ], + ], + [ + 'name' => 'EipId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP that is associated with the Internet Shared Bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eip-2zewysoansu0sxxxxxxxx', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '63D187BF-A30A-4DD6-B68D-FF182C96D8A2', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => '%s', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEIPStatus.BizDisabled', + 'errorMessage' => 'The EIP has been locked.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => '%s', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"63D187BF-A30A-4DD6-B68D-FF182C96D8A2\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 63D187BF-A30A-4DD6-B68D-FF182C96D8A2\\n","errorExample":""}]', + 'title' => 'CancelCommonBandwidthPackageIpBandwidth', + 'summary' => 'Cancels the maximum bandwidth configured for an elastic IP address (EIP) that is associated with an Internet Shared Bandwidth instance.', + 'description' => 'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* After this operation is performed, the maximum bandwidth of the EIP equals that of the Internet Shared Bandwidth instance.'."\n" + .'* You cannot repeatedly call the **CancelCommonBandwidthPackageIpBandwidth** operation within a specific time period.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'Describe95Traffic' => [ + 'summary' => 'Queries traffic data of a pay-by-enhanced-95th-percentile Internet Shared Bandwidth instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type. Set the value to cbwp, which specifies Internet Shared Bandwidth.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cbwp-wz9j19xrwf78fvz7*****', + ], + ], + [ + 'name' => 'Day', + 'in' => 'query', + 'schema' => [ + 'description' => 'The date in UTC+8. Format: year-month-day.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '2022-10-22', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'Traffic95Summary' => [ + 'description' => 'The information returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'InternetChargeType' => [ + 'description' => 'The metering method of the Internet Shared Bandwidth instance. Valid values:'."\n" + ."\n" + .'* PayBy95: pay-by-enhanced-95th-percentile'."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByDominantTraffic: pay-by-dominant-traffic'."\n", + 'type' => 'string', + 'example' => 'PayBy95', + ], + 'InstanceId' => [ + 'description' => 'The resource ID.'."\n", + 'type' => 'string', + 'example' => 'cbwp-wz9j19xrwf78fvz7*****'."\n", + ], + 'Bandwidth' => [ + 'description' => 'The peak bandwidth of the Internet Shared Bandwidth instance. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '20000.0', + ], + 'FifthPeakBandwidth' => [ + 'description' => 'The daily peak bandwidth. Unit: Mbit/s.'."\n" + .' For more information, see [Daily peak bandwidth](~~89729~~).', + 'type' => 'string', + 'example' => '1064.244837773641', + ], + 'MinimumConsumeBandwidth' => [ + 'description' => 'The guaranteed bandwidth of the Internet Shared Bandwidth instance. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '0.0', + ], + 'Traffic95DetailList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Traffic95Detail' => [ + 'description' => 'The average bandwidth every 5 minutes in the inbound and outbound directions.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Time' => [ + 'description' => 'The statistical time. The value is a string.'."\n", + 'type' => 'string', + 'example' => '2024-01-01T00:00:00Z', + ], + 'BillBandwidth' => [ + 'description' => 'The sampled bandwidth value, which is the larger bandwidth value in the inbound and outbound directions within a sampling interval. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '118.5090322113037', + ], + 'OutBandwidth' => [ + 'description' => 'The outbound bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '96.41217480977376', + ], + 'InBandwidth' => [ + 'description' => 'The inbound bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '118.5090322113037', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstance.NotFound', + 'errorMessage' => 'The specified Instance does not exist in the specified region.', + ], + [ + 'errorCode' => 'IllegalParam.Day', + 'errorMessage' => 'The specified parameter day is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceType', + 'errorMessage' => 'Invalid Resource Type value.', + ], + [ + 'errorCode' => 'OperationDenied.QueryCdt95Instance', + 'errorMessage' => 'The operation is not allowed because of QueryCdt95Instance.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"Traffic95Summary\\": {\\n \\"InternetChargeType\\": \\"PayBy95\\",\\n \\"InstanceId\\": \\"cbwp-wz9j19xrwf78fvz7*****\\\\n\\",\\n \\"Bandwidth\\": 20000,\\n \\"FifthPeakBandwidth\\": \\"1064.244837773641\\",\\n \\"MinimumConsumeBandwidth\\": \\"0.0\\",\\n \\"Traffic95DetailList\\": {\\n \\"Traffic95Detail\\": [\\n {\\n \\"Time\\": \\"2024-01-01T00:00:00Z\\",\\n \\"BillBandwidth\\": \\"118.5090322113037\\",\\n \\"OutBandwidth\\": \\"96.41217480977376\\",\\n \\"InBandwidth\\": \\"118.5090322113037\\"\\n }\\n ]\\n }\\n }\\n}","type":"json"}]', + 'title' => 'Describe95Traffic', + ], + 'CreateVirtualPhysicalConnection' => [ + 'summary' => 'Creates a hosted connection over Express Connect circuit.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'OrderMode', + 'in' => 'query', + 'schema' => [ + 'title' => 'vpconn的支付方', + 'description' => 'The payer for the hosted connection. Valid values:'."\n" + ."\n" + .'* **PayByPhysicalConnectionOwner**: The partner pays for the hosted connection.'."\n" + .'* **PayByVirtualPhysicalConnectionOwner**: The tenant pays for the hosted connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'PayByVirtualPhysicalConnectionOwner', + 'enum' => [ + 'PayByVirtualPhysicalConnectionOwner', + 'PayByPhysicalConnectionOwner', + ], + ], + ], + [ + 'name' => 'VlanId', + 'in' => 'query', + 'schema' => [ + 'title' => 'vpconn的VlanID', + 'description' => 'The virtual local area network (VLAN) ID of the hosted connection. Valid values: **0** to **2999**.'."\n" + ."\n" + .'* If the VLAN ID is set to **0**, it indicates that the switch port of the virtual border router (VBR) is a Layer 3 router interface instead of a VLAN interface. When a Layer 3 router interface is used, each Express Connect circuit corresponds to a VBR.'."\n" + .'* If the VLAN ID is set to a value from **1** to **2999**, the switch port of the VBR is a Layer 3 VLAN subinterface. When a Layer 3 VLAN subinterface is used, each VLAN ID corresponds to one VBR. In this case, the Express Connect circuit with which the VBR is associated can be used to connect to virtual private clouds (VPCs) that belong to different Alibaba Cloud accounts. VBRs in different VLANs are isolated from each other at Layer 2.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '4', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'title' => 'vpconn规格', + 'description' => 'The bandwidth value of the hosted connection.'."\n" + ."\n" + .'Valid values: **50M**, **100M**, **200M**, **300M**, **400M**, **500M**, **1G**, **2G**, **5G**, **8G**, and **10G**.'."\n" + ."\n" + .'> **2G**, **5G**, **8G**, and **10G** are unavailable by default. If you want to use these bandwidth values, contact your account manager.'."\n" + ."\n" + .'**M** indicates Mbit/s and **G** indicates Gbit/s.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '50M', + ], + ], + [ + 'name' => 'VpconnAliUid', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn拥有者', + 'description' => 'The Alibaba Cloud account ID of the tenant.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '1210123456123456', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn的主Pconn', + 'description' => 'The ID of the Express Connect circuit over which the hosted connection is created.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp1ciz7ekd2grn1as****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn的name', + 'description' => 'The name of the hosted connection.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nametest', + ], + ], + [ + 'name' => 'Token', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等Token', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => 'DryRun', + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Default value: 45104. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the request for potential issues, including required parameters, request syntax, and instance status. If the request fails the dry run, an error code is returned. If the request passes the dry run, `DRYRUN.SUCCESS` is returned.'."\n" + .'* **false**: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn的description', + 'description' => 'The description of the hosted connection.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'desctest', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the hosted connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the hosted connection belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-aekzjty2chzuqky', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The key can be up to 64 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The value can be up to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The value must start with a letter but cannot start with `aliyun` or `acs:`. The value cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'CD14EA74-E9C3-59A9-942A-DFEC7E12818D', + ], + 'VirtualPhysicalConnection' => [ + 'title' => 'Vpconn的实例ID', + 'description' => 'The ID of the hosted connection.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.VbrBindedPconn', + 'errorMessage' => 'The operation is failed because of VbrBindedPconn.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of Bandwidth [%s] is illegal.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnectionId', + 'errorMessage' => 'The specified PhysicalConnectionId [%s] is not found.', + ], + [ + 'errorCode' => 'OperationFailed.VPconnCreated', + 'errorMessage' => 'The operation is failed because of VPconnCreated.', + ], + [ + 'errorCode' => 'MissingParam.Spec', + 'errorMessage' => 'The param of Spec is missing.', + ], + [ + 'errorCode' => 'IllegalParam.Spec', + 'errorMessage' => 'The param of Spec is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.VlanId', + 'errorMessage' => 'The param of VlanId is illegal.', + ], + [ + 'errorCode' => 'VLAN_ID_HAS_BEEN_USED_IN_PHYSICAL_CONNECTION', + 'errorMessage' => 'vlan id has been used in physical connection', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The specified PhysicalConnectionId is not found.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter \'PhysicalConnectionId\' that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotEnabled', + 'errorMessage' => 'The specified PhysicalConnectionId is not in Enabled state.', + ], + [ + 'errorCode' => 'OperationFailed.PconnAllocateVlan0', + 'errorMessage' => 'The operation is failed because of PconnAllocatedResource.', + ], + [ + 'errorCode' => 'InvalidVlanId.Malformed', + 'errorMessage' => 'The specified VlanId is not valid.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Bandwidth', + 'errorMessage' => 'The specified resource of Bandwidth is not enough.', + ], + [ + 'errorCode' => 'IllegalParam.VpconnAliUid', + 'errorMessage' => 'The specified AliUid of Vpconn is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.OrderMode', + 'errorMessage' => 'The param of OrderMode is illegal.', + ], + [ + 'errorCode' => 'Forbidden.VpconnAliUid', + 'errorMessage' => 'Vpconn UID is forbidden to belong to a RAM account or partner account.', + ], + [ + 'errorCode' => 'QuotaExceeded.VPCONN', + 'errorMessage' => 'The quota of VPCONN_COUNT_PER_PCONN is exceeded', + ], + [ + 'errorCode' => 'OperationDenied.CreateVpconn', + 'errorMessage' => 'You are not allowed to create virtual physical connection. Please contact your CBM.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'EcAssociatedQoSPconnNotAllowCreateVpconn', + 'errorMessage' => 'The specified Pconn associated with Qos is not allowed to create Vpconn.Please contact the business manager.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceGroupId', + 'errorMessage' => 'Invalid ResourceGroupld value.', + ], + [ + 'errorCode' => 'Forbidden.VpconnCrossBid', + 'errorMessage' => 'Not allow to create across bid virtual physical connection.', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnection', + 'errorMessage' => 'Invalid physical connection status.', + ], + [ + 'errorCode' => 'OperationDenied.PhysicalConnectionNotSupportMPBGPAndMPBGP-v6', + 'errorMessage' => 'The operation is not allowed because this physical connection not support MPBGP and MPBGP-v6.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CD14EA74-E9C3-59A9-942A-DFEC7E12818D\\",\\n \\"VirtualPhysicalConnection\\": \\"pc-bp1mrgfbtmc9brre7****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n CD14EA74-E9C3-59A9-942A-DFEC7E12818D\\n pc-bp1mrgfbtmc9brre7****\\n","errorExample":""}]', + 'title' => 'CreateVirtualPhysicalConnection', + 'description' => '# [](#)Description'."\n" + ."\n" + .'Before you call this operation, we recommend that you learn about the workflow for creating a hosted connection and the environment requirements. For more information, see [Overview of hosted connections](~~146571~~) and [Operations performed by Express Connect partners](~~155987~~).'."\n", + ], + 'UpdateVirtualPhysicalConnection' => [ + 'summary' => 'Changes the virtual local area network (VLAN) ID of a hosted connection over Express Connect circuit.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VlanId', + 'in' => 'query', + 'schema' => [ + 'title' => 'vpconn的VlanID', + 'description' => 'The VLAN ID of the hosted connection over Express Connect circuit. Valid values: **0** to **2999**.'."\n" + ."\n" + .'* If the VLAN ID is set to **0**, it indicates that the switch port of the virtual border router (VBR) is a Layer 3 router interface instead of a VLAN interface. When a Layer 3 router interface is used, each Express Connect circuit corresponds to a VBR.'."\n" + .'* If the VLAN ID is set to a value from **1** to **2999**, the switch port of the VBR is a Layer 3 VLAN subinterface. When a Layer 3 VLAN subinterface is used, each VLAN ID corresponds to one VBR. In this case, the Express Connect circuit with which the VBR is associated can be used to connect to virtual private clouds (VPCs) that belong to different Alibaba Cloud accounts. VBRs in different VLANs are isolated from each other at Layer 2.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '1', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn的实例ID', + 'description' => 'The ID of the hosted connection over Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + ], + [ + 'name' => 'Token', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等Token', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => 'DryRun', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values: Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including required parameters, request syntax, and instance status. If the request fails to pass the dry run, an error message is returned. If the request passes the dry run, the system returns the ID of the request.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ExpectSpec', + 'in' => 'query', + 'schema' => [ + 'title' => 'ExpectSpec', + 'description' => 'The estimated bandwidth value of the hosted connection. The estimated bandwidth value takes effect only after the payment is completed.'."\n" + ."\n" + .'Valid values: **50M**, **100M**, **200M**, **300M**, **400M**, **500M**, **1G**, **2G**, **5G**, **8G**, and **10G**.'."\n" + ."\n" + .'> **2G**, **5G**, **8G**, and **10G** are unavailable by default. If you want to use these bandwidth values, contact your account manager.'."\n" + ."\n" + .'**M** indicates Mbit/s and **G** indicates Gbit/s.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '50M', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the hosted connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7035627E-1C1D-5BC7-A830-F897A35912D1', + ], + 'Success' => [ + 'title' => '是否修改成功', + 'description' => 'Indicates whether the VLAN ID of the hosted connection is changed. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.VlanId', + 'errorMessage' => 'The param of VlanId is illegal.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnectionId', + 'errorMessage' => 'The specified PhysicalConnectionId [%s] is not found.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Bandwidth', + 'errorMessage' => 'The specified resource of Bandwidth is not enough.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of bandwidth is illegal.', + ], + [ + 'errorCode' => 'Forbidden.PhysicalConnection', + 'errorMessage' => 'Only parent physical connection account is allowed to modify the virtual physical connection.', + ], + [ + 'errorCode' => 'OperationFailed.PhysicalConnectionFinancialLocked', + 'errorMessage' => 'Update failed, the physical connection is financial locked.', + ], + [ + 'errorCode' => 'OperationFailed.PhysicalConnectionTerminated', + 'errorMessage' => 'Update failed, the physical connection is terminated.', + ], + [ + 'errorCode' => 'OperationDenied.CreateVpconn', + 'errorMessage' => 'You are not allowed to create virtual physical connection. Please contact your CBM.', + ], + [ + 'errorCode' => 'IncorrectStatus.VBR', + 'errorMessage' => 'The status of VBR is incorrect.', + ], + [ + 'errorCode' => 'IllegalParam.Spec', + 'errorMessage' => 'The param of Spec is illegal.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7035627E-1C1D-5BC7-A830-F897A35912D1\\",\\n \\"Success\\": \\"true\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7035627E-1C1D-5BC7-A830-F897A35912D1\\n true\\n","errorExample":""}]', + 'title' => 'UpdateVirtualPhysicalConnection', + ], + 'ListVirtualPhysicalConnections' => [ + 'summary' => 'Queries hosted connections.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn的主Pconn', + 'description' => 'The ID of the Express Connect circuit over which the hosted connections are created.'."\n" + ."\n" + .'Express Connect circuits in this topic refer to Express Connect circuits over which hosted connections are created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp1ciz7ekd2grn1as****', + ], + ], + [ + 'name' => 'VirtualPhysicalConnectionBusinessStatus', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn的商业状态', + 'description' => 'The business status of the hosted connection. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Normal', + ], + ], + [ + 'name' => 'VirtualPhysicalConnectionIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '根据Vpconn的ID列表过滤', + 'description' => 'The information about the hosted connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the hosted connection.'."\n" + ."\n" + .'You can specify multiple hosted connection IDs. Valid values of **N**: **1** to **20**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + 'required' => false, + 'example' => 'pc-xxx', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'IsConfirmed', + 'in' => 'query', + 'schema' => [ + 'title' => 'Vpconn是否被确认', + 'description' => 'Specifies whether the hosted connection is accepted by the tenant. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'VirtualPhysicalConnectionStatuses', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Vpconn的状态', + 'description' => 'The business status of the hosted connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The status of the hosted connection. Valid values:'."\n" + ."\n" + .'* **Confirmed**'."\n" + .'* **UnConfirmed**'."\n" + .'* **Deleted**'."\n" + ."\n" + .'You can specify multiple states. Valid values of **N**: **1** to **20**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Confirmed', + ], + 'required' => false, + 'example' => 'pc-xxx', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'VirtualPhysicalConnectionAliUids', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Vpconn的OwnerUid', + 'description' => 'The information about the Alibaba Cloud account that owns the hosted connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The Alibaba Cloud account ID of the hosted connection owner.'."\n" + ."\n" + .'You can specify multiple Alibaba Cloud account IDs. Valid values of **N**: **1** to **20**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '253460731706911258', + ], + 'required' => false, + 'example' => '189xxx', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'VlanIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Vpconn的vlanId', + 'description' => 'The VLAN ID of the hosted connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The VLAN ID of the hosted connection.'."\n" + ."\n" + .'You can specify multiple VLAN IDs. Valid values of **N**: **1** to **20**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10', + ], + 'required' => false, + 'example' => 'pc-xxx', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'title' => '单次查询最大量', + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'title' => '单次查询最大量', + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dd20****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the hosted connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be up to 64 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'It can be up to 128 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the hosted connection belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4p**** ', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2A55F69E-EE3D-5CBE-8805-734F7D5B46B9', + ], + 'VirtualPhysicalConnections' => [ + 'title' => 'Vpconn', + 'description' => 'The list of hosted connections returned.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The type of Express Connect circuit. Default value: **VPC**.'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'Status' => [ + 'description' => 'The status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Initial**: The application is under review.'."\n" + .'* **Approved**: The application is approved.'."\n" + .'* **Allocating**: The system is allocating resources.'."\n" + .'* **Allocated**: The Express Connect circuit is under construction.'."\n" + .'* **Confirmed**: The Express Connect circuit is pending for user confirmation.'."\n" + .'* **Enabled**: The Express Connect circuit is enabled.'."\n" + .'* **Rejected**: The application is rejected.'."\n" + .'* **Canceled**: The application is canceled.'."\n" + .'* **Allocation Failed**: The system failed to allocate resources.'."\n" + .'* **Terminated**: The Express Connect circuit is disabled.'."\n", + 'type' => 'string', + 'example' => 'Enabled', + ], + 'CreationTime' => [ + 'description' => 'The time when the Express Connect circuit was created.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'AdLocation' => [ + 'description' => 'The geographical location of the access device.'."\n", + 'type' => 'string', + 'example' => 'Yuhang Economic Development Zone XXX Intersection, Yuhang XX Machine Room, E*** Suite.', + ], + 'PortNumber' => [ + 'description' => 'The ID of the port on the access device.'."\n", + 'type' => 'string', + 'example' => '80', + ], + 'Spec' => [ + 'description' => 'The bandwidth value of the hosted connection.'."\n" + ."\n" + .'**M** indicates Mbit/s and **G** indicates Gbit/s.'."\n", + 'type' => 'string', + 'example' => '50M', + ], + 'ChargeType' => [ + 'description' => 'The billing method of the Express Connect circuit.'."\n" + ."\n" + .'If **Prepaid** is returned, it indicates that the Express Connect circuit is billed on a subscription basis.'."\n", + 'type' => 'string', + 'example' => 'Prepaid', + ], + 'Description' => [ + 'description' => 'The description of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'Bandwidth' => [ + 'description' => 'The bandwidth of the Express Connect circuit. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50', + ], + 'EnabledTime' => [ + 'description' => 'The time when the Express Connect circuit is enabled.'."\n", + 'type' => 'string', + 'example' => '2021-10-08T10:44Z', + ], + 'LineOperator' => [ + 'description' => 'The connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **CT**: China Telecom.'."\n" + .'* **CU**: China Unicom.'."\n" + .'* **CM**: China Mobile.'."\n" + .'* **CO**: other connectivity providers in the Chinese mainland.'."\n" + .'* **Equinix**: Equinix.'."\n" + .'* **Other**: other connectivity providers outside the Chinese mainland.'."\n", + 'type' => 'string', + 'example' => 'CU', + ], + 'PeerLocation' => [ + 'description' => 'The geographical location of the data center.'."\n", + 'type' => 'string', + 'example' => 'XX Number, XX Road, XX Town, XX District, Hangzhou City, Zhejiang Province.', + ], + 'RedundantPhysicalConnectionId' => [ + 'description' => 'The ID of the redundant Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-119mfjzm****', + ], + 'Name' => [ + 'description' => 'The name of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'CircuitCode' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n", + 'type' => 'string', + 'example' => 'longtel001', + ], + 'EndTime' => [ + 'description' => 'The expiration date of the hosted connection.'."\n" + ."\n" + .'The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-11-08T16:00:00Z', + ], + 'PortType' => [ + 'description' => 'The port type. Valid values:'."\n" + ."\n" + .'* **100Base-T**: 100 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-T**: 1,000 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-LX**: 1,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **10GBase-T**: 10,000 Mbit/s copper Ethernet port'."\n" + .'* **10GBase-LR**: 10,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **40GBase-LR**: 40,000 Mbit/s single-mode optical port'."\n" + .'* **100GBase-LR**: 100,000 Mbit/s single-mode optical port'."\n", + 'type' => 'string', + 'example' => '10GBase-LR', + ], + 'BusinessStatus' => [ + 'description' => 'The status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'LoaStatus' => [ + 'description' => 'The status of the letter of authorization (LOA). Valid values:'."\n" + ."\n" + .'* **Applying**'."\n" + .'* **Accept**'."\n" + .'* **Available**'."\n" + .'* **Rejected**'."\n" + .'* **Completing**'."\n" + .'* **Complete**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'AccessPointId' => [ + 'description' => 'The ID of the access point that is associated with the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-hangzhou-finance-yh-E', + ], + 'PhysicalConnectionId' => [ + 'description' => 'The ID of the hosted connection.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + 'ProductType' => [ + 'description' => 'The type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **VirtualPhysicalConnection**: shared Express Connect circuit'."\n" + .'* **PhysicalConnection**: dedicated Express Connect circuit'."\n", + 'type' => 'string', + 'example' => 'VirtualPhysicalConnection', + ], + 'ParentPhysicalConnectionId' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1ciz7ekd2grn1as****', + ], + 'VirtualPhysicalConnectionStatus' => [ + 'description' => 'The status of the hosted connection. Valid values:'."\n" + ."\n" + .'* **Confirmed**'."\n" + .'* **UnConfirmed**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Confirmed', + ], + 'ParentPhysicalConnectionAliUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the Express Connect circuit belongs.'."\n", + 'type' => 'string', + 'example' => '283117732402483989', + ], + 'OrderMode' => [ + 'description' => 'The payer for the shared Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **PayByPhysicalConnectionOwner**: the owner of the shared Express Connect circuit'."\n" + .'* **PayByVirtualPhysicalConnectionOwner**: the owner of the hosted connection'."\n", + 'type' => 'string', + 'example' => 'PayByPhysicalConnectionOwner', + ], + 'AliUid' => [ + 'description' => 'The Alibaba Cloud account ID of the hosted connection owner.'."\n", + 'type' => 'string', + 'example' => '253460731706911258', + ], + 'VlanId' => [ + 'description' => 'The VLAN ID of the hosted connection.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'ExpectSpec' => [ + 'description' => 'The estimated maximum bandwidth of the shared Express Connect circuit. The estimated bandwidth takes effect after you complete the payment.'."\n" + ."\n" + .'**M** indicates Mbit/s and **G** indicates Gbit/s.'."\n", + 'type' => 'string', + 'example' => '50M', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the hosted connection belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfm3wmsyuimpma', + ], + 'Tags' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N that is added to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be up to 64 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N that is added to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'It can be up to 128 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If the value of **NextToken** is not returned, it indicates that no next query is to be sent.'."\n" + .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n", + 'type' => 'string', + 'example' => 'dd20****', + ], + 'TotalCount' => [ + 'title' => '总数', + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Count' => [ + 'title' => '本次查询数量', + 'description' => 'The number of entries returned in this query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of Bandwidth [%s] is illegal.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnectionId', + 'errorMessage' => 'The specified PhysicalConnectionId [%s] is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2A55F69E-EE3D-5CBE-8805-734F7D5B46B9\\",\\n \\"VirtualPhysicalConnections\\": [\\n {\\n \\"Type\\": \\"VPC\\",\\n \\"Status\\": \\"Enabled\\",\\n \\"CreationTime\\": \\"2021-06-08T12:20:55\\",\\n \\"AdLocation\\": \\"余杭经济开发区XXX交叉口, 余杭XX机房, E***包间\\",\\n \\"PortNumber\\": \\"80\\",\\n \\"Spec\\": \\"50M\\",\\n \\"ChargeType\\": \\"Prepaid\\",\\n \\"Description\\": \\"desctest\\",\\n \\"Bandwidth\\": 50,\\n \\"EnabledTime\\": \\"2021-10-08T10:44Z\\",\\n \\"LineOperator\\": \\"CU\\",\\n \\"PeerLocation\\": \\"浙江省杭州市XX区XX街道XX号\\",\\n \\"RedundantPhysicalConnectionId\\": \\"pc-119mfjzm****\\",\\n \\"Name\\": \\"nametest\\",\\n \\"CircuitCode\\": \\"longtel001\\",\\n \\"EndTime\\": \\"2021-11-08T16:00:00Z\\",\\n \\"PortType\\": \\"10GBase-LR\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"LoaStatus\\": \\"Available\\",\\n \\"AccessPointId\\": \\"ap-cn-hangzhou-finance-yh-E\\",\\n \\"PhysicalConnectionId\\": \\"pc-bp1mrgfbtmc9brre7****\\",\\n \\"ProductType\\": \\"VirtualPhysicalConnection\\",\\n \\"ParentPhysicalConnectionId\\": \\"pc-bp1ciz7ekd2grn1as****\\",\\n \\"VirtualPhysicalConnectionStatus\\": \\"Confirmed\\",\\n \\"ParentPhysicalConnectionAliUid\\": \\"18311773240248****\\",\\n \\"OrderMode\\": \\"PayByPhysicalConnectionOwner\\",\\n \\"AliUid\\": \\"15346073170691****\\",\\n \\"VlanId\\": \\"10\\",\\n \\"ExpectSpec\\": \\"50M\\",\\n \\"ResourceGroupId\\": \\"rg-acfm3wmsyui****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n ],\\n \\"NextToken\\": \\"dd20****\\",\\n \\"TotalCount\\": 1,\\n \\"Count\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n 2A55F69E-EE3D-5CBE-8805-734F7D5B46B9\\n \\n VPC\\n Enabled\\n 2021-06-08T12:20:55\\n 余杭经济开发区XXX交叉口, 余杭XX机房, E***包间\\n 80\\n 50M\\n Prepaid\\n desctest\\n 50\\n 2021-10-08T10:44Z\\n CU\\n 浙江省杭州市XX区XX街道XX号\\n pc-119mfjzm****\\n nametest\\n longtel001\\n 2021-11-08T16:00:00Z\\n 10GBase-LR\\n Normal\\n Available\\n ap-cn-hangzhou-finance-yh-E\\n pc-bp1mrgfbtmc9brre7****\\n VirtualPhysicalConnection\\n pc-bp1ciz7ekd2grn1as****\\n Confirmed\\n 283117732402483989\\n PayByPhysicalConnectionOwner\\n 253460731706911258\\n 10\\n 50M\\n \\n dd20****\\n 1\\n 1\\n","errorExample":""}]', + 'title' => 'ListVirtualPhysicalConnections', + ], + 'OpenPhysicalConnectionService' => [ + 'summary' => 'Enables billing for outbound data transfer.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The ID of the region where the Express Connect circuit is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'PURCHASE_QUANTITY_LIMIT', + 'errorMessage' => 'Your purchase quantity exceeds the maximum limit.', + ], + [ + 'errorCode' => 'InvalidOperation.OrderOpened', + 'errorMessage' => 'You have already open the service. Go to the console to start using it.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'OpenPhysicalConnectionService', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreatePhysicalConnection' => [ + 'summary' => 'Applies for an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'AccessPointId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The access point ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-cn-beijing-ft-A', + ], + ], + [ + 'name' => 'Type', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of Express Connect circuit. Default value: **VPC**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VPC', + 'default' => 'VPC', + ], + ], + [ + 'name' => 'LineOperator', + 'in' => 'query', + 'schema' => [ + 'description' => 'The connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **CT**: China Telecom.'."\n" + .'* **CU**: China Unicom.'."\n" + .'* **CM**: China Mobile.'."\n" + .'* **CO**: other connectivity providers in the Chinese mainland.'."\n" + .'* **Equinix**: Equinix.'."\n" + .'* **Other**: other connectivity providers outside the Chinese mainland.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'CT', + ], + ], + [ + 'name' => 'bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the hosted connection. Unit: Mbit/s.'."\n" + ."\n" + .'Valid values: **50**, **100**, **200**, **300**, **400**, **500**, **1000**, **2000**, **4000**, **5000**, **8000**, and **10000**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '50', + 'default' => '100', + ], + ], + [ + 'name' => 'PeerLocation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The geographical location of the data center.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PortType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port type. Valid values:'."\n" + ."\n" + .'* **100Base-T**: 100 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-T**: 1,000 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-LX**: 1,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **10GBase-T**: 10,000 Mbit/s copper Ethernet port'."\n" + .'* **10GBase-LR**: 10,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **40GBase-LR**: 40,000 Mbit/s single-mode optical port'."\n" + .'* **100GBase-LR**: 100,000 Mbit/s single-mode optical port'."\n" + ."\n" + .'> To use ports 40GBase-LR and 100GBase-LR, you must first contact your account manager.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1000Base-T', + 'default' => '1000Base-T', + ], + ], + [ + 'name' => 'RedundantPhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the redundant Express Connect circuit. The redundant Express Connect circuit must be in the **Allocated**, **Confirmed**, or **Enabled** state.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-119mfjzm****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the Express Connect circuit.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'description', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Express Connect circuit.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'CircuitCode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'longtel001', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-42665544****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-42665544****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the Express Connect circuit belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmoiyermp****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value to add to the resource. You can specify up to 20 tag values The tag value can be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'DeviceAdvancedCapacity', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The advanced features of the device.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The advanced features. Valid values:'."\n" + ."\n" + .'* **SubifRateLimit**: bandwidth throttling based on virtual border routers (VBRs).'."\n" + .'* **DualStack**: IPv6'."\n" + .'* **BFD**: Bidirectional Forwarding Detection (BFD)'."\n" + .'* **CEN**: MP-BGP'."\n" + .'* **CENv6**: MP-BGPv6'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'BFD' => 'BFD', + 'SubifRateLimit' => 'SubifRateLimit', + 'DualStack' => 'DualStack', + 'CENv6' => 'CENv6', + 'CEN' => 'CEN', + ], + 'example' => 'CENv6', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'OpticalModuleModel', + 'in' => 'query', + 'schema' => [ + 'title' => '物理专线接入点光模块支持型号,取值:'."\n" + .'1000Base-LX : '."\n" + .'SFP-GE-LR-SM1310,10KM'."\n" + .'SFP-GE-ER-SM1310,40KM'."\n" + .'SFP-GE-ZR-SM1550,80KM '."\n" + .'10GBase-LR : '."\n" + .'SFP-10G-LR-SM1310,10KM'."\n" + .'SFP-10G-ER-SM1550,40KM '."\n" + .'SFP-10G-ZR-SM1550,80KM '."\n" + .'40GBase-LR : '."\n" + .'QSFP-40G-LR4-WDM1300,10KM'."\n" + .'QSFP-40G-ER4-WDM1300,40KM'."\n" + .'QSFP-40G-ZR4-WDM1300,80KM'."\n" + .'100GBase-LR : '."\n" + .'QSFP28-100G-LR4-WDM1300,10KM'."\n" + .'QSFP28-100G-ER4-WDM1300,40KM'."\n" + .'QSFP28-100G-ZR4-WDM1300,80KM', + 'type' => 'string', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned results.'."\n", + 'type' => 'object', + 'properties' => [ + 'PhysicalConnectionId' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1ciz7ekd2grn1as****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8A6A5EC5-6F6C-4906-9689-56ACE58A13E0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.Status', + 'errorMessage' => 'The device or interface status invalid, or has been used..', + ], + [ + 'errorCode' => 'InvalidType.Malformd', + 'errorMessage' => 'The Type provided was invalid.', + ], + [ + 'errorCode' => 'InvalidPeerLocation.Malformd', + 'errorMessage' => 'The PeerLocation provided was invalid.', + ], + [ + 'errorCode' => 'InvalidLineOperator.Malformd', + 'errorMessage' => 'The LineOperator provided was invalid.', + ], + [ + 'errorCode' => 'InvalidPortType.Malformd', + 'errorMessage' => 'The PortType provided was invalid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specifid ?Description? is not valid.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnectionId.NotFound', + 'errorMessage' => 'The RedundantPhysicalConnectionId does not found.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified ?Name? is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.pConnPerAP', + 'errorMessage' => 'Physical connection count per ap quota exceed.', + ], + [ + 'errorCode' => 'InvalidBandwidth', + 'errorMessage' => 'invalid physical connection banwidth.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnection', + 'errorMessage' => 'redundant physical connection doesn\'t belong to current user.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnectionStatus', + 'errorMessage' => 'invalid redundant physical connection status.', + ], + [ + 'errorCode' => 'InvalidCircuitCode.Malformed', + 'errorMessage' => 'circuitCode is illegal.', + ], + [ + 'errorCode' => 'QuotaExceeded.freePconnPerAP', + 'errorMessage' => 'free physical connections count excceeded.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionOperator.Malformed', + 'errorMessage' => 'Specified PhysicalConnection Operator is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionPortType.Malformed', + 'errorMessage' => 'Specified PhysicalConnection PortType is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionBandwidth.Malformed', + 'errorMessage' => 'Specified PhysicalConnection Bandwidth is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.ClientToken', + 'errorMessage' => 'Token verify failed because client token length too long.', + ], + [ + 'errorCode' => 'InvalidPortType.NotFound', + 'errorMessage' => 'Specified port type is not found.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'InvalidAccessPointId.NotEnabled', + 'errorMessage' => 'Invalid access point status.', + ], + [ + 'errorCode' => 'ResourceNotFound.AccessPointId', + 'errorMessage' => 'The specified resource of access point id is not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidPortType.NotFound', + 'errorMessage' => 'There are no resources with the portType.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PhysicalConnectionId\\": \\"pc-bp1ciz7ekd2grn1as****\\",\\n \\"RequestId\\": \\"8A6A5EC5-6F6C-4906-9689-56ACE58A13E0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n pc-bp1ciz7ekd2grn1as****\\n 8A6A5EC5-6F6C-4906-9689-56ACE58A13E0\\n","errorExample":""}]', + 'title' => 'CreatePhysicalConnection', + 'description' => 'You can apply for a dedicated Express Connect circuit for yourself or create a hosted connection for a tenant. After your application is approved, the Express Connect circuit changes to the **Initial** state. You can contact the connectivity provider to start construction.'."\n" + ."\n" + .'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* If your Alibaba Cloud account has more than five Express Connect circuits that are not in the **Enabled** state, you cannot apply for another Express Connect circuit.'."\n" + .'* If your Alibaba Cloud account has an Express Connect circuit with overdue payments, you cannot apply for another Express Connect circuit.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ApplyPhysicalConnectionLOA' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth of the Express Connect circuit. Unit: Mbit/s.'."\n" + ."\n" + .'Valid values: **2** to **10240**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + 'default' => '100', + ], + ], + [ + 'name' => 'PeerLocation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The geographic location where the Express Connect circuit is deployed.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-bp1qrb3044eqi****', + ], + ], + [ + 'name' => 'CompanyName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the customer company that requires the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'company', + ], + ], + [ + 'name' => 'LineType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **MSTP**: MSTP line'."\n" + .'* **MPLSVPN**: MPLSVPN line'."\n" + .'* **FIBRE**: fiber line'."\n" + .'* **Other**: other types'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'FIBRE', + ], + ], + [ + 'name' => 'Si', + 'in' => 'query', + 'schema' => [ + 'description' => 'The construction company.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'company', + ], + ], + [ + 'name' => 'ConstructionTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when construction started. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '2022-02-28T16:00:00Z', + ], + ], + [ + 'name' => 'PMInfo', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the construction engineer.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PMCertificateNo' => [ + 'description' => 'The ID number of the construction engineer. You can specify the ID number of an ID card or an international passport.'."\n" + ."\n" + .'You can configure information for up to 16 construction engineers.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '5****************9', + ], + 'PMName' => [ + 'description' => 'The name of the construction engineer.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'Zhangsan', + ], + 'PMCertificateType' => [ + 'description' => 'The type of the identity document of the construction engineer. Valid values:'."\n" + ."\n" + .'* **IDCard**'."\n" + .'* **Passport**'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'IDCard', + ], + 'PMGender' => [ + 'description' => 'The gender of the construction engineer.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'Male', + ], + 'PMContactInfo' => [ + 'description' => 'The contact information about the construction engineer.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '1390000****', + ], + ], + 'required' => false, + 'docRequired' => true, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A47BD386-7FDE-42C4-8D22-C6223D18AA1C', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.AliUid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.RegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.PMInfo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.LineOperator', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.LineType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PeerLocation', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PmCertificateType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PmCertificateNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PmContactInfo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PmGender', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PmName', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Si', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidConstructionTime.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnectionLOA', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnection', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.CompanyName', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of bandwidth is illegal.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A47BD386-7FDE-42C4-8D22-C6223D18AA1C\\"\\n}","errorExample":""},{"type":"xml","example":"\\n A47BD386-7FDE-42C4-8D22-C6223D18AA1C\\n","errorExample":""}]', + 'title' => 'ApplyPhysicalConnectionLOA', + 'summary' => 'Applies for a Letter of Authorization (LOA) for an Express Connect circuit.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'SecondApplyPhysicalConnectionLOA' => [ + 'summary' => 'If your application for a Letter of Authorization (LOA) by calling the ApplyPhysicalConnectionLOA operation is denied, you can call this operation to apply again.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region where the Express Connect circuit is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth of the Express Connect circuit. Unit: Mbit/s.'."\n" + ."\n" + .'Valid values: **2** to **10240**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + 'default' => '100', + ], + ], + [ + 'name' => 'PeerLocation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The geographic location where the Express Connect circuit is deployed.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'XX Number, XX Road, XX Town, XX District, Hangzhou City, Zhejiang Province.', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-bp1qrb3044eqi****', + ], + ], + [ + 'name' => 'CompanyName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the customer company that requires the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'company', + ], + ], + [ + 'name' => 'LineType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **MSTP**'."\n" + .'* **MPLSVPN**'."\n" + .'* **FIBRE**'."\n" + .'* **Other**'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'FIBRE', + ], + ], + [ + 'name' => 'Si', + 'in' => 'query', + 'schema' => [ + 'description' => 'The construction company.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'company', + ], + ], + [ + 'name' => 'ConstructionTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when construction started. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '2022-02-28T16:00:00Z', + ], + ], + [ + 'name' => 'PMInfo', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the construction engineer.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PMCertificateNo' => [ + 'description' => 'The ID number of the construction engineer. You can specify the ID number of an ID card or an international passport.'."\n" + ."\n" + .'You can configure information for up to 16 construction engineers.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '5****************9 '."\n", + ], + 'PMName' => [ + 'description' => 'The name of the construction engineer.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'Zhangsan', + ], + 'PMCertificateType' => [ + 'description' => 'The type of the identity document of the construction engineer. Valid values:'."\n" + ."\n" + .'* **IDCard**'."\n" + .'* **Passport**'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'IDCard', + ], + 'PMGender' => [ + 'description' => 'The gender of the construction engineer.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'Male', + ], + 'PMContactInfo' => [ + 'description' => 'The contact information about the construction engineer.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '1390000****', + ], + ], + 'required' => false, + 'docRequired' => true, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A47BD386-7FDE-42C4-8D22-C6223D18AA1C '."\n", + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'Invalid Bandwidth.', + ], + [ + 'errorCode' => 'IllegalParam.CompanyLocalizedName', + 'errorMessage' => 'Invalid CompanyLocalizedName.', + ], + [ + 'errorCode' => 'IllegalParam.CompanyName', + 'errorMessage' => 'Invalid CompanyName.', + ], + [ + 'errorCode' => 'IllegalParam.LineType', + 'errorMessage' => 'Invalid LineType.', + ], + [ + 'errorCode' => 'IllegalParam.PeerLocation', + 'errorMessage' => 'Invalid PeerLocation.', + ], + [ + 'errorCode' => 'IllegalParam.PmCertificateType', + 'errorMessage' => 'Invalid PmCertificateType.', + ], + [ + 'errorCode' => 'IllegalParam.PmCertificateNo', + 'errorMessage' => 'Invalid PmCertificateNo.', + ], + [ + 'errorCode' => 'IllegalParam.PmContactInfo', + 'errorMessage' => 'Invalid PmContactInfo.', + ], + [ + 'errorCode' => 'IllegalParam.PmGender', + 'errorMessage' => 'Invalid PmGender.', + ], + [ + 'errorCode' => 'IllegalParam.PmName', + 'errorMessage' => 'Invalid PmName.', + ], + [ + 'errorCode' => 'IllegalParam.Si', + 'errorMessage' => 'Invalid Si.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'InstanceId is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnection', + 'errorMessage' => 'Invalid physical connection status.', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnectionLOA', + 'errorMessage' => 'Invalid Express Connect circuit LOA status.', + ], + [ + 'errorCode' => 'OperationDenied.LOAForVirtualPhysicalConnection', + 'errorMessage' => 'The operation is not allowed because of LOAForVirtualPhysicalConnection.', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => 'The parameter InstanceId is mandatory.', + ], + [ + 'errorCode' => 'MissingParam.ConstructionTime', + 'errorMessage' => 'The parameter ConstructionTime is mandatory.', + ], + [ + 'errorCode' => 'MissingParam.PMInfo', + 'errorMessage' => 'The parameter PMInfo is mandatory.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A47BD386-7FDE-42C4-8D22-C6223D18AA1C\\\\t\\\\n\\"\\n}","type":"json"}]', + 'title' => 'SecondApplyPhysicalConnectionLOA', + ], + 'CreatePhysicalConnectionSetupOrder' => [ + 'summary' => 'Creates an order for initial installation of an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-beijing', + ], + ], + [ + 'name' => 'AccessPointId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the access point.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-cn-beijing-ft-A', + ], + ], + [ + 'name' => 'LineOperator', + 'in' => 'query', + 'schema' => [ + 'description' => 'The connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **CT**: China Telecom'."\n" + .'* **CU**: China Unicom'."\n" + .'* **CM**: China Mobile'."\n" + .'* **CO**: other connectivity providers in the Chinese mainland'."\n" + .'* **Equinix**: Equinix'."\n" + .'* **Other**: other connectivity providers outside the Chinese mainland'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'CT', + ], + ], + [ + 'name' => 'PortType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **100Base-T**: 100 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-T** (default): 1,000 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-LX**: 1,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **10GBase-T**: 10,000 Mbit/s copper Ethernet port'."\n" + .'* **10GBase-LR**: 10,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **40GBase-LR**: 40,000 Mbit/s single-mode optical port'."\n" + .'* **100GBase-LR**: 100,000 Mbit/s single-mode optical port'."\n" + ."\n" + .'> Whether 40GBase-LR and 100GBase-LR ports can be created depends on resource supplies. For more information, contact your account manager.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '100Base-T', + 'default' => '1000Base-T', + ], + ], + [ + 'name' => 'RedundantPhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the redundant physical connection. The redundant physical connection must be in the **Allocated**, **Confirmed**, or **Enabled** state.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp10zsv5ntp****', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payments. Valid values:'."\n" + ."\n" + .'* **false** (default): disables automatic payment.'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '318BB676-0A2B-43A0-9AD8-F1D34E93750F', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '318BB676-0A2B-43A0-9AD8-F1D34E93750F', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F7A6301A-64BA-41EC-8284-8F4838C15D1F', + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '202844382740728', + ], + 'PhysicalConnectionId' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-2zegmc02v7ss4****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPrice.NotFound', + 'errorMessage' => 'Pricing plan result not found.', + ], + [ + 'errorCode' => 'QuotaExceeded.PerAccessPoint', + 'errorMessage' => 'Physical connection count per ap quota exceed.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionOperator.Malformed', + 'errorMessage' => 'Specified PhysicalConnection Operator is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionPortType.Malformed', + 'errorMessage' => 'Specified PhysicalConnection PortType is not valid.', + ], + [ + 'errorCode' => 'InvalidPortType.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.AccessPoint', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AccessPoint.NotFound', + 'errorMessage' => 'The input access point does not exist or does not have permission to view it.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F7A6301A-64BA-41EC-8284-8F4838C15D1F\\",\\n \\"OrderId\\": \\"202844382740728\\",\\n \\"PhysicalConnectionId\\": \\"pc-2zegmc02v7ss4****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F7A6301A-64BA-41EC-8284-8F4838C15D1F\\n 202844382740728\\n pc-2zegmc02v7ss4****\\n","errorExample":""}]', + 'title' => 'CreatePhysicalConnectionSetupOrder', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreatePhysicalConnectionOccupancyOrder' => [ + 'summary' => 'Creates an order for resource occupation of an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp1hp0wr072f6****', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription duration.'."\n" + ."\n" + .'* If **PricingCycle** is set to **Month**, set **Period** to a value from **1 to 9**.'."\n" + .'* If **PricingCycle** is set to **Year**, set **Period** to a value from **1 to 5**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method. Set the value to'."\n" + ."\n" + .'**PrePaid**, which specifies the subscription billing method. If you choose this billing method, make sure that your Alibaba Cloud account supports balance payments or credit payments.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payments. Valid values:'."\n" + ."\n" + .'* **true**: yes Make sure that you have a sufficient balance in your account. Otherwise, your order becomes invalid and is automatically canceled.'."\n" + .'* **false**: disables automatic payment. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PricingCycle', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing cycle of the subscription. Valid values:'."\n" + ."\n" + .'* **Month** (default)'."\n" + .'* **Year**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + ], + ], + [ + 'name' => 'AutoRenewDuration', + 'in' => 'query', + 'schema' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9B9300FE-11E2-4E3B-949C-BED3B44DD26D', + ], + 'Data' => [ + 'description' => 'The details.'."\n", + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The ID of the order that is placed.'."\n", + 'type' => 'string', + 'example' => '50187055895****', + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IAbs.InvalidStatus.ValueNotSupported', + 'errorMessage' => 'status is not supported.', + ], + [ + 'errorCode' => 'InvalidPrice.NotFound', + 'errorMessage' => 'Pricing plan result not found.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionChargeType.Malformed', + 'errorMessage' => 'Specified Physical Connection ChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionPeriod.Malformed', + 'errorMessage' => 'Specified Physical Connection Period is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionPricingCycle.Malformed', + 'errorMessage' => 'Specified Physical Connection PricingCycle is not valid.', + ], + [ + 'errorCode' => 'Forbidden.NotAllowedInState', + 'errorMessage' => 'The request does not allow in this state.', + ], + [ + 'errorCode' => 'INSTANCE.STATUS.NOT.ALLOW', + 'errorMessage' => 'Instance status not allow', + ], + [ + 'errorCode' => 'Abs.InstanceNotExist', + 'errorMessage' => 'The specified instance does not exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnection', + 'errorMessage' => 'Invalid physical connection status.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The PhysicalConnectionId provided does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9B9300FE-11E2-4E3B-949C-BED3B44DD26D\\",\\n \\"Data\\": {\\n \\"OrderId\\": \\"50187055895****\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 9B9300FE-11E2-4E3B-949C-BED3B44DD26D\\n \\n 50187055895****\\n \\n","errorExample":""}]', + 'title' => 'CreatePhysicalConnectionOccupancyOrder', + 'description' => '> You can call this operation only when the Express Connect circuit is in the **Complete** state.'."\n", + ], + 'CreateHighReliablePhysicalConnection' => [ + 'summary' => 'Creates Express Connect circuits in high reliability mode. This improves the stability of multiple Express Connect circuits and prevents service interruptions caused by single points of failures (SPOFs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. Valid values of N: 1 to 20. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 64 characters in length and can contain letters, digits, periods (.), underscores (_), and hyphens (-). It must start with a letter but cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. Valid values of N: 1 to 20. The tag value cannot be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and can contain letters, digits, periods (.), underscores (_), and hyphens (-). It must start with a letter but cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'HighReliableType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The high availability mode. Valid values:'."\n" + ."\n" + .'- **MultiApMultiDevice** : This mode supports two access points and two devices, and provides the maximum disaster recovery capability.'."\n" + .'- **MultiApSingleDevice** : This mode supports two access points and one device, and provides robust disaster recovery capability.'."\n" + .'- **SingleApMultiDevice** : This mode supports one access point and two devices, and is recommended for non-critical business test and development.'."\n" + .'- **SingleApMultiConnection** : This mode supports one access point, one device, and multiple physical ports. Only users in the whitelist can use this mode. To use this mode, contact your account manager.', + 'type' => 'string', + 'required' => true, + 'example' => 'MultiApMultiDevice', + ], + ], + [ + 'name' => 'PortType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port type. Valid values:'."\n" + ."\n" + .'* **100Base-T**: 100 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-T**: 1,000 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-LX**: 1,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **10GBase-T**: 10,000 Mbit/s copper Ethernet port'."\n" + .'* **10GBase-LR**: 10,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **40GBase-LR**: 40,000 Mbit/s single-mode optical port'."\n" + .'* **100GBase-LR**: 100,000 Mbit/s single-mode optical port'."\n" + ."\n" + .'> To use ports 40GBase-LR and 100GBase-LR, you must first contact your account manager.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '1000Base-T', + ], + ], + [ + 'name' => 'DeviceAdvancedCapacity', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The advanced features of the device.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The advanced features of the device.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SubifRateLimit, DualStack', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'ApList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The access points.', + 'type' => 'array', + 'items' => [ + 'description' => 'The access points.', + 'type' => 'object', + 'properties' => [ + 'Name' => [ + 'description' => 'The name of the Express Connect circuit.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (_), and hyphens (-). It must start with a letter but cannot start with `http://` or` https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + 'Description' => [ + 'description' => 'The description of the Express Connect circuit.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'description', + ], + 'RegionId' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + 'LineOperator' => [ + 'description' => 'The connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **CT**: China Telecom.'."\n" + .'* **CU**: China Unicom.'."\n" + .'* **CM**: China Mobile.'."\n" + .'* **CO**: other connectivity providers in the Chinese mainland.'."\n" + .'* **Equinix**: Equinix.'."\n" + .'* **Other**: other connectivity providers outside the Chinese mainland.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'CT', + ], + 'AccessPointId' => [ + 'description' => 'The ID of the access point that is associated with the Express Connect circuit.'."\n" + ."\n" + .'> Two access points must be specified when **HighReliableType** is set to **MultiApMultiDevice** or **MultiApSingleDevice**. One access point must be specified when **HighReliableType** is set to **SingleApMultiDevice** or **SingleApMultiConnection**.', + 'type' => 'string', + 'required' => true, + 'example' => 'ap-cn-beijing-ft-A', + ], + 'PortNum' => [ + 'description' => 'The number of ports. Valid values: 2 to 16. This parameter is required only when **HighReliableType** is set to **SingleApMultiConnection**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + 'Type' => [ + 'description' => 'The type of the Express Connect circuit. Default value: **VPC**.', + 'type' => 'string', + 'required' => false, + 'example' => 'VPC', + ], + 'Bandwidth' => [ + 'description' => 'The maximum bandwidth of the hosted connection. Unit: Mbit/s.'."\n" + ."\n" + .'Valid values: 50, 100, 200, 300, 400, 500, 1000, 2000, 4000, 5000, 8000, and 10000.', + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '50', + ], + 'PeerLocation' => [ + 'description' => 'The geographical location of the data center.', + 'type' => 'string', + 'required' => false, + 'example' => 'ram-test', + ], + 'CircuitCode' => [ + 'description' => 'The circuit code of the Express Connect circuit, which is provided by the connectivity provider.', + 'type' => 'string', + 'required' => false, + 'example' => 'longtel001', + ], + 'OpticalModuleModel' => [ + 'title' => '物理专线接入点光模块支持型号,取值:'."\n" + .'1000Base-LX : '."\n" + .'SFP-GE-LR-SM1310,10KM'."\n" + .'SFP-GE-ER-SM1310,40KM'."\n" + .'SFP-GE-ZR-SM1550,80KM '."\n" + .'10GBase-LR : '."\n" + .'SFP-10G-LR-SM1310,10KM'."\n" + .'SFP-10G-ER-SM1550,40KM '."\n" + .'SFP-10G-ZR-SM1550,80KM '."\n" + .'40GBase-LR : '."\n" + .'QSFP-40G-LR4-WDM1300,10KM'."\n" + .'QSFP-40G-ER4-WDM1300,40KM'."\n" + .'QSFP-40G-ZR4-WDM1300,80KM'."\n" + .'100GBase-LR : '."\n" + .'QSFP28-100G-LR4-WDM1300,10KM'."\n" + .'QSFP28-100G-ER4-WDM1300,40KM'."\n" + .'QSFP28-100G-ZR4-WDM1300,80KM', + 'type' => 'string', + ], + ], + 'required' => false, + ], + 'required' => true, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The language to display the results. Valid values:'."\n" + ."\n" + .'* **zh-CN** (default): Chinese'."\n" + .'* **en-US**: English'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'zh-CN', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.', + 'type' => 'object', + 'properties' => [ + 'PhysicalConnectionList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'physicalConnectionList' => [ + 'description' => 'The Express Connect circuits.', + 'type' => 'array', + 'items' => [ + 'description' => 'The Express Connect circuit.', + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the Express Connect circuit.', + 'type' => 'string', + 'example' => 'pc-j5e5qqo616p81ncspbll1', + ], + 'RegionNo' => [ + 'description' => 'The region ID of the Express Connect circuit.', + 'type' => 'string', + 'example' => 'cn-shanghai', + ], + ], + ], + ], + ], + ], + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'ErrorInfoList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'errorInfoList' => [ + 'description' => 'If the request fails the dry run, the following error codes and error messages may be returned:'."\n" + ."\n" + .'- pconn.high.reliable.dryrun.error.disable.outbound.data.transfer.billing. Billing for outbound data transfer is not enabled.'."\n" + .'- pconn.high.reliable.dryrun.error.incompatable.device.capacity. No device in the access point supports advanced features.'."\n" + .'- pconn.high.reliable.dryrun.error.quota.exceeded. The quota is insufficient.'."\n" + .'- pconn.high.reliable.dryrun.error.not.enough.resource. The access point resources are insufficient.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ErrorCode' => [ + 'description' => 'Error codes.', + 'type' => 'string', + 'example' => 'pconn.high.reliable.dryrun.error.disable.outbound.data.transfer.billing', + ], + 'ErrorMessage' => [ + 'description' => 'The returned error message.', + 'type' => 'string', + 'example' => 'pconn.high.reliable.dryrun.error.disable.outbound.data.transfer.billing', + ], + 'InstanceId' => [ + 'description' => 'The ID of the Express Connect circuit.', + 'type' => 'string', + 'example' => 'pc-j5e5qqo616p81ncspbll1', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.Status', + 'errorMessage' => 'The device or interface status invalid, or has been used..', + ], + [ + 'errorCode' => 'InvalidType.Malformd', + 'errorMessage' => 'The Type provided was invalid.', + ], + [ + 'errorCode' => 'InvalidPeerLocation.Malformd', + 'errorMessage' => 'The PeerLocation provided was invalid.', + ], + [ + 'errorCode' => 'InvalidLineOperator.Malformd', + 'errorMessage' => 'The LineOperator provided was invalid.', + ], + [ + 'errorCode' => 'InvalidPortType.Malformd', + 'errorMessage' => 'The PortType provided was invalid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specifid ?Description? is not valid.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnectionId.NotFound', + 'errorMessage' => 'The RedundantPhysicalConnectionId does not found.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified ?Name? is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.pConnPerAP', + 'errorMessage' => 'Physical connection count per ap quota exceed.', + ], + [ + 'errorCode' => 'InvalidBandwidth', + 'errorMessage' => 'invalid physical connection banwidth.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnection', + 'errorMessage' => 'redundant physical connection doesn\'t belong to current user.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnectionStatus', + 'errorMessage' => 'invalid redundant physical connection status.', + ], + [ + 'errorCode' => 'InvalidCircuitCode.Malformed', + 'errorMessage' => 'circuitCode is illegal.', + ], + [ + 'errorCode' => 'QuotaExceeded.freePconnPerAP', + 'errorMessage' => 'free physical connections count excceeded.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionOperator.Malformed', + 'errorMessage' => 'Specified PhysicalConnection Operator is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionPortType.Malformed', + 'errorMessage' => 'Specified PhysicalConnection PortType is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionBandwidth.Malformed', + 'errorMessage' => 'Specified PhysicalConnection Bandwidth is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.ClientToken', + 'errorMessage' => 'Token verify failed because client token length too long.', + ], + [ + 'errorCode' => 'InvalidPortType.NotFound', + 'errorMessage' => 'Specified port type is not found.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'EcNotSupportRegion', + 'errorMessage' => 'High reliable physical connection is not support in this region.', + ], + [ + 'errorCode' => 'EcFailToGetAp', + 'errorMessage' => 'Fail to get access point details.', + ], + [ + 'errorCode' => 'EcNotEnoughResource', + 'errorMessage' => 'Insufficient access point resources.', + ], + [ + 'errorCode' => 'IllegalParam.UnsupportedAccessPoint', + 'errorMessage' => 'The access point type does not support the creation of a highly reliable physical connection.', + ], + [ + 'errorCode' => 'ResourceNotFound.AccessPointId', + 'errorMessage' => 'The specified resource of access point id is not found.', + ], + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidPortType.NotFound', + 'errorMessage' => 'There are no resources with the portType.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribePhysicalConnections', + 'callbackInterval' => 5, + 'maxCallbackTimes' => 100, + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PhysicalConnectionList\\": {\\n \\"physicalConnectionList\\": [\\n {\\n \\"InstanceId\\": \\"pc-j5e5qqo616p81ncsp****\\",\\n \\"RegionNo\\": \\"cn-shanghai\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"ErrorInfoList\\": {\\n \\"errorInfoList\\": [\\n {\\n \\"ErrorCode\\": \\"pconn.high.reliable.dryrun.error.disable.outbound.data.transfer.billing\\",\\n \\"ErrorMessage\\": \\"pconn.high.reliable.dryrun.error.disable.outbound.data.transfer.billing\\",\\n \\"InstanceId\\": \\"pc-j5e5qqo616p81ncsp****\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'CreateHighReliablePhysicalConnection', + ], + 'CreateVpconnFromVbr' => [ + 'summary' => 'Adds a shared port to a hosted connection.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'OrderMode', + 'in' => 'query', + 'schema' => [ + 'title' => 'vpconn的支付方', + 'description' => 'The payer for the shared Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **PayByPhysicalConnectionOwner**: the owner of the shared Express Connect circuit'."\n" + .'* **PayByVirtualPhysicalConnectionOwner**: the owner of the hosted connection'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByVirtualPhysicalConnectionOwner', + 'enum' => [ + 'PayByVirtualPhysicalConnectionOwner', + 'PayByPhysicalConnectionOwner', + ], + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'title' => '跨帐号的VBR', + 'description' => 'The ID of the associated VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vbr-bp136flp1mf8mlq6r****', + ], + ], + [ + 'name' => 'Token', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等Token', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => 'DryRun', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, the system returns the ID of the request.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the hosted connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5356F028-0F5C-56FC-8574-897D24379041', + ], + 'VirtualPhysicalConnection' => [ + 'title' => 'Vpconn的实例ID', + 'description' => 'The ID of the hosted connection.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.TargetUserPconnTrafficNotEnable', + 'errorMessage' => 'The operation failed because of TargetUserPconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Bandwidth', + 'errorMessage' => 'The specified resource of Bandwidth is not enough.', + ], + [ + 'errorCode' => 'OperationFailed.VbrBindedPconn', + 'errorMessage' => 'The operation is failed because of VbrBindedPconn.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of Bandwidth [%s] is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.VbrId', + 'errorMessage' => 'The status of %s is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnectionId', + 'errorMessage' => 'PhysicalConnection is not found.', + ], + [ + 'errorCode' => 'OperationFailed.VPconnCreated', + 'errorMessage' => 'The operation is failed because of VPconnCreated.', + ], + [ + 'errorCode' => 'OperationFailed.BandwidthOrVlanIdEmpty', + 'errorMessage' => 'The operation is failed because of BandwidthOrVlanIdEmpty.', + ], + [ + 'errorCode' => 'ResourceNotFound.VirtualBorderRouter', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5356F028-0F5C-56FC-8574-897D24379041\\",\\n \\"VirtualPhysicalConnection\\": \\"pc-bp1mrgfbtmc9brre7****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5356F028-0F5C-56FC-8574-897D24379041\\n pc-bp1mrgfbtmc9brre7****\\n","errorExample":""}]', + 'title' => 'CreateVpconnFromVbr', + 'description' => 'If an Express Connect partner has created a virtual border router (VBR) for a tenant before, the Express Connect partner can push the Express Connect circuit that is associated with the VBR to the tenant account by adding a shared port for the tenant account. The service of the tenant is not interrupted in this process.'."\n" + ."\n" + .'Preparations:'."\n" + ."\n" + .'Before the Express Connect partner performs the operation, the Express Connect partner must notify the tenant and request the tenant to enable outbound data transfer billing. For more information, see [Enable outbound data transfer billing](~~274385~~).'."\n" + ."\n" + .'What to do next:'."\n" + ."\n" + .'1. After the Express Connect partner performs the operation, a shared port is added for the tenant account. The tenant must call the [ConfirmPhysicalConnection](~~324198~~) operation to accept the shared port.'."\n" + .'2. Then, the Express Connect partner must call the [AttachVbrToVpconn](~~324191~~) operation to associate the VBR with the newly added shared port that belongs to the tenant account.'."\n", + ], + 'DeletePhysicalConnection' => [ + 'summary' => 'Deletes a connection over an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'high', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-119mfjzm7*********', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotMatched', + 'errorMessage' => 'instance id not matched.', + ], + [ + 'errorCode' => 'Forbidden.VBRExists', + 'errorMessage' => 'physical connection owner\'s vbr still exists.', + ], + [ + 'errorCode' => 'Forbidden.AssociateToVBR', + 'errorMessage' => 'The physical connection still associate to VBR.', + ], + [ + 'errorCode' => 'OperationDenied.NeedVpconnOwner', + 'errorMessage' => 'The operation is denied.', + ], + [ + 'errorCode' => 'OperationDenied.NeedPconnOwner', + 'errorMessage' => 'The operation is denied.', + ], + [ + 'errorCode' => 'Forbidden.NotInAllowDeleteStatus', + 'errorMessage' => 'Only physical connection in the Cancelled, Rejected, Terminated, Allocated, or AllocationFailed states can be deleted.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.PconnQos', + 'errorMessage' => 'The specified resource of PconnQos is already associated.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnectionId', + 'errorMessage' => 'PhysicalConnection is not found.', + ], + [ + 'errorCode' => 'OperationDenied.NeedVpconnOwnerOrPconnOwner', + 'errorMessage' => 'The deletion failed. Only the owner of virtual physical connection or physical connection can delete it.', + ], + [ + 'errorCode' => 'OperationDenied.ExistVbrInPhysicalConnection', + 'errorMessage' => 'It cannot be deleted when VBR exists.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The PhysicalConnectionId provided does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n"}]', + 'title' => 'DeletePhysicalConnection', + 'description' => 'You can only delete a connection over an Express Connect circuit that is in the **Allocated**, **Confirmed**, **Rejected**, **Canceled**, **AllocationFailed**, and **Terminated** states.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CancelPhysicalConnection' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-119mfjzm7****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.NotAllowedInState', + 'errorMessage' => 'The request does not allow in this state.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The PhysicalConnectionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":"{\\n \\"RequestId\\": \\"BE36E95A-F83E-4127-A29E-F2F35D4C999A\\"\\n}"}]', + 'title' => 'CancelPhysicalConnection', + 'summary' => 'Cancels an Express Connect circuit before it is enabled. After you perform this operation, the Express Connect circuit enters the Canceled state.', + 'description' => 'You can cancel only an Express Connect circuit that is in the **Initial**, **Approved**, **Allocated**, or **Confirmed** state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyPhysicalConnectionAttribute' => [ + 'summary' => 'Modifies the configurations of an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-119mfjzm******', + ], + ], + [ + 'name' => 'LineOperator', + 'in' => 'query', + 'schema' => [ + 'description' => 'The connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **CT**: China Telecom'."\n" + .'* **CU**: China Unicom'."\n" + .'* **CM**: China Mobile'."\n" + .'* **CO**: other connectivity providers in the Chinese mainland'."\n" + .'* **Equinix**: Equinix'."\n" + .'* **Other**: other connectivity providers outside the Chinese mainland'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CT', + ], + ], + [ + 'name' => 'bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth value for the connection over the Express Connect circuit. Unit: Mbit/s. Valid values: 2 to 10240.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'PeerLocation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The geographical location of the data center.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'XX Number, XX Road, XX Town, XX District, Hangzhou City, Zhejiang Province.', + ], + ], + [ + 'name' => 'PortType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **100Base-T**: 100 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-T** (default): 1,000 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-LX**: 1,000 Mbit/s single-mode optical port (10 kilometers)'."\n" + .'* **10GBase-T**: 10,000 Mbit/s copper Ethernet port'."\n" + .'* **10GBase-LR**: 10,000 Mbit/s single-mode optical port (10 kilometers)'."\n" + .'* **40GBase-LR**: 40,000 Mbit/s single-mode optical port'."\n" + .'* **100GBase-LR**: 100,000 Mbit/s single-mode optical port'."\n" + ."\n" + .'> To use ports 40GBase-LR and 100GBase-LR, you must first contact your account manager.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1000Base-LX', + ], + ], + [ + 'name' => 'RedundantPhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the redundant Express Connect circuit. The redundant Express Connect circuit must be in the **Allocated**, **Confirmed**, or **Enabled** state.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-119mfjzm7', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the Express Connect circuit.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'The description of the Express Connect circuit.', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Express Connect circuit.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Name', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'efefe566754h', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'efefe566754h', + ], + ], + [ + 'name' => 'CircuitCode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'longtel001', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '013EE132-A109-4247-91B0-099A8FF49AD7', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidLineOperator.Malformd', + 'errorMessage' => 'The LineOperator provided was invalid.', + ], + [ + 'errorCode' => 'InvalidPeerLocation.Malformd', + 'errorMessage' => 'The PeerLocation provided was invalid.', + ], + [ + 'errorCode' => 'InvalidPortType.Malformd', + 'errorMessage' => 'The PortType provided was invalid.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified ?Name? is not valid.', + ], + [ + 'errorCode' => 'InvalidStatus', + 'errorMessage' => 'invalid physical connection status.', + ], + [ + 'errorCode' => 'InvalidBandwidth', + 'errorMessage' => 'invalid physical connection banwidth.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnection', + 'errorMessage' => 'redundant physical connection doesn\'t belong to current user.', + ], + [ + 'errorCode' => 'InvalidRedundantPhysicalConnectionStatus', + 'errorMessage' => 'invalid redundant physical connection status.', + ], + [ + 'errorCode' => 'InvalidCircuitCode.Malformed', + 'errorMessage' => 'circuitCode is illegal.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionOperator.Malformed', + 'errorMessage' => 'Specified PhysicalConnection Operator is not valid.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionBandwidth.Malformed', + 'errorMessage' => 'Specified PhysicalConnection Bandwidth is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.VPconn', + 'errorMessage' => 'The operation is not allowed because of VPconn.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The PhysicalConnectionId provided does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"013EE132-A109-4247-91B0-099A8FF49AD7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 013EE132-A109-4247-91B0-099A8FF49AD7\\n","errorExample":""}]', + 'title' => 'ModifyPhysicalConnectionAttribute', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* If an Express Connect circuit is in the **Initial**, **Enabled**, or **Rejected** state, you can modify the specifications of the Express Connect circuit and the ID of the redundant circuit.'."\n" + .'* If an Express Connect circuit is in the **Canceled**, **Allocating**, **AllocationFailed**, or **Terminated** state, you cannot modify the specifications of the Express Connect circuit.'."\n" + .'* After you modify the specifications of an Express Connect circuit that is in the **Rejected** state, the Express Connect circuit enters the **Initial** state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'EnablePhysicalConnection' => [ + 'summary' => 'Enables an Express Connect circuit that is in the Confirmed state. After you perform this operation, the Express Connect circuit enters the Enabled state.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region where the Express Connect circuit is deployed.'."\n" + ."\n" + .'You can call the DescribeRegions operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-119mfjz****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'ByPassSp', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to skip the order lifecycle. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n" + ."\n" + .'> To use this feature, you must contact your account manager.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.NotAllowedInState', + 'errorMessage' => 'The request does not allow in this state.', + ], + [ + 'errorCode' => 'INSTANCE.STATUS.NOT.ALLOW', + 'errorMessage' => 'Instance status not allow', + ], + [ + 'errorCode' => 'ALIUID.NOT.ALLOW.WITHOUT.SP', + 'errorMessage' => 'AliUid not allow direct enable physical connection', + ], + [ + 'errorCode' => 'ACCESS.DEVICE.NOT.ALLOW.WITHOUT.SP', + 'errorMessage' => 'Access device not allow direct enable physical connection', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The PhysicalConnectionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"20365164-5b0d-460a-83c2-2189972b3349\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 20365164-5b0d-460a-83c2-2189972b3349\\n","errorExample":""}]', + 'title' => 'EnablePhysicalConnection', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* You can enable only an Express Connect circuit that is in the **Confirmed** state.'."\n" + .'* After you enable an Express Connect circuit, it enters the **Enabled** state.'."\n" + .'* **EnablePhysicalConnection** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribePhysicalConnections](~~36042~~) operation to query the status of the task.'."\n" + .'* You cannot repeatedly call **EnablePhysicalConnection** for an Express Connect circuit in the **Confirmed** state within a specific time period.'."\n", + ], + 'TerminatePhysicalConnection' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-119mfjzm****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.NotAllowedInState', + 'errorMessage' => 'The request does not allow in this state.', + ], + [ + 'errorCode' => 'Forbidden.VbrAttached', + 'errorMessage' => 'Cannot terminate physical connection when virtual border routers are still attached.', + ], + [ + 'errorCode' => 'OperationFailed.VpconnAttached', + 'errorMessage' => 'Cannot terminate physical connection when vpconn are still attached.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The PhysicalConnectionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'TerminatePhysicalConnection', + 'summary' => 'Disables an Express Connect circuit after it is enabled.', + 'description' => 'After you call this operation, the specified Express Connect circuit changes to the **Terminating** state. After the Express Connect circuit is disabled, it changes to the **Terminated** state. When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* You can only disable an Express Connect circuit that is in the **Enabled** state.'."\n" + .'* Before you disable an Express Connect circuit, you must delete the virtual border routers (VBRs) associated with it.'."\n", + ], + 'RecoverPhysicalConnection' => [ + 'summary' => 'Resumes an Express Connect circuit.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'title' => '恢复的Pconn', + 'description' => 'The ID of the Express Connect circuit.'."\n" + ."\n" + .'> You can resume only shared Express Connect circuits by calling this API operation.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + ], + [ + 'name' => 'Token', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等Token', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => 'DryRun', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, the request ID is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'CD14EA74-E9C3-59A9-942A-DFEC7E12818D', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnection', + 'errorMessage' => 'The status of %s is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound', + 'errorMessage' => 'The specified resource %s is not found.', + ], + [ + 'errorCode' => 'OperationDenied.TerminateVirtualPhysicalConnection', + 'errorMessage' => 'The operation is not allowed because of TerminateVirtualPhysicalConnection.', + ], + [ + 'errorCode' => 'OperationDenied.PconnNotAllowRecover', + 'errorMessage' => 'Exclusive physical connection does not allow recovery.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CD14EA74-E9C3-59A9-942A-DFEC7E12818D\\"\\n}","errorExample":""},{"type":"xml","example":"\\n CD14EA74-E9C3-59A9-942A-DFEC7E12818D\\n","errorExample":""}]', + 'title' => 'RecoverPhysicalConnection', + 'description' => '# [](#)Description'."\n" + ."\n" + .'You can call this API operation to resume a suspended Express Connect circuit. You can resume only shared Express Connect circuits by calling this API operation.'."\n", + ], + 'AttachVbrToVpconn' => [ + 'summary' => 'Associates a virtual border router (VBR) with a hosted connection.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'VpconnId', + 'in' => 'query', + 'schema' => [ + 'title' => '迁移到目标vpconn', + 'description' => 'The ID of the hosted connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'title' => '待迁移的vbr', + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vbr-bp133sn3nwjvu7twc****', + ], + ], + [ + 'name' => 'Token', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等Token', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => 'DryRun', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including required parameters, request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, the request ID is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the hosted connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5356F028-0F5C-56FC-8574-897D24379041', + ], + 'VirtualPhysicalConnection' => [ + 'title' => 'Vpconn的实例ID', + 'description' => 'The ID of the hosted connection.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1mrgfbtmc9brre7****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.VPCONN', + 'errorMessage' => 'The quota of VBR_COUNT_PER_VPCONN is exceeded, usage 1/1.', + ], + [ + 'errorCode' => 'OperationFailed.VbrBindedPconn', + 'errorMessage' => 'The operation is failed because of VbrBindedPconn.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnectionId', + 'errorMessage' => 'PhysicalConnection is not found. ', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnection', + 'errorMessage' => 'The specified PhysicalConnectionId [%s] is not in Enabled state.', + ], + [ + 'errorCode' => 'ResourceNotFound.VirtualBorderRouter', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5356F028-0F5C-56FC-8574-897D24379041\\",\\n \\"VirtualPhysicalConnection\\": \\"pc-bp1mrgfbtmc9brre7****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5356F028-0F5C-56FC-8574-897D24379041\\n pc-bp1mrgfbtmc9brre7****\\n","errorExample":""}]', + 'title' => 'AttachVbrToVpconn', + ], + 'GetPhysicalConnectionServiceStatus' => [ + 'summary' => 'Checks whether outbound data transfer billing is enabled for the current account.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The ID of the region for which you want to query the status of outbound data transfer billing.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'Enabled' => [ + 'title' => '是否开通出云流量服务', + 'description' => 'Indicates whether billing for outbound data transfer is enabled. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"Enabled\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n true\\n","errorExample":""}]', + 'title' => 'GetPhysicalConnectionServiceStatus', + 'description' => 'You can call this API operation to query the status of outbound data transfer billing for the current account. For more information about outbound data transfer billing, see [Outbound data transfer billing](~~274385~~) and [Billing](~~54582~~).', + ], + 'DescribeAccessPoints' => [ + 'summary' => 'Queries the access points of Express Connect circuits in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the access point.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The language of the response. Valid values:'."\n" + ."\n" + .'* **zh-CN**: Chinese'."\n" + .'* **en-US** (default): English'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'zh-CN', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '3E85D803-C7CF-4BCD-9CFE-6DBA1DFFA027', + ], + 'PageNumber' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries returned per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'AccessPointSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AccessPointType' => [ + 'description' => 'The information about the access point.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the access point. Valid values:'."\n" + ."\n" + .'* **recommended**: The access point is ready for use.'."\n" + .'* **hot**: A large number of Express Connect circuits are connected to the access point.'."\n" + .'* **full**: The number of Express Connect circuits connected to the access point has reached the upper limit.'."\n" + .'* **disabled**: The access point is unavailable.'."\n", + 'type' => 'string', + 'example' => 'recommended', + ], + 'Type' => [ + 'description' => 'The network type of the Express Connect circuit. Default value: **VPC**.'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'HostOperator' => [ + 'description' => 'The Internet service provider (ISP) of the access point. Valid values:'."\n", + 'type' => 'string', + 'example' => 'Telehouse', + ], + 'Description' => [ + 'description' => 'The description of the access point.'."\n", + 'type' => 'string', + 'example' => 'The description of the access point.', + ], + 'AttachedRegionNo' => [ + 'description' => 'The region ID of the access point.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Name' => [ + 'description' => 'The name of the access point.'."\n", + 'type' => 'string', + 'example' => 'Name', + ], + 'AccessPointId' => [ + 'description' => 'The ID of the access point.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-hangzhou-****', + ], + 'Location' => [ + 'description' => 'The location of the access point.'."\n", + 'type' => 'string', + 'example' => 'Hangzhou', + ], + 'AccessPointFeatureModels' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AccessPointFeatureModel' => [ + 'description' => 'The feature model of the access point.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'FeatureValue' => [ + 'description' => 'The feature value of the access point.'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'FeatureKey' => [ + 'description' => 'The feature of the access point.'."\n", + 'type' => 'string', + 'example' => 'AP_Support_VbrBandwidthLimit', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidAccessPointType.NotSupport', + 'errorMessage' => 'Invalid access point type.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupport', + 'errorMessage' => 'The RegionId provided does not support in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"3E85D803-C7CF-4BCD-9CFE-6DBA1DFFA027\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 5,\\n \\"AccessPointSet\\": {\\n \\"AccessPointType\\": [\\n {\\n \\"Status\\": \\"recommended\\",\\n \\"Type\\": \\"VPC\\",\\n \\"HostOperator\\": \\"中国电信\\",\\n \\"Description\\": \\"接入点描述信息\\",\\n \\"AttachedRegionNo\\": \\"cn-hangzhou\\",\\n \\"Name\\": \\"杭州-余杭-C\\",\\n \\"AccessPointId\\": \\"ap-cn-hangzhou-****\\",\\n \\"Location\\": \\"杭州\\",\\n \\"AccessPointFeatureModels\\": {\\n \\"AccessPointFeatureModel\\": [\\n {\\n \\"FeatureValue\\": \\"true\\",\\n \\"FeatureKey\\": \\"AP_Support_VbrBandwidthLimit\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 3E85D803-C7CF-4BCD-9CFE-6DBA1DFFA027\\n 1\\n 10\\n 5\\n \\n recommended\\n VPC\\n 中国电信\\n 接入点描述信息\\n cn-hangzhou\\n 杭州-余杭-C\\n ap-cn-hangzhou-****\\n 杭州\\n \\n true\\n AP_Support_VbrBandwidthLimit\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeAccessPoints', + ], + 'ConfirmPhysicalConnection' => [ + 'summary' => 'Changes the status of an Express Connect circuit to Confirmed.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-119mf****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e0****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'API-20365164-5b0d-460a-83c2-2189972b****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnectionId', + 'errorMessage' => 'PhysicalConnection is not found.', + ], + [ + 'errorCode' => 'MissingParam.RegionNo', + 'errorMessage' => 'RegionNo is missing.', + ], + [ + 'errorCode' => 'MissingParam.AliUid', + 'errorMessage' => 'AliUid is missing.', + ], + [ + 'errorCode' => 'MissingParam.PhysicalConnectionId', + 'errorMessage' => 'PhysicalConnectionId is missing.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The specified physicalConnection is not found', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnection', + 'errorMessage' => 'The specified PhysicalConnectionId is not in Allocated state.', + ], + [ + 'errorCode' => 'OperationUnsupported.SkipConstruction', + 'errorMessage' => 'You can not skip construction.', + ], + [ + 'errorCode' => 'ResourceNotFound.PhysicalConnection', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"API-20365164-5b0d-460a-83c2-2189972b****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n API-20365164-5b0d-460a-83c2-2189972b****\\n","errorExample":""}]', + 'title' => 'ConfirmPhysicalConnection', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribePhysicalConnections' => [ + 'summary' => 'Queries Express Connect circuits in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Default value: **10**. Valid values: **1** to **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to return the data about pending orders. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The filter keys.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the filter. Valid values:'."\n" + ."\n" + .'* **PhysicalConnectionId**: the ID of the Express Connect circuit.'."\n" + ."\n" + .'* **AccessPointId**: the ID of the access point.'."\n" + ."\n" + .'* **Type**: the type of resource to which the Express Connect circuit is connected. You can set Type only to **VPC**.'."\n" + ."\n" + .'* **LineOperator**: the connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .' * **CT**: China Telecom.'."\n" + .' * **CU**: China Unicom.'."\n" + .' * **CM**: China Mobile.'."\n" + .' * **CO**: other connectivity providers in the Chinese mainland.'."\n" + .' * **Equinix**: Equinix.'."\n" + .' * **Other**: other connectivity providers outside the Chinese mainland.'."\n" + ."\n" + .'* **Spec**: the specification of the Express Connect circuit. Valid values:'."\n" + ."\n" + .' * **1G and below**'."\n" + .' * **10G**'."\n" + .' * **40G**'."\n" + .' * **100G**'."\n" + ."\n" + .'> By default, you cannot set the value to **40G** or **100G**. To use these values, you must first contact your account manager.'."\n" + ."\n" + .'* **Status**: the status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .' * **Initial**: The application is under review.'."\n" + .' * **Approved**: The application is approved.'."\n" + .' * **Allocating**: The system is allocating resources.'."\n" + .' * **Allocated**: The Express Connect circuit is under construction.'."\n" + .' * **Confirmed**: The Express Connect circuit is pending for user confirmation.'."\n" + .' * **Enabled**: The Express Connect circuit is enabled.'."\n" + .' * **Rejected**: The application is rejected.'."\n" + .' * **Canceled**: The application is canceled.'."\n" + .' * **Allocation Failed**: The system failed to allocate resources.'."\n" + .' * **Terminating**: The Express Connect circuit is being disabled.'."\n" + .' * **Terminated**: The Express Connect circuit is disabled.'."\n" + ."\n" + .'* **Name**: the name of the Express Connect circuit.'."\n" + ."\n" + .'* **ProductType**: the type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .' * **VirtualPhysicalConnection**: shared Express Connect circuit'."\n" + .' * **PhysicalConnection**: dedicated Express Connect circuit.'."\n" + ."\n" + .'You can specify at most five filter conditions in each request. The logical relation among the filter conditions is **AND**. Therefore, an Express Connect circuit is returned only when all specified filter conditions are matched.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Name', + ], + 'Value' => [ + 'description' => 'The filter values.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The value of the filter condition.'."\n" + ."\n" + .'You can specify at most five values for a filter condition. The logical relation among the values of each filter condition is **OR**. Therefore, an Express Connect circuit is returned when one of the specified values is matched.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nametest', + ], + 'required' => false, + 'example' => '1', + 'maxItems' => 5, + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be up to 64 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'It can be up to 128 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the Express Connect circuit belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-aek2yvwibxrmrkq', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0E6D0EC4-7C91-53E2-9F65-64BF713114B0', + ], + 'PageNumber' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page. Default value: **10**. Valid values: **1** to **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PhysicalConnectionSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PhysicalConnectionType' => [ + 'description' => 'The list of Express Connect circuits.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The type of resource to which the Express Connect circuit is connected. Only **VPC** may be returned.'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'Status' => [ + 'description' => 'The status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Initial**'."\n" + .'* **Approved**'."\n" + .'* **Allocating**'."\n" + .'* **Allocated**'."\n" + .'* **Confirmed**'."\n" + .'* **Enabled**'."\n" + .'* **Rejected**'."\n" + .'* **Canceled**'."\n" + .'* **Allocation Failed**'."\n" + .'* **Terminating**'."\n" + .'* **Terminated**'."\n", + 'type' => 'string', + 'example' => 'Enabled', + ], + 'CreationTime' => [ + 'description' => 'The time when the Express Connect circuit was created.'."\n", + 'type' => 'string', + 'example' => '2021-08-24T07:30:58Z', + ], + 'AdLocation' => [ + 'description' => 'The location of the access point.'."\n", + 'type' => 'string', + 'example' => 'Number 10, XX Road, XX Town, XX District, Hangzhou City, Zhejiang Province.', + ], + 'ReservationActiveTime' => [ + 'description' => 'The time when the pending order takes effect.'."\n", + 'type' => 'string', + 'example' => '2022-02-25T11:01:04Z', + ], + 'ReservationOrderType' => [ + 'description' => 'The type of the pending order.'."\n" + ."\n" + .'If the value is **RENEW**, it indicates that the order is placed for service renewal.'."\n", + 'type' => 'string', + 'example' => 'RENEW', + ], + 'PortNumber' => [ + 'description' => 'The ID of the port on the access device.'."\n", + 'type' => 'string', + 'example' => '1/1/1', + ], + 'Spec' => [ + 'description' => 'The specification of the Express Connect circuit.'."\n" + ."\n" + .'Unit: **G** (Gbit/s).'."\n", + 'type' => 'string', + 'example' => '10G', + ], + 'ChargeType' => [ + 'description' => 'The billing method of the Express Connect circuit.'."\n" + ."\n" + .'If **Prepaid** is returned, it indicates that the Express Connect circuit is billed on a subscription basis.'."\n", + 'type' => 'string', + 'example' => 'Prepaid', + ], + 'ReservationInternetChargeType' => [ + 'description' => 'The billing method of the pending order.'."\n" + ."\n" + .'If **PayByBandwidth** is returned, it indicates that the Express Connect circuit is billed on a pay-by-bandwidth basis.'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'Description' => [ + 'description' => 'The description of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'Bandwidth' => [ + 'description' => 'The maximum bandwidth of the Express Connect circuit.'."\n" + ."\n" + .'Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + 'EnabledTime' => [ + 'description' => 'The time when the Express Connect circuit was enabled.'."\n", + 'type' => 'string', + 'example' => '2021-08-24T07:33:18Z', + ], + 'LineOperator' => [ + 'description' => 'The connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **CT**: China Telecom.'."\n" + .'* **CU**: China Unicom.'."\n" + .'* **CM**: China Mobile.'."\n" + .'* **CO**: other connectivity providers in the Chinese mainland.'."\n" + .'* **Equinix**: Equinix.'."\n" + .'* **Other**: other connectivity providers outside the Chinese mainland.'."\n", + 'type' => 'string', + 'example' => 'CT', + ], + 'PeerLocation' => [ + 'description' => 'The geographical location of the data center.'."\n", + 'type' => 'string', + 'example' => 'XX Number, XX Road, XX Town, XX District, Hangzhou City, Zhejiang Province.', + ], + 'RedundantPhysicalConnectionId' => [ + 'description' => 'The ID of the standby Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-119mfjzm****', + ], + 'Name' => [ + 'description' => 'The name of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'CircuitCode' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n", + 'type' => 'string', + 'example' => 'longtel001', + ], + 'EndTime' => [ + 'description' => 'The time when the Express Connect circuit expires.'."\n", + 'type' => 'string', + 'example' => '2022-04-24T16:00:00Z', + ], + 'PortType' => [ + 'description' => 'The port type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **100Base-T**: 100 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-T**: 1,000 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-LX**: 1,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **10GBase-T**: 10,000 Mbit/s copper Ethernet port'."\n" + .'* **10GBase-LR**: 10,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **40GBase-LR**: 40,000 Mbit/s single-mode optical port'."\n" + .'* **100GBase-LR**: 100,000 Mbit/s single-mode optical port'."\n" + ."\n" + .'> Whether 40GBase-LR and 100GBase-LR ports can be created depends on resource supplies. For more information, contact your account manager.'."\n", + 'type' => 'string', + 'example' => '10GBase-LR', + ], + 'BusinessStatus' => [ + 'description' => 'The status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Normal**: enabled'."\n" + .'* **FinancialLocked**: locked due to overdue payments'."\n" + .'* **SecurityLocked**: locked for security reasons'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'LoaStatus' => [ + 'description' => 'The status of the letter of authorization (LOA). Valid values:'."\n" + ."\n" + .'* **Applying**: The LOA is pending for approval.'."\n" + .'* **Accept**: The LOA is approved.'."\n" + .'* **Available**: The LOA is available.'."\n" + .'* **Rejected**: The LOA is rejected.'."\n" + .'* **Completing**: The Express Connect circuit is under construction.'."\n" + .'* **Complete**: The Express Connect circuit is installed.'."\n" + .'* **Deleted**: The LOA is deleted.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'AccessPointId' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-hangzhou-finance-yh-E', + ], + 'AccessPointType' => [ + 'description' => 'The type of the access point.'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'HasReservationData' => [ + 'description' => 'Indicates whether the data about pending orders is returned. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'PhysicalConnectionId' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1ciz7ekd2grn1as****', + ], + 'ProductType' => [ + 'description' => 'The type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **VirtualPhysicalConnection**: shared Express Connect circuit'."\n" + .'* **PhysicalConnection**: dedicated Express Connect circuit'."\n", + 'type' => 'string', + 'example' => 'PhysicalConnection', + ], + 'VirtualPhysicalConnectionCount' => [ + 'description' => 'The number of Express Connect circuits that are established.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'ParentPhysicalConnectionId' => [ + 'description' => 'The ID of the parent Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1ciz7ekd2grn1as****', + ], + 'ParentPhysicalConnectionAliUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the parent Express Connect circuit belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '283117732402483989', + ], + 'VlanId' => [ + 'description' => 'The VLAN ID of the shared Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'OrderMode' => [ + 'description' => 'The payer for the hosted connection. Valid values:'."\n" + ."\n" + .'* **PayByPhysicalConnectionOwner**: The partner pays for the shared Express Connect circuit.'."\n" + .'* **PayByVirtualPhysicalConnectionOwner**: The tenant pays for the shared Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'PayByPhysicalConnectionOwner', + ], + 'VpconnStatus' => [ + 'description' => 'The status of the shared Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Confirmed**'."\n" + .'* **UnConfirmed**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Confirmed', + ], + 'ExpectSpec' => [ + 'description' => 'The estimated maximum bandwidth of the shared Express Connect circuit. The estimated bandwidth takes effect after you complete the payment.'."\n" + ."\n" + .'Unit: **M** (Mbit/s) and **G** (Gbit/s).'."\n", + 'type' => 'string', + 'example' => '50M', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID to which the instance belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmwu3k52prgdi', + ], + 'AdDetailLocation' => [ + 'description' => 'The information about the data center and rack.'."\n", + 'type' => 'string', + 'example' => 'Position 30, Server Rack JXX, Booth ET135ET135-XX-2, Room XX, Building 10, XX Road, XX Town, XX District, Hangzhou, Zhejiang Province'."\n", + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'tags' => [ + 'description' => 'The tags that are added to the cluster.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 64 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + 'QosId' => [ + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'example' => 'qos-bp10s3szn8rgnxuw7****', + ], + 'OpticalModuleModel' => [ + 'title' => '用户输入的光模块型号。', + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationUnsupported.ResourceGroupId', + 'errorMessage' => 'ResourceGroupId in financial region is unsupported.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified tag key is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidFilterKey.ValueNotSupported', + 'errorMessage' => 'Specified filter key is not supported: Filter.X.key', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0E6D0EC4-7C91-53E2-9F65-64BF713114B0\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 1,\\n \\"PhysicalConnectionSet\\": {\\n \\"PhysicalConnectionType\\": [\\n {\\n \\"Type\\": \\"VPC\\",\\n \\"Status\\": \\"Enabled\\",\\n \\"CreationTime\\": \\"2021-08-24T07:30:58Z\\",\\n \\"AdLocation\\": \\"浙江省杭州市XX区XX镇XX路10号\\",\\n \\"ReservationActiveTime\\": \\"2022-02-25T11:01:04Z\\",\\n \\"ReservationOrderType\\": \\"RENEW\\",\\n \\"PortNumber\\": \\"1/1/1\\",\\n \\"Spec\\": \\"10G\\",\\n \\"ChargeType\\": \\"Prepaid\\",\\n \\"ReservationInternetChargeType\\": \\"PayByBandwidth\\",\\n \\"Description\\": \\"desctest\\",\\n \\"Bandwidth\\": 10,\\n \\"EnabledTime\\": \\"2021-08-24T07:33:18Z\\",\\n \\"LineOperator\\": \\"CT\\",\\n \\"PeerLocation\\": \\"浙江省杭州市XX区XX镇XX路XX号\\",\\n \\"RedundantPhysicalConnectionId\\": \\"pc-119mfjzm****\\",\\n \\"Name\\": \\"nametest\\",\\n \\"CircuitCode\\": \\"longtel001\\",\\n \\"EndTime\\": \\"2022-04-24T16:00:00Z\\",\\n \\"PortType\\": \\"10GBase-LR\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"LoaStatus\\": \\"Available\\",\\n \\"AccessPointId\\": \\"ap-cn-hangzhou-finance-yh-E\\",\\n \\"AccessPointType\\": \\"VPC\\",\\n \\"HasReservationData\\": \\"false\\",\\n \\"PhysicalConnectionId\\": \\"pc-bp1ciz7ekd2grn1as****\\",\\n \\"ProductType\\": \\"PhysicalConnection\\",\\n \\"VirtualPhysicalConnectionCount\\": 0,\\n \\"ParentPhysicalConnectionId\\": \\"pc-bp1ciz7ekd2grn1as****\\",\\n \\"ParentPhysicalConnectionAliUid\\": 0,\\n \\"VlanId\\": \\"10\\",\\n \\"OrderMode\\": \\"PayByPhysicalConnectionOwner\\",\\n \\"VpconnStatus\\": \\"Confirmed\\",\\n \\"ExpectSpec\\": \\"50M\\",\\n \\"ResourceGroupId\\": \\"rg-acfmwu3k52p****\\",\\n \\"AdDetailLocation\\": \\"浙江省杭州市XX区XX镇XX路10号, XX机房, ET135ET135-XX-2包间, JXX机柜, position30\\",\\n \\"Tags\\": {\\n \\"tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"QosId\\": \\"qos-bp10s3szn8rgnxuw7****\\",\\n \\"OpticalModuleModel\\": \\"\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 0E6D0EC4-7C91-53E2-9F65-64BF713114B0\\n 1\\n 10\\n 1\\n \\n VPC\\n Enabled\\n 2021-08-24T07:30:58Z\\n 浙江省杭州市XX区XX镇XX路10号\\n 2022-02-25T11:01:04Z\\n RENEW\\n 1/1/1\\n 10G\\n Prepaid\\n PayByBandwidth\\n desctest\\n 10\\n 2021-08-24T07:33:18Z\\n CT\\n 浙江省杭州市XX区XX镇XX路XX号\\n pc-119mfjzm****\\n nametest\\n longtel001\\n 2022-04-24T16:00:00Z\\n 10GBase-LR\\n Normal\\n Available\\n ap-cn-hangzhou-finance-yh-E\\n VPC\\n false\\n pc-bp1ciz7ekd2grn1as****\\n PhysicalConnection\\n 0\\n pc-bp1ciz7ekd2grn1as****\\n 10\\n PayByPhysicalConnectionOwner\\n Confirmed\\n 50M\\n rg-acfmwu3k52p****\\n 浙江省杭州市XX区XX镇XX路10号, XX机房, ET135ET135-XX-2包间, JXX机柜, position30\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribePhysicalConnections', + 'description' => 'By default, the system queries information about all Express Connect circuits in the specified region. You can query Express Connect circuits that meet specific conditions by specifying filter conditions provided by the **DescribePhysicalConnections** operation. For more information about the supported filter conditions, see **Key** in the **Request parameters** section.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListPhysicalConnectionFeatures' => [ + 'summary' => 'Queries he connection features supported by a Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **RequestId** as the **ClientToken**. The **RequestId** may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-bp1qrb3044eqixog****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A599D38F-3618-18FD-9427-108FB9B5BD26', + ], + 'PhysicalConnectionFeatures' => [ + 'description' => 'The list of Express Connect circuit features.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The list of Express Connect circuit features.'."\n", + 'type' => 'object', + 'properties' => [ + 'FeatureValue' => [ + 'description' => 'The feature value of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **OK**: Supported'."\n" + .'* **NOK**: Not supported'."\n", + 'type' => 'string', + 'example' => 'OK', + ], + 'FeatureKey' => [ + 'description' => 'The feature key of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **SubifRateLimit**: subinterface throttling'."\n" + .'* **BFD Capability**: Bidirectional Forwarding Detection (BFD)'."\n" + .'* **DualStack**: Dual stack'."\n" + .'* **CEN**: When a virtual border router (VBR) is attached to a Cloud Enterprise Network (CEN) instance and BGP routes are advertised on the user side, attributes such as **as-path** and **community** are carried.'."\n" + .'* **CENv6**: When a VBR is attached to an IPv6 CEN instance and BGP routes are advertised on the user side, attributes such as **as-path** and **community** are carried.'."\n" + .'* **QOS**: The device supports configuring QOS policies on physical ports.'."\n" + .'* **MSHA**: The device supports fast switching groups between two VBRs.'."\n" + .'* **MULTI_MS_HA**: The device supports a maximum of eight VBRs that can be added to the same ECR.'."\n", + 'type' => 'string', + 'example' => 'SubifRateLimit', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.PhysicalConnectionId', + 'errorMessage' => 'The PhysicalConnectionId is missing.', + ], + [ + 'errorCode' => 'MissingParam.RegionNo', + 'errorMessage' => 'The RegionId is missing.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The PhysicalConnectionId provided does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A599D38F-3618-18FD-9427-108FB9B5BD26\\",\\n \\"PhysicalConnectionFeatures\\": [\\n {\\n \\"FeatureValue\\": \\"OK\\",\\n \\"FeatureKey\\": \\"SubifRateLimit\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n A599D38F-3618-18FD-9427-108FB9B5BD26\\n \\n OK\\n SubifRateLimit\\n \\n","errorExample":""}]', + 'title' => 'ListPhysicalConnectionFeatures', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CompletePhysicalConnectionLOA' => [ + 'summary' => 'Generates a report for an installed Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that it is unique among different requests.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** of each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-230e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that it is unique among different requests.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** of each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-230e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-bp10tvlhnwkw****', + ], + ], + [ + 'name' => 'LineCode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The circuit code provided by the connectivity provider.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'aaa111****', + ], + ], + [ + 'name' => 'LineLabel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The label of the cable in the data center.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'bbb222****', + ], + ], + [ + 'name' => 'LineServiceProvider', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ISP. Valid values:'."\n" + ."\n" + .'* **China Telecom**'."\n" + .'* **China Unicom**'."\n" + .'* **China Mobile**'."\n" + .'* **Other ISPs in China**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Other ISPs in China'."\n", + ], + ], + [ + 'name' => 'LineSPContactInfo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The contact information about line O\\&M.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1388888****', + ], + ], + [ + 'name' => 'FinishWork', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the construction is completed. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F8983C74-E068-4509-B442-89BD82C8F43B', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.AliUid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.RegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.PhysicalConnectionLOA', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.LineCode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.LineLabel', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.LOAStatusNotAllowComplete', + 'errorMessage' => 'The operation is not allowed because of LOAStatusNotAllowComplete.', + ], + [ + 'errorCode' => 'IllegalParam.LineSPContactInfo', + 'errorMessage' => 'LineSPContactInfo is illegal.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F8983C74-E068-4509-B442-89BD82C8F43B\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F8983C74-E068-4509-B442-89BD82C8F43B\\n","errorExample":""}]', + 'title' => 'CompletePhysicalConnectionLOA', + ], + 'DescribePhysicalConnectionLOA' => [ + 'summary' => 'Queries the LOA information about an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp1ca4wca27ex****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '318BB676-0A2B-43A0-9AD8-F1D34E93750F', + ], + 'PhysicalConnectionLOAType' => [ + 'description' => 'The LOA information about the Express Connect circuit.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the LOA. Valid values:'."\n" + ."\n" + .'* **Applying**: The LOA is pending for approval.'."\n" + .'* **Accept**: The LOA is approved.'."\n" + .'* **Available**: The LOA is available.'."\n" + .'* **Rejected**: The LOA is rejected.'."\n" + .'* **Completing**: The Express Connect circuit is under construction.'."\n" + .'* **Complete**: The Express Connect circuit is installed.'."\n" + .'* **Deleted**: The LOA is deleted.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'LineLabel' => [ + 'description' => 'The label of the cable in the data center.'."\n", + 'type' => 'string', + 'example' => 'bbb222', + ], + 'LineCode' => [ + 'description' => 'The circuit code provided by the connectivity provider.'."\n", + 'type' => 'string', + 'example' => 'aaa111', + ], + 'ConstructionTime' => [ + 'description' => 'The time when construction starts.'."\n", + 'type' => 'string', + 'example' => '2019-02-26T08:00:00Z', + ], + 'SI' => [ + 'description' => 'The on-site construction company.'."\n", + 'type' => 'string', + 'example' => 'ctcu', + ], + 'LoaUrl' => [ + 'description' => 'The download URL of the LOA file.'."\n", + 'type' => 'string', + 'example' => 'http://******', + ], + 'CompanyLocalizedName' => [ + 'description' => 'The name of the construction company.'."\n", + 'type' => 'string', + 'example' => 'company', + ], + 'InstanceId' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-bp1ca4wca27****', + ], + 'LineType' => [ + 'description' => 'The type of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **MSTP**'."\n" + .'* **MPLSVPN**'."\n" + .'* **FIBRE**'."\n" + .'* **Other**'."\n", + 'type' => 'string', + 'example' => 'FIBRE', + ], + 'CompanyName' => [ + 'description' => 'The name of the organization that requires the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'test1234', + ], + 'PMInfo' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PMInfo' => [ + 'description' => 'The information about the construction workers.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PMGender' => [ + 'description' => 'The gender of the construction worker. Valid values:'."\n" + ."\n" + .'* **Male**'."\n" + .'* **Female**'."\n", + 'type' => 'string', + 'example' => 'Male', + ], + 'PMCertificateNo' => [ + 'description' => 'The identity document number of the construction worker.'."\n", + 'type' => 'string', + 'example' => '12345671****', + ], + 'PMName' => [ + 'description' => 'The name of the construction worker.'."\n", + 'type' => 'string', + 'example' => 'name', + ], + 'PMCertificateType' => [ + 'description' => 'The identity document type of the construction worker. Valid values:'."\n" + ."\n" + .'* **IDCard**'."\n" + .'* **Passport**'."\n" + .'* **Other**'."\n", + 'type' => 'string', + 'example' => 'Other', + ], + 'PMContactInfo' => [ + 'description' => 'The phone number of the construction worker.'."\n", + 'type' => 'string', + 'example' => '18910010****', + ], + ], + ], + ], + ], + ], + 'LineServiceProvider' => [ + 'description' => 'The ISP. Valid values:'."\n" + ."\n" + .'* **China Telecom**'."\n" + .'* **China Unicom**'."\n" + .'* **China Mobile**'."\n" + .'* **Other ISPs in China**'."\n", + 'type' => 'string', + 'example' => 'Other ISPs in China'."\n", + ], + 'LineSPContactInfo' => [ + 'description' => 'The contact information about line O\\&M.'."\n", + 'type' => 'string', + 'example' => '1388888****', + ], + 'Description' => [ + 'title' => 'LOA错误码', + 'type' => 'string', + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.AliUid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.RegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"318BB676-0A2B-43A0-9AD8-F1D34E93750F\\",\\n \\"PhysicalConnectionLOAType\\": {\\n \\"Status\\": \\"Available\\",\\n \\"LineLabel\\": \\"bbb222\\",\\n \\"LineCode\\": \\"aaa111\\",\\n \\"ConstructionTime\\": \\"2019-02-26T08:00:00Z\\",\\n \\"SI\\": \\"ctcu\\",\\n \\"LoaUrl\\": \\"http://******\\",\\n \\"CompanyLocalizedName\\": \\"company\\",\\n \\"InstanceId\\": \\"pc-bp1ca4wca27****\\",\\n \\"LineType\\": \\"FIBRE\\",\\n \\"CompanyName\\": \\"test1234\\",\\n \\"PMInfo\\": {\\n \\"PMInfo\\": [\\n {\\n \\"PMGender\\": \\"Male\\",\\n \\"PMCertificateNo\\": \\"12345671****\\",\\n \\"PMName\\": \\"name\\",\\n \\"PMCertificateType\\": \\"Other\\",\\n \\"PMContactInfo\\": \\"18910010****\\"\\n }\\n ]\\n },\\n \\"LineServiceProvider\\": \\"中国其他\\",\\n \\"LineSPContactInfo\\": \\"1388888****\\",\\n \\"Description\\": \\"\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 318BB676-0A2B-43A0-9AD8-F1D34E93750F\\n \\n Available\\n bbb222\\n aaa111\\n 2019-02-26T08:00:00Z\\n ctcu\\n http://******\\n company\\n pc-bp1ca4wca27****\\n FIBRE\\n test1234\\n \\n Male\\n 12345671****\\n name\\n Other\\n 18910010****\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribePhysicalConnectionLOA', + ], + 'ListGeographicSubRegions' => [ + 'summary' => 'Queries the most recent region list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + 'GeographicSubRegions' => [ + 'description' => 'The region list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The region list.'."\n", + 'type' => 'string', + 'example' => '["cn-beijing","cn-hangzhou"]', + ], + ], + 'Count' => [ + 'description' => 'The number of entries.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + ], + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\",\\n \\"GeographicSubRegions\\": [\\n \\"[\\\\\\"cn-beijing\\\\\\",\\\\\\"cn-hangzhou\\\\\\"]\\"\\n ],\\n \\"Count\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n [\\"cn-beijing\\",\\"cn-hangzhou\\"]\\n 10\\n","errorExample":""}]', + 'title' => 'ListGeographicSubRegions', + ], + 'ListBusinessRegions' => [ + 'summary' => 'Queries the list of regions available for an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The language of the response. Valid values:'."\n" + ."\n" + .'* **zh-CN** (default): Chinese'."\n" + .'* **en-US**: English.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'zh-CN', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '304FE68E-16D8-5B90-B2B3-FE5C5C08C24B', + ], + 'GeographicSubRegions' => [ + 'description' => 'The list of regions available for Express Connect circuits.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RegionId' => [ + 'description' => 'The ID of the region where circuits are available.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Name' => [ + 'description' => 'The name of the region where circuits are available.'."\n", + 'type' => 'string', + 'example' => '', + ], + ], + 'description' => '', + ], + ], + 'Count' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + ], + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"304FE68E-16D8-5B90-B2B3-FE5C5C08C24B\\",\\n \\"GeographicSubRegions\\": [\\n {\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Name\\": \\"华东1(杭州)\\"\\n }\\n ],\\n \\"Count\\": 10\\n}","type":"json"}]', + 'title' => 'ListBusinessRegions', + ], + 'ListBusinessAccessPoints' => [ + 'summary' => 'Queries the access points of an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F', + ], + 'BusinessAccessPoints' => [ + 'description' => 'The list of access points.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'AccessPointId' => [ + 'description' => 'The ID of the access point.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-hangzhou-xs-B', + ], + 'AccessPointName' => [ + 'description' => 'The name of the access point.'."\n", + 'type' => 'string', + 'example' => 'hangzhou-xs-B'."\n", + ], + 'SupportLineOperator' => [ + 'description' => 'The connectivity provider of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **CT**: China Telecom.'."\n" + .'* **CU**: China Unicom.'."\n" + .'* **CM**: China Mobile.'."\n" + .'* **CO**: other connectivity providers in the Chinese mainland.'."\n" + .'* **Equinix**: Equinix.'."\n" + .'* **Other**: other connectivity providers outside the Chinese mainland.'."\n", + 'type' => 'string', + 'example' => 'CT', + ], + 'SupportPortTypes' => [ + 'description' => 'The port type supported by the access point. Valid values:'."\n" + ."\n" + .'* **100Base-T**: 100 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-T**: 1,000 Mbit/s copper Ethernet port'."\n" + .'* **1000Base-LX**: 1,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **10GBase-T**: 10,000 Mbit/s copper Ethernet port'."\n" + .'* **10GBase-LR**: 10,000 Mbit/s single-mode optical port (10 km)'."\n" + .'* **40GBase-LR**: 40,000 Mbit/s single-mode optical port'."\n" + .'* **100GBase-LR**: 100,000 Mbit/s single-mode optical port'."\n" + ."\n" + .'> To use ports 40GBase-LR and 100GBase-LR, you must first contact your account manager.'."\n", + 'type' => 'string', + 'example' => '1000Base-T', + ], + 'CloudBoxInstanceIds' => [ + 'description' => 'The ID of the cloud box.'."\n" + ."\n" + .'> You can query this parameter if the Express Connect circuits and access points are of the cloud box type.'."\n", + 'type' => 'string', + 'example' => 'cb-****', + ], + 'Longitude' => [ + 'description' => 'The longitude of the access point.'."\n", + 'type' => 'number', + 'format' => 'double', + 'example' => '120.247514', + ], + 'Latitude' => [ + 'description' => 'The latitude of the access point.'."\n", + 'type' => 'number', + 'format' => 'double', + 'example' => '30.198416', + ], + 'OpticalModuleModels' => [ + 'title' => '当前接入点支持的光模块型号集合。', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PortType' => [ + 'title' => '物理专线接入点光模块支持的端口类型。取值:'."\n" + .'● 1000Base-LX:千兆单模光口。'."\n" + .'● 10GBase-LR:万兆单模光口。'."\n" + .'● 40GBase-LR:四万兆单模光口。'."\n" + .'● 100GBase-LR:十万兆单模光口。', + 'type' => 'string', + ], + 'OpticalModuleModel' => [ + 'title' => '物理专线接入点光模块支持型号,取值:'."\n" + .'1000Base-LX : '."\n" + .'SFP-GE-LR-SM1310,10KM'."\n" + .'SFP-GE-ER-SM1310,40KM'."\n" + .'SFP-GE-ZR-SM1550,80KM '."\n" + .'10GBase-LR : '."\n" + .'SFP-10G-LR-SM1310,10KM'."\n" + .'SFP-10G-ER-SM1550,40KM '."\n" + .'SFP-10G-ZR-SM1550,80KM '."\n" + .'40GBase-LR : '."\n" + .'QSFP-40G-LR4-WDM1300,10KM'."\n" + .'QSFP-40G-ER4-WDM1300,40KM'."\n" + .'QSFP-40G-ZR4-WDM1300,80KM'."\n" + .'100GBase-LR : '."\n" + .'QSFP28-100G-LR4-WDM1300,10KM'."\n" + .'QSFP28-100G-ER4-WDM1300,40KM'."\n" + .'QSFP28-100G-ZR4-WDM1300,80KM', + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'Internal system error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\",\\n \\"BusinessAccessPoints\\": [\\n {\\n \\"AccessPointId\\": \\"ap-cn-hangzhou-xs-B\\",\\n \\"AccessPointName\\": \\"杭州-萧山-B\\",\\n \\"SupportLineOperator\\": \\"CT\\",\\n \\"SupportPortTypes\\": \\"1000Base-T\\",\\n \\"CloudBoxInstanceIds\\": \\"cb-****\\",\\n \\"Longitude\\": 120.247514,\\n \\"Latitude\\": 30.198416,\\n \\"OpticalModuleModels\\": [\\n {\\n \\"PortType\\": \\"\\",\\n \\"OpticalModuleModel\\": \\"\\"\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\n \\n ap-cn-hangzhou-xs-B\\n 杭州-萧山-B\\n CT\\n 1000Base-T\\n cb-****\\n 120.247514\\n 30.198416\\n \\n","errorExample":""}]', + 'title' => 'ListBusinessAccessPoints', + ], + 'CreateFailoverTestJob' => [ + 'summary' => 'Creates a failover test.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the failover test.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the failover test.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the failover test.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'title' => '资源类型。取值:'."\n" + .'● PHYSICALCONNECTION 物理专线'."\n" + .'● VIRTUALBORDERROUTER 虚拟边界路由器'."\n" + .'● BGPPEER BGP邻居', + 'description' => 'The resource type of the failover test. Set the value to **PHYSICALCONNECTION**.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'PHYSICALCONNECTION', + 'enum' => [ + 'PHYSICALCONNECTION', + 'VIRTUALBORDERROUTER', + 'BGPPEER', + ], + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'style' => 'repeatList', + 'schema' => [ + 'title' => '资源ID列表。最多可以添加16个资源。', + 'description' => 'The IDs of failover test resources. You can add at most 16 resources.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the resource.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-uf66k4e8pq3r00jfqo0b5'."\n", + ], + 'required' => true, + 'maxItems' => 16, + 'minItems' => 1, + ], + ], + [ + 'name' => 'JobType', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '任务类型。取值:'."\n" + .'● StartNow 立即开始'."\n" + .'● StartLater 稍后开始', + 'description' => 'The type of the failover test. Valid values:'."\n" + ."\n" + .'* **StartNow**'."\n" + .'* **StartLater**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'StartNow', + 'enum' => [ + 'StartNow', + 'StartLater', + ], + ], + ], + [ + 'name' => 'JobDuration', + 'in' => 'query', + 'schema' => [ + 'title' => '任务时长。单位为分钟,取值范围为:1-4320。', + 'description' => 'The duration of the failover test. Unit: minutes. Valid values: **1 to 4320**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'maximum' => '4320', + 'minimum' => '1', + 'example' => '60', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '传true的时候,只进行资源的校验,不进行故障演练任务的创建。传false或者不传的时候,会先进行资源的校验,校验通过后创建故障演练任务。', + 'description' => 'If you set the value to true, the system performs only a dry run without actually performing the actual request. If you set the value to false, the system performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF'."\n", + ], + 'JobId' => [ + 'description' => 'The ID of the failover test.'."\n", + 'type' => 'string', + 'example' => 'ftj-xxxxxxxxx', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'The param of Name [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'The param of Description [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceType', + 'errorMessage' => 'Invalid Resource Type value.', + ], + [ + 'errorCode' => 'EcFailoverTestJobExceedMaxResourceNum', + 'errorMessage' => 'The input resource number is exceeded the quota of 16.', + ], + [ + 'errorCode' => 'EcFailoverTestJobResourceInAnotherProcessingJob', + 'errorMessage' => 'There is another processing failover test job.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceId', + 'errorMessage' => 'The input parameter resource ID is invalid.', + ], + [ + 'errorCode' => 'IncorrectStatus.ResourceId', + 'errorMessage' => 'The specified resource status is invalid.', + ], + [ + 'errorCode' => 'IncorrectBusinessStatus.ResourceId', + 'errorMessage' => 'The specified resource business status is invalid.', + ], + [ + 'errorCode' => 'VpconnNotAssociatedVbr', + 'errorMessage' => 'The specified vpconn is not associated with vbr.', + ], + [ + 'errorCode' => 'VpconnWithVlan0NotSupportShutdown', + 'errorMessage' => 'The specified virtualPhysicalConnection with vlan 0 does not support shutdown.', + ], + [ + 'errorCode' => 'PconnContainsMoreThanOneVpconn', + 'errorMessage' => 'The specified physicalConnection contains more than one virtualPhysicalConnection.', + ], + [ + 'errorCode' => 'PconnContailsMoreThanOneAcrossCountVbr', + 'errorMessage' => 'The specified physicalConnection contains more than one virtualBorderRouter which is across count.', + ], + [ + 'errorCode' => 'IllegalParam.JobType', + 'errorMessage' => 'The specified parameter JobType is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.JobDuration', + 'errorMessage' => 'The specified parameter JobDuration is illegal.', + ], + [ + 'errorCode' => 'AnotherJobTesting', + 'errorMessage' => 'There is another job which is testing.', + ], + [ + 'errorCode' => 'MultiplePconnSingleVbrNotSupportShutdown', + 'errorMessage' => 'Vbr for single vbr and multiple pconn scenarios does not support failover test job.', + ], + [ + 'errorCode' => 'EcFailoverTestJobConflict', + 'errorMessage' => 'The current failover test job task is in operation, please try again later.', + ], + [ + 'errorCode' => 'OperationDeny.VbrWithVlan0', + 'errorMessage' => 'The specified VirtualBorderRouter with vlan 0 does not support shutdown.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\\\n\\",\\n \\"JobId\\": \\"ftj-bp1yh6mvi13aq3g8w****\\"\\n}","type":"json"}]', + 'title' => 'CreateFailoverTestJob', + 'description' => 'You cannot create a failover test in the following scenarios:'."\n" + ."\n" + .'* You have created a failover test in the region and its type is StartNow.'."\n" + .'* The Express Connect circuit or hosted connection has pending orders or overdue payments.'."\n" + .'* A failover test is already performed on the Express Connect circuit or hosted connection.'."\n" + .'* More than one hosted connection is created over the Express Connect circuit.'."\n" + .'* More than one cross-account VBR is created on the Express Connect circuit.'."\n" + .'* No VBR is associated with the hosted connection.'."\n" + .'* The VLAN ID of the hosted connection is set to 0.'."\n", + ], + 'StartFailoverTestJob' => [ + 'summary' => 'Performs a failover test.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the failover test.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'JobId', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务ID', + 'description' => 'The ID of the failover test.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ftj-xxxxxxxxx', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF'."\n", + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.JobId', + 'errorMessage' => 'The specified parameter JobId is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.OnlyForInit', + 'errorMessage' => 'Only the init status failover test job can be started.', + ], + [ + 'errorCode' => 'EcFailoverTestJobResourceInAnotherProcessingJob', + 'errorMessage' => 'There is another processing failover test job.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceId', + 'errorMessage' => 'The input parameter resource ID is invalid.', + ], + [ + 'errorCode' => 'IncorrectStatus.ResourceId', + 'errorMessage' => 'The specified resource status is invalid.', + ], + [ + 'errorCode' => 'IncorrectBusinessStatus.ResourceId', + 'errorMessage' => 'The specified resource business status is invalid.', + ], + [ + 'errorCode' => 'VpconnNotAssociatedVbr', + 'errorMessage' => 'The specified vpconn is not associated with vbr.', + ], + [ + 'errorCode' => 'VpconnWithVlan0NotSupportShutdown', + 'errorMessage' => 'The specified virtualPhysicalConnection with vlan 0 does not support shutdown.', + ], + [ + 'errorCode' => 'PconnContainsMoreThanOneVpconn', + 'errorMessage' => 'The specified physicalConnection contains more than one virtualPhysicalConnection.', + ], + [ + 'errorCode' => 'PconnContailsMoreThanOneAcrossCountVbr', + 'errorMessage' => 'The specified physicalConnection contains more than one virtualBorderRouter which is across count.', + ], + [ + 'errorCode' => 'EcFailoverTestJobConflict', + 'errorMessage' => 'The current failover test job task is in operation, please try again later.', + ], + [ + 'errorCode' => 'AnotherJobTesting', + 'errorMessage' => 'There is another job which is testing.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\\\n\\"\\n}","type":"json"}]', + 'title' => 'StartFailoverTestJob', + 'description' => 'You can perform only failover tests that are in the **Pending** state.'."\n", + ], + 'StopFailoverTestJob' => [ + 'summary' => 'Terminates a failover test.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the failover test.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'JobId', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务ID', + 'description' => 'The ID of the failover test.', + 'type' => 'string', + 'required' => true, + 'example' => 'ftj-xxxxxxxxx', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF'."\n", + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.JobId', + 'errorMessage' => 'The specified parameter JobId is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.OnlyForTesting', + 'errorMessage' => 'Only the failover test job in the testing state can be stopped.', + ], + [ + 'errorCode' => 'EcFailoverTestJobConflict', + 'errorMessage' => 'The current failover test job task is in operation, please try again later.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\\\n\\"\\n}","type":"json"}]', + 'title' => 'StopFailoverTestJob', + ], + 'UpdateFailoverTestJob' => [ + 'summary' => 'Updates a failover test.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the failover test.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that the value is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses the value of **RequestId** as **ClientToken**. The value of **RequestId** for each API request is different.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that the value is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses the value of **RequestId** as **ClientToken**. The value of **RequestId** for each API request is different.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the failover test.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the failover test.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'style' => 'repeatList', + 'schema' => [ + 'title' => '资源ID列表。最多可以添加16个资源。', + 'description' => 'The IDs of the failover test resources. You can add at most 16 resources.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the resource.', + 'type' => 'string', + 'required' => false, + 'example' => 'pc-uf66k4e8pq3r00jfqo0b5'."\n", + ], + 'required' => false, + 'maxItems' => 16, + 'minItems' => 1, + ], + ], + [ + 'name' => 'JobDuration', + 'in' => 'query', + 'schema' => [ + 'title' => '任务时长。单位为分钟,取值范围为:1-4320。', + 'description' => 'The duration of the failover test. Unit: minutes. Valid values: **1** to **4320**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '4320', + 'minimum' => '1', + 'example' => '60', + ], + ], + [ + 'name' => 'JobId', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务ID', + 'description' => 'The ID of the failover test.', + 'type' => 'string', + 'required' => true, + 'example' => 'ftj-xxxxxxxxx', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF'."\n", + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'The param of Name [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'The param of Description [%s] is illegal.', + ], + [ + 'errorCode' => 'EcFailoverTestJobExceedMaxResourceNum', + 'errorMessage' => 'The input resource number is exceeded the quota of 16.', + ], + [ + 'errorCode' => 'EcFailoverTestJobResourceInAnotherProcessingJob', + 'errorMessage' => 'There is another processing failover test job.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceId', + 'errorMessage' => 'The input parameter resource ID is invalid.', + ], + [ + 'errorCode' => 'IncorrectStatus.ResourceId', + 'errorMessage' => 'The specified resource status is invalid.', + ], + [ + 'errorCode' => 'IncorrectBusinessStatus.ResourceId', + 'errorMessage' => 'The specified resource business status is invalid.', + ], + [ + 'errorCode' => 'VpconnNotAssociatedVbr', + 'errorMessage' => 'The specified vpconn is not associated with vbr.', + ], + [ + 'errorCode' => 'VpconnWithVlan0NotSupportShutdown', + 'errorMessage' => 'The specified virtualPhysicalConnection with vlan 0 does not support shutdown.', + ], + [ + 'errorCode' => 'PconnContainsMoreThanOneVpconn', + 'errorMessage' => 'The specified physicalConnection contains more than one virtualPhysicalConnection.', + ], + [ + 'errorCode' => 'PconnContailsMoreThanOneAcrossCountVbr', + 'errorMessage' => 'The specified physicalConnection contains more than one virtualBorderRouter which is across count.', + ], + [ + 'errorCode' => 'IllegalParam.JobDuration', + 'errorMessage' => 'The specified parameter JobDuration is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.JobId', + 'errorMessage' => 'The specified parameter JobId is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.OnlyForInit', + 'errorMessage' => 'Only the init status failover test job can be started.', + ], + [ + 'errorCode' => 'MultiplePconnSingleVbrNotSupportShutdown', + 'errorMessage' => 'Vbr for single vbr and multiple pconn scenarios does not support failover test job.', + ], + [ + 'errorCode' => 'EcFailoverTestJobConflict', + 'errorMessage' => 'The current failover test job task is in operation, please try again later.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\\\n\\"\\n}","type":"json"}]', + 'title' => 'UpdateFailoverTestJob', + ], + 'DeleteFailoverTestJob' => [ + 'summary' => 'Deletes a failover test.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the failover test.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'ch-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000'."\n", + ], + ], + [ + 'name' => 'JobId', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务ID', + 'description' => 'The ID of the failover test.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ftj-xxxxxxxxx', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF'."\n", + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.JobId', + 'errorMessage' => 'The specified parameter JobId is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.OnlyForInitOrStopped', + 'errorMessage' => 'Only failover test job in the status of init or stopped can be deleted.', + ], + [ + 'errorCode' => 'EcFailoverTestJobConflict', + 'errorMessage' => 'The current failover test job task is in operation, please try again later.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\\\n\\"\\n}","type":"json"}]', + 'title' => 'DeleteFailoverTestJob', + 'description' => 'You can delete only failover tests that are in the **Pending** or **Complete** state.'."\n", + ], + 'DescribeFailoverTestJob' => [ + 'summary' => 'Queries failover tests.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the failover test.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'JobId', + 'in' => 'query', + 'schema' => [ + 'title' => '故障演练任务ID', + 'description' => 'The ID of the failover test.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ftj-xxxxxxxxx'."\n", + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + 'FailoverTestJobModel' => [ + 'description' => 'The failover test.'."\n", + 'type' => 'object', + 'properties' => [ + 'JobId' => [ + 'title' => '故障演练任务ID。', + 'description' => 'The ID of the failover test.'."\n", + 'type' => 'string', + 'example' => 'ftj-xxxxxxxxx'."\n", + ], + 'Name' => [ + 'title' => '故障演练任务的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the failover test.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'Description' => [ + 'title' => '故障演练任务的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the failover test.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'ResourceType' => [ + 'title' => '资源类型。取值:'."\n" + .'● PHYSICALCONNECTION 物理专线'."\n" + .'● VIRTUALBORDERROUTER 虚拟边界路由器'."\n" + .'● BGPPEER BGP邻居', + 'description' => 'The type of failover test resource. Only **PHYSICALCONNECTION** is returned.'."\n", + 'type' => 'string', + 'example' => 'PHYSICALCONNECTION', + ], + 'ResourceId' => [ + 'description' => 'The IDs of failover test resources.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the resource.'."\n", + 'type' => 'string', + 'example' => 'pc-hp34pxu31qo36a72u7mgo', + ], + ], + 'JobType' => [ + 'title' => '演练类型。取值:'."\n" + .'● StartNow 立即开始'."\n" + .'● StartLater 稍后开始', + 'description' => 'Indicates whether the failover test is performed immediately. Valid values:'."\n" + ."\n" + .'* **StartNow**'."\n" + .'* **StartLater**'."\n", + 'type' => 'string', + 'example' => 'StartNow', + ], + 'JobDuration' => [ + 'title' => '演练时长。单位为分钟,取值范围为:1-4320', + 'description' => 'The duration of the failover test. Unit: minutes. Valid values: **1 to 4320**.'."\n", + 'type' => 'string', + 'example' => '60', + ], + 'StartTime' => [ + 'title' => '故障演练任务开始时间。按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ。', + 'description' => 'The start time of the failover test. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', + 'type' => 'string', + 'example' => '2023-11-21T14:00:00Z'."\n", + ], + 'StopTime' => [ + 'title' => '故障演练任务结束时间。按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ。', + 'description' => 'The end time of the failover test. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', + 'type' => 'string', + 'example' => '2023-11-21T15:00:00Z'."\n", + ], + 'Status' => [ + 'title' => '故障演练任务状态。取值:'."\n" + .'● Init 待演练'."\n" + .'● Starting 开始中'."\n" + .'● Testing 演练中'."\n" + .'● Stopping 结束中'."\n" + .'● Stopped 已结束', + 'description' => 'The status of the failover test. Valid values:'."\n" + ."\n" + .'* **Init**'."\n" + .'* **Starting**'."\n" + .'* **Testing**'."\n" + .'* **Stopping**'."\n" + .'* **Stopped**'."\n", + 'type' => 'string', + 'example' => 'Init', + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.JobId', + 'errorMessage' => 'The specified parameter JobId is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\",\\n \\"FailoverTestJobModel\\": {\\n \\"JobId\\": \\"ftj-bp1yh6mvi13aq3g8w****\\",\\n \\"Name\\": \\"test\\",\\n \\"Description\\": \\"test\\",\\n \\"ResourceType\\": \\"PHYSICALCONNECTION\\",\\n \\"ResourceId\\": [\\n \\"pc-hp34pxu31qo36a72u****\\"\\n ],\\n \\"JobType\\": \\"StartNow\\",\\n \\"JobDuration\\": \\"60\\",\\n \\"StartTime\\": \\"2023-11-21T14:00:00Z\\\\n\\",\\n \\"StopTime\\": \\"2023-11-21T15:00:00Z\\\\n\\",\\n \\"Status\\": \\"Init\\"\\n }\\n}","type":"json"}]', + 'title' => 'DescribeFailoverTestJob', + ], + 'DescribeFailoverTestJobs' => [ + 'summary' => 'Queries failover tests for Express Connect.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region where you want to perform the failover test.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'title' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'● 第一次查询和没有下一次查询时,均无需填写。'."\n" + .'● 如果有下一次查询,取值为上一次API调用返回的NextToken值。', + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If the value of **NextToken** is not returned, it indicates that no next query is to be sent.'."\n" + .'* If a value of **NextToken** is returned, the value is the token that is used for the subsequent query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'title' => '分批次查询时每次显示的条目数。取值范围:1~100,默认值为20。', + 'description' => 'The number of entries per page. Valid values: **1 to 100**. Default value: 20.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The filter information.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The list of filters.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'title' => '过滤条件。取值:'."\n" + .'● JobId:故障演练任务ID'."\n" + .'● JobName:故障演练任务名称'."\n" + .'● JobStatus:任务状态'."\n" + .' ○ Init 待演练'."\n" + .' ○ Starting 开始中'."\n" + .' ○ Testing 演练中'."\n" + .' ○ Stopping 结束中'."\n" + .' ○ Stopped 已完成'."\n" + .'● ResourceId:资源ID'."\n" + .'● ResourceName:资源名称'."\n" + .'● ResourceType:资源类型'."\n" + .' ○ PHYSICALCONNECTION 物理专线'."\n" + .'一次最多支持输入5个过滤条件,过滤条件不支持重复,如果输入资源ID或者资源名称,必须输入资源类型。各个过滤条件之间为与关系,符合所有的过滤条件,才会返回正确的查询结果。', + 'description' => 'The filter key. Valid values:'."\n" + ."\n" + .'* **JobId**'."\n" + .'* **JobName**'."\n" + .'* **JobStatus**'."\n" + .'* **ResourceId**'."\n" + .'* **ResourceName**'."\n" + .'* **ResourceType**'."\n" + ."\n" + .'> You can specify at most five different filter keys. If you specify ResourceId or ResourceName, you must also specify ResourceType. The logical operator among the filter keys is AND. Results that meet all specified filter keys are returned.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'JobId', + 'enum' => [ + 'JobId', + 'JobName', + 'JobStatus', + 'ResourceId', + 'ResourceName', + 'ResourceType', + ], + ], + 'Value' => [ + 'title' => '过滤条件对应的过滤值。'."\n" + .'一个过滤条件支持最多输入5个过滤值,多个过滤值之间为或关系,只要与其中一个过滤值匹配则视为符合该过滤条件。', + 'description' => 'The value of the filter key.'."\n" + ."\n" + .'> You can specify at most five filter values for each filter key. The logical operator among filter values is OR. If a filter value is matched, the filter key is considered matched.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The value of the filter key.'."\n" + ."\n" + .'> You can specify at most five filter values for each filter key. The logical operator among filter values is OR. If a filter value is matched, the filter key is considered matched.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ftj-xxxxxxxxx', + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'FailoverTestJobList' => [ + 'description' => 'The list of failover tests.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The failover test.'."\n", + 'type' => 'object', + 'properties' => [ + 'JobId' => [ + 'title' => '故障演练任务ID。', + 'description' => 'The ID of the failover test.'."\n", + 'type' => 'string', + 'example' => 'ftj-xxxxxxxxx'."\n", + ], + 'Name' => [ + 'title' => '故障演练任务的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the failover test.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'Description' => [ + 'title' => '故障演练任务的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the failover test.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with \\*\\*http:// **or** https://\\*\\*.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'ResourceType' => [ + 'title' => '资源类型。取值:'."\n" + .'● PHYSICALCONNECTION 物理专线'."\n" + .'● VIRTUALBORDERROUTER 虚拟边界路由器'."\n" + .'● BGPPEER BGP邻居', + 'description' => 'The type of the failover test resource. Only **PHYSICALCONNECTION** is returned.'."\n", + 'type' => 'string', + 'example' => 'PHYSICALCONNECTION', + ], + 'ResourceId' => [ + 'title' => '资源ID列表', + 'description' => 'The IDs of the failover test resources.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID.'."\n", + 'type' => 'string', + 'example' => 'pc-uf66k4e8pq3r00jfqo0b5', + ], + ], + 'JobType' => [ + 'title' => '演练类型。取值:'."\n" + .'● StartNow 立即开始'."\n" + .'● StartLater 稍后开始', + 'description' => 'Indicates whether the failover test is performed immediately. Valid values:'."\n" + ."\n" + .'* **StartNow**'."\n" + .'* **StartLater**'."\n", + 'type' => 'string', + 'example' => 'StartNow', + ], + 'JobDuration' => [ + 'title' => '演练时长。单位为分钟,取值范围为:1-4320', + 'description' => 'The duration of the failover test. Unit: minutes. Valid values: **1 to 4320**.'."\n", + 'type' => 'string', + 'example' => '60', + ], + 'StartTime' => [ + 'title' => '故障演练任务开始时间。按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ。', + 'description' => 'The beginning of the fault drill task. The time must be in UTC. Specify the time in the ISO 8601 standard in `YYYY-MM-DDThh:mm:ssZ` format.', + 'type' => 'string', + 'example' => '2023-11-21T14:00:00Z', + ], + 'StopTime' => [ + 'title' => '故障演练任务结束时间。按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ。', + 'description' => 'The end of the fault drill task. The time must be in UTC. Specify the time in the ISO 8601 standard in `YYYY-MM-DDThh:mm:ssZ` format.', + 'type' => 'string', + 'example' => '2023-11-21T15:00:00Z'."\n", + ], + 'Status' => [ + 'title' => '故障演练任务状态。取值:'."\n" + .'● Init 待演练'."\n" + .'● Starting 开始中'."\n" + .'● Testing 演练中'."\n" + .'● Stopping 结束中'."\n" + .'● Stopped 已结束', + 'description' => 'The status of the failover test. Valid values:'."\n" + ."\n" + .'* **Init**'."\n" + .'* **Starting**'."\n" + .'* **Testing**'."\n" + .'* **Stopping**'."\n" + .'* **Stopped**'."\n", + 'type' => 'string', + 'example' => 'Init', + ], + ], + ], + ], + 'NextToken' => [ + 'title' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'● 第一次查询和没有下一次查询时,均无需填写。'."\n" + .'● 如果有下一次查询,取值为上一次API调用返回的NextToken值。', + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'MaxResults' => [ + 'title' => '分批次查询时每次显示的条目数。取值范围:1~100,默认值为20。', + 'description' => 'The number of entries per page. Valid values: **1 to 100**. Default value: 20.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'TotalCount' => [ + 'title' => '列表总条目数。', + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'Count' => [ + 'title' => '列表当前条目数。', + 'description' => 'The number of entries on the current page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Filter.Key', + 'errorMessage' => 'The filter parameter Key is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.Filter.Value', + 'errorMessage' => 'The filter parameter Value is illegal.', + ], + [ + 'errorCode' => 'SystemQuotaConstraint.Filter.Value', + 'errorMessage' => 'The number of values in a key in the filter parameter cannot exceed 5.', + ], + [ + 'errorCode' => 'SystemQuotaConstraint.Filter.Key', + 'errorMessage' => 'The number of keys in the filter parameter cannot exceed 5.', + ], + [ + 'errorCode' => 'IllegalParam.FilterKey.ResourceType', + 'errorMessage' => 'Filter parameters do not support entering only ResourceId or ResourceName without entering ResourceType.', + ], + [ + 'errorCode' => 'IllegalParam.JobId', + 'errorMessage' => 'The specified parameter JobId is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceType', + 'errorMessage' => 'Invalid %s value.', + ], + [ + 'errorCode' => 'IncorrectStatus.ResourceId', + 'errorMessage' => 'The specified resource status is invalid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"FailoverTestJobList\\": [\\n {\\n \\"JobId\\": \\"ftj-bp1yh6mvi13aq3g8w****\\\\n\\",\\n \\"Name\\": \\"test\\",\\n \\"Description\\": \\"test\\",\\n \\"ResourceType\\": \\"PHYSICALCONNECTION\\",\\n \\"ResourceId\\": [\\n \\"pc-uf66k4e8pq3r00jfq****\\"\\n ],\\n \\"JobType\\": \\"StartNow\\",\\n \\"JobDuration\\": \\"60\\",\\n \\"StartTime\\": \\"2023-11-21T14:00:00Z\\",\\n \\"StopTime\\": \\"2023-11-21T15:00:00Z\\\\n\\",\\n \\"Status\\": \\"Init\\"\\n }\\n ],\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"MaxResults\\": 20,\\n \\"TotalCount\\": 10,\\n \\"Count\\": 10\\n}","type":"json"}]', + 'title' => 'DescribeFailoverTestJobs', + ], + 'DescribeExpressConnectTrafficQosRule' => [ + 'summary' => 'Queries quality of service (QoS) rules. Paging parameters are not supported.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RuleIdList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Qos队列ID集合。', + 'description' => 'The list of QoS rule IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the QoS rule.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-rule-iugg0l9x27f2nocouj'."\n", + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RuleNameList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Qos队列名称集合。', + 'description' => 'The list of QoS rule names.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The name of the QoS rule.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-rule-test', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'QueueId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9C7FA9D6-72E0-48A9-A9C3-2DA8569CD5EB', + ], + 'RuleList' => [ + 'description' => 'The list of QoS rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the QoS rules.', + 'type' => 'object', + 'properties' => [ + 'QosId' => [ + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'example' => 'qos-pksbqfmotl5hzqmhf8', + ], + 'QueueId' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5'."\n", + ], + 'Priority' => [ + 'description' => 'The priority of the QoS rule. Valid values: **1** to **9000**. A larger value indicates a higher priority. The priority of each QoS rule must be unique in the same QoS policy.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Protocol' => [ + 'description' => 'The protocol of the QoS rule. Valid values:'."\n" + ."\n" + .'* **ALL**'."\n" + .'* **ICMP(IPv4)**'."\n" + .'* **ICMPv6(IPv6)**'."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **GRE**'."\n" + .'* **SSH**'."\n" + .'* **Telnet**'."\n" + .'* **HTTP**'."\n" + .'* **HTTPS**'."\n" + .'* **MS SQL**'."\n" + .'* **Oracle**'."\n" + .'* **MySql**'."\n" + .'* **RDP**'."\n" + .'* **PostgreSQL**'."\n" + .'* **Redis**'."\n", + 'type' => 'string', + 'enumValueTitles' => [], + 'example' => 'ALL', + ], + 'SrcCidr' => [ + 'description' => 'The source IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.'."\n", + 'type' => 'string', + 'example' => '1.1.1.0/24'."\n", + ], + 'DstCidr' => [ + 'description' => 'The destination IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.'."\n", + 'type' => 'string', + 'example' => '1.1.1.0/24'."\n", + ], + 'SrcIPv6Cidr' => [ + 'description' => 'The source IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcCidr** or **DstCidr**.'."\n", + 'type' => 'string', + 'example' => '2001:0db8:1234:5678::/64'."\n", + ], + 'DstIPv6Cidr' => [ + 'description' => 'The destination IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcCidr** or **DstCidr**.'."\n", + 'type' => 'string', + 'example' => '2001:0db8:1234:5678::/64'."\n", + ], + 'SrcPortRange' => [ + 'description' => 'The range of source ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number.'."\n", + 'type' => 'string', + 'example' => '-1/-1'."\n", + ], + 'DstPortRange' => [ + 'description' => 'The range of destination ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number. Different protocols correspond to different ports. Valid values:'."\n" + ."\n" + .'* **ALL** (uneditable): -1/-1.'."\n" + .'* **ICMP(IPv4)** (uneditable): -1/-1.'."\n" + .'* **ICMPv6(IPv6)** (uneditable): -1/-1.'."\n" + .'* **TCP** (editable): -1/-1.'."\n" + .'* **UDP** (editable): -1/-1.'."\n" + .'* **GRE** (uneditable): -1/-1.'."\n" + .'* **SSH** (uneditable): 22/22.'."\n" + .'* **Telnet** (uneditable): 23/23.'."\n" + .'* **HTTP** (uneditable): 80/80.'."\n" + .'* **HTTPS** (uneditable): 443/443.'."\n" + .'* **MS SQL** (uneditable): 1443/1443.'."\n" + .'* **Oracle** (uneditable): 1521/1521.'."\n" + .'* **MySql** (uneditable): 3306/3306.'."\n" + .'* **RDP** (uneditable): 3389/3389.'."\n" + .'* **PostgreSQL** (uneditable): 5432/5432.'."\n" + .'* **Redis** (uneditable): 6379/6379.'."\n", + 'type' => 'string', + 'example' => '-1/-1'."\n", + ], + 'MatchDscp' => [ + 'description' => 'The DSCP value that matches the QoS rule traffic. Valid values: **0** to **63**. If no value is matched, the value is -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RemarkingDscp' => [ + 'description' => 'The new DSCP value. Valid values: **0** to **63**. If you do not change the value, set the value to -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RuleName' => [ + 'description' => 'The name of the QoS rule.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'qos-rule-test'."\n", + ], + 'RuleDescription' => [ + 'description' => 'The description of the QoS rule.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'qos-rule-test'."\n", + ], + 'RuleId' => [ + 'description' => 'The ID of the QoS rule.'."\n", + 'type' => 'string', + 'example' => 'qos-rule-iugg0l9x27f2nocouj'."\n", + ], + 'Status' => [ + 'description' => 'The status of the QoS rule. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **Configuring**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9C7FA9D6-72E0-48A9-A9C3-2DA8569CD5EB\\",\\n \\"RuleList\\": [\\n {\\n \\"QosId\\": \\"qos-pksbqfmotl5hzq****\\",\\n \\"QueueId\\": \\"qos-queue-9nyx2u7n71s2rc****\\\\n\\",\\n \\"Priority\\": 1,\\n \\"Protocol\\": \\"ALL\\",\\n \\"SrcCidr\\": \\"1.1.**.**/24\\\\n\\",\\n \\"DstCidr\\": \\"1.1.**.**/24\\\\n\\",\\n \\"SrcIPv6Cidr\\": \\"2001:0db8:1234:****::/64\\\\n\\",\\n \\"DstIPv6Cidr\\": \\"2001:0db8:1234:****::/64\\\\n\\",\\n \\"SrcPortRange\\": \\"-1/-1\\\\n\\",\\n \\"DstPortRange\\": \\"-1/-1\\\\n\\",\\n \\"MatchDscp\\": 1,\\n \\"RemarkingDscp\\": 1,\\n \\"RuleName\\": \\"qos-rule-test\\\\n\\",\\n \\"RuleDescription\\": \\"qos-rule-test\\\\n\\",\\n \\"RuleId\\": \\"qos-rule-iugg0l9x27f2noc****\\",\\n \\"Status\\": \\"Normal\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribeExpressConnectTrafficQosRule', + ], + 'DescribeExpressConnectTrafficQosQueue' => [ + 'summary' => 'Queries the information about the quality of service (QoS) queues of the Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'QueueIdList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Qos队列ID集合。', + 'description' => 'The IDs of the QoS queues.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'QueueNameList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Qos队列名称集合。', + 'description' => 'The names of the QoS queues.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The name of the QoS queue.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-queue-test', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + 'QueueList' => [ + 'description' => 'The information about the QoS queues.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the QoS queue.'."\n", + 'type' => 'object', + 'properties' => [ + 'QosId' => [ + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'example' => 'qos-ncfgzxg40zks5n0qze', + ], + 'QueueId' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + 'QueueType' => [ + 'description' => 'The priority of the QoS queue. Valid values:'."\n" + ."\n" + .'* **High**'."\n" + .'* **Medium**'."\n" + .'* **Default**'."\n" + ."\n\n" + ."\n" + .'> You cannot create a QoS queue of the default priority.', + 'type' => 'string', + 'example' => 'High', + ], + 'BandwidthPercent' => [ + 'description' => 'The percentage of bandwidth allocated to a QoS queue.'."\n" + ."\n" + .'* If QueueType is set to **Medium**, this parameter is returned. Valid values: **1** to **100**.'."\n" + .'* If QueueType is set to **Default**, a value of - is returned.'."\n", + 'type' => 'string', + 'example' => '100', + ], + 'QueueName' => [ + 'description' => 'The name of the QoS queue.'."\n" + ."\n" + .'The name must be **0** to **128** characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'qos-queue-test', + ], + 'QueueDescription' => [ + 'description' => 'The description of the QoS queue.'."\n" + ."\n" + .'The name must be **0** to **256** characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'qos-queue-test', + ], + 'RuleList' => [ + 'description' => 'The information about the QoS rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the QoS rule.'."\n", + 'type' => 'object', + 'properties' => [ + 'QosId' => [ + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'example' => 'qos-91xz9f8zd7yj8xwknz', + ], + 'QueueId' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'example' => 'qos-queue-iugg0l9x27f2nocouj', + ], + 'Priority' => [ + 'description' => 'The priority of the QoS rule. Valid values: **1** to **9000**. A larger value indicates a higher priority. The priority of each QoS rule must be unique in the same QoS policy.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Protocol' => [ + 'description' => 'The protocol of the QoS rule. Valid values:'."\n" + ."\n" + .'* **ALL**'."\n" + .'* **ICMP(IPv4)**'."\n" + .'* **ICMPv6(IPv6)**'."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **GRE**'."\n" + .'* **SSH**'."\n" + .'* **Telnet**'."\n" + .'* **HTTP**'."\n" + .'* **HTTPS**'."\n" + .'* **MS SQL**'."\n" + .'* **Oracle**'."\n" + .'* **MySql**'."\n" + .'* **RDP**'."\n" + .'* **PostgreSQL**'."\n" + .'* **Redis**'."\n", + 'type' => 'string', + 'enumValueTitles' => [], + 'example' => 'ALL', + ], + 'SrcCidr' => [ + 'description' => 'The source IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n\n" + ."\n" + .' > If the parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.', + 'type' => 'string', + 'example' => '1.1.1.0/24', + ], + 'DstCidr' => [ + 'description' => 'The destination IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n\n" + ."\n" + .'> If the parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.', + 'type' => 'string', + 'example' => '1.1.1.0/24'."\n", + ], + 'SrcIPv6Cidr' => [ + 'description' => 'The source IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n\n" + ."\n" + .'> If the parameter is unavailable, specify **SrcCidr** or **DstCidr**.', + 'type' => 'string', + 'example' => '2001:0db8:1234:5678::/64', + ], + 'DstIPv6Cidr' => [ + 'description' => 'The destination IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n\n" + ."\n" + .'> If the parameter is unavailable, specify **SrcCidr** or **DstCidr**.', + 'type' => 'string', + 'example' => '2001:0db8:1234:5678::/64', + ], + 'SrcPortRange' => [ + 'description' => 'The range of source ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number.'."\n", + 'type' => 'string', + 'example' => '-1/-1', + ], + 'DstPortRange' => [ + 'description' => 'The range of destination ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number. Different protocols correspond to different ports. Valid values:'."\n" + ."\n" + .'* **ALL** (uneditable): -1/-1.'."\n" + .'* **ICMP(IPv4)** (uneditable): -1/-1.'."\n" + .'* **ICMPv6(IPv6)** (uneditable): -1/-1.'."\n" + .'* **TCP** (editable): -1/-1.'."\n" + .'* **UDP** (editable): -1/-1.'."\n" + .'* **GRE** (uneditable): -1/-1.'."\n" + .'* **SSH** (uneditable): 22/22.'."\n" + .'* **Telnet** (uneditable): 23/23.'."\n" + .'* **HTTP** (uneditable): 80/80.'."\n" + .'* **HTTPS** (uneditable): 443/443.'."\n" + .'* **MS SQL** (uneditable): 1443/1443.'."\n" + .'* **Oracle** (uneditable): 1521/1521.'."\n" + .'* **MySql** (uneditable): 3306/3306.'."\n" + .'* **RDP** (uneditable): 3389/3389.'."\n" + .'* **PostgreSQL** (uneditable): 5432/5432.'."\n" + .'* **Redis** (uneditable): 6379/6379.'."\n", + 'type' => 'string', + 'example' => '-1/-1', + ], + 'MatchDscp' => [ + 'description' => 'The DSCP value that matches the QoS rule traffic. Valid values: **0** to **63**. If no value is matched, the value is -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RemarkingDscp' => [ + 'description' => 'The new DSCP value. Valid values: **0** to **63**. If you do not change the value, the value is -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RuleName' => [ + 'description' => 'The name of the QoS rule.'."\n" + ."\n" + .'The name must be **0** to **128** characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'qos-rule-test', + ], + 'RuleDescription' => [ + 'description' => 'The description of the QoS rule.'."\n" + ."\n" + .'The name must be **0** to **256** characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'qos-rule-test', + ], + 'RuleId' => [ + 'description' => 'The ID of the QoS rule.'."\n", + 'type' => 'string', + 'example' => 'qos-rule-iugg0l9x27f2nocouj'."\n", + ], + 'Status' => [ + 'description' => 'The status of the QoS rule. Valid values:'."\n" + ."\n" + .'* **Normal**: The QoS queue is available.'."\n" + .'* **Configuring**: The QoS queue is being configured.'."\n" + .'* **Deleting**: The QoS queue is being deleted.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + ], + ], + ], + 'Status' => [ + 'description' => 'The state of the QoS queue. Valid values:'."\n" + ."\n" + .'* **Normal**: The QoS queue is available.'."\n" + .'* **Configuring**: The QoS queue is being configured.'."\n" + .'* **Deleting**: The QoS queue is being deleted.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\",\\n \\"QueueList\\": [\\n {\\n \\"QosId\\": \\"qos-ncfgzxg40zks5n****\\",\\n \\"QueueId\\": \\"qos-queue-9nyx2u7n71s2rc****\\",\\n \\"QueueType\\": \\"High\\",\\n \\"BandwidthPercent\\": \\"100\\",\\n \\"QueueName\\": \\"qos-queue-test\\",\\n \\"QueueDescription\\": \\"qos-queue-test\\",\\n \\"RuleList\\": [\\n {\\n \\"QosId\\": \\"qos-91xz9f8zd7yj8x****\\",\\n \\"QueueId\\": \\"qos-queue-iugg0l9x27f2no****\\",\\n \\"Priority\\": 1,\\n \\"Protocol\\": \\"ALL\\",\\n \\"SrcCidr\\": \\"1.1.**.**/24\\",\\n \\"DstCidr\\": \\"1.1.**.**/24\\\\n\\",\\n \\"SrcIPv6Cidr\\": \\"2001:0db8:1234:****::/64\\",\\n \\"DstIPv6Cidr\\": \\"2001:0db8:1234:****::/64\\",\\n \\"SrcPortRange\\": \\"-1/-1\\",\\n \\"DstPortRange\\": \\"-1/-1\\",\\n \\"MatchDscp\\": 1,\\n \\"RemarkingDscp\\": 1,\\n \\"RuleName\\": \\"qos-rule-test\\",\\n \\"RuleDescription\\": \\"qos-rule-test\\",\\n \\"RuleId\\": \\"qos-rule-iugg0l9x27f2no****\\\\n\\",\\n \\"Status\\": \\"Normal\\"\\n }\\n ],\\n \\"Status\\": \\"Normal\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribeExpressConnectTrafficQosQueue', + ], + 'DescribeExpressConnectTrafficQos' => [ + 'summary' => 'Queries the quality of service (QoS) policies of Express Connect. The response can be displayed by page.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the QoS policy is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'QosIdList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Qos策略ID集合。', + 'description' => 'The IDs of QoS policies.', + 'type' => 'array', + 'items' => [ + 'description' => 'The IDs of QoS policies.', + 'type' => 'string', + 'required' => false, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'QosNameList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => 'Qos策略名称集合。', + 'description' => 'The names of QoS policies.', + 'type' => 'array', + 'items' => [ + 'description' => 'The names of QoS policies.', + 'type' => 'string', + 'required' => false, + 'example' => 'qos-test', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'title' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'● 第一次查询和没有下一次查询时,均无需填写。'."\n" + .'● 如果有下一次查询,取值为上一次API调用返回的NextToken值。', + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'- If no value is returned for NetToken, you do not need to specify this parameter.'."\n" + .'- If a value is returned for NextToken, you must specify the token that is obtained from the previous query as the value of **NextToken**.', + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'title' => '分批次查询时每次显示的条目数。取值范围:1~100,默认值为20。', + 'description' => 'The maximum number of entries to return. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazfdgdg****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You must enter at least one tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag values of the resources. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4CF20CC7-D1FC-425B-A15B-DF7C8E2131A7', + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'MaxResults' => [ + 'description' => 'The number of entries per page. Valid values: **1 to 100**. Default value: 20.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'Count' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'QosList' => [ + 'description' => 'The information about QoS policies.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the QoS policies.'."\n", + 'type' => 'object', + 'properties' => [ + 'QosId' => [ + 'description' => 'The ID of the QoS policy.', + 'type' => 'string', + 'example' => 'qos-pksbqfmotl5hzq****', + ], + 'QosName' => [ + 'description' => 'The name of the QoS policy.'."\n" + ."\n" + .'The name can be up to 128 characters in length and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'example' => 'qos-test', + ], + 'QosDescription' => [ + 'description' => 'The description of the QoS policy.'."\n" + ."\n" + .'The description can be up to 256 characters in length. It cannot start with `http://` or `https://`.', + 'type' => 'string', + 'example' => 'qos-test', + ], + 'Status' => [ + 'description' => 'The state of the QoS policy. Valid values:'."\n" + ."\n" + .'- **Normal**: The QoS policy is available.'."\n" + .'- **Configuring**: The QoS policy is being configured.'."\n" + ."\n" + .' > If a QoS policy is in the Configuring state, you cannot perform most of the operations to create, update, or delete QoS policies, QoS queues, or QoS rules.', + 'type' => 'string', + 'enumValueTitles' => [ + 'Configuring' => 'Configuring', + 'Normal' => 'Normal', + ], + 'example' => 'Normal', + ], + 'Progressing' => [ + 'description' => 'The configuration progress of the QoS policy. Valid values: **0** to **100**.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'AssociatedInstanceList' => [ + 'description' => 'The information about the instances to which the QoS policy is associated.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the instance to which the QoS policy is associated.', + 'type' => 'string', + 'example' => 'pc-bp159zj8zujwy3p07j83e', + ], + 'InstanceType' => [ + 'description' => 'The type of the instance to which the QoS policy is associated. Only **PHYSICALCONNECTION** is returned.', + 'type' => 'string', + 'enumValueTitles' => [ + 'PHYSICALCONNECTION' => 'PHYSICALCONNECTION', + ], + 'example' => 'PHYSICALCONNECTION', + ], + 'InstanceStatus' => [ + 'description' => 'The state of the instance to which the QoS policy is associated. Valid values:'."\n" + ."\n" + .'- **Normal**: The instance is available.'."\n" + .'- **Configuring**: The instance is being configured.'."\n" + .'- **Deleting**: The instance is being deleted.', + 'type' => 'string', + 'enumValueTitles' => [ + 'Configuring' => 'Configuring', + 'Normal' => 'Normal', + 'Deleting' => 'Deleting', + ], + 'example' => 'Normal', + ], + 'InstanceProgressing' => [ + 'description' => 'The configuration progress of the instance to which the QoS policy is associated. Valid values: **0** to **100**.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + ], + ], + ], + 'QueueList' => [ + 'description' => 'The information about the QoS queues.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'QosId' => [ + 'description' => 'The ID of the QoS policy.', + 'type' => 'string', + 'example' => 'qos-pksbqfmotl5hzqmhf8', + ], + 'QueueId' => [ + 'description' => 'The ID of the QoS queue.', + 'type' => 'string', + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + 'QueueType' => [ + 'description' => 'The type of the QoS queue. Valid values:'."\n" + ."\n" + .'- **High**: high-priority queue.'."\n" + .'- **Medium**: standard queue.'."\n" + .'- **Default**: default queue.'."\n" + ."\n\n" + .'> You cannot create a default queue.', + 'type' => 'string', + 'enumValueTitles' => [ + 'High' => 'High', + 'Medium' => 'Medium', + 'Default' => 'Default', + ], + 'example' => 'High', + ], + 'BandwidthPercent' => [ + 'description' => 'The percentage of bandwidth allocated to a QoS queue.'."\n" + ."\n" + .'- If QueueType is set to **Medium**, this parameter is required. Valid values: **1** to **100**.'."\n" + .'- If QueueType is set to **Default**, a value of - is returned.', + 'type' => 'string', + 'example' => '100', + ], + 'QueueName' => [ + 'description' => 'The name of the QoS queue.'."\n" + ."\n" + .'The name can be up to **128** characters in length and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'example' => 'qos-queue-test', + ], + 'QueueDescription' => [ + 'description' => 'The description of the QoS queue.'."\n" + ."\n" + .'The description can be up to **256** characters in length. It cannot start with `http://` or `https://`.', + 'type' => 'string', + 'example' => 'qos-queue-test', + ], + 'Status' => [ + 'description' => 'The state of the QoS queue. Valid values:'."\n" + ."\n" + .'- **Normal**: The QoS queue is available.'."\n" + .'- **Configuring**: The QoS queue is being configured.'."\n" + .'- **Deleting**: The QoS queue is being deleted.', + 'type' => 'string', + 'example' => 'Normal', + ], + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.', + 'type' => 'string', + 'example' => 'rg-acfmz7vtyl4f***', + ], + 'Tags' => [ + 'description' => 'The tag list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.', + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.', + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4CF20CC7-D1FC-425B-A15B-DF7C8E2131A7\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"MaxResults\\": 20,\\n \\"TotalCount\\": 10,\\n \\"Count\\": \\"1\\",\\n \\"QosList\\": [\\n {\\n \\"QosId\\": \\"qos-pksbqfmotl5hzq****\\",\\n \\"QosName\\": \\"qos-test\\",\\n \\"QosDescription\\": \\"qos-test\\",\\n \\"Status\\": \\"Normal\\",\\n \\"Progressing\\": 100,\\n \\"AssociatedInstanceList\\": [\\n {\\n \\"InstanceId\\": \\"pc-bp159zj8zujwy3p07****\\",\\n \\"InstanceType\\": \\"PHYSICALCONNECTION\\",\\n \\"InstanceStatus\\": \\"Normal\\",\\n \\"InstanceProgressing\\": 100\\n }\\n ],\\n \\"QueueList\\": [\\n {\\n \\"QosId\\": \\"qos-pksbqfmotl5hzq****\\",\\n \\"QueueId\\": \\"qos-queue-9nyx2u7n71s2rc****\\",\\n \\"QueueType\\": \\"High\\",\\n \\"BandwidthPercent\\": \\"100\\",\\n \\"QueueName\\": \\"qos-queue-test\\",\\n \\"QueueDescription\\": \\"qos-queue-test\\",\\n \\"Status\\": \\"Normal\\"\\n }\\n ],\\n \\"ResourceGroupId\\": \\"rg-acfmz7vtyl4f***\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribeExpressConnectTrafficQos', + ], + 'DeleteExpressConnectTrafficQosQueue' => [ + 'summary' => 'Deletes a quality of service (QoS) queue.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'QueueId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '9B9300FE-11E2-4E3B-949C-BED3B44DD26D', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9B9300FE-11E2-4E3B-949C-BED3B44DD26D\\"\\n}","type":"json"}]', + 'title' => 'DeleteExpressConnectTrafficQosQueue', + ], + 'DeleteExpressConnectTrafficQos' => [ + 'summary' => 'Deletes a quality of service (QoS) policy.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The instance ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700'."\n", + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + [ + 'errorCode' => 'EcQoSWithPconnNotSupportDelete', + 'errorMessage' => 'The Qos policy associated with Pconn cannot be deleted. Please disassociate it first.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}","type":"json"}]', + 'title' => 'DeleteExpressConnectTrafficQos', + ], + 'DeleteExpressConnectTrafficQosRule' => [ + 'summary' => 'Deletes a quality of service (QoS) rule.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '02fb3da4-130e-11e9-8e44-00****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '02fb3da4-130e-11e9-8e44-00****', + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'QueueId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + ], + [ + 'name' => 'RuleId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the QoS rule.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-rule-iugg0l9x27f2nocouj', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\"\\n}","type":"json"}]', + 'title' => 'DeleteExpressConnectTrafficQosRule', + ], + 'ModifyExpressConnectTrafficQos' => [ + 'summary' => 'Modifies a quality of service (QoS) policy or associates a QoS policy with a dedicated Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'QosName', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the QoS policy.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-test', + ], + ], + [ + 'name' => 'QosDescription', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the QoS policy.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-test', + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'AddInstanceList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '本次更新需要添加的实例列表,如果没有需要添加的实例可以不用传递此参数', + 'description' => 'The instances to be added. Ignore this parameter if no instances are to be added.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the instance to be associated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp159zj8zujwy3p07****', + ], + 'InstanceType' => [ + 'description' => 'The type of instance to be associated. Set the value to **PHYSICALCONNECTION**.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'PHYSICALCONNECTION', + 'enum' => [ + 'PHYSICALCONNECTION', + ], + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RemoveInstanceList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '本次更新需要移除的实例列表,如果没有需要移除的实例可以不用传递此参数', + 'description' => 'The instances to be removed. Ignore this parameter if no instances are to be removed.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the associated instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp1j37am632492qzw****', + ], + 'InstanceType' => [ + 'description' => 'The type of the associated instance. Set the value to **PHYSICALCONNECTION**.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'PHYSICALCONNECTION', + 'enum' => [ + 'PHYSICALCONNECTION', + ], + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.PconnIdList', + 'errorMessage' => 'The status of PconnIdList is incorrect.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.PconnQos', + 'errorMessage' => 'The specified resource of PconnQos is already associated.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + [ + 'errorCode' => 'IncorrectBusinessStatus.PconnIdList', + 'errorMessage' => 'The business status of PconnIdList is incorrect.', + ], + [ + 'errorCode' => 'EcPconnWithVpconnNotAllowAssociateQoS', + 'errorMessage' => 'The specified Pconn with Vpconn is not allowed to associate with Qos.', + ], + [ + 'errorCode' => 'EcPconnWithCrossAccountVbrNotAllowAssociateQoS', + 'errorMessage' => 'The specified Pconn with cross account VBR is not allowed to associate with Qos.', + ], + [ + 'errorCode' => 'EcDeviceNotSupportQoS', + 'errorMessage' => 'The specified Pconn is on the device which is not supported QoS.', + ], + [ + 'errorCode' => 'EcPconnVbrMustContainsAll', + 'errorMessage' => 'In the single VBR with multiple Pconn scene, all Pconn must be associated with the same Qos.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\"\\n}","type":"json"}]', + 'title' => 'ModifyExpressConnectTrafficQos', + ], + 'ModifyExpressConnectTrafficQosQueue' => [ + 'summary' => 'Modifies a quality of service (QoS) queue.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that the value is unique among all requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** might be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that the value is unique among all requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. **RequestId** might be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'QueueName', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos队列的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the QoS queue.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-queue-test', + ], + ], + [ + 'name' => 'QueueDescription', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos队列的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the QoS queue.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-queue-test', + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'QueueId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos队列ID。', + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + ], + [ + 'name' => 'BandwidthPercent', + 'in' => 'query', + 'schema' => [ + 'description' => 'The percentage of bandwidth allocated to the QoS queue.'."\n" + ."\n" + .'* If QueueType is set to **Medium**, this parameter is required. Valid values: 1 to 100.'."\n" + .'* If QueueType is set to **Default**, a value of - is returned.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '100', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '079874CD-AEC1-43E6-AC03-ADD96B6E4907', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + [ + 'errorCode' => 'QuotaExceeded.QosMediumPriorityQueueBandwidthPercent', + 'errorMessage' => 'The quota of QosMediumPriorityQueueBandwidthPercent is exceeded.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"079874CD-AEC1-43E6-AC03-ADD96B6E4907\\"\\n}","type":"json"}]', + 'title' => 'ModifyExpressConnectTrafficQosQueue', + ], + 'ModifyExpressConnectTrafficQosRule' => [ + 'summary' => 'Modifies a quality of service (QoS) rule.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'QueueId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the QoS rule. Valid values: **1** to **9000**. A larger value indicates a higher priority. The priority of each QoS rule must be unique in the same QoS policy.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Protocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol of the QoS rule. Valid values:'."\n" + ."\n" + .'* **ALL**'."\n" + .'* **ICMP(IPv4)**'."\n" + .'* **ICMPv6(IPv6)**'."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **GRE**'."\n" + .'* **SSH**'."\n" + .'* **Telnet**'."\n" + .'* **HTTP**'."\n" + .'* **HTTPS**'."\n" + .'* **MS SQL**'."\n" + .'* **Oracle**'."\n" + .'* **MySql**'."\n" + .'* **RDP**'."\n" + .'* **PostgreSQL**'."\n" + .'* **Redis**'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'ALL', + ], + ], + [ + 'name' => 'SrcCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1.1.1.0/24', + ], + ], + [ + 'name' => 'DstCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1.1.1.0/24', + ], + ], + [ + 'name' => 'SrcIPv6Cidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcCidr** or **DstCidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:0db8:1234:5678::/64', + ], + ], + [ + 'name' => 'DstIPv6Cidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcCidr** or **DstCidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:0db8:1234:5678::/64', + ], + ], + [ + 'name' => 'SrcPortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of source ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-1/-1', + ], + ], + [ + 'name' => 'DstPortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of destination ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number. Different protocols correspond to different ports. Valid values:'."\n" + ."\n" + .'* **ALL** (uneditable): -1/-1.'."\n" + .'* **ICMP(IPv4)** (uneditable): -1/-1.'."\n" + .'* **ICMPv6(IPv6)** (uneditable): -1/-1.'."\n" + .'* **TCP** (editable): -1/-1.'."\n" + .'* **UDP** (editable): -1/-1.'."\n" + .'* **GRE** (uneditable): -1/-1.'."\n" + .'* **SSH** (uneditable): 22/22.'."\n" + .'* **Telnet** (uneditable): 23/23.'."\n" + .'* **HTTP** (uneditable): 80/80.'."\n" + .'* **HTTPS** (uneditable): 443/443.'."\n" + .'* **MS SQL** (uneditable): 1443/1443.'."\n" + .'* **Oracle** (uneditable): 1521/1521.'."\n" + .'* **MySql** (uneditable): 3306/3306.'."\n" + .'* **RDP** (uneditable): 3389/3389.'."\n" + .'* **PostgreSQL** (uneditable): 5432/5432.'."\n" + .'* **Redis** (uneditable): 6379/6379.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-1/-1', + ], + ], + [ + 'name' => 'MatchDscp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The DSCP value that matches the QoS rule traffic. Valid values: **0** to **63**. If no value is matched, the value is -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'RemarkingDscp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new DSCP value. Valid values: **0** to **63**. If you do not change the value, set the value to -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'RuleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the QoS rule.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-rule-test', + ], + ], + [ + 'name' => 'RuleDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the QoS rule.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-rule-test', + ], + ], + [ + 'name' => 'RuleId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the QoS rule.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-rule-iugg0l9x27f2nocouj', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7B48B4B9-1EAD-469F-B488-594DAB4B6A1A', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + [ + 'errorCode' => 'EcQosRuleNotAllowV4AndV6', + 'errorMessage' => 'QoS rules do not allow IPv4 and IPv6 addresses to be mixed and updated.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7B48B4B9-1EAD-469F-B488-594DAB4B6A1A\\"\\n}","type":"json"}]', + 'title' => 'ModifyExpressConnectTrafficQosRule', + ], + 'CreateExpressConnectTrafficQos' => [ + 'summary' => 'Creates a quality of service (QoS) policy.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** in each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** in each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'QosName', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the QoS policy.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-test', + ], + ], + [ + 'name' => 'QosDescription', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the QoS policy.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-test'."\n", + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazfdgdg****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag to add to the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key to add to the resource. You must enter at least one tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned information.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求ID。', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'DC668356-BCB4-42FD-9BC3-FA2B2E04B634', + ], + 'QosId' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'OperationUnsupported.Qos', + 'errorMessage' => 'QoS is unsupported.', + ], + [ + 'errorCode' => 'QuotaExceeded.Qos', + 'errorMessage' => 'The quota of QoS is exceeded.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"DC668356-BCB4-42FD-9BC3-FA2B2E04B634\\",\\n \\"QosId\\": \\"qos-2giu0a6vd5x0mv****\\"\\n}","type":"json"}]', + 'title' => 'CreateExpressConnectTrafficQos', + ], + 'CreateExpressConnectTrafficQosQueue' => [ + 'summary' => 'Creates a quality of service (QoS) queue.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'QueueName', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的名称。'."\n" + .'长度为0~128个字符,不能以http:// 或https://开头。', + 'description' => 'The name of the QoS queue.'."\n" + ."\n" + .'It must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-queue-test', + ], + ], + [ + 'name' => 'QueueDescription', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略的描述信息。'."\n" + .'长度为0~256个字符,不能以http://或https://开头。', + 'description' => 'The description of the QoS queue.'."\n" + ."\n" + .'It must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-queue-test'."\n", + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'QueueType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the QoS queue. Valid values:'."\n" + ."\n" + .'* **High**'."\n" + .'* **Medium**'."\n" + .'* **Default**: default queue.'."\n" + ."\n" + .'> You cannot create a QoS queue of the default priority.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'High', + ], + ], + [ + 'name' => 'BandwidthPercent', + 'in' => 'query', + 'schema' => [ + 'description' => 'The percentage of bandwidth allocated to the QoS queue.'."\n" + ."\n" + .'* If QueueType is set to **Medium**, this parameter is required. Valid values: 1 to 100.'."\n" + .'* If QueueType is set to **Default**, a value of - is returned.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '100', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4CF20CC7-D1FC-425B-A15B-DF7C8E2131A7', + ], + 'QosId' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + 'QueueId' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5'."\n", + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'QuotaExceeded.QosMediumPriorityQueueCount', + 'errorMessage' => 'The quota of QosMediumPriorityQueueCount is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.QosHighPriorityQueueCount', + 'errorMessage' => 'The quota of QosHighPriorityQueueCount is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.QosMediumPriorityQueueBandwidthPercent', + 'errorMessage' => 'The quota of QosMediumPriorityQueueBandwidthPercent is exceeded.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4CF20CC7-D1FC-425B-A15B-DF7C8E2131A7\\",\\n \\"QosId\\": \\"qos-2giu0a6vd5x0mv****\\",\\n \\"QueueId\\": \\"qos-queue-9nyx2u7n71s2rc****\\\\n\\"\\n}","type":"json"}]', + 'title' => 'CreateExpressConnectTrafficQosQueue', + ], + 'CreateExpressConnectTrafficQosRule' => [ + 'summary' => 'Creates a quality of service (QoS) rule.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the QoS policy.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai'."\n", + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'QosId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + ], + [ + 'name' => 'QueueId', + 'in' => 'query', + 'schema' => [ + 'title' => 'Qos队列ID。', + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the QoS rule. Valid values: **1** to **9000**. A larger value indicates a higher priority. The priority of each QoS rule must be unique in the same QoS policy.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '1', + ], + ], + [ + 'name' => 'Protocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol of the QoS rule. Valid values:'."\n" + ."\n" + .'* **ALL**'."\n" + .'* **ICMP(IPv4)**'."\n" + .'* **ICMPv6(IPv6)**'."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **GRE**'."\n" + .'* **SSH**'."\n" + .'* **Telnet**'."\n" + .'* **HTTP**'."\n" + .'* **HTTPS**'."\n" + .'* **MS SQL**'."\n" + .'* **Oracle**'."\n" + .'* **MySql**'."\n" + .'* **RDP**'."\n" + .'* **PostgreSQL**'."\n" + .'* **Redis**'."\n", + 'type' => 'string', + 'required' => true, + 'enumValueTitles' => [], + 'example' => 'ALL', + ], + ], + [ + 'name' => 'SrcCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1.1.1.0/24'."\n", + ], + ], + [ + 'name' => 'DstCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv4 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcIPv6Cidr** or **DstIPv6Cidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1.1.1.0/24'."\n", + ], + ], + [ + 'name' => 'SrcIPv6Cidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcCidr** or **DstCidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:0db8:1234:5678::/64'."\n", + ], + ], + [ + 'name' => 'DstIPv6Cidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv6 CIDR block that matches the QoS rule traffic.'."\n" + ."\n" + .'> When this parameter is unavailable, specify **SrcCidr** or **DstCidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:0db8:1234:5678::/64', + ], + ], + [ + 'name' => 'SrcPortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of source ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-1/-1'."\n", + ], + ], + [ + 'name' => 'DstPortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of destination ports that match the QoS rule traffic. Valid values: **0** to **65535**. If the traffic does not match, the value is -1. You can specify only one port. The start port number must be the same as the end port number. Different protocols correspond to different ports. Valid values:'."\n" + ."\n" + .'* **ALL** (uneditable): -1/-1.'."\n" + .'* **ICMP(IPv4)** (uneditable): -1/-1.'."\n" + .'* **ICMPv6(IPv6)** (uneditable): -1/-1.'."\n" + .'* **TCP** (editable): -1/-1.'."\n" + .'* **UDP** (editable): -1/-1.'."\n" + .'* **GRE** (uneditable): -1/-1.'."\n" + .'* **SSH** (uneditable): 22/22.'."\n" + .'* **Telnet** (uneditable): 23/23.'."\n" + .'* **HTTP** (uneditable): 80/80.'."\n" + .'* **HTTPS** (uneditable): 443/443.'."\n" + .'* **MS SQL** (uneditable): 1443/1443.'."\n" + .'* **Oracle** (uneditable): 1521/1521.'."\n" + .'* **MySql** (uneditable): 3306/3306.'."\n" + .'* **RDP** (uneditable): 3389/3389.'."\n" + .'* **PostgreSQL** (uneditable): 5432/5432.'."\n" + .'* **Redis** (uneditable): 6379/6379.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-1/-1'."\n", + ], + ], + [ + 'name' => 'MatchDscp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The DSCP value that matches the QoS rule traffic. Valid values: **0** to **63**. If no value is matched, the value is -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'RemarkingDscp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new DSCP value. Valid values: **0** to **63**. If you do not change the value, set the value to -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'RuleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the QoS rule.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-rule-test'."\n", + ], + ], + [ + 'name' => 'RuleDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the QoS rule.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'qos-rule-test'."\n", + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + 'QosId' => [ + 'title' => 'Qos策略ID。', + 'description' => 'The ID of the QoS policy.'."\n", + 'type' => 'string', + 'example' => 'qos-2giu0a6vd5x0mv4700', + ], + 'QueueId' => [ + 'description' => 'The ID of the QoS queue.'."\n", + 'type' => 'string', + 'example' => 'qos-queue-9nyx2u7n71s2rcy4n5', + ], + 'RuleId' => [ + 'description' => 'The ID of the QoS rule.'."\n", + 'type' => 'string', + 'example' => 'qos-rule-iugg0l9x27f2nocouj'."\n", + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IncorrectStatus.Qos', + 'errorMessage' => 'The status of QoS is incorrect.', + ], + [ + 'errorCode' => 'EcQoSConflict', + 'errorMessage' => 'The specified QoS is conflict with other QoS.', + ], + [ + 'errorCode' => 'EcQosRuleNotAllowV4AndV6', + 'errorMessage' => 'QoS rules do not allow IPv4 and IPv6 addresses to be mixed and updated.', + ], + [ + 'errorCode' => 'QuotaExceeded.QosRuleCount', + 'errorMessage' => 'The quota of QosRuleCount is exceeded.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\",\\n \\"QosId\\": \\"qos-2giu0a6vd5x0mv****\\",\\n \\"QueueId\\": \\"qos-queue-9nyx2u7n71s2rc****\\",\\n \\"RuleId\\": \\"qos-rule-iugg0l9x27f2no****\\\\n\\"\\n}","type":"json"}]', + 'title' => 'CreateExpressConnectTrafficQosRule', + ], + 'CreateVbrHa' => [ + 'summary' => 'Creates a virtual border router (VBR) failover group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the VBR failover group.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VBRHa', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the VBR failover group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VBRHa', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values: Valid Values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, `DRYRUN.SUCCESS` is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp1jcg5cmxjbl9xgc****', + ], + ], + [ + 'name' => 'PeerVbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the other VBR in the VBR failover group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp12mw1f8k3jgygk9****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the VBR is deployed.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'VbrHaId' => [ + 'description' => 'The ID of the VBR failover group.'."\n", + 'type' => 'string', + 'example' => 'vbrha-sa1sxheuxtd98****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.VbrCenNotConsistent', + 'errorMessage' => 'The VBR and the peer VBR are attached to different CENs.', + ], + [ + 'errorCode' => 'OperationFailed.VbrAliUidNotConsistent', + 'errorMessage' => 'The VBR and the peer VBR belong to different AliUids.', + ], + [ + 'errorCode' => 'OperationFailed.VbrAccessDeviceSame', + 'errorMessage' => 'The VBR and the peer VBR are in the same device.', + ], + [ + 'errorCode' => 'OperationFailed.VbrBandWidthExceed', + 'errorMessage' => 'The VBR bandwidth exceeds the limit.', + ], + [ + 'errorCode' => 'OperationFailed.VbrInUsedByOtherHa', + 'errorMessage' => 'The VBR is used by another VBR HA.', + ], + [ + 'errorCode' => 'OperationFailed.VbrBgpPeerNotEnableBfd', + 'errorMessage' => 'The VBR BGP has not enabled BFD.', + ], + [ + 'errorCode' => 'OperationFailed.VbrCenNotRelation', + 'errorMessage' => 'The VBR is not attached to any CEN.', + ], + [ + 'errorCode' => 'OperationFailed.BgpGroupLocalAsnMustSameEachOther', + 'errorMessage' => 'VBR bgpGroup local asn must same each other.', + ], + [ + 'errorCode' => 'IllegalParam.BgpGroupLocalAsn', + 'errorMessage' => 'Vbr bgp group local asn must same with ecr asn.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.Vbr', + 'errorMessage' => 'The VBR resource is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VbrHaId\\": \\"vbrha-sa1sxheuxtd98****\\",\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n vbrha-sa1sxheuxtd98****\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'CreateVbrHa', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVbrHa' => [ + 'summary' => 'Deletes a virtual border router (VBR) failover group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR failover group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbrha-sa1******', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the VBR is deployed.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.VbrHa', + 'errorMessage' => 'The VBR HA resource is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'DeleteVbrHa', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVbrHa' => [ + 'summary' => 'Queries virtual border router (VBR) failover groups.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CBCE910E-D396-4944-8****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid Values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, `DRYRUN.SUCCESS` is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VBR ID.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'vbr-bp1jcg5cmxjbl9xgc****', + ], + ], + [ + 'name' => 'VbrHaId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR failover group.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'vbrha-sa1sxheuxtd98****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the VBR is deployed.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the VBR was created.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'Status' => [ + 'description' => 'The status of the VBR failover group.'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Active**'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'Description' => [ + 'description' => 'The description of the VBR failover group.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'desc', + ], + 'VbrHaId' => [ + 'description' => 'The ID of the VBR failover group.'."\n", + 'type' => 'string', + 'example' => 'vbrha-sa1sxheuxtd98****', + ], + 'PeerVbrId' => [ + 'description' => 'The ID of the other VBR in the VBR failover group.'."\n", + 'type' => 'string', + 'example' => 'vbr-bp12mw1f8k3jgygk9****', + ], + 'Name' => [ + 'description' => 'The name of the VBR failover group.'."\n", + 'type' => 'string', + 'example' => 'VBRHa', + ], + 'VbrId' => [ + 'description' => 'The VBR ID.'."\n", + 'type' => 'string', + 'example' => 'vbr-bp1jcg5cmxjbl9xgc****', + ], + 'RegionId' => [ + 'description' => 'The ID of the region in which the VBR is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.VbrHaIdOrVbrId', + 'errorMessage' => 'Missing parameter VBR switch group instance ID or VBR instance ID.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.VbrHa', + 'errorMessage' => 'The VBR HA resource is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"CreationTime\\": \\"2021-06-08T12:20:55\\",\\n \\"Status\\": \\"Active\\",\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"Description\\": \\"desc\\",\\n \\"VbrHaId\\": \\"vbrha-sa1sxheuxtd98****\\",\\n \\"PeerVbrId\\": \\"vbr-bp12mw1f8k3jgygk9****\\",\\n \\"Name\\": \\"VBRHa\\",\\n \\"VbrId\\": \\"vbr-bp1jcg5cmxjbl9xgc****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n Active\\n vbrha-sa1sxheuxtd98****\\n desc\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n 2021-06-08T12:20:55\\n vbr-bp1jcg5cmxjbl9xgc****\\n cn-hangzhou\\n vbr-bp12mw1f8k3jgygk9****\\n VBRHa\\n","errorExample":""}]', + 'title' => 'DescribeVbrHa', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssociatePhysicalConnectionToVirtualBorderRouter' => [ + 'summary' => 'Associates a virtual border router (VBR) with a specified Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp186tnz6rijyhj******', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-bp1qrb3044eqixog****', + ], + ], + [ + 'name' => 'VlanId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VLAN ID of the VBR. Valid values: **0 to 2999**.'."\n" + ."\n" + .'> Only the Express Connect circuit owner can specify this parameter. Two VBRs associated with the same Express Connect circuit cannot use the same VLAN ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '123', + ], + ], + [ + 'name' => 'CircuitCode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n" + ."\n" + .'> Only the Express Connect circuit owner can specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'longtel001', + ], + ], + [ + 'name' => 'LocalGatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the gateway device on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'PeerGatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the gateway device on the user side.'."\n" + ."\n" + .'* Only the owner of the VBR can set or modify this parameter.'."\n" + .'* When you create a VBR for the owner of the Express Connect circuit, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'PeeringSubnetMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask of the IP addresses of the VBR and the gateway device in the data center.'."\n" + ."\n" + .'The two IP addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '255.255.255.0', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'LocalIpv6GatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address of the gateway device on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + ], + [ + 'name' => 'PeerIpv6GatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address of the gateway device in the data center.'."\n" + ."\n" + .'* Only the owner of the VBR can specify or modify this parameter.'."\n" + .'* When you create a VBR for the owner of the Express Connect circuit, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:XXXX:4:4:4:4:4:4', + ], + ], + [ + 'name' => 'PeeringIpv6SubnetMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask of the IPv6 addresses of the gateway devices on the user side and Alibaba Cloud side.'."\n" + ."\n" + .'The two IPv6 addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:4004:cc:400::/56', + ], + ], + [ + 'name' => 'EnableIpv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable IPv6. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '980960B0-2969-40BF-8542-EBB34FD358AB', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.RouterInterfaceNotDeleted', + 'errorMessage' => 'The specified VirutalBorderRouter still has routerInterface.', + ], + [ + 'errorCode' => 'InvalidOperation.OperationNotAllowedInState', + 'errorMessage' => 'The specified VirutalBorderRouter is in invalid state.', + ], + [ + 'errorCode' => 'InvalidStatus.NotAllowed', + 'errorMessage' => 'Invalid virtual border router status.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The specified PhysicalConnectionId is not found.', + ], + [ + 'errorCode' => 'InvalidVlanId.Used', + 'errorMessage' => 'The specified VlanId has been used.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter \'PhysicalConnectionId\' that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotEnabled', + 'errorMessage' => 'The specified PhysicalConnectionId is not in Enabled state.', + ], + [ + 'errorCode' => 'InvalidVlanId.Malformed', + 'errorMessage' => 'The specified VlanId is not valid.', + ], + [ + 'errorCode' => 'InvalidCircuitCode.Malformed', + 'errorMessage' => 'The specified CircuitCode is not valid.', + ], + [ + 'errorCode' => 'InvalidLocalGatewayIp.Malformed', + 'errorMessage' => 'The specified LocalGatewayIp is not valid.', + ], + [ + 'errorCode' => 'InvalidPeerGatewayIp.Malformed', + 'errorMessage' => 'The specified PeerGatewayIp is not valid.', + ], + [ + 'errorCode' => 'InvalidPeeringSubnetMask.Malformed', + 'errorMessage' => 'The specified PeeringSubnetMask is not valid.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified ?Name? is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specifid ?Description? is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.vbrPerpConn', + 'errorMessage' => 'Virtual boarder router per PhysicalConnection quota exceed.', + ], + [ + 'errorCode' => 'EXCEED_ASSOCIATE_MAX_NUM', + 'errorMessage' => 'assocaite virtual boarder num too many.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidIp.NotSameSubnet', + 'errorMessage' => 'Local gateway ip and peer gateway ip are not in the same subnet.', + ], + [ + 'errorCode' => 'InvalidStatus.StatusNotEnabled', + 'errorMessage' => 'The physical connection status is invalid.', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'physical connection has already associated with vbr.', + ], + [ + 'errorCode' => 'PHYSICAL_NOT_ALLOW_ASSOCIATE_VBR', + 'errorMessage' => 'The specified operation not allow.', + ], + [ + 'errorCode' => 'Forbidden.OperationNotAllowed', + 'errorMessage' => 'The caller must be PhysicalConnection or VirtualBorderRouter\'s owner.', + ], + [ + 'errorCode' => 'Forbidden.NotSameAccessDevice', + 'errorMessage' => 'Vbr and physicalConnection are not on the same accessDevice.', + ], + [ + 'errorCode' => 'Duplicated.LocalGatewayIp', + 'errorMessage' => 'Vbr has conflict local gateway ip.', + ], + [ + 'errorCode' => 'OperationFailed.VlanIdInUse', + 'errorMessage' => 'Operation failed because vlanId is in use.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'DuplicatedParam.LocalGatewayIp', + 'errorMessage' => 'Duplicated LocalGatewayIp values.', + ], + [ + 'errorCode' => 'DuplicatedParam.PeerGatewayIp', + 'errorMessage' => 'Duplicated PeerGatewayIp values.', + ], + [ + 'errorCode' => 'DuplicatedParam.LocalIpv6GatewayIp', + 'errorMessage' => 'Duplicated LocalIpv6GatewayIp values.', + ], + [ + 'errorCode' => 'DuplicatedParam.PeerIpv6GatewayIp', + 'errorMessage' => 'Duplicated PeerIpv6GatewayIp values.', + ], + [ + 'errorCode' => 'EcPconnVbrMustContainsAll', + 'errorMessage' => 'In the single VBR with multiple Pconn scene, all Pconn must be associated with the same Qos.', + ], + [ + 'errorCode' => 'IllegalParam.LocalGatewayIpAndMask', + 'errorMessage' => 'The LocalGatewayIpAndMask value is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.PeeringIpv6SubnetMask', + 'errorMessage' => 'The PeeringIpv6SubnetMask value is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.OperationNotAllowedByUser', + 'errorMessage' => 'The caller is not allowed to delete the specified VirtualBorderRouter.', + ], + [ + 'errorCode' => 'Forbidden.MultiVlanRi', + 'errorMessage' => 'Multiple vlan router interfaces are found.', + ], + [ + 'errorCode' => 'Forbidden.NoRiFound', + 'errorMessage' => 'No vlan router interfaces are found.', + ], + [ + 'errorCode' => 'Forbidden.LocalGatewayIpNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the LocalGatewayIp parameter.', + ], + [ + 'errorCode' => 'Forbidden.PeerGatewayIpNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the PeerGatewayIp parameter.', + ], + [ + 'errorCode' => 'Forbidden.PeeringSubnetMaskNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the PeeringSubnetMask parameter.', + ], + [ + 'errorCode' => 'Forbidden.NameNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the Name parameter.', + ], + [ + 'errorCode' => 'Forbidden.DescriptionNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the Description parameter.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified Instance does not exist in the specified region.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVbrId.NotFound', + 'errorMessage' => 'The specified VirutalBorderRouter does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVbrOwnerId.NotFound', + 'errorMessage' => 'The specified VbrOwnerId is not valid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"980960B0-2969-40BF-8542-EBB34FD358AB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 980960B0-2969-40BF-8542-EBB34FD358AB\\n","errorExample":""}]', + 'title' => 'AssociatePhysicalConnectionToVirtualBorderRouter', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateVirtualBorderRouter' => [ + 'summary' => 'Creates a virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n" + ."\n" + .'You can create a VBR for a dedicated connection or a hosted connection.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-2zextbehcx****', + ], + ], + [ + 'name' => 'VbrOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The account ID of the VBR owner.'."\n" + ."\n" + .'The default value is the ID of the current Alibaba Cloud account.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '168811111****', + ], + ], + [ + 'name' => 'VlanId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VLAN ID of the VBR. Valid values: **0 to 2999**.'."\n" + ."\n" + .'> Only the owner of the Express Connect circuit can set this parameter. The VLAN IDs of two VBRs of the same the Express Connect circuit must be different.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'CircuitCode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n" + ."\n" + .'> Only the owner of the Express Connect circuit can set this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'longtel001', + ], + ], + [ + 'name' => 'LocalGatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the VBR. Only the owner of the VBR can set or modify this parameter.'."\n" + ."\n" + .'When you create a VBR for the owner of the Express Connect circuit, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'PeerGatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the gateway device in the data center. Only the owner of the VBR can set or modify this parameter.'."\n" + ."\n" + .'When you create a VBR for the owner of the Express Connect circuit, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '116.62.XX.XX', + ], + ], + [ + 'name' => 'PeeringSubnetMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask of the IP addresses of the VBR and the gateway device in the data center.'."\n" + ."\n" + .'The two IP addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '255.255.255.252', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the VBR.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'desc', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the VBR.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically sets **ClientToken** to the value of **RequestId**. The value of **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'LocalIpv6GatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address of the VBR. Only the owner of the VBR can set or modify this parameter.'."\n" + ."\n" + .'When you create a VBR for the owner of the Express Connect circuit, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + ], + [ + 'name' => 'PeerIpv6GatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address of the gateway device in the data center. Only the owner of the VBR can set or modify this parameter.'."\n" + ."\n" + .'When you create a VBR for the owner of the Express Connect circuit, this parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '2001:XXXX:4:4:4:4:4:4', + ], + ], + [ + 'name' => 'PeeringIpv6SubnetMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask of the IPv6 addresses of the VBR and the gateway device in the data center.'."\n" + ."\n" + .'The two IPv6 addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '2408:4004:cc:400::/56', + ], + ], + [ + 'name' => 'EnableIpv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable IPv6. Valid values:'."\n" + ."\n" + .'* **true**: enables IPv6.'."\n" + .'* **false** (default): disables IPv6.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth of the VBR. Unit: Mbit/s.'."\n" + ."\n" + .'* When you create a VBR for a dedicated connection, valid values are **50**, **100**, **200**, **300**, **400**, **500**, **1000**, **2048**, **5120**, **8192**, **10240**, **20480**, **40960**, **50120**, **61440**, and **102400**.'."\n" + .'* You do not need to set this parameter when you create a VBR for a hosted connection. The bandwidth is already configured when the hosted connection is created.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '100', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID.'."\n" + ."\n" + .'For more information about resource group, see [What is Resource Management?](~~94475~~)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You must enter at least one tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'VbrId' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'example' => 'vbr-bp1jcg5cmxjbl9xgc****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.PconnAllocateVlan0', + 'errorMessage' => 'Vlan 0 Vbr cannot share the physical connection with another Vbr.', + ], + [ + 'errorCode' => 'IllegalParam.IpAddress', + 'errorMessage' => 'The specified IpAddress (%s) is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The specified CidrBlock (%s) is illegal.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The specified PhysicalConnectionId is not found.', + ], + [ + 'errorCode' => 'InvalidVlanId.Used', + 'errorMessage' => 'The specified VlanId has been used.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter \'PhysicalConnectionId\' that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotEnabled', + 'errorMessage' => 'The specified PhysicalConnectionId is not in Enabled state.', + ], + [ + 'errorCode' => 'InvalidVlanId.Malformed', + 'errorMessage' => 'The specified VlanId is not valid.', + ], + [ + 'errorCode' => 'InvalidCircuitCode.Malformed', + 'errorMessage' => 'The specified CircuitCode is not valid.', + ], + [ + 'errorCode' => 'InvalidLocalGatewayIp.Malformed', + 'errorMessage' => 'The specified LocalGatewayIp is not valid.', + ], + [ + 'errorCode' => 'InvalidPeeringSubnetMask.Malformed', + 'errorMessage' => 'The specified PeeringSubnetMask is not valid.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified ?Name? is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specifid ?Description? is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.vbrPerpConn', + 'errorMessage' => 'Virtual boarder router per PhysicalConnection quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.freevbr', + 'errorMessage' => 'Free virtual boarder router quota exceed.', + ], + [ + 'errorCode' => 'InvalidIp.NotSameSubnet', + 'errorMessage' => 'Local gateway ip and peer gateway ip are not in the same subnet.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'QuotaExceeded.CrossUserVBRPerUser', + 'errorMessage' => 'Cross virtual boarder router per user quota exceed.', + ], + [ + 'errorCode' => 'OperationFailed.VlanIdInUse', + 'errorMessage' => 'Operation failed because vlanId is in use.', + ], + [ + 'errorCode' => 'QuotaExceeded.SameAccountVBRPerPconn', + 'errorMessage' => 'Same account virtual boarder router per physicalConnection quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.VbrPerPconnPortSpec', + 'errorMessage' => 'Quota exceed for current port spec', + ], + [ + 'errorCode' => 'QuotaExceeded.VbrPerAccessDevice', + 'errorMessage' => 'Virtual boarder router per access device quota exceed.', + ], + [ + 'errorCode' => 'OperationUnsupported.IPV6ForThisRegion', + 'errorMessage' => 'This Region do not support IPV6.', + ], + [ + 'errorCode' => 'VbrBandwidthExceed', + 'errorMessage' => 'VBR bandwidth exceed for this physical connection.', + ], + [ + 'errorCode' => 'OperationFailed.PconnExistVlan0Vbr', + 'errorMessage' => 'The physical connection has VLAN 0 VBR. You cannot create another VBR.', + ], + [ + 'errorCode' => 'OperationFailed.Vlan0VbrUnSharePconn', + 'errorMessage' => 'VLAN 0 VBR cannot share the physical connection with another VBR.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Bandwidth', + 'errorMessage' => 'The specified resource of Bandwidth is not enough.', + ], + [ + 'errorCode' => 'OperationUnsupported.VirtualBorderRouterEnableIPv6', + 'errorMessage' => 'The operation failed. The device or region does not support IPv6 functions.', + ], + [ + 'errorCode' => 'IllegalParam.OwnerAliUid', + 'errorMessage' => 'The param of VbrOwnerId is illegal.', + ], + [ + 'errorCode' => 'Forbidden.OwnerAliUid', + 'errorMessage' => 'RAM account or Partner account is forbidden to be OwnerAliUid.', + ], + [ + 'errorCode' => 'OperationDenied.VPconn', + 'errorMessage' => 'Vpconn is forbidden to create vbr for another account.', + ], + [ + 'errorCode' => 'OperationFailed.NotConsistentWithVpconn', + 'errorMessage' => 'VBR bandwidth is not consistent with vpconn', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of bandwidth is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.VirtualPhysicalConnectionExistVBR', + 'errorMessage' => 'The virtual physical connect has already created another VBR.', + ], + [ + 'errorCode' => 'ResourceNotInResourceGroup', + 'errorMessage' => 'The specified resource is not in the specified ResourceGroup.', + ], + [ + 'errorCode' => 'IncorrectStatus.VirtualPhysicalConnection', + 'errorMessage' => 'The status of PhysicalConnection [%s] is incorrect.', + ], + [ + 'errorCode' => 'EcAssociatedQoSPconnNotAllowCreateCrossAccountVbr', + 'errorMessage' => 'The specified Pconn associated with Qos is not allowed to create cross account VBR.Please contact the business manager.', + ], + [ + 'errorCode' => 'OperationFailed.VbrBandWidthMust0InVlan0Vbr', + 'errorMessage' => 'The operation is failed because of VbrBandWidthMust0InVlan0Vbr.', + ], + [ + 'errorCode' => 'OperationDenied.PhysicalConnectionNotSupportMPBGPAndMPBGP-v6', + 'errorMessage' => 'The operation is not allowed because this physical connection not support MPBGP and MPBGP-v6.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.LocalGatewayIpNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the LocalGatewayIp parameter.', + ], + [ + 'errorCode' => 'Forbidden.PeerGatewayIpNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the PeerGatewayIp parameter.', + ], + [ + 'errorCode' => 'Forbidden.PeeringSubnetMaskNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the PeeringSubnetMask parameter.', + ], + [ + 'errorCode' => 'Forbidden.NameNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the Name parameter.', + ], + [ + 'errorCode' => 'Forbidden.DescriptionNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the Description parameter.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId is not found.', + ], + [ + 'errorCode' => 'InvalidVbrOwnerId.NotFound', + 'errorMessage' => 'The specified VbrOwnerId is not valid.', + ], + [ + 'errorCode' => 'CROSS_BID.FORBIDDEN', + 'errorMessage' => 'Create VBR across bid is illegal', + ], + [ + 'errorCode' => 'OperationFailed.AccessDeviceDisabled', + 'errorMessage' => 'Access device is disabled and can not create vbr.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VbrId\\": \\"vbr-bp1jcg5cmxjbl9xgc****\\",\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vbr-bp1jcg5cmxjbl9xgc****\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'CreateVirtualBorderRouter', + 'description' => 'After you create a VBR, the VBR is in the **active** state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVirtualBorderRouter' => [ + 'summary' => 'Deletes a virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VBR. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp12mw1f8k3jgygk9****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.RouterInterfaceNotDeleted', + 'errorMessage' => 'The specified VirutalBorderRouter still has routerInterface.', + ], + [ + 'errorCode' => 'InvalidOperation.OperationNotAllowedInState', + 'errorMessage' => 'The specified VirutalBorderRouter is in invalid state.', + ], + [ + 'errorCode' => 'InvalidStatus.NotAllowed', + 'errorMessage' => 'The virtual border has been associated by physicalConnection.', + ], + [ + 'errorCode' => 'DependencyViolation.RouterInterfaceReferedByRouteEntry', + 'errorMessage' => 'The specified VirutalBorderRouter is refered by routeEntry.', + ], + [ + 'errorCode' => 'DependencyViolation.BgpGroup', + 'errorMessage' => 'bgp group exists, cannot delete vbr.', + ], + [ + 'errorCode' => 'DependencyViolation.Nqa', + 'errorMessage' => 'nqa exists, cannot delete vbr.', + ], + [ + 'errorCode' => 'DependencyViolation.BgpNetwork', + 'errorMessage' => 'bgp network exists, cannot delete vbr.', + ], + [ + 'errorCode' => 'OperationUnsupported.VBRAttachedCen', + 'errorMessage' => 'Operation failed because the VBR is attached to CEN.', + ], + [ + 'errorCode' => 'InvalidStatus.vbrAttatchToEcr', + 'errorMessage' => 'Invalid virtual border router ecr status.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.OperationDeleteNotAllowedByUser', + 'errorMessage' => 'The caller is not allowed to delete the specified VirtualBorderRouter.', + ], + [ + 'errorCode' => 'Forbidden.MultiVlanRi', + 'errorMessage' => 'Multiple vlan router interfaces are found.', + ], + [ + 'errorCode' => 'Forbidden.NoRiFound', + 'errorMessage' => 'No vlan router interfaces are found.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVbrId.NotFound', + 'errorMessage' => 'The specified VirutalBorderRouter does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n"}]', + 'title' => 'DeleteVirtualBorderRouter', + 'description' => 'Before you call this operation, take note of the following limits:'."\n" + ."\n" + .'* Before you delete a VBR, you must delete all router interfaces of the VBR.'."\n" + .'* You can delete only a VBR in the **unconfirmed**, **active**, or **terminated** state.'."\n" + .'* The owner of an Express Connect circuit can delete a VBR that belongs to another account only if the VBR is in the **unconfirmed** state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassociatePhysicalConnectionFromVirtualBorderRouter' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Express Connect circuit.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR that you want to disassociate from the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vbr-bp16ksp61j7e0tkn*****', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp1qrb3044eqixog****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '980960B0-2969-40BF-8542-EBB34FD358AB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'PARAMETER_MUST_NOT_NULL', + 'errorMessage' => 'The specified physical connection id or vbrId must not be null.', + ], + [ + 'errorCode' => 'PHYSICAL_NOT_ASSOCIATE_TO_VBR', + 'errorMessage' => 'The specified PhysicalConnection have not associate to the vbr.', + ], + [ + 'errorCode' => 'ROUTER_INTERFACE_REFERED_BY_ROUTEENTRY', + 'errorMessage' => 'The specified VlanInterface has been used by routeEntry.', + ], + [ + 'errorCode' => 'InvalidStatus.NotAllowed', + 'errorMessage' => 'Invalid virtual border router status.', + ], + [ + 'errorCode' => 'PHYSICAL_NOT_ALLOW_ASSOCIATE_VBR', + 'errorMessage' => 'The specified operation not allow.', + ], + [ + 'errorCode' => 'Forbidden.OperationNotAllowed', + 'errorMessage' => 'The caller must be PhysicalConnection or VirtualBorderRouter\'s owner.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVbrId.NotFound', + 'errorMessage' => 'The specified VirutalBorderRouter does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"980960B0-2969-40BF-8542-EBB34FD358AB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 980960B0-2969-40BF-8542-EBB34FD358AB\\n","errorExample":""}]', + 'title' => 'UnassociatePhysicalConnectionFromVirtualBorderRouter', + 'summary' => 'Disassociates a virtual border router (VBR) from an Express Connect circuit.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateVirtualBorderBandwidth' => [ + 'summary' => 'Updates the maximum bandwidth value of outbound data transfer for a virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VBR.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'VirtualBorderRouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp15zckdt37pq72****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new maximum bandwidth value for the VBR. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '2', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'The error code.'."\n", + 'type' => 'string', + 'example' => 'OK', + ], + 'HttpStatusCode' => [ + 'description' => 'The HTTP status code.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The returned message.'."\n", + 'type' => 'string', + 'example' => 'none', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'AA4486A8-B6AE-469E-AB09-820EF8ECFA2B', + ], + 'Success' => [ + 'description' => 'Indicates whether the operation is successful. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.Vpconn', + 'errorMessage' => 'The operation is failed because of Vpconn.', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => 'Missing param of InstanceId.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'InstanceId not found.', + ], + [ + 'errorCode' => 'MissingParam.Bandwidth', + 'errorMessage' => 'Missing param of Bandwidth.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'Illegal Param of Bandwidth.', + ], + [ + 'errorCode' => 'MissingParam.regionNo', + 'errorMessage' => 'Missing param of regionNo.', + ], + [ + 'errorCode' => 'QuotaExceeded.VirtualBorderRouterBandwidth', + 'errorMessage' => 'Quota Exceeded of VirtualBorderRouterBandwidth', + ], + [ + 'errorCode' => 'OperationUnsupported.SetMultiPconnBandwidth', + 'errorMessage' => 'Set Multi PhysicalConnection Bandwidth Unsupported.', + ], + [ + 'errorCode' => 'OperationUnsupported.ModifyBandwidth', + 'errorMessage' => 'Modify Sale VirtualBorderRouter Bandwidth Unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"200\\",\\n \\"HttpStatusCode\\": 200,\\n \\"Message\\": \\"successful\\",\\n \\"RequestId\\": \\"AA4486A8-B6AE-469E-AB09-820EF8ECFA2B\\",\\n \\"Success\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 200\\n 200\\n successful\\n AA4486A8-B6AE-469E-AB09-820EF8ECFA2B\\n true\\n","errorExample":""}]', + 'title' => 'UpdateVirtualBorderBandwidth', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVirtualBorderRouterAttribute' => [ + 'summary' => 'Modifies the configuration of a virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VBR.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VBR ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp1lhl0taikrte****', + ], + ], + [ + 'name' => 'VlanId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VLAN ID of the VBR. Valid values: **0 to 2999**.'."\n" + ."\n" + .'> This parameter is available only to Express Connect owners. The VLAN IDs of VBRs on the same Express Connect circuit must be unique.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + [ + 'name' => 'CircuitCode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n" + ."\n" + .'> Only the owner of the Express Connect circuit can set this property.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'longtel001', + ], + ], + [ + 'name' => 'LocalGatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the VBR.'."\n" + ."\n" + .'Only the owner of the VBR can set or modify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'PeerGatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the gateway device in the data center.'."\n" + ."\n" + .'Only the owner of the VBR can set or modify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.X', + ], + ], + [ + 'name' => 'PeeringSubnetMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask for the IP addresses of the gateway devices on the Alibaba Cloud side and on the customer side. Only the owner of the VBR can set or modify this parameter.'."\n" + ."\n" + .'The two IP addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '255.255.255.252', + ], + ], + [ + 'name' => 'MinTxInterval', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time interval to send BFD packets. Valid values: **200 to 1000**. Unit: milliseconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '300', + ], + ], + [ + 'name' => 'MinRxInterval', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time interval to receive BFD packets. Valid values: **200 to 1000**. Unit: milliseconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '300', + ], + ], + [ + 'name' => 'DetectMultiplier', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of dropped packets that is allowed by the receiver when the initiator transmits packets. This value can be used to check whether a connection works as expected.'."\n" + ."\n" + .'Valid values: **3 to 10**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the VBR.'."\n" + ."\n" + .'It must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'desc', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the VBR.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter. It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VBR', + ], + ], + [ + 'name' => 'AssociatedPhysicalConnections', + 'in' => 'query', + 'schema' => [ + 'description' => 'The information about the Express Connect circuit associated with the VBR, including the following parameters:'."\n" + ."\n" + .'* **CircuitCode**: the circuit code provided by the connectivity provider for the Express Connect circuit.'."\n" + .'* **LocalGatewayIp**: the IP address of the gateway device on the Alibaba Cloud side.'."\n" + .'* **PeerGatewayIp**: the IP address of the gateway device on the customer side.'."\n" + .'* **PeeringSubnetMask**: the subnet mask for the IP addresses of gateway devices on the Alibaba Cloud side and the customer side.'."\n" + .'* **PhysicalConnectionId**: the ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '[ { "CircuitCode ": "longtel001", " LocalGatewayIp ": "192.168.XX.XX", "PeerGatewayIp" : "192.168.XX.XX", " PeeringSubnetMask ": "255.255.255.252", " PhysicalConnectionId ": "pc-kojok19****" } ]', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-00****', + ], + ], + [ + 'name' => 'LocalIpv6GatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address of the VBR.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + ], + [ + 'name' => 'PeerIpv6GatewayIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address of the gateway device in the data center.'."\n" + ."\n" + .'* Only the owner of the VBR can set or modify this property.'."\n" + .'* This property is required when you create a VBR for the owner of the Express Connect circuit. You can ignore this property when you create a VBR for another Alibaba Cloud account.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:2a2b', + ], + ], + [ + 'name' => 'PeeringIpv6SubnetMask', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subnet mask of the IPv6 addresses of the VBR and the gateway device in the data center.'."\n" + ."\n" + .'The two IPv6 addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:4004:cc:400::/56', + ], + ], + [ + 'name' => 'EnableIpv6', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable IPv6. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth value. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '100', + ], + ], + [ + 'name' => 'SitelinkEnable', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether to allow service access between data centers. Valid values:'."\n" + ."\n" + .'- **true**'."\n" + .'- **false**', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Mtu', + 'in' => 'query', + 'schema' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '980960B0-2969-40BF-8542-EBB34FD358AB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.AssociatedPhysicalConnections', + 'errorMessage' => 'The specified AssociatedPhysicalConnections is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.IpAddress', + 'errorMessage' => 'The specified IpAddress is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The specified CidrBlock is illegal.', + ], + [ + 'errorCode' => 'InvalidVbrId.NotFound', + 'errorMessage' => 'The specified VirutalBorderRouter is not found.', + ], + [ + 'errorCode' => 'IllegalParam.MinTxInterval', + 'errorMessage' => 'The specified MinTxInterval is not in proper range.', + ], + [ + 'errorCode' => 'IllegalParam.MinRxInterval', + 'errorMessage' => 'The specified MinRxInterval is not in proper range.', + ], + [ + 'errorCode' => 'IllegalParam.DetectMultiplier', + 'errorMessage' => 'The specified DetectMultiplier is not in proper range.', + ], + [ + 'errorCode' => 'InvalidVlanId.Used', + 'errorMessage' => 'The specified VlanId has been used.', + ], + [ + 'errorCode' => 'Duplicated.LocalGatewayIp', + 'errorMessage' => 'The specified LocalGatewayIps are duplicated.', + ], + [ + 'errorCode' => 'Duplicated.PeerGatewayIp', + 'errorMessage' => 'The specified PeerGatewayIp are duplicated.', + ], + [ + 'errorCode' => 'IllegalParam.LocalGatewayIp', + 'errorMessage' => 'The specified LocalGatewayIp already exists.', + ], + [ + 'errorCode' => 'IllegalParam.PeerGatewayIp', + 'errorMessage' => 'The specified PeerGatewayIp already exists.', + ], + [ + 'errorCode' => 'InvalidCircuitCode.Malformed', + 'errorMessage' => 'The specified CircuitCode is not valid.', + ], + [ + 'errorCode' => 'InvalidVlanId.Malformed', + 'errorMessage' => 'The specified VlanId is not valid.', + ], + [ + 'errorCode' => 'InvalidIp.Malformed', + 'errorMessage' => 'The specified ip address is not valid.', + ], + [ + 'errorCode' => 'InvalidPeeringSubnetMask.Malformed', + 'errorMessage' => 'The specified PeeringSubnetMask is not valid.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specifid Description is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'LocalGatewayIp, peerGatewayIp and peeringSubnetMask must not be null.', + ], + [ + 'errorCode' => 'InvalidIp.NotSameSubnet', + 'errorMessage' => 'Local gateway ip and peer gateway ip are not in the same subnet.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.VlanIdInUse', + 'errorMessage' => 'Operation failed because vlanId is in use.', + ], + [ + 'errorCode' => 'IncorrectStatus.VirtualBorderRouter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.IPV6ForThisRegion', + 'errorMessage' => 'This Region do not support IPV6.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'OperationDenied.VBRAssociateVPconn', + 'errorMessage' => 'The operation is not allowed because of VBRAssociateVPconn.', + ], + [ + 'errorCode' => 'OperationFailed.PhysicalConnectionFinancialLocked', + 'errorMessage' => 'Update failed, the physical connection is financial locked.', + ], + [ + 'errorCode' => 'OperationFailed.PhysicalConnectionTerminated', + 'errorMessage' => 'Update failed, the physical connection is terminated.', + ], + [ + 'errorCode' => 'OperationFailed.VbrBandWidthMust0InVlan0Vbr', + 'errorMessage' => 'The operation is failed because of VbrBandWidthMust0InVlan0Vbr.', + ], + [ + 'errorCode' => 'MissingParam.DetectMultiplier', + 'errorMessage' => 'The parameter DetectMultiplier is mandatory.', + ], + [ + 'errorCode' => 'MissingParam.MinRxInterval', + 'errorMessage' => 'The parameter MinRxInterval is mandatory.', + ], + [ + 'errorCode' => 'MissingParam.MinTxInterval', + 'errorMessage' => 'The parameter MinTxInterval is mandatory.', + ], + [ + 'errorCode' => 'DuplicatedParam.LocalGatewayIp', + 'errorMessage' => 'The LocalGatewayIp values are duplicated.', + ], + [ + 'errorCode' => 'Forbidden.VbrNotAllowModifySiteLink', + 'errorMessage' => 'Can not modify virtualBorderRouter site link, please call PD to authorize.', + ], + [ + 'errorCode' => 'OperationUnsupported.VirtualBorderRouterEnableIPv6', + 'errorMessage' => 'The operation failed. The device or region does not support IPv6 functions.', + ], + [ + 'errorCode' => 'OperationFailed.PconnAllocateVlan0', + 'errorMessage' => 'Vlan 0 Vbr cannot share the physical connection with another Vbr.', + ], + [ + 'errorCode' => 'IllegalParam.VlanId', + 'errorMessage' => 'The parameter VlanId is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.VbrLocked', + 'errorMessage' => 'The VBR is locked.', + ], + [ + 'errorCode' => 'IllegalParam.%s', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'OperationDenied.NotInWhiteList', + 'errorMessage' => 'User does not have permission to turn on jumbo frames.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ecr', + 'errorMessage' => 'The express connect router is not in a steady state and cannot operate.', + ], + [ + 'errorCode' => 'ResourceInConfiguring.NodeId', + 'errorMessage' => 'The express connect router subinstance is not in a steady state and cannot operate.', + ], + [ + 'errorCode' => 'UnsupportedFeature.JumboFrame', + 'errorMessage' => 'The jumbo frame feature is not supported in the current region.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.CircuitCodeNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to modify.', + ], + [ + 'errorCode' => 'Forbidden.LocalGatewayIpNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the LocalGatewayIp parameter.', + ], + [ + 'errorCode' => 'Forbidden.PeerGatewayIpNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the PeerGatewayIp parameter.', + ], + [ + 'errorCode' => 'Forbidden.PeeringSubnetMaskNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the PeeringSubnetMask parameter.', + ], + [ + 'errorCode' => 'Forbidden.VlanIdNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the VlanId.', + ], + [ + 'errorCode' => 'Forbidden.NameNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the Name parameter.', + ], + [ + 'errorCode' => 'Forbidden.DescriptionNotAllowedByCaller', + 'errorMessage' => 'The caller is not allowed to specify the Description parameter.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"980960B0-2969-40BF-8542-EBB34FD358AB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 980960B0-2969-40BF-8542-EBB34FD358AB\\n","errorExample":""}]', + 'title' => 'ModifyVirtualBorderRouterAttribute', + 'description' => '# [](#)'."\n" + ."\n" + .'* Only the owner of an Express Connect circuit can modify the **VlanId** parameter.'."\n" + .'* One VLAN ID of an Express Connect circuit cannot be used only by one VBR at the same time.'."\n" + .'* The VLAN ID of a VBR in the **Terminated** state is reserved for seven days and cannot be used by other VBRs. The VLAN ID can be used by other VBRs after 7 days.'."\n" + .'* You cannot set **LocalGatewayIp**, **PeerGatewayIp**, or **PeeringSubnetMask** for VBRs that do not belong to your Alibaba Cloud account.'."\n" + .'* Set **PeeringSubnetMask** to a subnet mask with 24 to 30 bits in length (255.255.255.0~255.255.255.252).'."\n" + .'* Set **LocalGatewayIp** and **PeerGatewayIp** to IP addresses that belong to the same CIDR block. For example, you can set LocalGatewayIp to 192.168.XX.XX, PeerGatewayIp to 192.168.XX.XX, and PeeringSubnetMask to 255.255.255.248.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'TerminateVirtualBorderRouter' => [ + 'summary' => 'Terminates a virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VBR.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vbr-bp15zckdt37pq72****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.OperationNotAllowedInState', + 'errorMessage' => 'The specified VirutalBorderRouter is in invalid state.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.OperationTerminateNotAllowedByUser', + 'errorMessage' => 'The caller is not allowed to terminate the specified VirtualBorderRouter.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVbrId.NotFound', + 'errorMessage' => 'The specified VirutalBorderRouter is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'TerminateVirtualBorderRouter', + 'description' => 'After you call this operation, the VBR enters the **terminating** state from the **active** state. After the VBR is terminated, the VBR enters the **terminated** state.'."\n" + ."\n" + .'> Only the owner of an Express Connect circuit can call this operation.'."\n", + ], + 'RecoverVirtualBorderRouter' => [ + 'summary' => 'Enables a disabled virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VBR.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'VbrId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp1lhl0taikrte****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.OperationNotAllowedInState', + 'errorMessage' => 'The specified VirutalBorderRouter is in invalid state', + ], + [ + 'errorCode' => 'OperationFailed.VlanIdAlreadyInUse', + 'errorMessage' => 'The specifed vlanId has been used.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.OperationRecoverNotAllowedByUser', + 'errorMessage' => 'The caller is not allowed to recover the specified VirtualBorderRouter.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVbrId.NotFound', + 'errorMessage' => 'The specified VirutalBorderRouter is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":"{ \\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}"},{"type":"xml","example":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n"}]', + 'title' => 'RecoverVirtualBorderRouter', + 'description' => 'After you call this operation, the VBR changes from the **terminated** state to the **recovering** state. After the operation is performed, the VBR enters the **active** state.'."\n" + ."\n" + .'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* Only the owner of the Express Connect circuit can call this operation.'."\n" + .'* The Express Connect circuit to which the VBR connects must be in the **Enabled** state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVirtualBorderRouters' => [ + 'summary' => 'Queries virtual border routers (VBRs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the VBR is deployed. You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the filter.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the filter.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The filter conditions. You can specify up to five filter conditions. Valid values:'."\n" + ."\n" + .'* **PhysicalConnectionId**: Filter by Express Connect circuit ID.'."\n" + .'* **VbrId**: Filter by VBR ID.'."\n" + .'* **Status**: Filter by VBR status.'."\n" + .'* **Name**: Filter by VBR name.'."\n" + .'* **AccessPointId**: Filter by access point ID.'."\n" + .'* **eccId:** Filter by Express Cloud Connect (ECC) instance ID.'."\n" + .'* **type**: Filter by Express Connect circuit type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Status', + ], + 'Value' => [ + 'description' => 'The filter values for keys. You can specify multiple filter values for one key. The logical operator between filter values is OR. If one filter value is matched, the filter condition is matched.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The filter value for the key. You can specify multiple filter values for one key. The logical operator between filter values is OR. If one filter value is matched, the filter condition is matched.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + 'required' => false, + 'example' => 'Active', + 'maxItems' => 5, + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + [ + 'name' => 'IncludeCrossAccountVbr', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether cross-account VBRs are included.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID.'."\n" + ."\n" + .'For more information about resource groups, see [What is a resource group?](~~94475~~)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The key cannot exceed 128 characters in length, and cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The information about each virtual border router (VBR) that is queried.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6', + ], + 'PageNumber' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page. Valid values: **1 to 50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VirtualBorderRouterSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VirtualBorderRouterType' => [ + 'description' => 'The information about the VBR.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the VBR was created.'."\n", + 'type' => 'string', + 'example' => '2020-06-08T12:20:55', + ], + 'Status' => [ + 'description' => 'The status of the VBR. Valid values:'."\n" + ."\n" + .'* **unconfirmed**'."\n" + .'* **active**'."\n" + .'* **terminating**'."\n" + .'* **terminated**'."\n" + .'* **recovering**'."\n" + .'* **deleting:**'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'Type' => [ + 'description' => 'The VBR type.'."\n", + 'type' => 'string', + 'example' => 'pconnVBR', + ], + 'MinTxInterval' => [ + 'description' => 'The time interval to send Bidirectional Forwarding Detection (BFD) packets. Valid values: **200 to 1000**. Unit: milliseconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '300', + ], + 'PeerIpv6GatewayIp' => [ + 'description' => 'The IPv6 address of the VBR on the user side.'."\n", + 'type' => 'string', + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + 'PConnVbrExpireTime' => [ + 'description' => 'The time when the VBR expires.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'PhysicalConnectionOwnerUid' => [ + 'description' => 'The ID of the account to which the Express Connect circuit belongs.'."\n", + 'type' => 'string', + 'example' => '1688000000000****', + ], + 'ActivationTime' => [ + 'description' => 'The time when the VBR was activated for the first time.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'PhysicalConnectionBusinessStatus' => [ + 'description' => 'The business status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Normal:** The Express Connect circuit is running as normal.'."\n" + .'* **FinancialLocked:** The Express Connect circuit is locked due to overdue payments.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Description' => [ + 'description' => 'The description of the VBR.'."\n", + 'type' => 'string', + 'example' => 'desc', + ], + 'TerminationTime' => [ + 'description' => 'The last time when the VBR was terminated.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'MinRxInterval' => [ + 'description' => 'The time interval to receive BFD packets. Valid values: **200 to 1000**. Unit: milliseconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '300', + ], + 'PeerGatewayIp' => [ + 'description' => 'The IPv4 address of the VBR on the user side.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'Name' => [ + 'description' => 'The VBR name.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'VbrId' => [ + 'description' => 'The VBR ID.'."\n", + 'type' => 'string', + 'example' => 'vbr-bp1jcg5cmxjbl9xgc****', + ], + 'VlanId' => [ + 'description' => 'The VLAN ID of the VBR.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'VlanInterfaceId' => [ + 'description' => 'The ID of the VBR interface.'."\n", + 'type' => 'string', + 'example' => 'ri-2zeo3xzyf38r4xx****', + ], + 'CircuitCode' => [ + 'description' => 'The circuit code of the Express Connect circuit, which is provided by the connectivity provider.'."\n", + 'type' => 'string', + 'example' => 'longtel0****', + ], + 'LocalIpv6GatewayIp' => [ + 'description' => 'The IPv6 address of the VBR on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + 'LocalGatewayIp' => [ + 'description' => 'The IPv4 address of the VBR on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'PeeringSubnetMask' => [ + 'description' => 'The subnet mask for the IPv4 addresses on the Alibaba Cloud side and on the user side.'."\n", + 'type' => 'string', + 'example' => '255.255.255.252', + ], + 'EnableIpv6' => [ + 'description' => 'Indicates whether IPv6 is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'RouteTableId' => [ + 'description' => 'The ID of the route table of the VBR.'."\n", + 'type' => 'string', + 'example' => 'rtb-bp1****', + ], + 'DetectMultiplier' => [ + 'description' => 'The multiple of the detection time.'."\n" + ."\n" + .'This value indicates the maximum number of dropped packets that is allowed by the receiver when the initiator transmits packets. This value can be used to check whether the connection works as expected.'."\n" + ."\n" + .'Valid values: **3 to 10**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '3', + ], + 'EccId' => [ + 'description' => 'The ID of the Express Cloud Connect (ECC) instance.'."\n", + 'type' => 'string', + 'example' => 'ecc-h****', + ], + 'CloudBoxInstanceId' => [ + 'description' => 'The ID of the cloud box.'."\n", + 'type' => 'string', + 'example' => 'cb-****', + ], + 'RecoveryTime' => [ + 'description' => 'The last time when the status of the VBR changed from **terminated** to **active**.'."\n", + 'type' => 'string', + 'example' => '2021-05-08T12:20:55', + ], + 'PhysicalConnectionStatus' => [ + 'description' => 'The status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Initial:** The application is under review.'."\n" + .'* **Approved**: The application is approved.'."\n" + .'* **Allocating**: The system is allocating resources.'."\n" + .'* **Allocated**: The Express Connect circuit is under construction.'."\n" + .'* **Confirmed**: The Express Connect circuit is to be confirmed.'."\n" + .'* **Enabled**: The Express Connect circuit is enabled.'."\n" + .'* **Rejected**: The application is rejected.'."\n" + .'* **Canceled**: The application is canceled.'."\n" + .'* **Allocation Failed:** The system failed to allocate resources.'."\n" + .'* **Terminated:** The Express Connect circuit is disabled.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'PeeringIpv6SubnetMask' => [ + 'description' => 'The subnet mask for the IPv6 addresses on the user side and on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '2000:1234:0:a000::/55', + ], + 'AccessPointId' => [ + 'description' => 'The ID of the access point.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-kojok1x****', + ], + 'PConnVbrChargeType' => [ + 'description' => 'The billing method of the VBR. Valid values:'."\n" + ."\n" + .'* **PrePaid:** subscription. If you choose this billing method, make sure that your account supports balance payments or credit payments.'."\n" + .'* **PostPaid:** pay-as-you-go.'."\n", + 'type' => 'string', + 'example' => 'PrePaid', + ], + 'PhysicalConnectionId' => [ + 'description' => 'The ID of the Express Connect circuit to which the VBR belongs.'."\n", + 'type' => 'string', + 'example' => 'pc-119mfjzm7x****', + ], + 'AssociatedPhysicalConnections' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AssociatedPhysicalConnection' => [ + 'description' => 'The information about the Express Connect circuit that is associated with the VBR.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the Express Connect circuit that is associated with the VBR.', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the VBR. Valid values:'."\n" + ."\n" + .'* **unconfirmed**'."\n" + .'* **active:**'."\n" + .'* **terminating**'."\n" + .'* **terminated**'."\n" + .'* **recovering**'."\n" + .'* **deleting:**'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'VlanInterfaceId' => [ + 'description' => 'The ID of the VBR interface, which can be used as a next hop of a VBR route.'."\n", + 'type' => 'string', + 'example' => 'ri-kojok19x3j0q6k****', + ], + 'CircuitCode' => [ + 'description' => 'The circuit code of the Express Connect circuit, which is provided by the connectivity provider.'."\n", + 'type' => 'string', + 'example' => 'longtel0**', + ], + 'PeerIpv6GatewayIp' => [ + 'description' => 'The IPv6 address of the VBR on the user side.'."\n", + 'type' => 'string', + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + 'LocalIpv6GatewayIp' => [ + 'description' => 'The IPv6 address of the VBR on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + 'PhysicalConnectionOwnerUid' => [ + 'description' => 'The ID of the account to which the Express Connect circuit belongs.'."\n", + 'type' => 'string', + 'example' => '12345678****', + ], + 'LocalGatewayIp' => [ + 'description' => 'The IPv4 address of the VBR on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'PhysicalConnectionBusinessStatus' => [ + 'description' => 'The business status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Normal:** The Express Connect circuit is running as normal.'."\n" + .'* **FinancialLocked:** The Express Connect circuit is locked due to overdue payments.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'PeeringSubnetMask' => [ + 'description' => 'The subnet mask for the IPv4 addresses of the VBR on the user side and on the Alibaba Cloud side.'."\n" + ."\n" + .'Both IPv4 addresses must belong to the same subnet.'."\n", + 'type' => 'string', + 'example' => '255.255.255.252', + ], + 'EnableIpv6' => [ + 'description' => 'Indicates whether IPv6 is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'PhysicalConnectionStatus' => [ + 'description' => 'The status of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Initial:** The application is under review.'."\n" + .'* **Approved**: The application is approved.'."\n" + .'* **Allocating**: The system is allocating resources.'."\n" + .'* **Allocated**: The Express Connect circuit is under construction.'."\n" + .'* **Confirmed**: The Express Connect circuit is to be confirmed.'."\n" + .'* **Enabled**: The Express Connect circuit is enabled.'."\n" + .'* **Rejected**: The application is rejected.'."\n" + .'* **Canceled**: The application is canceled.'."\n" + .'* **Allocation Failed:** The system failed to allocate resources.'."\n" + .'* **Terminated:** The Express Connect circuit is disabled.'."\n", + 'type' => 'string', + 'example' => 'Enabled', + ], + 'PeerGatewayIp' => [ + 'description' => 'The IPv4 address of the VBR on the user side.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'PeeringIpv6SubnetMask' => [ + 'description' => 'The subnet mask for the IPv6 addresses on the user side and on the Alibaba Cloud side.'."\n" + ."\n" + .'Both IPv6 addresses must belong to the same subnet.'."\n", + 'type' => 'string', + 'example' => '2408:4004:cc:400::/56', + ], + 'PhysicalConnectionId' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'pc-119mfjzm7****', + ], + 'VlanId' => [ + 'description' => 'The VLAN ID of the VBR.'."\n", + 'type' => 'string', + 'example' => '0', + ], + ], + ], + ], + ], + ], + 'AssociatedCens' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AssociatedCen' => [ + 'description' => 'The information about the Cloud Enterprise Network (CEN) instance to which the VBR is attached.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the Cloud Enterprise Network (CEN) instance to which the VBR is attached.', + 'type' => 'object', + 'properties' => [ + 'CenOwnerId' => [ + 'description' => 'The ID of the account to which the CEN instance belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1688000000000****', + ], + 'CenId' => [ + 'description' => 'The CEN instance ID.'."\n", + 'type' => 'string', + 'example' => 'cen-kojok19xxx****', + ], + 'CenStatus' => [ + 'description' => 'The status of the CEN instance. Valid values:'."\n" + ."\n" + .'* **Attached**'."\n" + .'* **Attaching**'."\n" + .'* **Detached**'."\n" + .'* **Detaching**'."\n" + .'* If no value is returned, the VBR is not attached to a CEN instance.'."\n", + 'type' => 'string', + 'example' => 'Attached', + ], + ], + ], + ], + ], + ], + 'Bandwidth' => [ + 'description' => 'The bandwidth value of the VBR. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID.'."\n" + ."\n" + .'For more information about resource groups, see [Resource groups](~~94475~~).'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tags' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key of the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value of the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + 'EcrId' => [ + 'description' => 'The ID of the Express Connect Router (ECR).'."\n", + 'type' => 'string', + 'example' => 'ecr-7vrbqv9lcgvzqbwwkm', + ], + 'SitelinkEnable' => [ + 'description' => 'Indicates whether to allow service access between data centers. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'> If no value is returned, service access between data centers is not allowed.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'EcrAttatchStatus' => [ + 'description' => 'The status of the ECR. Valid values:'."\n" + ."\n" + .'* **Attached**'."\n" + .'* **Attaching**'."\n" + .'* **Detached**'."\n" + .'* **Detaching**'."\n" + .'* If no value is returned, the VBR is not attached to a CEN instance.'."\n", + 'type' => 'string', + 'example' => 'Attached', + ], + 'EcrOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account (primary account) to which the ECR belongs.', + 'type' => 'string', + 'example' => '192732132151xxxx', + ], + 'Mtu' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidFilterKey.ValueNotSupported', + 'errorMessage' => 'Specified filter key is not supported: Filter.X.key', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 1,\\n \\"VirtualBorderRouterSet\\": {\\n \\"VirtualBorderRouterType\\": [\\n {\\n \\"CreationTime\\": \\"2020-06-08T12:20:55\\",\\n \\"Status\\": \\"active\\",\\n \\"Type\\": \\"pconnVBR\\",\\n \\"MinTxInterval\\": 300,\\n \\"PeerIpv6GatewayIp\\": \\"2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\",\\n \\"PConnVbrExpireTime\\": \\"2021-06-08T12:20:55\\",\\n \\"PhysicalConnectionOwnerUid\\": \\"1688000000000****\\",\\n \\"ActivationTime\\": \\"2021-06-08T12:20:55\\",\\n \\"PhysicalConnectionBusinessStatus\\": \\"Normal\\",\\n \\"Description\\": \\"desc\\",\\n \\"TerminationTime\\": \\"2021-06-08T12:20:55\\",\\n \\"MinRxInterval\\": 300,\\n \\"PeerGatewayIp\\": \\"192.168.XX.XX\\",\\n \\"Name\\": \\"test\\",\\n \\"VbrId\\": \\"vbr-bp1jcg5cmxjbl9xgc****\\",\\n \\"VlanId\\": 10,\\n \\"VlanInterfaceId\\": \\"ri-2zeo3xzyf38r4xx****\\",\\n \\"CircuitCode\\": \\"longtel0****\\",\\n \\"LocalIpv6GatewayIp\\": \\"2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\",\\n \\"LocalGatewayIp\\": \\"192.168.XX.XX\\",\\n \\"PeeringSubnetMask\\": \\"255.255.255.252\\",\\n \\"EnableIpv6\\": false,\\n \\"RouteTableId\\": \\"rtb-bp1****\\",\\n \\"DetectMultiplier\\": 3,\\n \\"EccId\\": \\"ecc-h****\\",\\n \\"CloudBoxInstanceId\\": \\"cb-****\\",\\n \\"RecoveryTime\\": \\"2021-05-08T12:20:55\\",\\n \\"PhysicalConnectionStatus\\": \\"Normal\\",\\n \\"PeeringIpv6SubnetMask\\": \\"2000:1234:0:a000::/55\\",\\n \\"AccessPointId\\": \\"ap-cn-kojok1x****\\",\\n \\"PConnVbrChargeType\\": \\"PrePaid\\",\\n \\"PhysicalConnectionId\\": \\"pc-119mfjzm7x****\\",\\n \\"AssociatedPhysicalConnections\\": {\\n \\"AssociatedPhysicalConnection\\": [\\n {\\n \\"Status\\": \\"active\\",\\n \\"VlanInterfaceId\\": \\"ri-kojok19x3j0q6k****\\",\\n \\"CircuitCode\\": \\"longtel0**\\",\\n \\"PeerIpv6GatewayIp\\": \\"2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\",\\n \\"LocalIpv6GatewayIp\\": \\"2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\",\\n \\"PhysicalConnectionOwnerUid\\": \\"12345678****\\",\\n \\"LocalGatewayIp\\": \\"192.168.XX.XX\\",\\n \\"PhysicalConnectionBusinessStatus\\": \\"Normal\\",\\n \\"PeeringSubnetMask\\": \\"255.255.255.252\\",\\n \\"EnableIpv6\\": true,\\n \\"PhysicalConnectionStatus\\": \\"Enabled\\",\\n \\"PeerGatewayIp\\": \\"116.62.XX.XX\\",\\n \\"PeeringIpv6SubnetMask\\": \\"2408:4004:cc:400::/56\\",\\n \\"PhysicalConnectionId\\": \\"pc-119mfjzm7****\\",\\n \\"VlanId\\": \\"0\\"\\n }\\n ]\\n },\\n \\"AssociatedCens\\": {\\n \\"AssociatedCen\\": [\\n {\\n \\"CenOwnerId\\": 0,\\n \\"CenId\\": \\"cen-kojok19xxx****\\",\\n \\"CenStatus\\": \\"Attached\\"\\n }\\n ]\\n },\\n \\"Bandwidth\\": 50,\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\",\\n \\"Tags\\": {\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"EcrId\\": \\"ecr-7vrbqv9lcgvzqbwwkm\\",\\n \\"SitelinkEnable\\": false,\\n \\"EcrAttatchStatus\\": \\"Attached\\",\\n \\"EcrOwnerId\\": \\"192732132151xxxx\\",\\n \\"Mtu\\": 1500\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6\\n 1\\n 10\\n 1\\n \\n 2020-06-08T12:20:55\\n active\\n pconnVBR\\n 300\\n 2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\n 2021-06-08T12:20:55\\n 1688000000000****\\n 2021-06-08T12:20:55\\n Normal\\n desc\\n 2021-06-08T12:20:55\\n 300\\n 192.168.XX.XX\\n test\\n vbr-bp1jcg5cmxjbl9xgc****\\n 10\\n ri-2zeo3xzyf38r4xx****\\n longtel0****\\n 2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\n 192.168.XX.XX\\n 255.255.255.252\\n false\\n rtb-bp1****\\n 3\\n ecc-h****\\n cb-****\\n 2021-05-08T12:20:55\\n Normal\\n 2000:1234:0:a000::/55\\n ap-cn-kojok1x****\\n PrePaid\\n pc-119mfjzm7x****\\n \\n active\\n ri-kojok19x3j0q6k****\\n longtel0**\\n 2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\n 2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\n 12345678****\\n 192.168.XX.XX\\n Normal\\n 255.255.255.252\\n true\\n Enabled\\n 116.62.XX.XX\\n 2408:4004:cc:400::/56\\n pc-119mfjzm7****\\n 0\\n \\n \\n cen-kojok19xxx****\\n Attached\\n \\n 50\\n rg-acfmxazb4ph6aiy****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeVirtualBorderRouters', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => "\n", + ], + 'DescribeGrantRulesToEcr' => [ + 'summary' => 'Queries the cross-account authorization list of an Express Connect Router (ECR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vbr-xxxxxx', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazdjdhd****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag keys. You must specify at least one tag key and at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. The tag key cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C1CCAB91-6AE6-50E3-AAA3-D0E5A2BC6ADE', + ], + 'EcrGrantRules' => [ + 'description' => 'The cross-account authorization list of the ECR'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'EcrUid' => [ + 'description' => 'The ECR account ID.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '11111111111', + ], + 'CreateTime' => [ + 'description' => 'The authorization time. The time follows the ISO8601 standard and uses UTC time. The format is YYYY-MM-DDThh:mm:ssZ.'."\n", + 'type' => 'string', + 'example' => '2025-09-15T14:00:00Z', + ], + 'EcrInstanceId' => [ + 'description' => 'The ECR account ID.'."\n", + 'type' => 'string', + 'example' => 'ecr-xxxxxx', + ], + ], + 'description' => '', + ], + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'Count' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'PageNumber' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries on each page. Maximum value: 50. Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParam.NotNull', + 'errorMessage' => 'The parameter must not be null.', + ], + [ + 'errorCode' => 'Parameter.Illegal', + 'errorMessage' => 'The parameter is illegal.', + ], + [ + 'errorCode' => 'Instance.StatusError', + 'errorMessage' => 'The status of instance error. ', + ], + ], + 404 => [ + [ + 'errorCode' => 'VRouterId.NotFound', + 'errorMessage' => 'The VRouter not found.', + ], + [ + 'errorCode' => 'Instance.NotExist', + 'errorMessage' => 'The instance not exist.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C1CCAB91-6AE6-50E3-AAA3-D0E5A2BC6ADE\\",\\n \\"EcrGrantRules\\": [\\n {\\n \\"EcrUid\\": 11111111111,\\n \\"CreateTime\\": \\"2025-09-15T14:00:00Z\\",\\n \\"EcrInstanceId\\": \\"ecr-xxxxxx\\"\\n }\\n ],\\n \\"TotalCount\\": 0,\\n \\"Count\\": 0,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 20\\n}","type":"json"}]', + 'title' => 'DescribeGrantRulesToEcr', + ], + 'DescribeVirtualBorderRoutersForPhysicalConnection' => [ + 'summary' => 'Queries the virtual border routers (VBRs) that are associated with an Express Connect circuit. The VBRs can be created by the owner of the Express Connect circuit and by other Alibaba Cloud accounts.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region in which the Express Connect circuit is deployed. You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'PhysicalConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pc-119mfj****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The filter keys.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The filter conditions. You can specify at most five filter conditions. The following filter conditions are supported:'."\n" + ."\n" + .'* **PhysicalConnectionId**: filter VBRs by the Express Connect circuit ID.'."\n" + .'* **VbrId**: filter VBRs by ID.'."\n" + .'* **Status**: filter VBRs by status.'."\n" + .'* **Name**: filter VBRs by name.'."\n" + .'* **AccessPointId**: filter VBRs by access point ID.'."\n" + .'* **eccId**: filter VBRs by ID of Express Cloud Connect (ECC) instance.'."\n" + .'* **type**: filter VBRs by type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Status', + ], + 'Value' => [ + 'description' => 'The filter value for the key. You can specify multiple filter values for one key. The logical operator among filter values is OR. If one filter value is matched, the filter condition is matched.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The filter value for the key. You can specify multiple filter values for one key. The logical operator among filter values is OR. If one filter value is matched, the filter condition is matched.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + 'required' => false, + 'example' => 'Active', + 'maxItems' => 5, + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7C5AE8B3-A2D8-428D-A2FF-93A225C0821E', + ], + 'PageNumber' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VirtualBorderRouterForPhysicalConnectionSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VirtualBorderRouterForPhysicalConnectionType' => [ + 'description' => 'The information about VBRs.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the VBR. Valid values:'."\n" + ."\n" + .'* **unconfirmed**'."\n" + .'* **active**'."\n" + .'* **terminating**'."\n" + .'* **terminated**'."\n" + .'* **recovering**'."\n" + .'* **deleting**'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'CreationTime' => [ + 'description' => 'The time when the VBR was created.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'Type' => [ + 'description' => 'The VBR type.'."\n", + 'type' => 'string', + 'example' => 'pconnVBR', + ], + 'PeerIpv6GatewayIp' => [ + 'description' => 'The IPv6 address of the gateway device on the user side.'."\n" + ."\n" + .'This parameter is required when you create a VBR for the owner of the Express Connect circuit. You can ignore this parameter when you create a VBR for another Alibaba Cloud account.'."\n", + 'type' => 'string', + 'example' => '2001:XXXX:3c4d:0015:0000:0000:0000:1a2b', + ], + 'CircuitCode' => [ + 'description' => 'The circuit code of the Express Connect circuit. The circuit code is provided by the connectivity provider.'."\n", + 'type' => 'string', + 'example' => 'longtel0**', + ], + 'LocalIpv6GatewayIp' => [ + 'description' => 'The IPv6 address of the gateway device on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => 'ipv6bw-uf6hcyzu65v98v3du****', + ], + 'PConnVbrExpireTime' => [ + 'description' => 'The time when the VBR associated with the Express Connect circuit expires.'."\n", + 'type' => 'string', + 'example' => '2021-06-10T12:20:55', + ], + 'LocalGatewayIp' => [ + 'description' => 'The IPv4 address of the gateway device on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.X', + ], + 'BandwidthStatus' => [ + 'description' => 'The status of the bandwidth. Valid values:'."\n" + ."\n" + .'* **Active**'."\n" + .'* **Inactive**'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'ActivationTime' => [ + 'description' => 'The time when the VBR was first activated.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'VbrOwnerUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs.'."\n" + ."\n" + .'If the owner of the VBR is the same as that of the Express Connect circuit, this parameter is empty.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '253460731706911258', + ], + 'PeeringSubnetMask' => [ + 'description' => 'The subnet mask of the IPv4 addresses configured on the user side and Alibaba Cloud side.'."\n" + ."\n" + .'The two IPv4 addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'example' => '255.255.255.0', + ], + 'EnableIpv6' => [ + 'description' => 'Indicates whether IPv6 is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'EccId' => [ + 'description' => 'The ID of the ECC instance.'."\n", + 'type' => 'string', + 'example' => 'ecc-sjghe****', + ], + 'Bandwidth' => [ + 'description' => 'The bandwidth of the VBR that is associated with the Express Connect circuit. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'RecoveryTime' => [ + 'description' => 'The last time when the status of the VBR changed from Terminated to Active.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'TerminationTime' => [ + 'description' => 'The last time when the VBR was disabled.'."\n", + 'type' => 'string', + 'example' => '2021-06-07T12:20:55', + ], + 'PConnVbrBussinessStatus' => [ + 'description' => 'The status of the VBR associated with the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'PeerGatewayIp' => [ + 'description' => 'The IPv4 address of the gateway device on the user side.'."\n", + 'type' => 'string', + 'example' => '162.62.XX.XX', + ], + 'PeeringIpv6SubnetMask' => [ + 'description' => 'The subnet mask for the IPv6 addresses of the gateway devices on the Alibaba Cloud side and on the user side.'."\n" + ."\n" + .'The two IPv6 addresses must fall within the same subnet.'."\n", + 'type' => 'string', + 'example' => '2408:4004:cc:400::/56', + ], + 'VbrId' => [ + 'description' => 'The VBR ID.'."\n", + 'type' => 'string', + 'example' => 'vbr-bp16ksp61j7e0tk****', + ], + 'PConnVbrChargeType' => [ + 'description' => 'The billing method of the VBR. Valid values:'."\n" + ."\n" + .'* **PrePaid**: subscription. If you choose this billing method, make sure that your Apsara Stack account supports balance payments or credit payments.'."\n" + .'* **PostPaid**: pay-as-you-go.'."\n", + 'type' => 'string', + 'example' => 'PrePaid', + ], + 'VlanId' => [ + 'description' => 'The VLAN ID of the VBR.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1678', + ], + 'VbrName' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The specified physicalConnection is not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionId.NotFound', + 'errorMessage' => 'The specified PhysicalConnectionId does not belong to user.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7C5AE8B3-A2D8-428D-A2FF-93A225C0821E\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 1,\\n \\"VirtualBorderRouterForPhysicalConnectionSet\\": {\\n \\"VirtualBorderRouterForPhysicalConnectionType\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"CreationTime\\": \\"2021-06-08T12:20:55\\",\\n \\"Type\\": \\"pconnVBR\\",\\n \\"PeerIpv6GatewayIp\\": \\"2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\",\\n \\"CircuitCode\\": \\"longtel0**\\",\\n \\"LocalIpv6GatewayIp\\": \\"ipv6bw-uf6hcyzu65v98v3du****\\",\\n \\"PConnVbrExpireTime\\": \\"2021-06-10T12:20:55\\",\\n \\"LocalGatewayIp\\": \\"192.168.XX.X\\",\\n \\"BandwidthStatus\\": \\"Active\\",\\n \\"ActivationTime\\": \\"2021-06-08T12:20:55\\",\\n \\"VbrOwnerUid\\": 253460731706911260,\\n \\"PeeringSubnetMask\\": \\"255.255.255.0\\",\\n \\"EnableIpv6\\": true,\\n \\"EccId\\": \\"ecc-sjghe****\\",\\n \\"Bandwidth\\": \\"10\\",\\n \\"RecoveryTime\\": \\"2021-06-08T12:20:55\\",\\n \\"TerminationTime\\": \\"2021-06-07T12:20:55\\",\\n \\"PConnVbrBussinessStatus\\": \\"Normal\\",\\n \\"PeerGatewayIp\\": \\"162.62.XX.XX\\",\\n \\"PeeringIpv6SubnetMask\\": \\"2408:4004:cc:400::/56\\",\\n \\"VbrId\\": \\"vbr-bp16ksp61j7e0tk****\\",\\n \\"PConnVbrChargeType\\": \\"PrePaid\\",\\n \\"VlanId\\": 1678,\\n \\"VbrName\\": \\"aliyun-to-bin-10G-A-QOS\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 7C5AE8B3-A2D8-428D-A2FF-93A225C0821E\\n 1\\n 10\\n 1\\n \\n Active\\n 2021-06-08T12:20:55\\n pconnVBR\\n 2001:XXXX:3c4d:0015:0000:0000:0000:1a2b\\n longtel0**\\n ipv6bw-uf6hcyzu65v98v3du****\\n 2021-06-10T12:20:55\\n 192.168.XX.X\\n Active\\n 2021-06-08T12:20:55\\n 253460731706911260\\n 255.255.255.0\\n true\\n ecc-sjghe****\\n 10\\n 2021-06-08T12:20:55\\n 2021-06-07T12:20:55\\n Normal\\n 162.62.XX.XX\\n 2408:4004:cc:400::/56\\n vbr-bp16ksp61j7e0tk****\\n PrePaid\\n 1678\\n \\n","errorExample":""}]', + 'title' => 'DescribeVirtualBorderRoutersForPhysicalConnection', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AddBgpNetwork' => [ + 'summary' => 'Advertises a Border Gateway Protocol (BGP) network.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual border router (VBR) group.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'DstCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the virtual private cloud (VPC) or vSwitch that you want to connect to a data center.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.10.XX.XX/32', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1qpo0kug3a2*****', + ], + ], + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router that is associated with the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vrt-2zeo3xzyf38r4u******', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9C7FA9D6-72E0-48A9-A9C3-2DA8569CD5EB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.Bgp', + 'errorMessage' => 'bgp peer count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.Nqa', + 'errorMessage' => 'nqa count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.BgpNetwork', + 'errorMessage' => 'bgp network count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidPeerIpAddress', + 'errorMessage' => 'multi pconn peer ip can not be null.', + ], + [ + 'errorCode' => 'InvalidVbrNetwork', + 'errorMessage' => 'vbr netowrk not exists', + ], + [ + 'errorCode' => 'InvalidBgpGroup', + 'errorMessage' => 'bgp group not exists', + ], + [ + 'errorCode' => 'InvalidBgpName.Malformed', + 'errorMessage' => 'Specified Bgp Group name is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpDiscription.Malformed', + 'errorMessage' => 'Specified Bgp Group description is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpAuthkey.Malformed', + 'errorMessage' => 'Specified Bgp Group authkey is not valid.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidPeerAsn.Malformed', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'parameter must not null.', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'bgp network already exists', + ], + [ + 'errorCode' => 'InvalidStatus.CannotOperate', + 'errorMessage' => 'invalid status cannot operate', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressMustPointOut', + 'errorMessage' => 'vbr has 0 or more than 1 subif ,point out peerIpAddress.', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressInUse', + 'errorMessage' => 'peer ip address in use ,cannot create bgp peer.', + ], + [ + 'errorCode' => 'Duplicated.CidrBlock', + 'errorMessage' => 'bgp network cidr already exists.', + ], + [ + 'errorCode' => 'InvalidIP.IpInSnatPool', + 'errorMessage' => 'Multi ip in snat pool cannot remove ip from bandwidth package.', + ], + [ + 'errorCode' => 'InvalidDestCidrBlock.Malformed', + 'errorMessage' => 'Specified dstCidrBlock is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.ConflictWithDClass', + 'errorMessage' => 'DClass IP can not support.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'OperationFailed.NoActiveRouterInterface', + 'errorMessage' => 'there\'s not active routerInterface,cannot add bgp network.', + ], + [ + 'errorCode' => 'IllegalParamFormat.DstCidrBlock', + 'errorMessage' => 'The format of the specified destination CIDR block is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => 'The parameter of IpVersion is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.ipVersion', + 'errorMessage' => 'The IP version does not match.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9C7FA9D6-72E0-48A9-A9C3-2DA8569CD5EB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9C7FA9D6-72E0-48A9-A9C3-2DA8569CD5EB\\n","errorExample":""}]', + 'title' => 'AddBgpNetwork', + ], + 'CreateBgpGroup' => [ + 'summary' => 'Creates a BGP group for a virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VBR.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-bp1ctxy813985gkuk****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the BGP group.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the BGP group.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'LocalAsn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The custom ASN on the Alibaba Cloud side. Valid values:'."\n" + ."\n" + .'* **45104**'."\n" + .'* **64512~65534**'."\n" + .'* **4200000000~4294967294**'."\n" + ."\n" + .'> **65025** is reserved by Alibaba Cloud. By default, Alibaba Cloud uses **45104** as **LocalAsn**. If you use custom **LocalAsn** in multi-line access scenarios, loops in BGP may occur.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '45104', + ], + ], + [ + 'name' => 'PeerAsn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ASN of the gateway device in the data center.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'docRequired' => true, + 'example' => '1****', + ], + ], + [ + 'name' => 'AuthKey', + 'in' => 'query', + 'schema' => [ + 'description' => 'The authentication key of the BGP group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '!PWZ2****', + ], + ], + [ + 'name' => 'IsFakeAsn', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use a fake ASN. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n" + ."\n" + .'> A router that runs BGP typically belongs to only one AS. If you need to replace an existing AS with a new AS and you cannot immediately modify BGP configurations, you can use fake ASNs to ensure service continuity.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4**: This is the default value.'."\n" + .'* **IPv6**: IPv6 is supported only if the VBR for which you want to create the BGP group has IPv6 enabled.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'RouteQuota', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of routes supported by a BGP peer. Default value: **110**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '110', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The ID of the BGP group.'."\n", + 'type' => 'object', + 'properties' => [ + 'BgpGroupId' => [ + 'description' => 'The ID of the BGP group.'."\n", + 'type' => 'string', + 'example' => 'bgpg-bp1k25cyp26cllath****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C1221A1F-2ACD-4592-8F27-474E02883159', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.Bgp', + 'errorMessage' => 'bgp peer count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.Nqa', + 'errorMessage' => 'nqa count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.BgpNetwork', + 'errorMessage' => 'bgp network count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidPeerIpAddress', + 'errorMessage' => 'multi pconn peer ip can not be null.', + ], + [ + 'errorCode' => 'InvalidVbrNetwork', + 'errorMessage' => 'vbr netowrk not exists', + ], + [ + 'errorCode' => 'InvalidBgpGroup', + 'errorMessage' => 'bgp group not exists', + ], + [ + 'errorCode' => 'InvalidBgpName.Malformed', + 'errorMessage' => 'Specified Bgp Group name is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpDescription.Malformed', + 'errorMessage' => 'Specified Bgp Group description is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpAuthkey.Malformed', + 'errorMessage' => 'Specified Bgp Group authkey is not valid.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidPeerAsn.Malformed', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'params must not null.', + ], + [ + 'errorCode' => 'InvalidBgpGroup.LocalAsnInvalid', + 'errorMessage' => 'The specified BgpGroup LocalAsn is invalid, only support 64512 to 65534 or 4200000000 to 4294967294, but cannot be 65025.', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'bgp network already exists', + ], + [ + 'errorCode' => 'InvalidStatus.CannotOperate', + 'errorMessage' => 'invalid status cannot operate', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressMustPointOut', + 'errorMessage' => 'vbr has 0 or more than 1 subif ,point out peerIpAddress.', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressInUse', + 'errorMessage' => 'peer ip address in use ,cannot create bgp peer.', + ], + [ + 'errorCode' => 'IllegalParam.PeerAsn', + 'errorMessage' => 'The param of PeerAsn is illegal', + ], + [ + 'errorCode' => 'IllegalParam.LocalAsn', + 'errorMessage' => 'The param of LocalAsn is illegal', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'OperationUnsupport', + 'errorMessage' => 'Operation is unsupport, not in vbr support custom local asn white list.', + ], + [ + 'errorCode' => 'IllegalParam.RouteLimit', + 'errorMessage' => 'The operation is failed because of bgp group max route entry num quota exceed.', + ], + [ + 'errorCode' => 'IllegalParam.BgpGroupLocalAsn', + 'errorMessage' => 'VBR BgpGroup localAsn must same with ECR asn.', + ], + [ + 'errorCode' => 'OperationDenied.VbrAttachEcrInMiddleStatus', + 'errorMessage' => 'The operation is not allowed because of VBR attach or detach ECR in middle status.', + ], + [ + 'errorCode' => 'OperationFailed.BgpPeerConflictWithECR', + 'errorMessage' => 'The BGP neighbor created by the previous VBR conflicts with the ECR configuration.', + ], + [ + 'errorCode' => 'OperationFailed.PeerAsnCannotEqualsLocalAsn', + 'errorMessage' => 'Peer ASN is illegal, peer ASN cannot equals to local ASN.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"BgpGroupId\\": \\"bgpg-bp1k25cyp26cllath****\\",\\n \\"RequestId\\": \\"C1221A1F-2ACD-4592-8F27-474E02883159\\"\\n}","errorExample":""},{"type":"xml","example":"\\n bgpg-bp1k25cyp26cllath****\\n C1221A1F-2ACD-4592-8F27-474E02883159\\n","errorExample":""}]', + 'title' => 'CreateBgpGroup', + 'description' => 'You can connect a VBR to a data center through BGP. Each BGP group is associated with a VBR. You can add a BGP peer that needs to communicate with a VBR to a BGP group and advertise the BGP network in the VBR.'."\n" + ."\n" + .'BGP groups are used to simplify BGP configurations. You can add BGP peers that use the same configurations to one BGP group. Before you start, you must create a BGP group with the requested autonomous system number (ASN).'."\n" + ."\n" + .'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* You can specify only the data center that is connected to the VBR through an Express Connect circuit as a BGP peer.'."\n" + .'* VBRs support only BGP-4.'."\n" + .'* You can create at most eight BGP peers for each VBR.'."\n" + .'* Each BGP peer supports at most 110 dynamic routes.'."\n" + .'* The ASN of Alibaba Cloud is 45104. You can specify a 2-byte or 4-byte ASN for the data center.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateBgpPeer' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the BGP group belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'BgpGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'bgpg-wz9f62v4fbg****', + ], + ], + [ + 'name' => 'PeerIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the BGP peer.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.62.XX.XX', + ], + ], + [ + 'name' => 'EnableBfd', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the Bidirectional Forwarding Detection (BFD) feature. Valid values:'."\n" + ."\n" + .'* **true**: enables BFD.'."\n" + .'* **false**: disables BFD.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that the value is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses the value of **RequestId** as **ClientToken**. The value of **RequestId** for each API request is different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'IpVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP version. Valid values:'."\n" + ."\n" + .'* **IPv4**: This is the default value.'."\n" + .'* **IPv6**: IPv6 is supported only if the VBR for which you want to create the BGP group has IPv6 enabled.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'BfdMultiHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The BFD hop count. Valid values: **1** to **255**.'."\n" + ."\n" + .'This parameter is required only if you enable BFD. The parameter specifies the maximum number of network devices that a packet can traverse from the source to the destination. Set a value based on your network topology.'."\n" + ."\n" + .'> If you use BFD in a multi-cloud environment or a fiber-optic direct connection network without any bridge device, you need to change the default BFD hop count from **255** to **1**.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'BgpPeerId' => [ + 'description' => 'The ID of the BGP peer.'."\n", + 'type' => 'string', + 'example' => 'bgp-m5eoyp2mwegk8ce9v****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'D4B7649A-61BB-4C64-A586-1DFF1EDA6A42', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.Bgp', + 'errorMessage' => 'bgp peer count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.Nqa', + 'errorMessage' => 'nqa count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidAccessDeviceId.NotFound', + 'errorMessage' => 'There is no Access_Device_Id in our records', + ], + [ + 'errorCode' => 'QuotaExceeded.BfdSession', + 'errorMessage' => 'Your Bfd Session number reaches the upper limit.', + ], + [ + 'errorCode' => 'QuotaExceeded.BgpNetwork', + 'errorMessage' => 'bgp network count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidPeerIpAddress', + 'errorMessage' => 'multi pconn peer ip can not be null.', + ], + [ + 'errorCode' => 'InvalidVbrNetwork', + 'errorMessage' => 'vbr netowrk not exists', + ], + [ + 'errorCode' => 'InvalidBgpGroup', + 'errorMessage' => 'bgp group not exists', + ], + [ + 'errorCode' => 'InvalidBgpName.Malformed', + 'errorMessage' => 'Specified Bgp Group name is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpDiscription.Malformed', + 'errorMessage' => 'Specified Bgp Group description is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpAuthkey.Malformed', + 'errorMessage' => 'Specified Bgp Group authkey is not valid.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidPeerAsn.Malformed', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'bgp network already exists', + ], + [ + 'errorCode' => 'InvalidStatus.CannotOperate', + 'errorMessage' => 'invalid status cannot operate', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressMustPointOut', + 'errorMessage' => 'vbr has 0 or more than 1 subif ,point out peerIpAddress.', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressInUse', + 'errorMessage' => 'peer ip address in use ,cannot create bgp peer.', + ], + [ + 'errorCode' => 'BgpPeer.Already.Exists', + 'errorMessage' => 'bgp peer already exists.', + ], + [ + 'errorCode' => 'MissingParam.EnableBfd', + 'errorMessage' => 'The parameter EnableBfd is missing.', + ], + [ + 'errorCode' => 'OperationUnsupported.IPV6ForThisRegion', + 'errorMessage' => 'This Region is unsupported IPV6.', + ], + [ + 'errorCode' => 'IllegalParam.BfdMultiHop', + 'errorMessage' => 'BfdMultiHop is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Vpconn', + 'errorMessage' => 'The feature of Vpconn is not supported.', + ], + [ + 'errorCode' => 'DuplicatedParam.PeerIpAddress', + 'errorMessage' => 'The param of PeerIpAddress is duplicated.', + ], + [ + 'errorCode' => 'DuplicatedParam.LocalIpAddress', + 'errorMessage' => 'The LocalIpAddress already exists.', + ], + [ + 'errorCode' => 'DuplicatedParam.PeerIpv6Address', + 'errorMessage' => 'The PeerIpv6Address already exists.', + ], + [ + 'errorCode' => 'DuplicatedParam.LocalIpv6Address', + 'errorMessage' => 'The LocalIpv6Address already exists.', + ], + [ + 'errorCode' => 'IllegalParam.LocalGatewayIpAndMask', + 'errorMessage' => 'The LocalGatewayIpAndMask value is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.PeeringIpv6SubnetMask', + 'errorMessage' => 'The PeeringIpv6SubnetMask value is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.IpVersion', + 'errorMessage' => 'The param of IPV6 is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.PeerIpAddress', + 'errorMessage' => 'The param of PeerIpAddress is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"BgpPeerId\\": \\"bgp-m5eoyp2mwegk8ce9v****\\",\\n \\"RequestId\\": \\"D4B7649A-61BB-4C64-A586-1DFF1EDA6A42\\"\\n}","errorExample":""},{"type":"xml","example":"\\n bgp-m5eoyp2mwegk8ce9v****\\n D4B7649A-61BB-4C64-A586-1DFF1EDA6A42\\n","errorExample":""}]', + 'title' => 'CreateBgpPeer', + 'summary' => 'Adds a Border Gateway Protocol (BGP) peer to a BGP group.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteBgpGroup' => [ + 'summary' => 'Deletes a Border Gateway Protocol (BGP) group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the BGP group.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BgpGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'bgpg-bp1k25cyp26cllath****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.Bgp', + 'errorMessage' => 'bgp peer count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.Nqa', + 'errorMessage' => 'nqa count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.BgpNetwork', + 'errorMessage' => 'bgp network count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidPeerIpAddress', + 'errorMessage' => 'multi pconn peer ip can not be null.', + ], + [ + 'errorCode' => 'InvalidVbrNetwork', + 'errorMessage' => 'vbr netowrk not exists', + ], + [ + 'errorCode' => 'InvalidBgpGroup', + 'errorMessage' => 'bgp group not exists', + ], + [ + 'errorCode' => 'InvalidBgpName.Malformed', + 'errorMessage' => 'Specified Bgp Group name is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpDiscription.Malformed', + 'errorMessage' => 'Specified Bgp Group description is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpAuthkey.Malformed', + 'errorMessage' => 'Specified Bgp Group authkey is not valid.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidPeerAsn.Malformed', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'bgp network already exists', + ], + [ + 'errorCode' => 'InvalidStatus.CannotOperate', + 'errorMessage' => 'invalid status cannot operate', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressMustPointOut', + 'errorMessage' => 'vbr has 0 or more than 1 subif ,point out peerIpAddress.', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressInUse', + 'errorMessage' => 'peer ip address in use ,cannot create bgp peer.', + ], + [ + 'errorCode' => 'OperationDenied.VbrAttachEcrInMiddleStatus', + 'errorMessage' => 'The operation is not allowed because of VBR attach or detach ECR in middle status.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + [ + 'errorCode' => 'DependencyViolation.BgpPeer', + 'errorMessage' => 'Specified object has dependent resources bgp peer.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DeleteBgpGroup', + ], + 'DeleteBgpNetwork' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the BGP group.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DstCidrBlock', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the virtual private cloud (VPC) or vSwitch that you want to connect to a data center.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10.110.192.12/32', + ], + ], + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.Bgp', + 'errorMessage' => 'bgp peer count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.Nqa', + 'errorMessage' => 'nqa count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.BgpNetwork', + 'errorMessage' => 'bgp network count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidPeerIpAddress', + 'errorMessage' => 'multi pconn peer ip can not be null.', + ], + [ + 'errorCode' => 'InvalidVbrNetwork', + 'errorMessage' => 'vbr netowrk not exists', + ], + [ + 'errorCode' => 'InvalidBgpGroup', + 'errorMessage' => 'bgp group not exists', + ], + [ + 'errorCode' => 'InvalidBgpName.Malformed', + 'errorMessage' => 'Specified Bgp Group name is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpDiscription.Malformed', + 'errorMessage' => 'Specified Bgp Group description is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpAuthkey.Malformed', + 'errorMessage' => 'Specified Bgp Group authkey is not valid.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidPeerAsn.Malformed', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'bgp network already exists', + ], + [ + 'errorCode' => 'InvalidStatus.CannotOperate', + 'errorMessage' => 'invalid status cannot operate', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressMustPointOut', + 'errorMessage' => 'vbr has 0 or more than 1 subif ,point out peerIpAddress.', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressInUse', + 'errorMessage' => 'peer ip address in use ,cannot create bgp peer.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DeleteBgpNetwork', + 'summary' => 'Deletes an advertised Border Gateway Protocol (BGP) network.', + ], + 'DeleteBgpPeer' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the BGP group.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'BgpPeerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP peer.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'bgp-wz977wcrmb69a********', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.Bgp', + 'errorMessage' => 'bgp peer count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.Nqa', + 'errorMessage' => 'nqa count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.BgpNetwork', + 'errorMessage' => 'bgp network count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidPeerIpAddress', + 'errorMessage' => 'multi pconn peer ip can not be null.', + ], + [ + 'errorCode' => 'InvalidVbrNetwork', + 'errorMessage' => 'vbr netowrk not exists', + ], + [ + 'errorCode' => 'InvalidBgpGroup', + 'errorMessage' => 'bgp group not exists', + ], + [ + 'errorCode' => 'InvalidBgpName.Malformed', + 'errorMessage' => 'Specified Bgp Group name is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpDiscription.Malformed', + 'errorMessage' => 'Specified Bgp Group description is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpAuthkey.Malformed', + 'errorMessage' => 'Specified Bgp Group authkey is not valid.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidPeerAsn.Malformed', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'bgp network already exists', + ], + [ + 'errorCode' => 'InvalidStatus.CannotOperate', + 'errorMessage' => 'invalid status cannot operate', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressMustPointOut', + 'errorMessage' => 'vbr has 0 or more than 1 subif ,point out peerIpAddress.', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressInUse', + 'errorMessage' => 'peer ip address in use ,cannot create bgp peer.', + ], + [ + 'errorCode' => 'InvalidBgpPeer.NotFound', + 'errorMessage' => 'Bgp peer not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.BgpPeer', + 'errorMessage' => 'Invalid BgpPeer status cannot operate.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\n","errorExample":""}]', + 'title' => 'DeleteBgpPeer', + 'summary' => 'Deletes a Border Gateway Protocol (BGP) peer.', + ], + 'ModifyBgpGroupAttribute' => [ + 'summary' => 'Modifies the configuration of a Border Gateway Protocol (BGP) group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the BGP group.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'BgpGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The BGP group ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'bgpg-wz9f62v4fbg2g****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The BGP group name.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The BGP group description.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BGP', + ], + ], + [ + 'name' => 'LocalAsn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The custom autonomous system number (ASN) of the BGP on the Alibaba Cloud side. Valid values:'."\n" + ."\n" + .'* **45104**'."\n" + .'* **64512~65534**'."\n" + .'* **4200000000~4294967294**'."\n" + ."\n" + .'> **65025** is reserved by Alibaba Cloud. Alibaba Cloud uses **45104** as the **local ASN** by default. Custom **local ASNs** may cause loops in multi-line scenarios. Proceed with caution.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '45104', + ], + ], + [ + 'name' => 'PeerAsn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ASN of the gateway device in the data center.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1****', + ], + ], + [ + 'name' => 'AuthKey', + 'in' => 'query', + 'schema' => [ + 'description' => 'The authentication key of the BGP group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '!PWZ2****', + ], + ], + [ + 'name' => 'IsFakeAsn', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use a fake AS number. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n" + ."\n" + .'> A router that runs BGP typically belongs to only one AS. If you need to replace an AS with a new one, but you cannot immediately modify BGP configurations due to business requirements, you can specify a fake AS number to establish a connection with the local end. This ensures service continuity in scenarios such as AS migration or AS merging.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'true', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RouteQuota', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of routes supported by a BGP peer. Default value: **110**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '110', + ], + ], + [ + 'name' => 'ClearAuthKey', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to clear the secret key. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8C3C6D7C-A1CE-4FD8-BC57-DC493A55F76F', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QuotaExceeded.Bgp', + 'errorMessage' => 'bgp peer count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.Nqa', + 'errorMessage' => 'nqa count per vbr quota exceed.', + ], + [ + 'errorCode' => 'QuotaExceeded.BgpNetwork', + 'errorMessage' => 'bgp network count per vbr quota exceed.', + ], + [ + 'errorCode' => 'InvalidPeerIpAddress', + 'errorMessage' => 'multi pconn peer ip can not be null.', + ], + [ + 'errorCode' => 'InvalidVbrNetwork', + 'errorMessage' => 'vbr netowrk not exists', + ], + [ + 'errorCode' => 'InvalidBgpGroup', + 'errorMessage' => 'bgp group not exists', + ], + [ + 'errorCode' => 'InvalidBgpName.Malformed', + 'errorMessage' => 'Specified Bgp Group name is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpDiscription.Malformed', + 'errorMessage' => 'Specified Bgp Group description is not valid.', + ], + [ + 'errorCode' => 'InvalidBgpAuthkey.Malformed', + 'errorMessage' => 'Specified Bgp Group authkey is not valid.', + ], + [ + 'errorCode' => 'InvalidIP.Malformed', + 'errorMessage' => 'Ip malformed.', + ], + [ + 'errorCode' => 'InvalidPeerAsn.Malformed', + 'errorMessage' => 'invalid peer asn cannot equals aliyun asn:45104', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidBgpGroup.LocalAsnInvalid', + 'errorMessage' => 'The specified BgpGroup LocalAsn is invalid, only support 64512 to 65534 or 4200000000 to 4294967294, and cannot be 65025.', + ], + [ + 'errorCode' => 'InvalidParams.NotFound', + 'errorMessage' => 'instance not found', + ], + [ + 'errorCode' => 'InvalidParams.AlreadyExists', + 'errorMessage' => 'bgp network already exists', + ], + [ + 'errorCode' => 'InvalidStatus.CannotOperate', + 'errorMessage' => 'invalid status cannot operate', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressMustPointOut', + 'errorMessage' => 'vbr has 0 or more than 1 subif ,point out peerIpAddress.', + ], + [ + 'errorCode' => 'InvalidParams.PeerIpAddressInUse', + 'errorMessage' => 'peer ip address in use ,cannot create bgp peer.', + ], + [ + 'errorCode' => 'IllegalParam.PeerAsn', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.LocalAsn', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'OperationUnsupport', + 'errorMessage' => 'Operation is unsupport, not in vbr support custom local asn white list.', + ], + [ + 'errorCode' => 'OperationFailed.ClearAuthKeyForbidden', + 'errorMessage' => 'The specific auth key is not empty.', + ], + [ + 'errorCode' => 'IllegalParam.RouteLimit', + 'errorMessage' => 'The operation is failed because of bgp group max route entry num quota exceed.', + ], + [ + 'errorCode' => 'OperationDenied.VbrAttachEcrInMiddleStatus', + 'errorMessage' => 'The operation is not allowed because of VBR attach or detach ECR in middle status.', + ], + [ + 'errorCode' => 'OperationUnsupported.VBRAttachedECR', + 'errorMessage' => 'VBR already attached to ECR, please delete it from ECR.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'Specified value of "regionId" is not supported.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8C3C6D7C-A1CE-4FD8-BC57-DC493A55F76F\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 8C3C6D7C-A1CE-4FD8-BC57-DC493A55F76F\\n","errorExample":""}]', + 'title' => 'ModifyBgpGroupAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyBgpPeerAttribute' => [ + 'summary' => 'Modifies the configuration of a BGP peer.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the BGP group to which the BGP peer that you want to modify belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'BgpPeerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP peer that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'bgp-m5eoyp2mwegk8ce9v****', + ], + ], + [ + 'name' => 'BgpGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP group to which the BGP peer that you want to modify belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'bgpg-m5eo12jxuw2hc0uqq****', + ], + ], + [ + 'name' => 'PeerIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address of the BGP peer that you want to modify.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.62.XX.XX', + ], + ], + [ + 'name' => 'EnableBfd', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the Bidirectional Forwarding Detection (BFD) feature. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'BfdMultiHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The BFD hop count. Valid values: **1** to **255**.'."\n" + ."\n" + .'This parameter is required only if you enable BFD. The parameter specifies the maximum number of network devices that a packet can traverse from the source to the destination. Set a value based on your network topology.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'D4B7649A-61BB-4C64-A586-1DFF1EDA6A42', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.IpAddress', + 'errorMessage' => 'The specified IpAddress is illegal.', + ], + [ + 'errorCode' => 'InvalidAccessDeviceId.NotFound', + 'errorMessage' => 'There is no Access_Device_Id in our records', + ], + [ + 'errorCode' => 'QuotaExceeded.BfdSession', + 'errorMessage' => 'Your Bfd Session number reaches the upper limit.', + ], + [ + 'errorCode' => 'MissingParam.BgpPeerId', + 'errorMessage' => 'The parameter BgpPeerId is mandatory.', + ], + [ + 'errorCode' => 'InvalidBgpPeer.NotFound', + 'errorMessage' => 'The specified BgpPeerId does not exit in our records.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'IncorrectStatus.BgpPeer', + 'errorMessage' => 'Invalid BgpPeer status cannot operate.', + ], + [ + 'errorCode' => 'MissingParam.EnableBfd', + 'errorMessage' => 'The parameter EnableBfd is missing.', + ], + [ + 'errorCode' => 'IllegalParam.BfdMultiHop', + 'errorMessage' => 'BfdMultiHop is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'DuplicatedParam.PeerIpAddress', + 'errorMessage' => 'The param of PeerIpAddress is duplicated.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidBgpPeerId.NotFound', + 'errorMessage' => 'The specified BgpPeerId does not exit in our records.', + ], + [ + 'errorCode' => 'IncorretStatus.BgpPeer', + 'errorMessage' => 'The specified BgpPeer status is not stable, can not operate.', + ], + ], + 500 => [ + [ + 'errorCode' => 'Internal.Error', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D4B7649A-61BB-4C64-A586-1DFF1EDA6A42\\"\\n}","errorExample":""},{"type":"xml","example":"\\n D4B7649A-61BB-4C64-A586-1DFF1EDA6A42\\n","errorExample":""}]', + 'title' => 'ModifyBgpPeerAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeBgpGroups' => [ + 'summary' => 'Queries BGP groups in a specified region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual border router (VBR) that is associated with the BGP group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vbr-bp1ctxy813985gkuk****', + ], + ], + [ + 'name' => 'BgpGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'bgpg-bp1k25cyp26cllath****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the VBR is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'IsDefault', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the BGP group is the default one. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. The maximum value is **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '1D0971B2-A35A-42C1-A44C-E91360C36C0B', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'BgpGroups' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'BgpGroup' => [ + 'description' => 'The detailed information about the BGP group.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the BGP group.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'BgpGroupId' => [ + 'description' => 'The ID of the BGP group.'."\n", + 'type' => 'string', + 'example' => 'bgpg-bp1k25cyp26cllath****', + ], + 'RouterId' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'example' => 'vbr-bp1ctxy813985gkuk****', + ], + 'PeerAsn' => [ + 'description' => 'The autonomous system number (ASN) of the on-premises device in the data center.'."\n", + 'type' => 'string', + 'example' => '1****', + ], + 'LocalAsn' => [ + 'description' => 'The ASN of the device on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '45104', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the BGP group belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-shanghai', + ], + 'Hold' => [ + 'description' => 'The hold time to receive BGP messages. Unit: seconds.'."\n" + ."\n" + .'> If no message is received within the hold time, the BGP peer is considered disconnected.'."\n", + 'type' => 'string', + 'example' => '30', + ], + 'IpVersion' => [ + 'description' => 'The IP version of the BGP group. Valid values:'."\n" + ."\n" + .'* **ipv4**: IPv4'."\n" + .'* **ipv6**: IPv6. IPv6 is supported only if the VBR of the BGP group has IPv6 enabled.'."\n", + 'type' => 'string', + 'example' => 'IPv4', + ], + 'Description' => [ + 'description' => 'The description of the BGP group.'."\n", + 'type' => 'string', + 'example' => 'The description of the BGP group.', + ], + 'Keepalive' => [ + 'description' => 'The keepalive time. Unit: seconds.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'IsFake' => [ + 'description' => 'Indicates whether the ASN is fake. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'RouteLimit' => [ + 'description' => 'The maximum number of route entries for BGP dynamic route learning.'."\n", + 'type' => 'string', + 'example' => '99', + ], + 'Name' => [ + 'description' => 'The name of the BGP group.'."\n", + 'type' => 'string', + 'example' => 'name', + ], + 'AuthKey' => [ + 'description' => 'The key used by the BGP group.'."\n", + 'type' => 'string', + 'example' => '!PWZ****', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IellgalParameter.OwnerAccount', + 'errorMessage' => 'The specified parameter OwnerAccount is not valid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"1D0971B2-A35A-42C1-A44C-E91360C36C0B\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"BgpGroups\\": {\\n \\"BgpGroup\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"BgpGroupId\\": \\"bgpg-bp1k25cyp26cllath****\\",\\n \\"RouterId\\": \\"vbr-bp1ctxy813985gkuk****\\",\\n \\"PeerAsn\\": \\"1****\\",\\n \\"LocalAsn\\": \\"45104\\",\\n \\"RegionId\\": \\"cn-shanghai\\",\\n \\"Hold\\": \\"30\\",\\n \\"IpVersion\\": \\"IPv4\\",\\n \\"Description\\": \\"BGP组描述。\\",\\n \\"Keepalive\\": \\"10\\",\\n \\"IsFake\\": \\"true\\",\\n \\"RouteLimit\\": \\"99\\",\\n \\"Name\\": \\"name\\",\\n \\"AuthKey\\": \\"!PWZ****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 1D0971B2-A35A-42C1-A44C-E91360C36C0B\\n 1\\n 1\\n \\n Available\\n bgpg-bp1k25cyp26cllath****\\n vbr-bp1ctxy813985gkuk****\\n 1****\\n 45104\\n cn-shanghai\\n 30\\n ipv4\\n BGP组描述。\\n 10\\n true\\n 99\\n name\\n !PWZ****\\n \\n","errorExample":""}]', + 'title' => 'DescribeBgpGroups', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeBgpNetworks' => [ + 'summary' => 'Queries advertised Border Gateway Protocol (BGP) networks.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the BGP group.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the returned page. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. The maximum value is **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6F513A15-669F-419D-B511-08A85292059B', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of advertised BGP networks.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'BgpNetworks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'BgpNetwork' => [ + 'description' => 'BGP networks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'BGP networks.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the advertised BGP network.'."\n", + 'type' => 'string', + 'example' => 'Enabled', + ], + 'VpcId' => [ + 'description' => 'The ID of the virtual private cloud (VPC) in which the master instance resides.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1qpo0kug3a2*****', + ], + 'DstCidrBlock' => [ + 'description' => 'The CIDR block of the advertised BGP network.'."\n", + 'type' => 'string', + 'example' => '10.1.XX.XX/24', + ], + 'RouterId' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"6F513A15-669F-419D-B511-08A85292059B\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"BgpNetworks\\": {\\n \\"BgpNetwork\\": [\\n {\\n \\"Status\\": \\"Enabled\\",\\n \\"VpcId\\": \\"vpc-bp1qpo0kug3a2*****\\",\\n \\"DstCidrBlock\\": \\"10.1.XX.XX/24\\",\\n \\"RouterId\\": \\"vbr-bp1ctxy813985gkuk****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 6F513A15-669F-419D-B511-08A85292059B\\n 1\\n 2\\n \\n Enabled\\n vpc-bp1qpo0kug3a2*****\\n 10.1.XX.XX/24\\n vrt-bp1lhl0taikrteen8****\\n \\n","errorExample":""}]', + 'title' => 'DescribeBgpNetworks', + ], + 'DescribeBgpPeers' => [ + 'summary' => 'Queries Border Gateway Protocol (BGP) peers in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual border router (VBR) that is associated with the BGP peer that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vbr-2zecmmvg5gvu8i4te****', + ], + ], + [ + 'name' => 'BgpPeerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP peer that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'bgp-2ze3un0ft1jd1xd****', + ], + ], + [ + 'name' => 'BgpGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the BGP group to which the BGP peer that you want to query belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'bgpg-2zev8h2wo414sfh****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the BGP group to which the BGP peer that you want to query belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'IsDefault', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the BGP group is the default group. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1 to 50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The information about the BGP peer.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'BgpPeers' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'BgpPeer' => [ + 'description' => 'The information about the BGP peer.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the BGP peer. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'PeerIpAddress' => [ + 'description' => 'The IP address of the BGP peer.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'RouterId' => [ + 'description' => 'The Router ID.'."\n", + 'type' => 'string', + 'example' => 'vbr-2zecmmvg5gvu8i4te****', + ], + 'BgpGroupId' => [ + 'description' => 'The ID of the BGP group.'."\n", + 'type' => 'string', + 'example' => 'bgpg-2zev8h2wo414sfh****', + ], + 'BgpStatus' => [ + 'description' => 'The status of the BGP connection. Valid values:'."\n" + ."\n" + .'* **Idle**: The BGP connection is not used.'."\n" + .'* **Connect**: The BGP connection is used.'."\n" + .'* **Active**: The BGP connection is available.'."\n" + .'* **Established**: The BGP connection is established.'."\n" + .'* **Down**: The BGP connection is unavailable.'."\n", + 'type' => 'string', + 'example' => 'Connect', + ], + 'BfdMultiHop' => [ + 'description' => 'The Bidirectional Forwarding Detection (BFD) hop count.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'PeerAsn' => [ + 'description' => 'The autonomous system number (ASN)of the BGP peer.'."\n", + 'type' => 'string', + 'example' => '65515', + ], + 'LocalAsn' => [ + 'description' => 'The ASN of the device on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '45104', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the BGP group belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-shanghai', + ], + 'BgpPeerId' => [ + 'description' => 'The ID of the BGP peer.'."\n", + 'type' => 'string', + 'example' => 'bgp-2ze3un0ft1jd1xd****', + ], + 'EnableBfd' => [ + 'description' => 'Indicates whether BFD is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Hold' => [ + 'description' => 'The hold time.'."\n", + 'type' => 'string', + 'example' => '30', + ], + 'IpVersion' => [ + 'description' => 'The version of the IP address.'."\n", + 'type' => 'string', + 'example' => 'ipv4', + ], + 'Keepalive' => [ + 'description' => 'The Keepalive interval.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'Description' => [ + 'description' => 'The description of the BGP group.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'RouteLimit' => [ + 'description' => 'The maximum number of routes.'."\n", + 'type' => 'string', + 'example' => '110', + ], + 'IsFake' => [ + 'description' => 'Indicates whether a fake autonomous system number (ASN) is used. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'AuthKey' => [ + 'description' => 'The authentication key of the BGP group.'."\n", + 'type' => 'string', + 'example' => '!PWZ****', + ], + 'Name' => [ + 'description' => 'The name of the BGP peer.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'AdvertisedRouteCount' => [ + 'description' => 'The number of advertised routes.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'ReceivedRouteCount' => [ + 'description' => 'The number of received routes.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'GmtModified' => [ + 'description' => 'The time when the BGP peer is modified.'."\n", + 'type' => 'string', + 'format' => 'iso8601', + 'example' => '2022-05-20T07:29:08Z', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The request has failed due to a temporary failure of the server.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 10,\\n \\"BgpPeers\\": {\\n \\"BgpPeer\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"PeerIpAddress\\": \\"116.62.XX.XX\\",\\n \\"RouterId\\": \\"vbr-2zecmmvg5gvu8i4te****\\",\\n \\"BgpGroupId\\": \\"bgpg-2zev8h2wo414sfh****\\",\\n \\"BgpStatus\\": \\"Connect\\",\\n \\"BfdMultiHop\\": 3,\\n \\"PeerAsn\\": \\"65515\\",\\n \\"LocalAsn\\": \\"45104\\",\\n \\"RegionId\\": \\"cn-shanghai\\",\\n \\"BgpPeerId\\": \\"bgp-2ze3un0ft1jd1xd****\\",\\n \\"EnableBfd\\": true,\\n \\"Hold\\": \\"30\\",\\n \\"IpVersion\\": \\"ipv4\\",\\n \\"Keepalive\\": \\"10\\",\\n \\"Description\\": \\"test\\",\\n \\"RouteLimit\\": \\"110\\",\\n \\"IsFake\\": true,\\n \\"AuthKey\\": \\"!PWZ****\\",\\n \\"Name\\": \\"test\\",\\n \\"AdvertisedRouteCount\\": 0,\\n \\"ReceivedRouteCount\\": 0,\\n \\"GmtModified\\": \\"2022-05-20T07:29:08Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6\\n 1\\n 10\\n \\n Available\\n 116.62.XX.XX\\n vbr-2zecmmvg5gvu8i4te****\\n bgpg-2zev8h2wo414sfh****\\n Connect\\n 3\\n 65515\\n 45104\\n cn-shanghai\\n bgp-2ze3un0ft1jd1xd****\\n true\\n 30\\n ipv4\\n 10\\n test\\n 110\\n true\\n !PWZ****\\n test\\n 0\\n 0\\n 2022-05-20T07:29:08Z\\n \\n","errorExample":""}]', + 'title' => 'DescribeBgpPeers', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateNatGateway' => [ + 'summary' => 'Creates an enhanced Internet NAT gateway or a Virtual Private Cloud (VPC) NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC where you want to create the NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp1di7uewzmtvfuq8****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the NAT gateway.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n" + ."\n" + .'If this parameter is not set, the system assigns a default name to the NAT gateway.', + 'type' => 'string', + 'required' => false, + 'example' => 'fortest', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the NAT gateway.'."\n" + ."\n" + .'You can leave this parameter empty or enter a description. If you enter a description, the description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testnat', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.', + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Invalid parameter.', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the NAT gateway.'."\n" + ."\n" + .'Set the value to **PostPaid** (pay-as-you-go), which is the default value.'."\n" + ."\n" + .'For more information, see [Internet NAT gateway billing](~~48126~~) and [VPC NAT gateway billing](~~270913~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'PricingCycle', + 'in' => 'query', + 'schema' => [ + 'description' => 'Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Invalid parameter.', + ], + ], + [ + 'name' => 'Duration', + 'in' => 'query', + 'schema' => [ + 'description' => 'Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Invalid parameter.', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'Invalid parameter.', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which the NAT gateway is attached.'."\n" + ."\n" + .'When you create a NAT gateway, you must specify a vSwitch for the NAT gateway. Then, the system assigns an idle private IP address from the vSwitch to the NAT gateway.'."\n" + ."\n" + .'* To attach the NAT gateway to an existing vSwitch, make sure that the zone to which the vSwitch belongs supports NAT gateways. In addition, the vSwitch must have idle IP addresses.'."\n" + .'* If no vSwitch exists in the VPC, create a vSwitch in a zone that supports NAT gateways. Then, specify the vSwitch for the NAT gateway.'."\n" + ."\n" + .'> You can call the [ListEnhanhcedNatGatewayAvailableZones](~~182292~~) operation to query zones that support NAT gateways. You can call the [DescribeVSwitches](~~35748~~) operation to query idle IP addresses in a vSwitch.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'vsw-bp1e3se98n9fq8hle****', + ], + ], + [ + 'name' => 'NatType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of NAT gateway. Set the value to **Enhanced**, which specifies enhanced NAT gateway.', + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'Enhanced', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The metering method of the NAT gateway. Set the value to **PayByLcu**, which specifies the pay-by-CU metering method.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByLcu', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **internet**: Internet'."\n" + .'* **intranet**: VPC'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'internet', + ], + ], + [ + 'name' => 'SecurityProtectionEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the firewall feature. Valid values:'."\n" + ."\n" + .'* **false** (default)>This parameter is deprecated.>', + 'type' => 'boolean', + 'deprecated' => true, + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IcmpReplyEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable ICMP retrieval. Valid values:'."\n" + ."\n" + .'* **true** (default)'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'PrivateLinkEnabled', + 'in' => 'query', + 'schema' => [ + 'title' => '默认不支持私网链接。设置为true则意味着支持私网链接', + 'description' => 'PrivateLink is not supported by default. If you set the value to true, PrivateLink is supported.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'EipBindMode', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => 'NAT:NAT模式,支持SNAT/访问DANT,最多支持绑定50个EIP,支持ingress routing;'."\n" + .'MULTI_BINDED:多EIP网卡可见模式。', + 'description' => 'The mode in which the EIP is associated with the NAT gateway. Valid values:'."\n" + ."\n" + .'- **MULTI_BINDED**(default): the multi-EIP-to-ENI mode.'."\n" + ."\n" + .'- **NAT**: NAT mode, which is compatible with IPv4 addresses.'."\n" + ."\n" + .'> If an EIP is associated with a NAT gateway in NAT mode, the EIP occupies a private IP address of the vSwitch where the NAT gateway is deployed. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, EIPs cannot be associated with the NAT gateway. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.', + 'type' => 'string', + 'required' => false, + 'example' => 'MULTI_BINDED', + 'default' => 'MULTI_BINDED', + 'enum' => [], + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.', + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.', + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'example' => 'MULTI_BINDED', + 'maxItems' => 21, + ], + ], + [ + 'name' => 'AccessMode', + 'in' => 'query', + 'style' => 'json', + 'schema' => [ + 'description' => 'The access mode for reverse access to the VPC NAT gateway.', + 'type' => 'object', + 'properties' => [ + 'ModeValue' => [ + 'description' => 'Access mode. Valid values:'."\n" + ."\n" + .'- **route**: route mode'."\n" + ."\n" + .'- **tunnel**: tunnel mode'."\n" + ."\n" + .'> If this parameter is specified, you must set **PrivateLinkEnabled** to **true**.', + 'type' => 'string', + 'required' => false, + 'example' => 'route', + ], + 'TunnelType' => [ + 'description' => 'Tunnel mode type:'."\n" + ."\n" + .'- **geneve**: Geneve type'."\n" + ."\n" + .'> This value takes effect if the access mode is the tunnel mode.', + 'type' => 'string', + 'required' => false, + 'example' => 'geneve', + ], + ], + 'required' => false, + 'example' => 'MULTI_BINDED', + ], + ], + [ + 'name' => 'NatIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP address occupied by the NAT gateway. Please use an unassigned IP from the subnet where the NAT is located. If left empty, an IP address will be randomly assigned.', + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.x', + ], + ], + [ + 'name' => 'Ipv4Prefix', + 'in' => 'query', + 'schema' => [ + 'description' => 'Create an IP prefix address segment for batch creation of NAT IPs. Please use the reserved and unallocated network segments in the VSwitch where the NAT is located.', + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/28', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.', + 'type' => 'object', + 'properties' => [ + 'NatGatewayId' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'ngw-112za33e4****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD97C3', + ], + 'ForwardTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ForwardTableId' => [ + 'description' => 'A list of DNAT entries.', + 'type' => 'array', + 'items' => [ + 'description' => 'A list of DNAT entries.', + 'type' => 'string', + 'example' => 'ftb-11tc6xgmv****', + ], + ], + ], + ], + 'SnatTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnatTableId' => [ + 'description' => 'A list of SNAT entries.', + 'type' => 'array', + 'items' => [ + 'description' => 'A list of SNAT entries.', + 'type' => 'string', + 'example' => 'stb-SnatTableIds****', + ], + ], + ], + ], + 'FullNatTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'FullNatTableId' => [ + 'description' => 'A list of FULLNAT entries.', + 'type' => 'array', + 'items' => [ + 'description' => 'A list of FULLNAT entries.', + 'type' => 'string', + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.NatPayBySpec', + 'errorMessage' => 'Pay-by-specification NAT is no longer supported. Newly purchased pay-as-you-go NAT gateways only support the pay-by-CU metering method.', + ], + [ + 'errorCode' => 'DependencyViolation.FullNatEntry', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'UnsupportedFeature.InternetChargeType', + 'errorMessage' => 'The feature of InternetChargeType is not supported.', + ], + [ + 'errorCode' => 'InvalidVPCStatus', + 'errorMessage' => 'vpc incorrect status.', + ], + [ + 'errorCode' => 'InvalidNatGatewayName.MalFormed', + 'errorMessage' => 'NatGateway name is not valid.', + ], + [ + 'errorCode' => 'InvalidNatGatewayDescription.MalFormed', + 'errorMessage' => 'NatGateway description is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.BandwidthPackage', + 'errorMessage' => 'only support one BandwidthPackage be created with NatGateway.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The user cannot allow to create natgw, please call PD to authorize', + ], + [ + 'errorCode' => 'RouterEntryConflict.Duplicated', + 'errorMessage' => 'A route entry already exists, which CIDR is \'0.0.0.0/0\'', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'QuotaExceeded.BandwidthPackageIps', + 'errorMessage' => 'The specified ipCount exceeded quota.', + ], + [ + 'errorCode' => 'AllocateIpFailed', + 'errorMessage' => 'Alloc bandwidthPackage ips failed, maybe no available ip.', + ], + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'ZONE_NO_AVAILABLE_IP', + 'errorMessage' => 'The Zone have no available ip.', + ], + [ + 'errorCode' => 'ParameterIllegal', + 'errorMessage' => 'ipCount,bandwidth parameter invalid', + ], + [ + 'errorCode' => 'InvalidParameter.BandwidthPackage.n.ISP.ValueNotSupport', + 'errorMessage' => 'The specified ISP of BandwidthPackage is not valid.', + ], + [ + 'errorCode' => 'InvalidNatGatewayId.NotFound', + 'errorMessage' => 'The NatGatewayId not exist.', + ], + [ + 'errorCode' => 'VpcStatusError', + 'errorMessage' => 'The Vpc is creating .', + ], + [ + 'errorCode' => 'InvalidParameter.Spec.ValueNotSupported', + 'errorMessage' => 'The specified Spec is not valid.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'COMMODITY.INVALID_COMPONENT', + 'errorMessage' => 'The instance component is invalid.', + ], + [ + 'errorCode' => 'CreateNatGateway.RouteConflict.DynamicRoute', + 'errorMessage' => 'Route conflict exists in routing table.', + ], + [ + 'errorCode' => 'OperationUnsupported.MultiNatGateway', + 'errorMessage' => 'More than one natGateway per vpc is unsupported.', + ], + [ + 'errorCode' => 'Forbidden.CheckEntryRuleQuota', + 'errorMessage' => 'Route entry quota rule check error.', + ], + [ + 'errorCode' => 'OperationFailed.UnpaidBillsExist', + 'errorMessage' => 'The account has unpaid bills. Please pay your overdue bill first.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntry', + 'errorMessage' => 'Specified routeEntry status error.', + ], + [ + 'errorCode' => 'OperationFailed.RiskControl', + 'errorMessage' => 'Risk control check failed.', + ], + [ + 'errorCode' => 'OperationFailed.TokenVerfiy', + 'errorMessage' => 'Token verify failed.', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'The specified Name is invalid, shorter than 2 characters.', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedQuotaExceed', + 'errorMessage' => 'Enhanced nat gateway per vpc quota is exceeded', + ], + [ + 'errorCode' => 'NoPermission.CreateServiceLinkedRole', + 'errorMessage' => 'You are not authorized to create service linked role', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedInventoryNotEnough', + 'errorMessage' => 'Operation failed because inventory is not enough.', + ], + [ + 'errorCode' => 'OperationFailed.VswNotBelongToVpc', + 'errorMessage' => 'Operation failed because the specified VSwitch is not bound to the same VPC with NAT gateway.', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedUserIsUnAuthorized', + 'errorMessage' => 'Operation failed because the user is not authorized to create an enhanced NAT gateway.', + ], + [ + 'errorCode' => 'OperationUnsupported.PrePaidPyByLcu', + 'errorMessage' => 'The operation failed because the subscription NAT gateway does not support the pay-by-LCU billing method.', + ], + [ + 'errorCode' => 'OperationFailed.NormalInventoryNotEnough', + 'errorMessage' => 'Standard NAT gateways are no longer offered. You can create enhanced NAT gateways and set the correct natType.', + ], + [ + 'errorCode' => 'OperationFailed.VSwitchNoAvailableIp', + 'errorMessage' => 'Operation failed because the specified vswitch does not have availabe ip.', + ], + [ + 'errorCode' => 'UnsupportedFeature.IcmpReplyEnabled', + 'errorMessage' => 'The feature of IcmpReplyEnabled is not supported.', + ], + [ + 'errorCode' => 'UnsupportedFeature.SecurityProtectionEnabled', + 'errorMessage' => 'The feature of SecurityProtectionEnabled is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.RegionConvert', + 'errorMessage' => 'Operation failed because do not find region info.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcNat', + 'errorMessage' => 'The feature of VpcNat is not supported.', + ], + [ + 'errorCode' => 'InvalidVSWITCHID.NotFound', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'Operate share resource is forbidden.', + ], + [ + 'errorCode' => 'IncorrectStatus.VSWITCH', + 'errorMessage' => 'The status of VSWITCH is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.VpcNatGatewayInventoryNotEnough', + 'errorMessage' => 'The operation is failed because of inventory is not enough.', + ], + [ + 'errorCode' => 'OperationFailed.VpcNatGatewayCheckInventory', + 'errorMessage' => 'The operation is failed because of check inventory result is unexpected', + ], + [ + 'errorCode' => 'ExclusiveParam.%sAnd%s', + 'errorMessage' => 'The param of %s and %s are mutually exclusive.', + ], + [ + 'errorCode' => 'SecurityGroupType.NotSupported', + 'errorMessage' => 'The specified security group type is not supported.', + ], + [ + 'errorCode' => 'SecurityGroup.NotExist', + 'errorMessage' => 'The specified security group is not exist.', + ], + [ + 'errorCode' => 'OperationFailed.ContainForbiddenLabel', + 'errorMessage' => 'There is a label that prohibits ordering, please contact your distributor for processing.', + ], + [ + 'errorCode' => 'OperationDenied.PrePaidInstance', + 'errorMessage' => 'The operation is not allowed because prepaid instance is no longer supported.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Geneve', + 'errorMessage' => 'The feature of Geneve is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.NoAvailableResource', + 'errorMessage' => 'The Zone have no available resource.', + ], + [ + 'errorCode' => 'ExclusiveParam.AccessModeValueAndAccessTunnelType', + 'errorMessage' => 'The specified param AccessModeValue and AccessTunnelType are mutually exclusive.', + ], + [ + 'errorCode' => 'ExclusiveParam.PrivateLinkModeAndAccessMode', + 'errorMessage' => 'The specified param PrivateLinkMode and AccessMode are mutually exclusive.', + ], + [ + 'errorCode' => 'ExclusiveParam.PrivateLinkEnabledAndAccessMode', + 'errorMessage' => 'The specified paramPrivateLinkEnabled and AccessMode are mutually exclusive.', + ], + [ + 'errorCode' => 'UnsupportedFeature.AccessModeValue', + 'errorMessage' => 'The feature of AccessMode.ModeValue(%s) is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.AccessTunnelType', + 'errorMessage' => 'The request parameter AccessMode.TunnelType is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.AccessModeValue', + 'errorMessage' => 'The request parameter AccessMode.ModeValue is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.VSwitchStatusError', + 'errorMessage' => 'The vSwitch is creating .', + ], + [ + 'errorCode' => 'UnsupportedFeature.PrivateLinkMode', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.EcsNetworkInterfaceQuotaNotSatisfy', + 'errorMessage' => 'ECS network interface quota is not satisfy.', + ], + [ + 'errorCode' => 'OperationFailed.NoNameAuthentication', + 'errorMessage' => 'You have not passed the real name authentication and do not meet the purchase conditions. Please log in to the user center for real-name authentication.', + ], + [ + 'errorCode' => 'Mismatch.NatIpAndNatIpCidr', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'Mismatch.Ipv4PrefixAndNatIpCidr', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.NatIp', + 'errorMessage' => 'The specified resource of NatIp has already exist.', + ], + [ + 'errorCode' => 'Mismatch.Ipv4PrefixAndCidrReservations', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.Ipv4Prefix', + 'errorMessage' => '%s is already associated.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Ipv4Prefix', + 'errorMessage' => 'The resource of %s is not enough.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ipv4Prefix', + 'errorMessage' => 'The resource of s% is not found.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.NatIp', + 'errorMessage' => 'The resource of %s was already associated.', + ], + [ + 'errorCode' => 'ResourceNotEnough.NatIp', + 'errorMessage' => 'The specified resource of NatIp is not enough.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv4Prefix', + 'errorMessage' => 'The param of %s is illegal, must be /28 network segment.', + ], + [ + 'errorCode' => 'IllegalParam.NatIp', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'OperationUnsupported.EnhancedRegion', + 'errorMessage' => 'Region not support.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTableStatus', + 'errorMessage' => 'The route table status is invaild. Please try again later.', + ], + [ + 'errorCode' => 'OperationUnsupported.User', + 'errorMessage' => 'The current user does not support this operation.', + ], + [ + 'errorCode' => 'OperationUnsupported.EnhancedCURegion', + 'errorMessage' => 'Operation failed because of this region not unsupported.', + ], + [ + 'errorCode' => 'OrderError.NoAvailablePaymentMethod', + 'errorMessage' => 'Order payment parameter is not available.', + ], + [ + 'errorCode' => 'OrderError.BasicInfoUncompleted', + 'errorMessage' => 'Order basic parameter is not completed.', + ], + [ + 'errorCode' => 'OperationUnsupported.Region', + 'errorMessage' => 'Operation unsupport this region parameter.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'Specified value of ZoneId is not exists.', + ], + [ + 'errorCode' => 'VPC_ONLY_CAN_CREATE_ONE_NAT_GATEWAY', + 'errorMessage' => 'NatGateway in one vpc support only one.', + ], + [ + 'errorCode' => 'OperationFailed.CrateEntryTimeOut', + 'errorMessage' => 'Operation failed because create custom routeEntry timeout.', + ], + [ + 'errorCode' => 'Forbidden.CreateSpecialSpecNatGateway', + 'errorMessage' => 'You are not authorized to create special spec nat gateway.', + ], + [ + 'errorCode' => 'UnsupportedZoneForFwNat', + 'errorMessage' => 'The zone is unsupported for FW NAT.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OrderError.NatGateway', + 'errorMessage' => 'The Account failed to create order.', + ], + [ + 'errorCode' => 'OperationFailed.AccessTunnelId', + 'errorMessage' => 'AccessTunnelId param do operation failed.', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedCheckInventory', + 'errorMessage' => 'The NAT gateway in the current zone is not in service, or the resource inventory is insufficient.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NatGatewayId\\": \\"ngw-112za33e4****\\",\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\",\\n \\"ForwardTableIds\\": {\\n \\"ForwardTableId\\": [\\n \\"ftb-11tc6xgmv****\\"\\n ]\\n },\\n \\"SnatTableIds\\": {\\n \\"SnatTableId\\": [\\n \\"stb-SnatTableIds****\\"\\n ]\\n },\\n \\"FullNatTableIds\\": {\\n \\"FullNatTableId\\": [\\n \\"fulltb-gw88z7hhlv43rmb26****\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n ngw-112za33e4****\\n 2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\n ftb-11tc6xgmv****\\n stb-SnatTableIds****\\n fulltb-gw88z7hhlv43rmb26****\\n","errorExample":""}]', + 'title' => 'CreateNatGateway', + 'description' => '## Usage notes'."\n" + ."\n" + .'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* When you create an enhanced NAT gateway for the first time, the system automatically creates the service-linked role AliyunServiceRoleForNatgw. Then, the system attaches the permission policy AliyunServiceRolePolicyForNatgw to the role. This allows the NAT gateway to access other resources on Alibaba Cloud. For more information, see [Service-linked roles](~~174251~~).'."\n" + ."\n" + .'* After you create an enhanced Internet NAT gateway, a route entry is automatically added to the route table of the VPC. The destination CIDR block of the route entry is 0.0.0.0/0 and the next hop is the NAT gateway. This ensures that traffic is routed to the NAT gateway.'."\n" + ."\n" + .'* **CreateNatGateway** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeNatGateways](~~36054~~) operation to query the status of the task.'."\n" + ."\n" + .' * If a NAT gateway is in the **Creating** state, the NAT gateway is being created. In this case, you can query the NAT gateway but cannot perform other operations.'."\n" + ."\n" + .' * If a NAT gateway is in the **Available** state, the NAT gateway is created.'."\n" + ."\n" + .'It takes 1 to 3 minutes to create a NAT gateway.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'DeleteNatGateway' => [ + 'summary' => 'Deletes a specified Internet NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully delete the NAT gateway. Valid values:'."\n" + ."\n" + .'* **true** If you set the value to **true**:'."\n" + ."\n" + .' * If the NAT gateway has SNAT entries, the system automatically deletes them.'."\n" + .' * If the NAT gateway has DNAT entries, the system automatically deletes them.'."\n" + .' * If the NAT gateway is associated with an elastic IP address (EIP), the system automatically disassociates the EIP from the NAT gateway.'."\n" + .' * If the NAT gateway is associated with a NAT bandwidth plan, the system automatically disassociates the NAT bandwidth plan.'."\n" + ."\n" + .'* **false**(default): no If you set the value to **false**:'."\n" + ."\n" + .' * If the NAT gateway is associated with a NAT bandwidth plan, disassociate the NAT bandwidth plan first.'."\n" + .' * If the NAT gateway has SNAT entries, delete them first.'."\n" + .' * If the NAT gateway has DNAT entries, delete them first.'."\n" + .' * If the NAT gateway is associated with an EIP, disassociate the EIP from the NAT gateway first.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DependencyViolation.VpcEndpointService', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.FullNatEntry', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.RouterEntry', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.BandwidthPackages', + 'errorMessage' => 'There are BandwidthPackages on specified NatGateway not deleted.', + ], + [ + 'errorCode' => 'DependencyViolation.EIPS', + 'errorMessage' => 'There are Eips on specified NatGateway, please unbind it first.', + ], + [ + 'errorCode' => 'Forbidden.PrePaidNatGateway', + 'errorMessage' => 'The specified NatGateway is PrePaid.', + ], + [ + 'errorCode' => 'InvalidOperation.DeletionProtection', + 'errorMessage' => 'The instance cannnot delete because of deletion protecion.', + ], + [ + 'errorCode' => 'DependencyViolation.SnatEntry', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IncorrectStatus.SnatEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.ForwardEntry', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IncorrectStatus.ForwardEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.NatIp', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.NatIpCidr', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => 'The NatGateway instance is being deleted and needs to wait until the process is complete.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouterEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.VSwitch', + 'errorMessage' => 'The specified vSwitch status is invalid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'INSTANCE_NOT_EXISTS', + 'errorMessage' => 'Instance not exists.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidNatGatewayId.NotFound', + 'errorMessage' => 'The specified NatGatewayId does not exist in our records.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DeleteNatGateway', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **DeleteNatGateway** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeNatGateways](~~36054~~) to query the status of the task.'."\n" + ."\n" + .' * If a NAT gateway is in the **Deleting** state, the NAT gateway is being deleted. In this case, you can query the NAT gateway but you cannot perform other operations.'."\n" + ."\n" + .' * If the NAT gateway cannot be found, the NAT gateway is deleted.'."\n" + ."\n" + .' After you delete a NAT gateway, you cannot restore the NAT gateway. Proceed with caution.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteNatGateway** operation to delete a NAT gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyNatGatewayAttribute' => [ + 'summary' => 'Modifies the name and description of a NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ngw-2ze0dcn4mq31qx2jc****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the NAT gateway.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nat123', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the NAT gateway.'."\n" + ."\n" + .'The description must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Description', + ], + ], + [ + 'name' => 'IcmpReplyEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the Internet Control Message Protocol (ICMP) non-retrieval feature. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'EipBindMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'Modifies the mode in which the EIP is associated with the NAT gateway. The value can be empty or **NAT**, which specifies the NAT mode.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* You can only change **MULTI_BINDED** to **NAT**. You cannot change **NAT** to **MULTI_BINDED**. For more information about the **MULTI_BINDED** mode, see [CreateNatGateway](~~120219~~).'."\n" + ."\n" + .'* When you change the association mode, your network may be interrupted for seconds. The duration increases with the number of EIPs. You can change the association mode for at most 5 EIPs at the same time. We recommend changing the association mode during off-peak hours.'."\n" + .'* After the association mode is changed to **NAT**, the Internet NAT gateway is compatible with an IPv4 gateway. If an EIP is associated with a NAT gateway in NAT mode, the EIP occupies a private IP address of the vSwitch to which the NAT gateway belongs. Ensure the vSwitch has sufficient private IP addresses for EIPs to be associated with the NAT gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'NAT', + 'enum' => [ + 'NAT', + ], + ], + ], + [ + 'name' => 'EnableSessionLog', + 'in' => 'query', + 'schema' => [ + 'description' => 'Whether to enable session logging, with values:'."\n" + .'- **true**: Session logging is enabled. '."\n" + .'- **false**: Session logging is disabled.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'LogDelivery', + 'in' => 'query', + 'style' => 'json', + 'schema' => [ + 'description' => 'Session log configuration information.', + 'type' => 'object', + 'properties' => [ + 'LogDeliveryType' => [ + 'description' => 'Session log write type. Value: **sls**, Alibaba Cloud Log Service SLS.', + 'type' => 'string', + 'required' => false, + 'example' => 'sls', + ], + 'LogDestination' => [ + 'description' => 'Session log write address. Value: acs:log:${regionName}:${projectOwnerAliUid}:project/${projectName}/logstore/${logstoreName}', + 'type' => 'string', + 'required' => false, + 'example' => 'acs:log:cn-hangzhou:0000:project/nat_session_log_project/logstore/session_log_test', + ], + ], + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'AB5F62CF-2B60-4458-A756-42C9DFE108D1', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedFeature.PrivateLinkMode', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'IncorrectStatus.NATGW', + 'errorMessage' => 'NATGW status is invalid.', + ], + [ + 'errorCode' => 'ExclusiveParam.%sAnd%s', + 'errorMessage' => 'The param of %s and %s are mutually exclusive.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => 'The status of natgateway is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.PrivateLinkMode', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'UnsupportedFeature.IcmpReplyEnabled', + 'errorMessage' => 'The feature of IcmpReplyEnabled is not supported.', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'The parameter must not be null, name or description or icmpReplyEnabled', + ], + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'UnsupportedFeature.IndirectConvertForVpcNat', + 'errorMessage' => 'The VPC NAT gateway is not support to change EIP bond type.', + ], + [ + 'errorCode' => 'UnsupportedFeature.NormalNatModifyEipBindMode', + 'errorMessage' => 'The normal NAT gateway is not support to change EIP bond type.', + ], + [ + 'errorCode' => 'OperationDenied.EipBondTypeIsAlreadyNAT', + 'errorMessage' => 'The EIP bond type is already NAT type.', + ], + [ + 'errorCode' => 'UnsupportedFeature.IndirectConvertForFwNat', + 'errorMessage' => 'The security protection enabled NAT gateway is not support change EIP bond type.', + ], + [ + 'errorCode' => 'QuotaExceeded.EipNumForModifyEipBondType', + 'errorMessage' => 'The quota of %s is exceeded, binded: %s, quota: %s.', + ], + [ + 'errorCode' => 'ResourceNotEnough.SwitchAvailableIps', + 'errorMessage' => 'The available private Ip number is not enough in your subnet.', + ], + [ + 'errorCode' => 'UnsupportedFeature.VpcNatSecurityProtectionEnabled', + 'errorMessage' => 'The VPC NAT gateway is not supported to enable security protection.', + ], + [ + 'errorCode' => 'OperationDenied.NatGatewayStatusInvalid', + 'errorMessage' => 'The NAT gateway status is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.EipStatusInvalid', + 'errorMessage' => 'The NAT gateway has EIP in invalid status.', + ], + [ + 'errorCode' => 'OperationDenied.SnatEntryStatusInvalid', + 'errorMessage' => 'The NAT gateway has SNAT entry in invalid status.', + ], + [ + 'errorCode' => 'OperationDenied.DnatEntryStatusInvalid', + 'errorMessage' => 'The NAT gateway has DNAT entry in invalid status.', + ], + [ + 'errorCode' => 'UnsupportedFeature.MutilBindedTypeNatEnableFw', + 'errorMessage' => 'The NAT with Mutil-Binded Eip bind type is not support enable firewall.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The instance is locked due to outstanding payments.', + ], + [ + 'errorCode' => 'OperationFailed.PrivateLinkMode', + 'errorMessage' => 'The NAT gateway is not support to change PrivateLinkMode.', + ], + [ + 'errorCode' => 'IllegalParam.SessionLogDeliveryDestination', + 'errorMessage' => 'The specified Delivery Destination is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.LogDeliveryIsUnAuthorized', + 'errorMessage' => 'Operation failed because the user is not authorized to deliver NAT session log.', + ], + [ + 'errorCode' => 'IllegalParam.SessionLogDeliveryType', + 'errorMessage' => 'The specified Delivery Type is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.EnableSessionLog', + 'errorMessage' => 'The feature of EnableSessionLog is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.ModifyEipBondType', + 'errorMessage' => 'Authentication is failed for modify EIP bond type.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidNatGatewayId.NotFound', + 'errorMessage' => 'The specified NatGatewayId does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationFailed.ConfigSessionLog', + 'errorMessage' => 'Failed to configure session log due to a temporary failure of the server.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AB5F62CF-2B60-4458-A756-42C9DFE108D1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n AB5F62CF-2B60-4458-A756-42C9DFE108D1\\n","errorExample":""}]', + 'title' => 'ModifyNatGatewayAttribute', + 'description' => '## [](#)Description'."\n" + ."\n" + .'You can call this operation to query an Internet NAT gateway or a virtual private cloud (VPC) NAT gateway. The term NAT gateway in this topic refers to both NAT gateway types.'."\n", + 'translator' => 'machine', + ], + 'ModifyNatGatewaySpec' => [ + 'summary' => 'Upgrades a subscription Internet NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the Internet NAT gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet NAT gateway that you want to upgrade.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the Internet NAT gateway. Valid values:'."\n" + ."\n" + .'* **Small**: small'."\n" + .'* **Middle**: medium'."\n" + .'* **Large**: large'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'Middle', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically complete the payment.'."\n" + ."\n" + .'* **true**: enables automatic payment. Payments are automatically completed.'."\n" + .'* **false** (default): disables automatic payment. If you select this option, you must go to the Order Center to complete the payment after an order is generated.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'DBD4E4A2-786E-4BD2-8EB6-107FFC2B5B7D', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'NATGW_MODIFY_SPEC_SAME', + 'errorMessage' => 'The specified Spec is same with now.', + ], + [ + 'errorCode' => 'InvalidParameter.Spec.ValueNotSupported', + 'errorMessage' => 'The specified Spec is not valid.', + ], + [ + 'errorCode' => 'OperationFailed.SyncOrderToSub', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'OperationFailed.QueryPrice', + 'errorMessage' => 'Query price failed when create order.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => 'The status of NAT gateway is incorrect.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidNatGatewayId.NotFound', + 'errorMessage' => 'The specified NatGatewayId does not exist in our records.', + ], + [ + 'errorCode' => 'OperationUnsupported.PayByLcuNatModifySpec', + 'errorMessage' => 'The spec of payByLcu nat is unsupported to modify.', + ], + [ + 'errorCode' => 'Forbidden.ModifySpecToSpecialSpec', + 'errorMessage' => 'You are not authorized to modify nat spec to special spec.', + ], + [ + 'errorCode' => 'Forbidden.ModifySpecToSpecialSpecForNormalNat', + 'errorMessage' => 'Normal NAT is not allowed to change to special spec, only enhanced nat allowed.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationFailed.NoAvailableResource', + 'errorMessage' => 'The Zone have no available resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DBD4E4A2-786E-4BD2-8EB6-107FFC2B5B7D\\"\\n}","errorExample":""},{"type":"xml","example":"\\n DBD4E4A2-786E-4BD2-8EB6-107FFC2B5B7D\\n","errorExample":""}]', + 'title' => 'ModifyNatGatewaySpec', + 'description' => '- You cannot call this operation to downgrade a subscription Internet NAT gateway. You can downgrade a subscription Internet NAT gateway only in the console.'."\n" + .'- When you call this operation to upgrade a subscription Internet NAT gateway, an order is generated. After you complete the payment in the order center, the Internet NAT gateway is upgraded.'."\n" + ."\n" + .'- **ModifyNatGatewaySpec** is an asynchronous operation. After you make a request, the ID of the request is returned but the Internet NAT gateway is not upgraded. The system upgrades the NAT gateway in the background. You can call the [DescribeNatGateways](/help/en/virtual-private-cloud/latest/describenatgateways) operation to query the status of an Internet NAT gateway. - If an Internet NAT gateway is in the **Modifying** state, the NAT gateway is being upgraded. In this case, you can only query the NAT gateway but cannot perform other operations.'."\n" + .' - If an Internet NAT gateway is in the **Available** state, the Internet NAT gateway is upgraded.'."\n" + .'- You cannot repeatedly call the **ModifyNatGatewaySpec** operation to resize a pay-by-specification NAT gateway.'."\n" + ."\n" + .'Internet NAT gateways are available in different sizes. The size of an Internet NAT gateway determines the SNAT performance, which includes the maximum number of connections and the number of new connections per second. However, the size of a NAT gateway does not affect the data throughput. The following table describes the correlations between different sizes of Internet NAT gateways and SNAT performance metrics. '."\n" + ."\n" + .'| Size | Maximum number of connections | Number of new connections per second |'."\n" + .'| ---- | ----------------------------- | ------------------------------------ |'."\n" + .'| Small | 10,000 | 1,000 |'."\n" + .'| Medium | 50,000 | 5,000 |'."\n" + .'| Large | 200,000 | 10,000 |', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeNatGateways' => [ + 'summary' => 'Queries NAT gateways that meet specific conditions in a specified region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateways that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which the NAT gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp15zckdt37pq72z****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the NAT gateway. '."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`. '."\n" + ."\n" + .'If this parameter is not set, the system automatically assigns a name to the NAT gateway.', + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the NAT gateway. Set the value to **PostPaid**, which specifies the pay-as-you-go billing method.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the NAT gateway. Ignore this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Invalid parameter.', + ], + ], + [ + 'name' => 'NatType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of NAT gateway. Set the value to **Enhanced** (enhanced NAT gateway).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Enhanced', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the NAT gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '10', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '1', + 'default' => '10', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'- **true**: performs a dry run. The system prechecks whether your AccessKey pair is valid, whether the RAM user is authorized, and whether the required parameters are specified. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'- **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **Creating**: After you send a request to create a NAT gateway, the system creates the NAT gateway in the background. The NAT gateway remains in the **Creating** state until the operation is completed.'."\n" + .'* **Available**: The NAT gateway remains in a stable state after the NAT gateway is created.'."\n" + .'* **Modifying**: After you send a request to modify a NAT gateway, the system modifies the NAT gateway in the background. The NAT gateway remains in the **Modifying** state until the operation is completed.'."\n" + .'* **Deleting**: After you send a request to delete a NAT gateway, the system deletes the NAT gateway in the background. The NAT gateway remains in the **Deleting** state until the operation is completed.'."\n" + .'* **Converting**: After you send a request to upgrade a standard NAT gateway to an enhanced NAT gateway, the system upgrades the NAT gateway in the background. The NAT gateway remains in the **Converting** state until the operation is completed.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Available', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **internet**: an Internet NAT gateway'."\n" + .'* **intranet**: a VPC NAT gateway'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'internet', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag keys of the NAT gateway. You can specify up to 20 tag keys.'."\n" + ."\n" + .'Each tag key cannot exceed 64 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyTest', + ], + 'Value' => [ + 'description' => 'The tag values of the NAT gateway. You can specify up to 20 tag values.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length, and cannot start with `aliyun` or `acs:`. The value cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'valueTest', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'title' => '可用区', + 'description' => 'The ID of the zone to which the NAT gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The number of NAT gateway entries that are returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'NatGateways' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NatGateway' => [ + 'description' => 'The details about the NAT gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **Creating**: After you send a request to create a NAT gateway, the system creates the NAT gateway in the background. The NAT gateway remains in the Creating state until the operation is completed.'."\n" + .'* **Available**: The NAT gateway remains in a stable state after the NAT gateway is created.'."\n" + .'* **Modifying**: After you send a request to modify a NAT gateway, the system modifies the NAT gateway in the background. The NAT gateway remains in the Modifying state until the operation is completed.'."\n" + .'* **Deleting**: After you send a request to delete a NAT gateway, the system deletes the NAT gateway in the background. The NAT gateway remains in the Deleting state until the operation is completed.'."\n" + .'* **Converting**: After you send a request to upgrade a standard NAT gateway to an enhanced NAT gateway, the system upgrades the NAT gateway in the background. The NAT gateway remains in the Converting state until the operation is completed.'."\n", + 'type' => 'string', + 'example' => 'Creating', + ], + 'CreationTime' => [ + 'description' => 'The time when the NAT gateway was created.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:20Z', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC where the NAT gateway is deployed.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp15zckdt37pq72z****', + ], + 'NatType' => [ + 'description' => 'The type of the NAT gateway. The value is set to **Enhanced** (enhanced NAT gateway).'."\n", + 'type' => 'string', + 'example' => 'Enhanced', + ], + 'AutoPay' => [ + 'description' => 'Indicates whether automatic payment is enabled. Valid values:'."\n" + ."\n" + .'* **false**: no'."\n" + .'* **true**: yes'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Spec' => [ + 'description' => 'The size of the NAT gateway. An empty value is returned for the parameter.'."\n" + ."\n" + .'If **InternetChargeType** is set to **PayByLcu**, an empty value is returned.'."\n", + 'type' => 'string', + 'example' => 'Small', + ], + 'DeletionProtection' => [ + 'description' => 'Indicates whether the deletion protection feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'NetworkType' => [ + 'description' => 'The type of NAT gateway. Valid values:'."\n" + ."\n" + .'* **internet**: an Internet NAT gateway'."\n" + .'* **intranet**: a VPC NAT gateway'."\n", + 'type' => 'string', + 'example' => 'internet', + ], + 'SecurityProtectionEnabled' => [ + 'description' => 'Indicates whether the firewall feature is enabled. Valid values:'."\n" + ."\n" + .'* **false**: no'."\n" + .'* **true**: yes'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the NAT gateway. The value is set to **PostPaid**, which indicates the pay-as-you-go billing method.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the NAT gateway is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'EcsMetricEnabled' => [ + 'description' => 'Indicates whether the traffic monitoring feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'IcmpReplyEnabled' => [ + 'description' => 'Indicates whether the ICMP non-retrieval feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Description' => [ + 'description' => 'The description of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'NAT', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the NAT gateway expires.'."\n", + 'type' => 'string', + 'example' => '2021-08-26T16:00Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the contiguous EIP group belongs.', + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'ngw-bp1047e2d4z7kf2ki****', + ], + 'InternetChargeType' => [ + 'description' => 'The metering method of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **PayBySpec**: pay-by-specification'."\n" + .'* **PayByLcu**: pay-by-CU'."\n", + 'type' => 'string', + 'example' => 'PayByLcu', + ], + 'BusinessStatus' => [ + 'description' => 'The status of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **Normal**: normal'."\n" + .'* **FinancialLocked**: locked due to overdue payments'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Name' => [ + 'description' => 'The name of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'IpLists' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpList' => [ + 'description' => 'The list of elastic IP addresses (EIPs) that are associated with the Internet NAT gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'UsingStatus' => [ + 'description' => 'The association between the EIP and the Internet NAT gateway. Valid values:'."\n" + ."\n" + .'* **UsedByForwardTable**: The EIP is specified in a DNAT entry.'."\n" + .'* **UsedBySnatTable**: The EIP is specified in an SNAT entry.'."\n" + .'* **UsedByForwardSnatTable**: The EIP is specified in both an SNAT entry and a DNAT entry.'."\n" + .'* **Idle**: The EIP is not specified in a DNAT or SNAT entry.'."\n", + 'type' => 'string', + 'example' => 'UsedByForwardTable', + ], + 'IpAddress' => [ + 'description' => 'The IP address of the EIP associated with the NAT gateway.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'SnatEntryEnabled' => [ + 'description' => 'Indicates whether IP addresses that are used in DNAT entries can be specified in SNAT entries. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'AllocationId' => [ + 'description' => 'The ID of the EIP associated with the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'eip-m5egzuvp3dgixen6****', + ], + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + ], + ], + ], + ], + ], + 'ForwardTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ForwardTableId' => [ + 'description' => 'The ID of the DNAT table.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the DNAT table.', + 'type' => 'string', + 'example' => 'ftb-uf6gj3mhsg94qsqst****', + ], + ], + ], + ], + 'SnatTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnatTableId' => [ + 'description' => 'The ID of the SNAT table of the NAT gateway.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the SNAT table of the NAT gateway.', + 'type' => 'string', + 'example' => 'stb-uf6dalcdu0krz423p****', + ], + ], + ], + ], + 'FullNatTableIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'FullNatTableId' => [ + 'description' => 'The ID of the FULLNAT table.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the FULLNAT table.', + 'type' => 'string', + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + ], + ], + ], + 'NatGatewayPrivateInfo' => [ + 'description' => 'The private network information about the enhanced Internet NAT gateway.'."\n" + ."\n" + .'> If **NatType** is set to **Normal**, all parameters returned in this list are empty.'."\n", + 'type' => 'object', + 'properties' => [ + 'VswitchId' => [ + 'description' => 'The ID of the vSwitch to which the NAT gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1s2laxhdf9ayjbo****', + ], + 'EniInstanceId' => [ + 'description' => 'The ID of the elastic network interface (ENI).'."\n", + 'type' => 'string', + 'example' => 'eni-m5eg4ozy5st8q3q4****', + ], + 'MaxBandwidth' => [ + 'description' => 'The maximum bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5120', + ], + 'MaxSessionQuota' => [ + 'description' => 'The number of concurrent connections to the NAT gateway. Unit: connections.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2000000', + ], + 'MaxSessionEstablishRate' => [ + 'description' => 'The number of new connections to the NAT gateway. Unit: connections per second.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100000', + ], + 'PrivateIpAddress' => [ + 'description' => 'The private IP address.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'IzNo' => [ + 'description' => 'The zone to which the NAT gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-b', + ], + 'EniType' => [ + 'description' => 'The mode in which the ENI is associated with the NAT gateway.'."\n" + ."\n" + .'* **indirect**: non-cut-through mode'."\n" + .'* If an empty value is returned, it indicates that the cut-through mode is used.'."\n", + 'type' => 'string', + 'example' => 'indirect', + ], + ], + ], + 'PrivateLinkEnabled' => [ + 'title' => '默认不支持私网链接。设置为1则意味着支持私网链接', + 'description' => 'Indicates whether the NAT gateway supports PrivateLink. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'PrivateLinkMode' => [ + 'title' => 'Fullnat:使用FullNat模式 Geneve:使用Geneve模式。 预估大部分场景都是非Geneve模式的。', + 'description' => 'The mode that is used by PrivateLink. Valid values:'."\n" + ."\n" + .'* **FullNat**: the FULLNAT mode'."\n" + .'* **Geneve**: the GENEVE mode'."\n", + 'type' => 'string', + 'example' => 'FullNat', + ], + 'EipBindMode' => [ + 'title' => 'NAT网关的EIP绑定模式,取值:'."\n" + ."\n" + .'MULTI_BINDED:多EIP网卡可见模式。'."\n" + .'NAT:EIP普通模式,兼容IPv4网关。'."\n" + .'说明 NAT网关的EIP绑定模式为EIP普通模式时,EIP将占用NAT网关所在交换机的一个私网IP,请确保NAT网关所在交换机内私网IP地址充足,如果NAT网关所在的交换机没有可用的空闲私网地址时,将无法绑定新的EIP。NAT网关的EIP绑定模式为EIP普通模式时,NAT网关支持绑定的EIP数量上限为50个。', + 'description' => 'The mode in which the NAT gateway is associated with an elastic IP address (EIP). Valid values:'."\n" + ."\n" + .'* **MULTI_BINDED**: multi-EIP-to-ENI mode'."\n" + .'* **NAT**: NAT mode, which is compatible with IPv4 addresses.'."\n" + ."\n" + .'> Note: If you use the NAT mode, the EIP occupies one private IP address on the vSwitch of the NAT gateway. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, the NAT gateway fails to be associated with the EIP. In NAT mode, you can associate a NAT gateway with up to 50 EIPs.'."\n", + 'type' => 'string', + 'example' => 'MULTI_BINDED', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'title' => '', + 'description' => 'The tags that are added to the resource group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TagKey' => [ + 'description' => 'The tag key of the instance.'."\n", + 'type' => 'string', + 'example' => 'KeyTest', + ], + 'TagValue' => [ + 'description' => 'The tag value of the instance.'."\n", + 'type' => 'string', + 'example' => 'valueTest', + ], + ], + ], + ], + ], + ], + 'EnableSessionLog' => [ + 'description' => 'Whether to enable session logging, with values:'."\n" + .'- **true**: Session logging is enabled. '."\n" + .'- **false**: Session logging is disabled.', + 'type' => 'string', + 'example' => 'true', + ], + 'AccessMode' => [ + 'description' => 'Access mode for reverse access to VPC NAT gateway.', + 'type' => 'object', + 'properties' => [ + 'ModeValue' => [ + 'description' => 'Access mode, with values:'."\n" + .'- **route**: Route mode.'."\n" + .'- **tunnel**: Tunnel mode.', + 'type' => 'string', + 'example' => 'route', + ], + 'TunnelType' => [ + 'description' => 'Tunnel mode type:'."\n" + .'- **geneve**: Geneve type.', + 'type' => 'string', + 'example' => 'geneve', + ], + ], + ], + 'IpPrefixList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpPrefixList' => [ + 'description' => 'List of NAT IP prefix address segments.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'IpPrefix' => [ + 'description' => 'NAT IP prefix address range', + 'type' => 'string', + 'example' => '192.168.0.0/28', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"PageNumber\\": 10,\\n \\"TotalCount\\": 1,\\n \\"NatGateways\\": {\\n \\"NatGateway\\": [\\n {\\n \\"Status\\": \\"Creating\\",\\n \\"CreationTime\\": \\"2021-06-08T12:20:20Z\\",\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72z****\\",\\n \\"NatType\\": \\"Enhanced\\",\\n \\"AutoPay\\": false,\\n \\"Spec\\": \\"Small\\",\\n \\"DeletionProtection\\": true,\\n \\"NetworkType\\": \\"internet\\",\\n \\"SecurityProtectionEnabled\\": false,\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"EcsMetricEnabled\\": true,\\n \\"IcmpReplyEnabled\\": true,\\n \\"Description\\": \\"NAT\\",\\n \\"ExpiredTime\\": \\"2021-08-26T16:00Z\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"NatGatewayId\\": \\"ngw-bp1047e2d4z7kf2ki****\\",\\n \\"InternetChargeType\\": \\"PayByLcu\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Name\\": \\"abc\\",\\n \\"IpLists\\": {\\n \\"IpList\\": [\\n {\\n \\"UsingStatus\\": \\"UsedByForwardTable\\",\\n \\"IpAddress\\": \\"116.62.XX.XX\\",\\n \\"SnatEntryEnabled\\": false,\\n \\"AllocationId\\": \\"eip-m5egzuvp3dgixen6****\\",\\n \\"PrivateIpAddress\\": \\"192.168.XX.XX\\"\\n }\\n ]\\n },\\n \\"ForwardTableIds\\": {\\n \\"ForwardTableId\\": [\\n \\"ftb-uf6gj3mhsg94qsqst****\\"\\n ]\\n },\\n \\"SnatTableIds\\": {\\n \\"SnatTableId\\": [\\n \\"stb-uf6dalcdu0krz423p****\\"\\n ]\\n },\\n \\"FullNatTableIds\\": {\\n \\"FullNatTableId\\": [\\n \\"fulltb-gw88z7hhlv43rmb26****\\"\\n ]\\n },\\n \\"NatGatewayPrivateInfo\\": {\\n \\"VswitchId\\": \\"vsw-bp1s2laxhdf9ayjbo****\\",\\n \\"EniInstanceId\\": \\"eni-m5eg4ozy5st8q3q4****\\",\\n \\"MaxBandwidth\\": 5120,\\n \\"MaxSessionQuota\\": 2000000,\\n \\"MaxSessionEstablishRate\\": 100000,\\n \\"PrivateIpAddress\\": \\"192.168.XX.XX\\",\\n \\"IzNo\\": \\"cn-hangzhou-b\\",\\n \\"EniType\\": \\"indirect\\"\\n },\\n \\"PrivateLinkEnabled\\": true,\\n \\"PrivateLinkMode\\": \\"FullNat\\",\\n \\"EipBindMode\\": \\"MULTI_BINDED\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagKey\\": \\"KeyTest\\",\\n \\"TagValue\\": \\"valueTest\\"\\n }\\n ]\\n },\\n \\"EnableSessionLog\\": \\"true\\",\\n \\"AccessMode\\": {\\n \\"ModeValue\\": \\"route\\",\\n \\"TunnelType\\": \\"geneve\\"\\n },\\n \\"IpPrefixList\\": {\\n \\"IpPrefixList\\": [\\n {\\n \\"IpPrefix\\": \\"192.168.0.0/28\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n 10\\n 1\\n \\n Creating\\n 2021-06-08T12:20:20Z\\n vpc-bp15zckdt37pq72z****\\n Enhanced\\n false\\n Small\\n true\\n internet\\n false\\n PostPaid\\n cn-hangzhou\\n true\\n true\\n NAT\\n 2021-08-26T16:00Z\\n rg-bp67acfmxazb4ph****\\n ngw-bp1047e2d4z7kf2ki****\\n PayByLcu\\n Normal\\n abc\\n \\n UsedByForwardTable\\n 116.62.XX.XX\\n false\\n eip-m5egzuvp3dgixen6****\\n 192.168.XX.XX\\n \\n ftb-uf6gj3mhsg94qsqst****\\n stb-uf6dalcdu0krz423p****\\n fulltb-gw88z7hhlv43rmb26****\\n \\n vsw-bp1s2laxhdf9ayjbo****\\n eni-m5eg4ozy5st8q3q4****\\n 5120\\n 2000000\\n 100000\\n 192.168.XX.XX\\n cn-hangzhou-b\\n indirect\\n \\n true\\n FullNat\\n MULTI_BINDED\\n \\n KeyTest\\n valueTest\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeNatGateways', + 'description' => 'You can call this operation to query both Virtual Private Cloud (VPC) NAT gateways and Internet NAT gateways. NAT gateways in this topic refer to both VPC NAT gateways and Internet NAT gateways.', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'GetNatGatewayAttribute' => [ + 'summary' => 'Queries information about a NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the NAT gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-bp1b0lic8uz4r6vf2****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the NAT gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-qingdao', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the NAT gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp15zckdt37pq72z****', + ], + 'CreationTime' => [ + 'description' => 'The time when the NAT gateway was created. Format: YYYY-MM-DDThh:mm:ssZ.'."\n", + 'type' => 'string', + 'example' => '2021-12-08T12:20:20Z', + ], + 'Status' => [ + 'description' => 'The status of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **Creating**: being created. The operation to create a NAT gateway is asynchronous. The NAT gateway remains in the **Creating** state until it is created.'."\n" + .'* **Available**: available. After a NAT gateway is created, it remains in a stable state.'."\n" + .'* **Modifying**: being modified. The operation to upgrade or downgrade a NAT gateway is asynchronous. The NAT gateway remains in the **Modifying** state until it is upgraded or downgraded.'."\n" + .'* **Deleting**: being deleted. The operation to delete a NAT gateway is asynchronous. The NAT gateway remains in the **Deleting** state until it is deleted.'."\n" + .'* **Converting**: being converted. The operation to convert a standard NAT gateway to an enhanced NAT gateway is asynchronous. The NAT gateway remains in the **Converting** state until it is converted.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'NatType' => [ + 'description' => 'The type of the Internet NAT gateway. Only **Enhanced** is returned, which indicates an enhanced Internet NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'Enhanced', + ], + 'NetworkType' => [ + 'description' => 'The type of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **internet**: an Internet NAT gateway'."\n" + .'* **intranet**: a VPC NAT gateway'."\n", + 'type' => 'string', + 'example' => 'internet', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the NAT gateway is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-qingdao', + ], + 'EcsMetricEnabled' => [ + 'description' => 'Indicates whether the traffic monitoring feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'Description' => [ + 'description' => 'The description of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'NAT', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the NAT gateway expires.'."\n", + 'type' => 'string', + 'example' => '2021-12-26T12:20:20Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'ngw-bp1047e2d4z7kf2ki****', + ], + 'BusinessStatus' => [ + 'description' => 'The service status of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **Normal**: normal'."\n" + .'* **FinancialLocked**: locked due to overdue payments'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Name' => [ + 'description' => 'The name of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'ForwardTable' => [ + 'description' => 'The information about the DNAT table.'."\n", + 'type' => 'object', + 'properties' => [ + 'ForwardTableId' => [ + 'description' => 'The ID of the DNAT table.'."\n", + 'type' => 'string', + 'example' => 'ftb-uf6gj3mhsg94qsqst****', + ], + 'ForwardEntryCount' => [ + 'description' => 'The number of DNAT entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + ], + ], + 'SnatTable' => [ + 'description' => 'The information about the SNAT table.'."\n", + 'type' => 'object', + 'properties' => [ + 'SnatEntryCount' => [ + 'description' => 'The number of SNAT entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'SnatTableId' => [ + 'description' => 'The ID of the SNAT table.'."\n", + 'type' => 'string', + 'example' => 'stb-SnatTableIds****', + ], + ], + ], + 'FullNatTable' => [ + 'description' => 'The information about the FULLNAT table.'."\n", + 'type' => 'object', + 'properties' => [ + 'FullNatEntryCount' => [ + 'description' => 'The number of FULLNAT entries.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'FullNatTableId' => [ + 'description' => 'The ID of the FULLNAT table.'."\n", + 'type' => 'string', + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + ], + ], + 'BillingConfig' => [ + 'description' => 'The billing information.'."\n", + 'type' => 'object', + 'properties' => [ + 'InternetChargeType' => [ + 'description' => 'The metering method of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **PayBySpec**: pay-by-specification'."\n" + .'* **PayByLcu**: pay-by-CU'."\n", + 'type' => 'string', + 'example' => 'PayBySpec', + ], + 'AutoPay' => [ + 'description' => 'Indicates whether automatic payment is enabled. If the **InstanceChargeType** parameter is set to **PrePaid**, one of the following values is returned:'."\n" + ."\n" + .'* **false**: disabled. After an order is generated, you must go to the Order Center to complete the payment.'."\n" + .'* **true**: enabled. Payments are automatically completed.'."\n" + ."\n" + .'The return value of this parameter is empty if **InstanceChargeType** is set to **PostPaid**.'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'Spec' => [ + 'description' => 'The specification of the Internet NAT gateway. If the **InternetChargeType** parameter is set to **PayBySpec**, one of the following values is returned:'."\n" + ."\n" + .'* **Small**: small'."\n" + ."\n" + .'* **Middle**: medium'."\n" + ."\n" + .'* **Large**: large'."\n" + ."\n" + .' The return value of this parameter is empty if **InternetChargeType** is set to **PayByLcu**.'."\n", + 'type' => 'string', + 'example' => 'Small', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the NAT gateway. The value is set to **PostPaid**, which indicates the pay-as-you-go billing method.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + ], + ], + 'PrivateInfo' => [ + 'description' => 'The private network information about the NAT gateway.'."\n", + 'type' => 'object', + 'properties' => [ + 'MaxBandwidth' => [ + 'description' => 'The maximum bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5120', + ], + 'VswitchId' => [ + 'description' => 'The ID of the vSwitch to which the NAT gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1s2laxhdf9ayjbo***', + ], + 'PrivateIpAddress' => [ + 'description' => 'The private IP address.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'IzNo' => [ + 'description' => 'The zone where the NAT gateway is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-qingdao-b', + ], + 'EniInstanceId' => [ + 'description' => 'The ID of the elastic network interface (ENI).'."\n", + 'type' => 'string', + 'example' => 'eni-bp1cmgtoaka8vfyg****', + ], + ], + ], + 'DeletionProtectionInfo' => [ + 'description' => 'The information about the deletion protection feature.'."\n", + 'type' => 'object', + 'properties' => [ + 'Enabled' => [ + 'description' => 'Indicates whether deletion protection is enabled.'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + 'IpList' => [ + 'description' => 'The elastic IP addresses (EIPs) that are associated with the Internet NAT gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'UsingStatus' => [ + 'description' => 'The association status of the EIP.'."\n" + ."\n" + .'* **idle**: The EIP is not specified in an SNAT entry or a DNAT entry.'."\n" + .'* **UsedBySnatTable**: The EIP is specified in an SNAT entry.'."\n" + .'* **UsedByForwardTable**: The EIP is specified in a DNAT entry.'."\n", + 'type' => 'string', + 'example' => 'idle', + ], + 'IpAddress' => [ + 'description' => 'The IP address of the EIP.'."\n", + 'type' => 'string', + 'example' => '116.33.XX.XX', + ], + 'AllocationId' => [ + 'description' => 'The ID of the EIP.'."\n", + 'type' => 'string', + 'example' => 'eip-bp13e9i2qst4g6jzi****', + ], + ], + ], + ], + 'PrivateLinkEnabled' => [ + 'title' => '默认不支持私网链接。设置为1则意味着支持私网链接', + 'description' => 'Indicates whether the NAT gateway supports PrivateLink. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'PrivateLinkMode' => [ + 'title' => 'Fullnat:使用FullNat模式 Geneve:使用Geneve模式。 预估大部分场景都是非Geneve模式的。', + 'description' => 'The mode that is used by PrivateLink. Valid values:'."\n" + ."\n" + .'* **FullNat**: the FULLNAT mode'."\n" + .'* **Geneve**: the GENEVE mode'."\n", + 'type' => 'string', + 'example' => 'FullNat', + ], + 'EnableSessionLog' => [ + 'description' => 'Whether to enable session log, with values:'."\n" + .'- **true**: Session logging is enabled. '."\n" + .'- **false**: Session logging is disabled.', + 'type' => 'boolean', + 'example' => 'true', + ], + 'LogDelivery' => [ + 'description' => 'Session log configuration information.', + 'type' => 'object', + 'properties' => [ + 'LogDeliveryType' => [ + 'description' => 'Session log delivery destination type. Value: **sls**, Alibaba Cloud Log Service SLS.', + 'type' => 'string', + 'example' => 'sls', + ], + 'LogDestination' => [ + 'description' => 'Destination address for session log writing', + 'type' => 'string', + 'example' => 'acs:log:cn-hangzhou:0000:project/nat_session_log_project/logstore/session_log_test', + ], + 'DeliveryStatus' => [ + 'description' => 'Session log write status. Values:'."\n" + .'- **Success**: Success. '."\n" + .'- **Failure**: Failure.', + 'type' => 'string', + 'example' => 'Failure', + ], + 'DeliverLogsErrorMessage' => [ + 'description' => 'Error message for session log write failure.', + 'type' => 'string', + 'example' => 'LogStoreNotExist: logstore session_log_test does not exist', + ], + ], + ], + 'AccessMode' => [ + 'description' => 'Access mode for reverse access to VPC NAT gateway.', + 'type' => 'object', + 'properties' => [ + 'ModeValue' => [ + 'description' => 'Access mode values:'."\n" + .'- **route**: Route mode.'."\n" + .'- **tunnel**: Tunnel mode.', + 'type' => 'string', + 'example' => 'route', + ], + 'TunnelType' => [ + 'description' => 'Tunnel mode type:'."\n" + .'- **geneve**: Geneve type.', + 'type' => 'string', + 'example' => 'geneve', + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72z****\\",\\n \\"CreationTime\\": \\"2021-12-08T12:20:20Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"NatType\\": \\"Enhanced\\",\\n \\"NetworkType\\": \\"internet\\",\\n \\"RegionId\\": \\"cn-qingdao\\",\\n \\"EcsMetricEnabled\\": true,\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"Description\\": \\"NAT\\",\\n \\"ExpiredTime\\": \\"2021-12-26T12:20:20Z\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"NatGatewayId\\": \\"ngw-bp1047e2d4z7kf2ki****\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Name\\": \\"abc\\",\\n \\"ForwardTable\\": {\\n \\"ForwardTableId\\": \\"ftb-uf6gj3mhsg94qsqst****\\",\\n \\"ForwardEntryCount\\": 1\\n },\\n \\"SnatTable\\": {\\n \\"SnatEntryCount\\": 1,\\n \\"SnatTableId\\": \\"stb-SnatTableIds****\\"\\n },\\n \\"FullNatTable\\": {\\n \\"FullNatEntryCount\\": 1,\\n \\"FullNatTableId\\": \\"fulltb-gw88z7hhlv43rmb26****\\"\\n },\\n \\"BillingConfig\\": {\\n \\"InternetChargeType\\": \\"PayBySpec\\",\\n \\"AutoPay\\": \\"false\\",\\n \\"Spec\\": \\"Small\\",\\n \\"InstanceChargeType\\": \\"PostPaid\\"\\n },\\n \\"PrivateInfo\\": {\\n \\"MaxBandwidth\\": 5120,\\n \\"VswitchId\\": \\"vsw-bp1s2laxhdf9ayjbo***\\",\\n \\"PrivateIpAddress\\": \\"192.168.XX.XX\\",\\n \\"IzNo\\": \\"cn-qingdao-b\\",\\n \\"EniInstanceId\\": \\"eni-bp1cmgtoaka8vfyg****\\"\\n },\\n \\"DeletionProtectionInfo\\": {\\n \\"Enabled\\": true\\n },\\n \\"IpList\\": [\\n {\\n \\"UsingStatus\\": \\"idle\\",\\n \\"IpAddress\\": \\"116.33.XX.XX\\",\\n \\"AllocationId\\": \\"eip-bp13e9i2qst4g6jzi****\\"\\n }\\n ],\\n \\"PrivateLinkEnabled\\": true,\\n \\"PrivateLinkMode\\": \\"FullNat\\",\\n \\"EnableSessionLog\\": true,\\n \\"LogDelivery\\": {\\n \\"LogDeliveryType\\": \\"sls\\",\\n \\"LogDestination\\": \\"acs:log:cn-hangzhou:0000:project/nat_session_log_project/logstore/session_log_test\\",\\n \\"DeliveryStatus\\": \\"Failure\\",\\n \\"DeliverLogsErrorMessage\\": \\"LogStoreNotExist: logstore session_log_test does not exist\\"\\n },\\n \\"AccessMode\\": {\\n \\"ModeValue\\": \\"route\\",\\n \\"TunnelType\\": \\"geneve\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n vpc-bp15zckdt37pq72z****\\n 2021-12-08T12:20:20Z\\n Available\\n Enhanced\\n internet\\n cn-qingdao\\n true\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n NAT\\n 2021-12-26T12:20:20Z\\n rg-bp67acfmxazb4ph****\\n ngw-bp1047e2d4z7kf2ki****\\n Normal\\n abc\\n \\n ftb-uf6gj3mhsg94qsqst****\\n 1\\n \\n \\n 1\\n stb-SnatTableIds****\\n \\n \\n 1\\n fulltb-gw88z7hhlv43rmb26****\\n \\n \\n PayBySpec\\n false\\n Small\\n PostPaid\\n \\n \\n 5120\\n vsw-bp1s2laxhdf9ayjbo***\\n 192.168.XX.XX\\n cn-qingdao-b\\n eni-bp1cmgtoaka8vfyg****\\n \\n \\n true\\n \\n \\n idle\\n 116.33.XX.XX\\n eip-bp13e9i2qst4g6jzi****\\n \\n true\\n FullNat\\n","errorExample":""}]', + 'title' => 'GetNatGatewayAttribute', + 'description' => 'You can call this operation to query information about a specified Internet NAT gateway or Virtual Private Cloud (VPC) NAT gateway. In this topic, "NAT gateway" refers to both gateway types.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'ListEnhanhcedNatGatewayAvailableZones' => [ + 'summary' => 'Queries the zones that support NAT gateways.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n" + ."\n" + .'In this example, zones that support NAT gateways in the UAE (Dubai) region are queried.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'me-east-1', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'The language to display the results. Valid values:'."\n" + ."\n" + .'* **zh-CN** (default): Chinese'."\n" + .'* **en-US**: English'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'zh-CN', + 'default' => 'zh-CN', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n" + ."\n" + .'In this example, zones that support NAT gateways in the UAE (Dubai) region are queried.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'me-east-1', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'allowEmptyValue' => true, + 'style' => 'flat', + 'schema' => [ + 'description' => 'The filter information. You can specify a filter key and a filter value.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The filter key. Only **PrivateLinkEnabled** is supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrivateLinkEnabled', + ], + 'Value' => [ + 'description' => 'The value of the filter key.'."\n" + ."\n" + .'> If the filter key is set to **PrivateLinkEnabled**, you must specify a filter value. Valid values: **true** and **false**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'true', + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '8AE6F367-52EA-535D-9A3D-EF23D70527C8', + ], + 'Zones' => [ + 'description' => 'The list of zones.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The ID of the zone where the instance is deployed.'."\n", + 'type' => 'string', + 'example' => 'me-east-1a', + ], + 'LocalName' => [ + 'description' => 'The name of the zone.'."\n", + 'type' => 'string', + 'example' => 'Dubai Zone A', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8AE6F367-52EA-535D-9A3D-EF23D70527C8\\",\\n \\"Zones\\": [\\n {\\n \\"ZoneId\\": \\"me-east-1a\\",\\n \\"LocalName\\": \\"中东1 可用区A\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 8AE6F367-52EA-535D-9A3D-EF23D70527C8\\n \\n me-east-1a\\n 中东1 可用区A\\n \\n","errorExample":""}]', + 'title' => 'ListEnhanhcedNatGatewayAvailableZones', + 'description' => 'You can call this operation to query zones that support NAT gateways, including Internet NAT gateways and Virtual Private Cloud (VPC) NAT gateways.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateNatGatewayNatType' => [ + 'summary' => 'Upgrades a standard NAT gateway to an enhanced NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the NAT gateway that you want to upgrade is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the standard NAT gateway to be upgraded.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-bp1b0lic8uz4r6vf2****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The vSwitch to which the enhanced Internet NAT gateway belongs.'."\n" + ."\n" + .'> If you do not set this parameter, the system generates an Internet NAT gateway in a random vSwitch of a virtual private cloud (VPC).'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-bp17nszybg8epodke****', + ], + ], + [ + 'name' => 'NatType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of Internet NAT gateway. Set the value to **Enhanced**, which specifies an enhanced Internet NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'Enhanced', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck this request. Valid values:'."\n" + ."\n" + .'**true**: prechecks the request without upgrading the Internet NAT gateway. The system checks whether your AccessKey pair is valid, whether RAM users are granted required permissions, and whether the required parameters are set. If the request fails to pass the precheck, an error code is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'**false**: sends the API request. This is the default value. After the request passes the precheck, a 2XX HTTP status code is returned and the Internet NAT gateway is upgraded.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a value, and you must make sure that each request has a unique token value. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the NAT gateway that you want to upgrade is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-qingdao', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationUnsupported.NatConvert', + 'errorMessage' => 'The NAT gateway conversion function is not supported.', + ], + [ + 'errorCode' => 'OperationFailed.VpcNotExist', + 'errorMessage' => 'The specified VPC does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.VswNotExist', + 'errorMessage' => 'The specified VSwitch does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.NatTypeNotEnhanced', + 'errorMessage' => 'Operation failed because the specified NAT gateway type is not enhanced.', + ], + [ + 'errorCode' => 'OperationFailed.NatGwBindWithBandwidthPackage', + 'errorMessage' => 'Operation failed because the NAT gateway is bound to bandwidth packages.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => 'The status of NAT gateway is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.EipInMiddleStatus', + 'errorMessage' => 'Operation failed because the status of EIP associated with the specified NAT gateway is abnormal.', + ], + [ + 'errorCode' => 'OperationFailed.SnatInMiddleStatus', + 'errorMessage' => 'Operation failed because the status of the SNAT entry of the specified NAT gateway is abnormal.', + ], + [ + 'errorCode' => 'OperationFailed.DnatInMiddleStatus', + 'errorMessage' => 'Operation failed because the status of the DNAT entry associated with the NAT gateway is abnormal.', + ], + [ + 'errorCode' => 'OperationFailed.NatGwRouteInMiddleStatus', + 'errorMessage' => 'Operation failed because the status of the route entry associated with the NAT gateway is abnormal.', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedInventoryNotEnough', + 'errorMessage' => 'The enhanced NAT gateway inventory is insufficient in the specified zone.', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedUserIsUnAuthorized', + 'errorMessage' => 'Operation failed because the user is not authorized to create an enhanced NAT gateway.', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedRegion', + 'errorMessage' => 'Operation failed because enhanced NAT gateways are not available for sale in the specified region.', + ], + [ + 'errorCode' => 'OperationFailed.EnhancedQuotaExceed', + 'errorMessage' => 'Operation failed because the maximum number of enhanced NAT gateways in the same VPC is exceeded.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageIdNumber.NotSupported', + 'errorMessage' => 'The number of BandwidthPackageIds exceeds the limit.', + ], + [ + 'errorCode' => 'OperationFailed.VswNotBelongToVpc', + 'errorMessage' => 'Operation failed because the specified VSwitch is not bound to the same VPC with NAT gateway.', + ], + [ + 'errorCode' => 'OperationUnsupported.VpcAttachedCen', + 'errorMessage' => 'Operation failed because the VPC is attached to CEN.', + ], + [ + 'errorCode' => 'OperationUnsupported.RouterInterfaceExist', + 'errorMessage' => 'Operation failed because the VPC has a router interface.', + ], + [ + 'errorCode' => 'OperationFailed.VRouterNotExist', + 'errorMessage' => 'Operation failed because the VRouter does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.SnatQuotaExceed', + 'errorMessage' => 'Operation failed because the maximum number of SNAT entry is exceeded.', + ], + [ + 'errorCode' => 'OperationFailed.DnatQuotaExceed', + 'errorMessage' => 'Operation failed because the maximum number of forward entry is exceeded.', + ], + [ + 'errorCode' => 'OperationFailed.VswBindedRouteTable', + 'errorMessage' => 'The operation failed because a custom route table that contains subnet routes is associated with the specified VSwitch.', + ], + [ + 'errorCode' => 'OperationFailed.VswBindedAcl', + 'errorMessage' => 'The operation failed because a network ACL is associated with the specified VSwitch.', + ], + [ + 'errorCode' => 'Forbidden.Convert', + 'errorMessage' => 'User does not have permission to operate.', + ], + [ + 'errorCode' => 'NATGW_NOT_EXIST', + 'errorMessage' => 'The specified NAT gateway does not exist.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'noSubstitutionReason' => '无替代API,历史原因导致该API被标记为弃用。', + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'UpdateNatGatewayNatType', + 'description' => 'Before you call this operation, take note of the following limits:'."\n" + ."\n" + .'* **UpdateNatGatewayNatType** is an asynchronous operation. After you send a request to call this operation, the system returns a request ID and the NAT gateway is still being upgraded in the backend. You can call the GetNatGatewayConvertStatus operation to query the upgrade progress of a NAT gateway. For more information, see [GetNatGatewayConvertStatus](~~184744~~).'."\n" + ."\n" + .' * If the NAT gateway is in the **processing** state, the NAT gateway is being upgraded. You can only query the status of the NAT gateway but cannot perform other operations.'."\n" + .' * If the NAT gateway is in the **successful** state, the NAT gateway is upgraded.'."\n" + .' * If the NAT gateway is in the **failed** state, the system failed to upgrade the NAT gateway.'."\n" + ."\n" + .'* You cannot repeatedly call the **UpdateNatGatewayNatType** operation for the same VPN gateway within the specified period of time.'."\n" + ."\n" + .'* The billing method and billable items remain the same after the upgrade.'."\n" + ."\n" + .'* It takes about five minutes to upgrade a standard NAT gateway to an enhanced NAT gateway. During the upgrade, transient connection errors may occur once or twice. The service can be recovered by reconnection. You can determine whether to enable automatic reconnection or use manual reconnection based on your business requirements.'."\n" + ."\n" + .'* You can only upgrade standard NAT gateways to enhanced NAT gateways. You are not allowed to downgrade enhanced NAT gateways to standard NAT gateways.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeNatGatewayAssociateNetworkInterfaces' => [ + 'summary' => 'Queries elastic network interfaces (ENIs) associated with a virtual private cloud (VPC) NAT gateway when the VPC NAT gateway serves as a PrivateLink service resource. This feature is not publicly available.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Internet NAT gateway.'."\n" + ."\n" + .'Call the [DescribeRegions](~~36063~~) operation to query the region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazdjdhd****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about resource tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key You can specify at most 20 tag keys. It cannot be an empty string,'."\n" + ."\n" + .'The tag key can be up to 64 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. It cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 64 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the value of **RequestId** is used.**** The **RequestId** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Internet NAT gateway.'."\n" + ."\n" + .'Call the [DescribeRegions](~~36063~~) operation to query the region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The filter information. You can specify a filter key and a filter value.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the filter.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The filter key.'."\n" + ."\n" + .'* ResourceId'."\n" + ."\n" + .'> Specify the service resource ID in the Value field.'."\n" + ."\n" + .'* NetworkInterfaceId'."\n" + ."\n" + .'> Specify the ENI ID in the Value field.'."\n" + ."\n" + .'* ResourceOwnerId'."\n" + ."\n" + .'> Specify the UID of the account to which the service resource belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ResourceId', + ], + 'Value' => [ + 'description' => 'Separate multiple values with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ep-8psre8c8936596cd****', + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid value:'."\n" + ."\n" + .'* If no value is returned for NetToken, you do not need to specify this parameter.'."\n" + .'* If a value is returned for NextToken, you must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return per page. Valid values: **1 to 100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'Request ID.'."\n", + 'type' => 'string', + 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD****', + ], + 'NextToken' => [ + 'description' => 'Indicates whether the token for the next query exists. Valid value:'."\n" + ."\n" + .'* If **NextToken** is empty, there is no next page.'."\n" + .'* If the value returned of **NextToken** is not empty, the value indicates the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + 'MaxResults' => [ + 'description' => 'The number of entries to return per page. Valid values: **1 to 100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the VPC NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'AssociateNetworkInterfaces' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AssociateNetworkInterface' => [ + 'description' => 'The ENIs associated with the VPC NAT gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'NetworkInterfaceId' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'eni-gw8g131ef2dnbu3k****', + ], + 'ResourceId' => [ + 'description' => 'The ID of the service resource.'."\n", + 'type' => 'string', + 'example' => 'ep-8psre8c8936596cd****', + ], + 'ResourceType' => [ + 'description' => 'The type of the service resource.'."\n", + 'type' => 'string', + 'example' => 'PrivateLink', + ], + 'ResourceOwnerId' => [ + 'description' => 'The UID of the account to which the service resource belongs.'."\n", + 'type' => 'string', + 'example' => '138859086900****', + ], + 'IPv4Sets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IPv4Set' => [ + 'description' => 'The IPv4 addresses of the ENIs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IPv4 address of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'IPv4Address' => [ + 'description' => 'The primary private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'Primary' => [ + 'description' => 'Indicates whether the IP address is the primary private IP address. Valid values:'."\n" + ."\n" + .'* true: Primary private IP address'."\n" + .'* false: Secondary private IP addresses'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + 'TunnelIndex' => [ + 'description' => 'The ID of the tunnel index.'."\n", + 'type' => 'string', + 'example' => '41a5489ea2a0****', + ], + 'ResourceVpcId' => [ + 'description' => 'VPC ID of the service resource', + 'type' => 'string', + 'example' => 'vpc-bp1di7uewzmtvfuq8****', + ], + ], + ], + ], + ], + ], + 'Count' => [ + 'description' => 'Number of associated ENIs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InstanceNotExist.NatGatewayId', + 'errorMessage' => 'The NAT gateway instance is not exist.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceOwnerId', + 'errorMessage' => 'The param of resource owner ID is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD****\\",\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a****\\",\\n \\"MaxResults\\": 20,\\n \\"NatGatewayId\\": \\"ngw-bp1uewa15k4iy5770****\\",\\n \\"TotalCount\\": 1,\\n \\"AssociateNetworkInterfaces\\": {\\n \\"AssociateNetworkInterface\\": [\\n {\\n \\"NetworkInterfaceId\\": \\"eni-gw8g131ef2dnbu3k****\\",\\n \\"ResourceId\\": \\"ep-8psre8c8936596cd****\\",\\n \\"ResourceType\\": \\"PrivateLink\\",\\n \\"ResourceOwnerId\\": \\"138859086900****\\",\\n \\"IPv4Sets\\": {\\n \\"IPv4Set\\": [\\n {\\n \\"IPv4Address\\": \\"172.17.**.**\\",\\n \\"Primary\\": true\\n }\\n ]\\n },\\n \\"TunnelIndex\\": \\"41a5489ea2a0****\\",\\n \\"ResourceVpcId\\": \\"vpc-bp1di7uewzmtvfuq8****\\"\\n }\\n ]\\n },\\n \\"Count\\": 0\\n}","type":"json"}]', + 'title' => 'DescribeNatGatewayAssociateNetworkInterfaces', + 'translator' => 'machine', + ], + 'VpcDescribeVpcNatGatewayNetworkInterfaceQuota' => [ + 'summary' => 'Queries the quota of endpoints that can be created in the reversely accessed VPC NAT gateway.', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceUid', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the resource belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '132193271328****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'title' => '查询NAT网关关联的ENI实例信息', + 'description' => 'The ID of the VPC NAT gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F', + ], + 'Quota' => [ + 'title' => '分页大小', + 'description' => 'The number of endpoints that can be created.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '2', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.PrivateLinkNotEnabled', + 'errorMessage' => 'The NAT gateway is not enable for private link.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The NatGateway instance not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\",\\n \\"Quota\\": 2\\n}","errorExample":""},{"type":"xml","example":"\\n 611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\n 2\\n","errorExample":""}]', + 'title' => 'VpcDescribeVpcNatGatewayNetworkInterfaceQuota', + 'description' => 'Before you call this operation, make sure that a VPC NAT gateway is created. For more information, see [CreateNatGateway](~~120219~~).', + ], + 'CreateSnatEntry' => [ + 'summary' => 'Adds an SNAT entry to an SNAT table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37638', + 'abilityTreeNodes' => [ + 'FEATUREvpcK3NXU2', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* ap-northeast-2-pop'."\n" + ."\n" + .' '."\n" + ."\n" + .' :'."\n" + ."\n" + .' '."\n" + ."\n" + .' ap-northeast-2-pop'."\n" + ."\n" + .' '."\n" + ."\n" + .' .'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'enumValueTitles' => [ + 'ap-northeast-2-pop' => 'ap-northeast-2-pop', + ], + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnatTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SNAT table.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'stb-bp190wu8io1vgev****', + ], + ], + [ + 'name' => 'SourceVSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch.'."\n" + ."\n" + .'* When you add an SNAT entry to an Internet NAT gateway, this parameter specifies that ECS instances in the vSwitch can use the SNAT entry to access the Internet. If you select multiple elastic IP addresses (EIPs) to create an SNAT address pool, connections are hashed to these EIPs. Network traffic may not be evenly distributed to the EIPs because the amount of traffic that passes through each connection varies. We recommend that you associate these EIPs with the same EIP bandwidth plan to prevent service interruptions due to the bandwidth limits on individual EIPs.'."\n" + .'* When you add an SNAT entry to a VPC NAT gateway, this parameter specifies that ECS instances in the vSwitch can use the SNAT entry to access external networks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1nhx2s9ui5o****', + ], + ], + [ + 'name' => 'SourceCIDR', + 'in' => 'query', + 'schema' => [ + 'description' => 'You can specify the CIDR block of a VPC, a vSwitch, or an ECS instance or enter a custom CIDR block.'."\n" + ."\n" + .'You can specify an SNAT entry in the following ways:'."\n" + ."\n" + .'* You can specify the CIDR block of the VPC where the NAT gateway is deployed. Then, all ECS instances in the VPC can access the Internet or external networks by using SNAT.'."\n" + .'* You can specify the CIDR block of a vSwitch, for example, 192.168.1.0/24. Then, the ECS instances in the vSwitch can access the Internet or external networks by using SNAT.'."\n" + .'* You can specify the IP address of an ECS instance, for example, 192.168.1.1/32. Then, the ECS instance can access the Internet or external networks by using SNAT.'."\n" + .'* You can specify a custom CIDR block. Then, all ECS instances within the specified CIDR block can access the Internet or external networks by using SNAT.'."\n" + ."\n" + .'When you add an SNAT entry to an Internet NAT gateway, if **SnatIp** is set to an EIP, the ECS instance uses the specified EIP to access the Internet.'."\n" + ."\n" + .'If **SnatIp** is set to multiple EIPs, the ECS instance randomly selects an EIP specified in the **SnatIp** parameter to access the Internet.'."\n" + ."\n" + .'You cannot specify this parameter and **SourceVSwtichId** at the same time. If **SourceVSwitchId** is specified, you cannot specify **SourceCIDR**. If **SourceCIDR** is specified, you cannot specify **SourceVSwitchId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.1.0/24', + ], + ], + [ + 'name' => 'SnatIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* The EIPs in the SNAT entry when you add an SNAT entry to an Internet NAT gateway. Separate EIPs with commas (,).'."\n" + ."\n" + .'> If you specify multiple EIPs in the SNAT IP address pool, the service connection is allocated to multiple EIPs by using the hashing algorithm. The traffic of each EIP may be different. Therefore, we recommend that you associate the EIPs with an Internet Shared Bandwidth instance to prevent service interruptions caused by bandwidth exhaustion.'."\n" + ."\n" + .'* When you add SNAT entries for a VPC NAT gateway, this parameter specifies the NAT IP addresses in the SNAT entry. Separate multiple NAT IP addresses with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '47.98.XX.XX', + ], + ], + [ + 'name' => 'SnatEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SnatEntry-1', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The `client token` can contain only ASCII characters.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Description** If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44****', + ], + ], + [ + 'name' => 'EipAffinity', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'Specifies whether to enable EIP affinity. Valid values:'."\n" + ."\n" + .'* **0**: no'."\n" + .'* **1**: yes'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Description** After you enable EIP affinity, if multiple EIPs are associated with an SNAT entry, each client uses one EIP to access the Internet. If EIP affinity is disabled, each client uses a random EIP to access the Internet.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'Elastic Network Interface ID. '."\n" + .'> The IPv4 address set of the elastic network interface will be used as the SNAT address.', + 'type' => 'string', + 'required' => false, + 'example' => 'eni-gw8g131ef2dnbu3k****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'Indicates whether to only precheck this request. Values:'."\n" + .'- **true**: Sends a precheck request and does not create an SNAT entry. The precheck includes verifying if the AccessKey is valid, checking the RAM user\'s authorization, and ensuring that all required parameters are filled out. If the precheck fails, the corresponding error is returned. If the precheck passes, the error code `DryRunOperation` is returned.'."\n" + .'- **false** (default): Sends a normal request. After passing the precheck, it returns a 2xx HTTP status code and creates an SNAT entry.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The ID of the SNAT entry.'."\n", + 'type' => 'object', + 'properties' => [ + 'SnatEntryId' => [ + 'description' => 'The ID of the SNAT entry.'."\n", + 'type' => 'string', + 'example' => 'snat-kmd6nv8fy****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD97C3', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedFeature.PrivateLinkEnabled', + 'errorMessage' => 'The feature of PrivateLinkEnabled is not supported.', + ], + [ + 'errorCode' => 'InvalidSourceCIDR.Malformed', + 'errorMessage' => 'SourceCIDR is illegal.', + ], + [ + 'errorCode' => 'NOT_ALLOW_USE_SOURCECIDR_OUTSIDEVPC', + 'errorMessage' => 'The User not in sourcecidr_unlimited_outsidevpc white list. Cannot use SourceCidr outside VpcCidr.', + ], + [ + 'errorCode' => 'NOT_ALLOW_USE_SOURCECIDR_AUTODEFINE', + 'errorMessage' => 'The User not in sourcecidr_unlimited_insidevpc white list. Cannot use SourceCidr auto defined.', + ], + [ + 'errorCode' => 'NOT_ALLOW_USE_SOURCECIDR_CONTAINSZERO', + 'errorMessage' => 'The User not in sourcecidr_unlimited_outsidevpc_containszero white list. Cannot use SourceCidr outside VpcCidr.', + ], + [ + 'errorCode' => 'Forbidden.IpHasBeenUsedInDnat', + 'errorMessage' => 'The snat ip can\'t be used. Because it has been used in dnat', + ], + [ + 'errorCode' => 'Forbidden.SourceVSwitchId.IncludeHaVip', + 'errorMessage' => 'There is some HaVips under specified VSwitch', + ], + [ + 'errorCode' => 'InvalidSnatIp.Malformed', + 'errorMessage' => 'The specified SnatIp is not a valid IP address.', + ], + [ + 'errorCode' => 'SNAT_IP_POOL_COUNT_TOO_MANY', + 'errorMessage' => 'The Snat pool ip too many.', + ], + [ + 'errorCode' => 'Forbidden.SnatEntryCountLimited', + 'errorMessage' => 'SNAT entry in the specified SNAT table reach its limit.', + ], + [ + 'errorCode' => 'NOT_ALLOW_USE_SOURCECIDR', + 'errorMessage' => 'The User not in nat_scope_unlimited white list. Cannot use SourceCidr param.', + ], + [ + 'errorCode' => 'INVALID_PARAMETER', + 'errorMessage' => 'The parameter invalid.', + ], + [ + 'errorCode' => 'Forbidden.SourceVSwitchId.Duplicated', + 'errorMessage' => 'The specified SourceCIDRis duplicated.', + ], + [ + 'errorCode' => 'Forbidden.IpUsedInForwardTable', + 'errorMessage' => 'The specified SnatIp already used in forward table', + ], + [ + 'errorCode' => 'Forbindden', + 'errorMessage' => 'The specified Instance already bind eip', + ], + [ + 'errorCode' => 'EIP_NOT_SUPPORT_SNAT_POOL', + 'errorMessage' => 'The Eip cannot support snat pool', + ], + [ + 'errorCode' => 'EIP_NOT_IN_GATEWAY', + 'errorMessage' => 'The Eip not in nat gateway', + ], + [ + 'errorCode' => 'OperationUnsupported.CidrConflict', + 'errorMessage' => 'The specified CIDR block conflicts with an existing SNAT entry.', + ], + [ + 'errorCode' => 'InvalidNatGatewayId.NotFound', + 'errorMessage' => 'The NatGateway instance not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.SnatIp', + 'errorMessage' => 'Ip semgment must be subnet cidr.', + ], + [ + 'errorCode' => 'QuotaExceeded.SnatIp', + 'errorMessage' => 'Public ip number exceeds quota.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipInBinding', + 'errorMessage' => 'Create snat entry with eip in associating status is unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.VSwitchNotInVpc', + 'errorMessage' => 'The specified vswitch and natgateway are not in the same vpc.', + ], + [ + 'errorCode' => 'QuotaExceeded.SnatEntry', + 'errorMessage' => 'SNAT entry in the specified SNAT table reach it?s limit.', + ], + [ + 'errorCode' => 'IncorrectStatus.NATGW', + 'errorMessage' => 'NATGW status is invalid.', + ], + [ + 'errorCode' => 'IncorrectStatus.VSwitch', + 'errorMessage' => 'The specified vSwitch status is invalid.', + ], + [ + 'errorCode' => 'MissingParam.SnatIp', + 'errorMessage' => 'The input parameter SnatIp that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'MissingParam.NetworkInterfaceId', + 'errorMessage' => 'The input parameter NetworkInterfaceId that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'ParamExclusive.SnatIpAndNetworkInterfaceId', + 'errorMessage' => 'SnatIp and NetworkInterfaceId is mutually exclusive when create a snat entry for nat.', + ], + [ + 'errorCode' => 'IllegalParam.NetworkInterfaceId', + 'errorMessage' => 'The param of NetworkInterfaceId is illegal.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipNatBWPCheck', + 'errorMessage' => 'The EIP is not associated with a NAT service plan.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipNatGWCheck', + 'errorMessage' => 'The operation failed because the EIP is not bound to this NAT Gateway.', + ], + [ + 'errorCode' => 'OperationFailed.SnatIpPoolCbwpRules', + 'errorMessage' => 'The operation failed because the SNAT rule IPs are added to multi bandwidth packages.', + ], + [ + 'errorCode' => 'IncorrectStatus.SnatEntry', + 'errorMessage' => 'The SNAT rule status is invalid. Please try again later.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'NatIp status is invalid, please try again later.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipNatIpCheck', + 'errorMessage' => 'The operation failed because the EIP is not bound to this NAT gateway.', + ], + [ + 'errorCode' => 'OperationFailed.SnatIpPoolBwpRules', + 'errorMessage' => 'The operation failed because the IP in Snat entryl was added to multiple NAT bandwidth packets.', + ], + [ + 'errorCode' => 'OperationFailed.SnatIpsCheck', + 'errorMessage' => 'The operation fails because some IPs address in the SNAT entry are not added to common bandwidth packet.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSnatTableId.NotFound', + 'errorMessage' => 'Specified SNAT table does not exist.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified virtual switch does not exists.', + ], + [ + 'errorCode' => 'InvalidSnatIp.NotFound', + 'errorMessage' => 'Specified SnatIp does not found on the NAT Gateway', + ], + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The NatGateway instance not exist.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The NatIp instance not exist.', + ], + [ + 'errorCode' => 'ResourceNotFound.VSwitch', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'DefaultValidate.Error', + 'errorMessage' => 'validte fail.', + ], + [ + 'errorCode' => 'OperationFailed.CrateSnatEntryTimeOut', + 'errorMessage' => 'Operation failed because create snatEntry timeout.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"SnatEntryId\\": \\"snat-kmd6nv8fy****\\",\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n snat-kmd6nv8fy****\\n 2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\n","errorExample":""}]', + 'title' => 'CreateSnatEntry', + 'description' => 'You can call this operation to add SNAT entries to Internet NAT gateways and Virtual Private Cloud (VPC) NAT gateways. In this topic, a **NAT** gateway refers to both gateway types.'."\n" + ."\n" + .'Before you call this operation, take note of the following limits:'."\n" + ."\n" + .'* **CreateSnatEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeSnatTableEntries](~~42677~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the SNAT entry is in the **Pending** state, the system is adding the SNAT entry. You can only query the status of the SNAT entry, and cannot perform other operations.'."\n" + .' * If the SNAT entry is in the **Available** state, the SNAT entry is added.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateSnatEntry** operation to add an SNAT entry to an SNAT table within the specified period of time.'."\n" + ."\n" + .'* The vSwitch and Elastic Compute Service (ECS) instance specified in an SNAT entry must be created in the VPC where the NAT gateway is deployed.'."\n" + ."\n" + .'* Each vSwitch or ECS instance can be specified in only one SNAT entry.'."\n" + ."\n" + .'* If a high-availability virtual IP address (HAVIP) exists in a vSwitch, you cannot create SNAT entries.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'DeleteSnatEntry' => [ + 'summary' => 'Deletes an SNAT entry.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnatTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SNAT table to which the SNAT entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'stb-bp190wu8io1vgev80****', + ], + ], + [ + 'name' => 'SnatEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SNAT entry that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'snat-bp1vcgcf8tm0plqcg****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorretSnatEntryStatus', + 'errorMessage' => 'Some Snat entry status blocked this operation..', + ], + [ + 'errorCode' => 'IncorrectStatus.SnatEntry', + 'errorMessage' => 'The Specified SnatEntry is not stable status, can not operation', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSnatEntryId.NotFound', + 'errorMessage' => 'Specified Snat entry ID does not exist', + ], + [ + 'errorCode' => 'InvalidSnatTableId.NotFound', + 'errorMessage' => 'Specified SNAT table does not exist.', + ], + [ + 'errorCode' => 'ResourceNotFound.SnatEntry', + 'errorMessage' => 'Specified SNAT entry does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DeleteSnatEntry', + 'description' => 'DeleteSnatEntry is an asynchronous operation. After you make a request, the ID of the request is returned but the specified SNAT entry is not deleted. The system deletes the SNAT entry in the background. You can call the [DescribeSnatTableEntries](~~42677~~) operation to query the status of SNAT entries.'."\n" + ."\n" + .'* If the SNAT entries are in the **Deleting** state, the system is deleting the SNAT entries. In this case, you can only query the status of the SNAT entries, and cannot perform other operations.'."\n" + .'* If no SNAT entry is returned in the response, the SNAT entry is deleted.'."\n" + ."\n" + .'If some SNAT entries are in the **Pending** state, you cannot delete these SNAT entries.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySnatEntry' => [ + 'summary' => 'Modifies an SNAT entry.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnatTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SNAT table to which the SNAT entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'stb-8vbczigrhop8x5u3t****', + ], + ], + [ + 'name' => 'SnatEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SNAT entry that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'snat-bp1vcgcf8tm0plqcg****', + ], + ], + [ + 'name' => 'SnatIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* The elastic IP addresses (EIPs) specified in the SNAT entry when you modify an SNAT entry of an Internet NAT gateway. Separate EIPs with commas (,).'."\n" + ."\n" + .' If you select multiple EIPs to create an SNAT address pool, connections are hashed to these EIPs. Network traffic may not be evenly distributed to the EIPs because the amount of traffic passes through each connection varies. We recommend that you associate these EIPs with the same EIP bandwidth plan to prevent service interruptions due to the bandwidth limit of an individual EIP.'."\n" + ."\n" + .'* When you modify an SNAT entry of a VPC NAT gateway, this parameter specifies the NAT IP address in the SNAT entry.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.98.XX.XX', + ], + ], + [ + 'name' => 'SnatEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SnatEntry-1', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001****', + ], + ], + [ + 'name' => 'EipAffinity', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'Whether to enable IP affinity. Values:'."\n" + .'- **0**: Disable IP affinity.'."\n" + .' - **1**: Enable IP affinity.'."\n" + .'> After enabling the IP affinity switch, if an SNAT entry is bound to multiple EIPs or NAT IPs, the same client will use the same EIP or NAT IP for access; otherwise, the client will randomly select from the bound EIPs or NAT IPs for access.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'Elastic Network Interface ID. The IPv4 address set of the elastic network interface will be used as the SNAT address.', + 'type' => 'string', + 'required' => false, + 'example' => 'eni-gw8g131ef2dnbu3k****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Whether to perform a dry run of this request, with values:'."\n" + .'- **true**: Sends a check request without modifying the SNAT entry. The checks include whether the required parameters are filled in, the request format, and business restrictions. If the check fails, the corresponding error is returned. If the check passes, an error code `DryRunOperation` is returned.'."\n" + .'- **false** (default): Sends a normal request. After passing the check, it returns a 2xx HTTP status code and modifies the SNAT entry.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD97C3', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSnatIp.Malformed', + 'errorMessage' => 'The specified SnatIp is not a valid IP address.', + ], + [ + 'errorCode' => 'Forbidden.SourceVSwitchId.Duplicated', + 'errorMessage' => 'The specified SourceCIDRis duplicated.', + ], + [ + 'errorCode' => 'Forbidden.IpUsedInForwardTable', + 'errorMessage' => 'The specified SnatIp already used in forward table', + ], + [ + 'errorCode' => 'OperationUnsupported.EipForSnatPool', + 'errorMessage' => 'The Eip cannot support snat pool', + ], + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'IncorretSnatEntryStatus', + 'errorMessage' => 'The Specified SnatEntry is not stable status, can not operation', + ], + [ + 'errorCode' => 'EIP_NOT_IN_GATEWAY', + 'errorMessage' => 'The Eip not in nat gateway', + ], + [ + 'errorCode' => 'InvalidParameter.SnatIp', + 'errorMessage' => 'Error public ip must in same bandwidth package.', + ], + [ + 'errorCode' => 'QuotaExceeded.SnatIp', + 'errorMessage' => 'Public ip number exceeds quota.', + ], + [ + 'errorCode' => 'InvalidSnatEntryId.NotFound', + 'errorMessage' => 'Specified SNAT entry does not exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.SnatEntry', + 'errorMessage' => 'The Specified SnatEntry is not stable status, can not operation', + ], + [ + 'errorCode' => 'OperationFailed.CanNotUseEipInDnat', + 'errorMessage' => 'Operation failed because the eip can not used by forward entry.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipNatGWCheck', + 'errorMessage' => 'Operation unsupported because the relation check of eip and nat gateway is failed.', + ], + [ + 'errorCode' => 'ResourceNotFound.SnatEntry', + 'errorMessage' => 'Specified SNAT entry does not exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'Specified NatIp does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.CanNotUseNatIpInDnat', + 'errorMessage' => 'Operation failed because the NatIp can not used by forward entry.', + ], + [ + 'errorCode' => 'IncorrectStatus.NATGW', + 'errorMessage' => 'NATGW status is invalid.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipInBinding', + 'errorMessage' => 'Create snat entry with eip in associating status is unsupported.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipNatBWPCheck', + 'errorMessage' => 'The EIP is not associated with a NAT service plan.', + ], + [ + 'errorCode' => 'IllegalParam.NetworkInterfaceId', + 'errorMessage' => 'The param of NetworkInterfaceId is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.SnatIpPoolBwpRules', + 'errorMessage' => 'The operation failed because the IP in Snat entryl was added to multiple NAT bandwidth packets.', + ], + [ + 'errorCode' => 'OperationFailed.SnatIpPoolCbwpRules', + 'errorMessage' => 'The operation failed because the SNAT rule IPs are added to multi bandwidth packages.', + ], + [ + 'errorCode' => 'OperationFailed.SnatIpsTooMany', + 'errorMessage' => 'The maximum number of IP addresses is exceeded in the SNAT pool.', + ], + [ + 'errorCode' => 'OperationFailed.SnatIpsCheck', + 'errorMessage' => 'The operation fails because some IPs address in the SNAT entry are not added to common bandwidth packet.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSnatTableId.NotFound', + 'errorMessage' => 'Specified SNAT table does not exist.', + ], + [ + 'errorCode' => 'InvalidSnatEntryId.NotFound', + 'errorMessage' => 'Specified SNAT entry does not exist.', + ], + [ + 'errorCode' => 'InvalidSnatIp.NotFound', + 'errorMessage' => 'Specified SnatIp does not found on the NAT Gateway', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'Specified NatIp does not found on the NAT Gateway', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\n","errorExample":""}]', + 'title' => 'ModifySnatEntry', + 'description' => '## [](#)'."\n" + ."\n" + .'**ModifySnatEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeSnatTableEntries](~~42677~~) operation to query the status of the task.'."\n" + ."\n" + .'* **Pending**: indicates that the system is modifying the SNAT entry. You can only query the status of the SNAT entry, but cannot perform other operations.'."\n" + .'* **Available**: indicates that the SNAT entry is modified.'."\n" + ."\n" + .'> If an SNAT entry is in the **Pending** state, it indicates that you cannot modify the SNAT entry.'."\n" + ."\n" + .'You cannot repeatedly call the **ModifySnatEntry** operation to modify an SNAT entry within a specific period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'DescribeSnatTableEntries' => [ + 'summary' => 'Queries SNAT entries.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnatTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SNAT table.'."\n" + ."\n" + .'> You must specify at least one of **SnatTableId** and **NatGatewayId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'stb-8vbczigrhop8x5u3t****', + ], + ], + [ + 'name' => 'SnatEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SNAT entry.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'snat-8vbae8uqh7rjpk7d2****', + ], + ], + [ + 'name' => 'SourceVSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch.'."\n" + ."\n" + .'* When you query SNAT entries of Internet NAT gateways, this parameter specifies that Elastic Compute Service (ECS) instances in the vSwitch can use SNAT entries to access the Internet.'."\n" + .'* When you query SNAT entries of virtual private cloud (VPC) NAT gateways, this parameter specifies that ECS instances in the vSwitch can use SNAT entries to access external networks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-3xbjkhjshjdf****', + ], + ], + [ + 'name' => 'SourceCIDR', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source CIDR block specified in the SNAT entry.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.22.XX.XX/24', + ], + ], + [ + 'name' => 'SnatIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* When you query SNAT entries of Internet NAT gateways, this parameter specifies the EIP in an SNAT entry.'."\n" + .'* When you query SNAT entries of VPC NAT gateways, this parameter specifies the NAT IP address in an SNAT entry.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.22.XX.XX', + ], + ], + [ + 'name' => 'SnatEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SnatEntry-1', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n" + ."\n" + .'> You must specify at least one of **SnatTableId** and **NatGatewayId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + [ + 'name' => 'NetworkInterfaceIds', + 'in' => 'query', + 'allowEmptyValue' => true, + 'style' => 'flat', + 'schema' => [ + 'description' => 'The ID of the elastic network interface to be queried.', + 'type' => 'array', + 'items' => [ + 'description' => 'Elastic Network Interface ID', + 'type' => 'string', + 'required' => false, + 'example' => 'eni-gw8g131ef2dnbu3k****', + ], + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6D7E89B1-1C5B-412B-8585-4908E222EED5', + ], + 'PageNumber' => [ + 'description' => 'The number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'SnatTableEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnatTableEntry' => [ + 'description' => 'Details of SNAT entries.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the SNAT entry. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Pending', + ], + 'SnatEntryName' => [ + 'description' => 'The name of the SNAT entry.'."\n", + 'type' => 'string', + 'example' => 'SnatEntry-1', + ], + 'SourceVSwitchId' => [ + 'description' => '* When you query SNAT entries of Internet NAT gateways, this parameter indicates the ID of the vSwitch that uses SNAT to access the Internet.'."\n" + .'* When you query SNAT entries of VPC NAT gateways, this parameter indicates the ID of the vSwitch that uses SNAT to access external networks.'."\n", + 'type' => 'string', + 'example' => 'vsw-3xbdsffvfgdfds****', + ], + 'SourceCIDR' => [ + 'description' => 'The source CIDR block specified in the SNAT entry.'."\n", + 'type' => 'string', + 'example' => '116.22.XX.XX/24', + ], + 'SnatEntryId' => [ + 'description' => 'The ID of the SNAT entry.'."\n", + 'type' => 'string', + 'example' => 'snat-kmd6nv8fy****', + ], + 'SnatTableId' => [ + 'description' => 'The ID of the SNAT table to which the SNAT entry belongs.'."\n", + 'type' => 'string', + 'example' => 'stb-gz3r3odawdgffde****', + ], + 'SnatIp' => [ + 'description' => '* When you query SNAT entries of Internet NAT gateways, this parameter indicates the EIP in an SNAT entry.'."\n" + .'* When you query SNAT entries of VPC NAT gateways, this parameter indicates the NAT IP address in an SNAT entry.'."\n", + 'type' => 'string', + 'example' => '116.22.XX.XX', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the NAT gateway to which the SNAT entry belongs.'."\n", + 'type' => 'string', + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + 'NetworkInterfaceId' => [ + 'description' => 'Elastic Network Interface ID', + 'type' => 'string', + 'example' => 'eni-gw8g131ef2dnbu3k****', + ], + 'EipAffinity' => [ + 'description' => 'Whether to enable IP affinity. Values:'."\n" + .'- **0**: Disable IP affinity. - **1**: Enable IP affinity.'."\n" + .'> After enabling the IP affinity switch, if an SNAT entry is bound to multiple EIPs or NAT IPs, the same client will use the same EIP or NAT IP for access. Otherwise, the client will randomly select from the bound EIPs or NAT IPs for access.', + 'type' => 'string', + 'example' => '1', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'DESCRIBE_SNAT_PARAM_INVALID', + 'errorMessage' => 'SnatTableId and natGatewayId can not both be null', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSnatTableId.NotFound', + 'errorMessage' => 'Specified SNAT table does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 5,\\n \\"RequestId\\": \\"6D7E89B1-1C5B-412B-8585-4908E222EED5\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"SnatTableEntries\\": {\\n \\"SnatTableEntry\\": [\\n {\\n \\"Status\\": \\"Pending\\",\\n \\"SnatEntryName\\": \\"SnatEntry-1\\",\\n \\"SourceVSwitchId\\": \\"vsw-3xbdsffvfgdfds****\\",\\n \\"SourceCIDR\\": \\"116.22.XX.XX/24\\",\\n \\"SnatEntryId\\": \\"snat-kmd6nv8fy****\\",\\n \\"SnatTableId\\": \\"stb-gz3r3odawdgffde****\\",\\n \\"SnatIp\\": \\"116.22.XX.XX\\",\\n \\"NatGatewayId\\": \\"ngw-bp1uewa15k4iy5770****\\",\\n \\"NetworkInterfaceId\\": \\"eni-gw8g131ef2dnbu3k****\\",\\n \\"EipAffinity\\": \\"1\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 5\\n 6D7E89B1-1C5B-412B-8585-4908E222EED5\\n 1\\n 1\\n \\n Pending\\n SnatEntry-1\\n vsw-3xbdsffvfgdfds****\\n 116.22.XX.XX/24\\n snat-kmd6nv8fy****\\n stb-gz3r3odawdgffde****\\n 116.22.XX.XX\\n \\n","errorExample":""}]', + 'title' => 'DescribeSnatTableEntries', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'translator' => 'machine', + ], + 'CreateForwardEntry' => [ + 'summary' => 'Adds a DNAT entry to a DNAT table.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ForwardTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DNAT table.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ftb-bp1mbjubq34hlcqpa****', + ], + ], + [ + 'name' => 'ExternalIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* The EIP that can be accessed over the Internet when you configure a DNAT entry for an Internet NAT gateway.'."\n" + .'* The NAT IP address that can be accessed by external networks when you configure a DNAT entry for a VPC NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '116.28.XX.XX', + ], + ], + [ + 'name' => 'ExternalPort', + 'in' => 'query', + 'schema' => [ + 'description' => '* The external port range that is used for port forwarding when you configure a DNAT entry for an Internet NAT gateway.'."\n" + ."\n" + .' * Valid values: **1** to **65535**.'."\n" + .' * To specify a port range, separate the first port and the last port with a forward slash (/), for example, `10/20`.'."\n" + .' * If you set **ExternalPort** to a port range, you must also set **InternalPort** to a port range, and the number of ports specified by these parameters must be the same. For example, if you set **ExternalPort** to `10/20`, you can set **InternalPort** to `80/90`.'."\n" + ."\n" + .'* The port that can be accessed by external networks when you configure a DNAT entry for a VPC NAT gateway. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '8080', + ], + ], + [ + 'name' => 'InternalIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* The private IP address of the ECS instance that needs to communicate with the Internet when you configure a DNAT entry for an Internet NAT gateway. The private IP address must meet the following requirements:'."\n" + ."\n" + .' * It must belong to the CIDR block of the VPC where the NAT gateway is deployed.'."\n" + .' * The DNAT entry takes effect only if the private IP address is assigned to an ECS instance and the ECS instance is not associated with an EIP.'."\n" + ."\n" + .'* The private IP address that uses DNAT when you add a DNAT entry to a VPC NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'InternalPort', + 'in' => 'query', + 'schema' => [ + 'description' => '* The internal port or port range that is used for port forwarding when you configure a DNAT entry for an Internet NAT gateway. Valid values: **1** to **65535**.'."\n" + .'* The port of the destination ECS instance to be mapped when you configure a DNAT entry for a VPC NAT gateway. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '80', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **Any** If you set **IpProtocol** to **Any**, you must also set **ExternalPort** and **InternalPort** to **Any** to implement DNAT IP mapping.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'TCP', + ], + ], + [ + 'name' => 'ForwardEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the DNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ForwardEntry-1', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe6****', + ], + ], + [ + 'name' => 'PortBreak', + 'in' => 'query', + 'schema' => [ + 'description' => 'Whether to enable port breakthrough, with values:'."\n" + .'- **true**: Enable port breakthrough. '."\n" + .'- **false** (default): Do not enable port breakthrough.'."\n" + .'>When both DNAT and SNAT entries use the same public IP address, if you need to configure a port number greater than 1024, you must set **PortBreak** to **true**.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether to perform a dry run of the request. Values:'."\n" + .'- **true**: Sends a check request without creating a DNAT entry. The checks include whether the AccessKey is valid, the RAM user\'s authorization status, and if all required parameters are filled out. If any check fails, the corresponding error is returned. If all checks pass, an error code `DryRunOperation` is returned.'."\n" + .'- **false** (default): Sends a normal request. After passing the checks, it returns a 2xx HTTP status code and creates a DNAT entry.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'ForwardEntryId' => [ + 'description' => 'The ID of the DNAT entry.'."\n", + 'type' => 'string', + 'example' => 'fwd-119smw5tkasdf****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A4AEE536-A97A-40EB-9EBE-53A6948A6928', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedFeature.PrivateLinkEnabled', + 'errorMessage' => 'The feature of PrivateLinkEnabled is not supported.', + ], + [ + 'errorCode' => 'UnsupportedFeature.PortSegment', + 'errorMessage' => 'The feature of PortSegment is not supported.', + ], + [ + 'errorCode' => 'ExclusiveParam.%sAnd%s', + 'errorMessage' => 'The param of %s and %s are mutually exclusive.', + ], + [ + 'errorCode' => 'DuplicatedParam.InternalPort', + 'errorMessage' => 'The param of %s is duplicated.', + ], + [ + 'errorCode' => 'DuplicatedParam.ExternalPort', + 'errorMessage' => 'The param of %s is duplicated.', + ], + [ + 'errorCode' => 'OperationFailed.AnyPortConfig', + 'errorMessage' => 'Operation failed because any port correspondence any protocol', + ], + [ + 'errorCode' => 'OperationUnsupported.ForwardEntry', + 'errorMessage' => 'Duplicated destination ip port is unsupported.', + ], + [ + 'errorCode' => 'InvalidIp.NotInNatgw', + 'errorMessage' => 'The specified Ip not belong to natgateway.', + ], + [ + 'errorCode' => 'QuotaExceeded.ForwardEntry', + 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'Forbidden.IpHasBeenUsedInSnat', + 'errorMessage' => 'The source ip can\'t be used. Because it has been used in snat.', + ], + [ + 'errorCode' => 'InvalidExternalIp.Malformed', + 'errorMessage' => 'The specified ExternalIp is not a valid IP address.', + ], + [ + 'errorCode' => 'InvalidInternalIp.Malformed', + 'errorMessage' => 'The specified InternalIp is not a valid IP address.', + ], + [ + 'errorCode' => 'InvalidExternalPort.Malformed', + 'errorMessage' => 'The specified ExternalPort is not a valid port.', + ], + [ + 'errorCode' => 'InvalidInternalPort.Malformed', + 'errorMessage' => 'The specified InternalPort is not a valid port.', + ], + [ + 'errorCode' => 'Forbidden.DestnationIpOutOfVpcCIDR', + 'errorMessage' => 'The specified Internal Ip is Out of VPC CIDR.', + ], + [ + 'errorCode' => 'Forbidden.DestinationIpOutOfVswitchCIDR', + 'errorMessage' => 'The specified Internal Ip is Out of VSwitch CIDR.', + ], + [ + 'errorCode' => 'InvalidProtocal.ValueNotSupported', + 'errorMessage' => 'The specified IpProtocol does not support.', + ], + [ + 'errorCode' => 'IncorretForwardEntryStatus', + 'errorMessage' => 'Some Forward entry status blocked this operation..', + ], + [ + 'errorCode' => 'ForwardEntry.Duplicated', + 'errorMessage' => 'The specified ExternalIp, IpProtocol, ExternalPort,InternalIp, InternalPort is duplicated', + ], + [ + 'errorCode' => 'Forbidden.ExternalIp.UsedInSnatTable', + 'errorMessage' => 'The specified ExternalIp is already used in SnatTable', + ], + [ + 'errorCode' => 'Forbindden', + 'errorMessage' => 'The specified Instance already bind eip', + ], + [ + 'errorCode' => 'Forbidden.InternalIpOutOfVpcCIDR', + 'errorMessage' => 'The specified Internal Ip is Out of VPC CIDR.', + ], + [ + 'errorCode' => 'Invalid.natgwNotExist', + 'errorMessage' => 'The specified natgateway not exist.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Missing mandatory parameter', + ], + [ + 'errorCode' => 'AnyPort.PortMustBeZero', + 'errorMessage' => 'any port port must be zero.', + ], + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'IncorrectStatus.ForwardEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'Duplicated.DestinationPort', + 'errorMessage' => 'The specified param DestinationPort is duplicated.', + ], + [ + 'errorCode' => 'OperationUnsupported.EipInBinding', + 'errorMessage' => 'Create snat entry with eip in associating status is unsupported.', + ], + [ + 'errorCode' => 'QuotaExceeded.ForwardEntrySessionManytoOne', + 'errorMessage' => 'The dnat session quota is exceed.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'OperationFailed.DnatPortRangeLimit', + 'errorMessage' => 'The maximum number of port ranges that can be specified is exceeded.', + ], + [ + 'errorCode' => 'IncorrectStatus.NATGW', + 'errorMessage' => 'NATGW status is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.ForwardEntryNotAllowSrcIpEqualDstIp', + 'errorMessage' => 'The source IP of forward entry is not allowed to equal destination IP.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidForwardTableId.NotFound', + 'errorMessage' => 'Specified forward table does not exist.', + ], + [ + 'errorCode' => 'InvalidExternalIp.NotFound', + 'errorMessage' => 'Specified External Ip address does not found on the VRouter', + ], + ], + 500 => [ + [ + 'errorCode' => 'System.Error', + 'errorMessage' => 'ERROR SYSTEM ERROR.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"ForwardEntryId\\": \\"fwd-119smw5tkasdf****\\",\\n \\"RequestId\\": \\"A4AEE536-A97A-40EB-9EBE-53A6948A6928\\"\\n}","errorExample":""},{"type":"xml","example":"\\n fwd-119smw5tkasdf****\\n A4AEE536-A97A-40EB-9EBE-53A6948A6928\\n","errorExample":""}]', + 'title' => 'CreateForwardEntry', + 'description' => '## [](#)'."\n" + ."\n" + .'Each DNAT entry consists of the following parameters: **ExternalIp**, **ExternalPort**, **IpProtocol**, **InternalIp**, and **InternalPort**. After you add a DNAT entry, the NAT gateway forwards packets over the specified protocol from **ExternalIp:ExternalPort** to **InternalIp:InternalPort** and sends responses back through the same route.'."\n" + ."\n" + .'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* **CreateForwardEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeForwardTableEntries](~~36053~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the DNAT entry is in the **Pending** state, the system is adding the DNAT entry. You can only query the DNAT entry, but cannot perform other operations.'."\n" + .' * If the DNAT entry is in the **Available** state, the DNAT entry is added.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateForwardEntry** operation to add a DNAT entry within a specific period of time.'."\n" + ."\n" + .'* All combinations of **ExternalIp**, **ExternalPort**, and **IpProtocol** used in DNAT entries must be unique. You cannot distribute requests to more than one Elastic Compute Service (ECS) instance if these requests are initiated from the same source IP address, received on the same port, and use the same protocol.'."\n" + ."\n" + .'* The combinations of **IpProtocol**, **InternalIp**, and **InternalPort** must be unique.'."\n" + ."\n" + .'* If one or more DNAT entries in the DNAT table are in the **Pending** or **Modifying** state, you cannot add DNAT entries to the DNAT table.'."\n" + ."\n" + .'* You can add at most 100 DNAT entries to a DNAT table.'."\n" + ."\n" + .'* For an elastic IP address (EIP) used by an Internet NAT gateway or a NAT IP address used by a Virtual Private Cloud (VPC) NAT gateway, take note of the following limit: If the IP address has IP mapping enabled and is specified in a DNAT entry, the IP address cannot be used by another DNAT or SNAT entry.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'DeleteForwardEntry' => [ + 'summary' => 'Deletes a DNAT entry.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ForwardTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DNAT table to which the DNAT entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ftb-8vbx8xu2lqj9qb334****', + ], + ], + [ + 'name' => 'ForwardEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DNAT entry to be deleted.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'fwd-8vbn3bc8roygjp0gy****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorretForwardEntryStatus', + 'errorMessage' => 'Some Forward entry status blocked this operation..', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Missing mandatory parameter', + ], + [ + 'errorCode' => 'IncorrectStatus.NATGW', + 'errorMessage' => 'The status of the specified NAT gateway is abnormal.', + ], + [ + 'errorCode' => 'IncorrectStatus.ForwardEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidForwardEntryId.NotFound', + 'errorMessage' => 'Specified forward entry ID does not exist', + ], + [ + 'errorCode' => 'InvalidForwardTableId.NotFound', + 'errorMessage' => 'Specified forward table does not exist.', + ], + [ + 'errorCode' => 'ResourceNotFound.ForwardEntry', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DeleteForwardEntry', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **DeleteForwardEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeForwardTableEntries](~~36053~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the DNAT entry is in the **Deleting** state, the system is deleting the DNAT entry. In this case, you can only query the status of the DNAT entry, but cannot perform other operations.'."\n" + .' * If the DNAT entry cannot be found, it is deleted.'."\n" + ."\n" + .'> If a DNAT table has DNAT entries in the **Pending** state, you cannot delete the DNAT entries.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteForwardEntry** operation to delete a DNAT entry within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyForwardEntry' => [ + 'summary' => 'Modifies a DNAT entry.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ForwardTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DNAT table to which the DNAT entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ftb-8vbx8xu2lqj9qb334****', + ], + ], + [ + 'name' => 'ForwardEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DNAT entry.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'fwd-8vbn3bc8roygjp0gy****', + ], + ], + [ + 'name' => 'ExternalIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* When you modify DNAT entries of Internet NAT gateways, this parameter specifies the elastic IP addresses (EIPs) that are used to access the Internet.'."\n" + .'* When you modify DNAT entries of Virtual Private Cloud (VPC) NAT gateways, this parameter specifies the NAT IP addresses that are accessed by external networks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.85.XX.XX', + ], + ], + [ + 'name' => 'ExternalPort', + 'in' => 'query', + 'schema' => [ + 'description' => '* The external port that is used to forward traffic when you modify DNAT entries of Internet NAT gateways.'."\n" + ."\n" + .' * Valid values: **1** to **65535**.'."\n" + .' * If you want to modify the port range, separate port numbers with a forward slash (/), such as `10/20`.'."\n" + .' * If you need to modify **ExternalPort** and **InternalPort** at the same time, and **ExternalPort** specifies a port range, make sure that **InternalPort** also specifies a port range, and both ranges specify the same number of ports. For example, you can set **ExternalPort** to `10/20` and **InternalPort** to `80/90`.'."\n" + ."\n" + .'* The port that is accessed by external networks when you modify DNAT entries of VPC NAT gateways. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'InternalIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* The private IP address of the ECS instance that uses DNAT entries to communicate with the Internet when you modify DNAT entries of Internet NAT gateways.'."\n" + .'* The private IP address that uses DNAT entries to communicate when you modify DNAT entries of VPC NAT gateways.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.78', + ], + ], + [ + 'name' => 'InternalPort', + 'in' => 'query', + 'schema' => [ + 'description' => '* The internal port or port range that is used to forward traffic when you modify DNAT entries of Internet NAT gateways. Valid values: **1** to **65535**.'."\n" + .'* The port of the destination ECS instance to be mapped when you modify DNAT entries of VPC NAT gateways. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **Any**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + ], + ], + [ + 'name' => 'ForwardEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the DNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => ' cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'PortBreak', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to remove limits on the port range. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** If an SNAT entry and a DNAT entry use the same public IP address, and you want to specify a port number greater than `1024`, set `PortBreak` to `true`.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'- true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + ."\n" + .'- false (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD97C3', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedFeature.PortSegment', + 'errorMessage' => 'The feature of PortSegment is not supported.', + ], + [ + 'errorCode' => 'ExclusiveParam.%sAnd%s', + 'errorMessage' => 'The param of %s and %s are mutually exclusive.', + ], + [ + 'errorCode' => 'InvalidIp.NotInNatgw', + 'errorMessage' => 'The specified Ip not belong to natgateway.', + ], + [ + 'errorCode' => 'DuplicatedParam.InternalPort', + 'errorMessage' => 'The param of %s is duplicated.', + ], + [ + 'errorCode' => 'DuplicatedParam.ExternalPort', + 'errorMessage' => 'The param of %s is duplicated.', + ], + [ + 'errorCode' => 'OperationFailed.AnyPortConfig', + 'errorMessage' => 'Operation failed because any port correspondence any protocol', + ], + [ + 'errorCode' => 'OperationUnsupported.ForwardEntry', + 'errorMessage' => 'Duplicated destination ip port is unsupported.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'Forbidden.IpHasBeenUsedInSnat', + 'errorMessage' => 'The source ip can\'t be used. Because it has been used in snat.', + ], + [ + 'errorCode' => 'IncorrectStatus.ForwardEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'InvalidExternalIp.Malformed', + 'errorMessage' => 'The specified ExternalIp is not a valid IP address.', + ], + [ + 'errorCode' => 'InvalidInternalIp.Malformed', + 'errorMessage' => 'The specified InternalIp is not a valid IP address.', + ], + [ + 'errorCode' => 'InvalidExternalPort.Malformed', + 'errorMessage' => 'The specified ExternalPort is not a valid port.', + ], + [ + 'errorCode' => 'InvalidInternalPort.Malformed', + 'errorMessage' => 'The specified InternalPort is not a valid port.', + ], + [ + 'errorCode' => 'Forbidden.DestnationIpOutOfVpcCIDR', + 'errorMessage' => 'The specified Destination Ip is Out of VPC CIDR.', + ], + [ + 'errorCode' => 'InvalidProtocal.ValueNotSupported', + 'errorMessage' => 'The specified IpProtocol does not support.', + ], + [ + 'errorCode' => 'IncorretForwardEntryStatus', + 'errorMessage' => 'Some Forward entry status blocked this operation..', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'Forward entry quota exceeded in this route table.', + ], + [ + 'errorCode' => 'ForwardEntry.Duplicated', + 'errorMessage' => 'The specified ExternalIp, IpProtocol, ExternalPort,InternalIp, InternalPort is duplicated', + ], + [ + 'errorCode' => 'Forbidden.ExternalIp.UsedInSnatTable', + 'errorMessage' => 'The specified ExternalIp is already used in SnatTable', + ], + [ + 'errorCode' => 'Forbidden.Already.Bounded', + 'errorMessage' => 'The specified instance already bounded', + ], + [ + 'errorCode' => 'InvalidIp.NotFound', + 'errorMessage' => 'The specified ip does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.Name.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'IncorretStatus.ForwardEntry', + 'errorMessage' => 'The Specified forwardEntry is not stable status, can not operation', + ], + [ + 'errorCode' => 'IllegalParam.AnyPortNotZero', + 'errorMessage' => 'Any port port must be zero.', + ], + [ + 'errorCode' => 'Duplicated.DestinationPort', + 'errorMessage' => 'The specified param DestinationPort is duplicated.', + ], + [ + 'errorCode' => 'InvalidForwardEntryId.NotFound', + 'errorMessage' => 'Specified forward entry ID does not exist', + ], + [ + 'errorCode' => 'OperationUnsupported.EipInBinding', + 'errorMessage' => 'Create snat entry with eip in associating status is unsupported.', + ], + [ + 'errorCode' => 'QuotaExceeded.ForwardEntrySessionManytoOne', + 'errorMessage' => 'The dnat session quota is exceed.', + ], + [ + 'errorCode' => 'OperationFailed.ForwardEntryNotAllowSrcIpEqualDstIp', + 'errorMessage' => 'The source IP of forward entry is not allowed to equal destination IP.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.ForwardEntry', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidForwardEntryId.NotFound', + 'errorMessage' => 'Specified forward entry ID does not exist', + ], + [ + 'errorCode' => 'InvalidExternalIp.NotFound', + 'errorMessage' => 'Specified External Ip address does not found on the VRouter', + ], + [ + 'errorCode' => 'InvalidForwardTableId.NotFound', + 'errorMessage' => 'Specified forward table does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\n","errorExample":""}]', + 'title' => 'ModifyForwardEntry', + 'description' => '* **ModifyForwardEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeForwardTableEntries](~~36053~~) operation to query the status of the task.'."\n" + ."\n" + .' * **Pending**: indicates that the system is modifying the DNAT entry. You can only query the DNAT entry, but cannot perform other operations.'."\n" + .' * **Available**: indicates that the DNAT entry is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyForwardEntry** operation to modify a DNAT entry within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'DescribeForwardTableEntries' => [ + 'summary' => 'Queries DNAT entries.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the NAT gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ForwardTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DNAT table.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Description** You must specify at least one of **ForwardTableId** and **NatGatewayId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ftb-bp1mbjubq34hlcqpa****', + ], + ], + [ + 'name' => 'ForwardEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the DNAT entry.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'fwd-8vbn3bc8roygjp0gy****', + ], + ], + [ + 'name' => 'ExternalIp', + 'in' => 'query', + 'schema' => [ + 'description' => '* The elastic IP addresses (EIPs) that can be accessed over the Internet when you query DNAT entries of Internet NAT gateways.'."\n" + .'* The NAT IP addresses that can be accessed by external networks when you query DNAT entries of Virtual Private Cloud (VPC) NAT gateways.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.28.XX.XX', + ], + ], + [ + 'name' => 'ExternalPort', + 'in' => 'query', + 'schema' => [ + 'description' => '* The external port or port range that is used for port forwarding when you query DNAT entries of Internet NAT gateways.'."\n" + ."\n" + .' * Valid values: **1** to **65535**.'."\n" + .' * If you want to query a port range, separate the first port and last port with a forward slash (/), such as `10/20`.'."\n" + .' * If you set **ExternalPort** to a port range, you must also set **InternalPort** to a port range, and the number of ports specified by these parameters must be the same. For example, if you set **ExternalPort** to `10/20`, you can set **InternalPort** to `80/90`.'."\n" + ."\n" + .'* The port that is used when the NAT IP address can be accessed by external networks when you query DNAT entries of VPC NAT gateways. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '8080', + ], + ], + [ + 'name' => 'InternalIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP address.'."\n" + ."\n" + .'* The private IP address of the ECS instance that uses DNAT entries to communicate with the Internet when you query DNAT entries of Internet NAT gateways.'."\n" + .'* The private IP address that uses DNAT entries for communication when you query DNAT entries of VPC NAT gateways.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX ', + ], + ], + [ + 'name' => 'InternalPort', + 'in' => 'query', + 'schema' => [ + 'description' => '* The internal port or port range that is used for port forwarding when you query DNAT entries of Internet NAT gateways. Valid values: **1** to **65535**.'."\n" + .'* The port of the destination ECS instance to be mapped when you query DNAT entries of VPC NAT gateways. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **Any**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + ], + ], + [ + 'name' => 'ForwardEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the DNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ForwardEntry-1', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Description** You must specify at least one of **ForwardTableId** and **NatGatewayId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A6C4A8B1-7561-4509-949C-20DEB40D71E6', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'ForwardTableEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ForwardTableEntry' => [ + 'description' => 'The details of DNAT entries.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the DNAT entry. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'ForwardEntryId' => [ + 'description' => 'The ID of the DNAT entry.'."\n", + 'type' => 'string', + 'example' => 'fwd-119smw5tk****', + ], + 'InternalIp' => [ + 'description' => 'The private IP address.'."\n" + ."\n" + .'* The private IP address of the ECS instance that uses DNAT entries to communicate with the Internet when you query DNAT entries of Internet NAT gateways.'."\n" + .'* The private IP address that uses DNAT entries when you query DNAT entries of VPC NAT gateways.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'InternalPort' => [ + 'description' => '* The internal port or port range that is used for port forwarding when you query DNAT entries of Internet NAT gateways.'."\n" + .'* The destination ECS instance port to be mapped when you query DNAT entries of VPC NAT gateways.'."\n", + 'type' => 'string', + 'example' => '25', + ], + 'ForwardEntryName' => [ + 'description' => 'The name of the DNAT entry.'."\n", + 'type' => 'string', + 'example' => 'ForwardEntry-1', + ], + 'ForwardTableId' => [ + 'description' => 'The ID of the DNAT table to which the DNAT entry belongs.'."\n", + 'type' => 'string', + 'example' => 'ftb-11tc6xgmv****', + ], + 'IpProtocol' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n" + .'* **Any**'."\n", + 'type' => 'string', + 'example' => 'TCP', + ], + 'ExternalPort' => [ + 'description' => '* The external port or port range that is used for port forwarding when you query DNAT entries of Internet NAT gateways.'."\n" + .'* The port that is used when the NAT IP address can be accessed by external networks when you query DNAT entries of VPC NAT gateways.'."\n", + 'type' => 'string', + 'example' => '80', + ], + 'ExternalIp' => [ + 'description' => '* The EIPs that can be accessed over the Internet when you query DNAT entries of Internet NAT gateways.'."\n" + .'* The NAT IP addresses that can be accessed by external networks when you query DNAT entries of VPC NAT gateways.'."\n", + 'type' => 'string', + 'example' => '139.79.XX.XX', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the NAT gateway to which the DNAT entry belongs.'."\n", + 'type' => 'string', + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorretForwardEntryStatus', + 'errorMessage' => 'Some Forward entry status blocked this operation..', + ], + [ + 'errorCode' => 'DESCRIBE_FORWARD_PARAM_INVALID', + 'errorMessage' => 'ForwardTableId and natGatewayId can not both be null', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidForwardTableId.NotFound', + 'errorMessage' => 'Specified forwardTableId does not exist', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"A6C4A8B1-7561-4509-949C-20DEB40D71E6\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 5,\\n \\"ForwardTableEntries\\": {\\n \\"ForwardTableEntry\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"ForwardEntryId\\": \\"fwd-119smw5tk****\\",\\n \\"InternalIp\\": \\"192.168.XX.XX\\",\\n \\"InternalPort\\": \\"25\\",\\n \\"ForwardEntryName\\": \\"ForwardEntry-1\\",\\n \\"ForwardTableId\\": \\"ftb-11tc6xgmv****\\",\\n \\"IpProtocol\\": \\"tcp\\",\\n \\"ExternalPort\\": \\"80\\",\\n \\"ExternalIp\\": \\"139.79.XX.XX\\",\\n \\"NatGatewayId\\": \\"ngw-bp1uewa15k4iy5770****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n A6C4A8B1-7561-4509-949C-20DEB40D71E6\\n 1\\n 5\\n \\n Available\\n fwd-119smw5tk****\\n 192.168.XX.XX\\n 25\\n ForwardEntry-1\\n ftb-11tc6xgmv****\\n TCP\\n 80\\n 139.79.XX.XX\\n ngw-bp1uewa15k4iy5770****\\n \\n","errorExample":""}]', + 'title' => 'DescribeForwardTableEntries', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateFullNatEntry' => [ + 'summary' => 'Adds a FULLNAT entry to the FULLNAT table.', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a value, and you must make sure that each request has a unique token value. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'FullNatTableId', + 'in' => 'query', + 'schema' => [ + 'title' => 'FullNAT条目所属的FullNAT列表的ID。', + 'description' => 'The ID of the FULLNAT table to which the FULLNAT entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The elastic network interface (ENI) ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-gw8g131ef2dnbu3k****', + ], + ], + [ + 'name' => 'NatIp', + 'in' => 'query', + 'schema' => [ + 'title' => '提供入方向访问的IP地址,该公网IP需要是当前VpcNat下的NatIP', + 'description' => 'The NAT IP address that provides address translation.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'NatIpPort', + 'in' => 'query', + 'schema' => [ + 'title' => '需要进行端口转发的外部端口,取值范围:1~65535。', + 'description' => 'The frontend port to be modified in the mapping of FULLNAT port. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'AccessIp', + 'in' => 'query', + 'schema' => [ + 'title' => '需要进行转发的后端IP', + 'description' => 'The backend IP address to be modified in FULLNAT address translation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'AccessPort', + 'in' => 'query', + 'schema' => [ + 'title' => '需要进行端口转发的内部端口,取值范围:1~65535。', + 'description' => 'The backend port to be modified in the mapping of FULLNAT port. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '80', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'title' => '协议类型,取值: • TCP:转发TCP协议的报文。 • UDP:转发UDP协议的报文。', + 'description' => 'The protocol of the packets that are forwarded by the port. Valid values:'."\n" + ."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'TCP', + ], + ], + [ + 'name' => 'FullNatEntryName', + 'in' => 'query', + 'schema' => [ + 'title' => 'FULLNAT规则的名称。 长度为2~128个字符,必须以大小写字母或中文开头,但不能以http://或https://开头。', + 'description' => 'The FULLNAT entry name. The name must be 2 to 128 characters in length. It must start with a letter but cannot start with http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'FullNatEntryDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the FULLNAT entry.'."\n" + ."\n" + .'This parameter is optional. If you enter a description, the description must be 2 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck this request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without adding the FULLNAT entry. The system checks whether your AccessKey pair is valid, whether RAM users are granted required permissions, and whether the required parameters are set. If the request fails to pass the precheck, an error code is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the API request. This is the default value. After the request passes the precheck, a 2XX HTTP status code is returned and the FULLNAT entry is added.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Virtual Private Cloud (VPC) NAT gateway to which the FULLNAT entry to be added belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'AccessDomain', + 'in' => 'query', + 'schema' => [ + 'description' => 'The backend domain name for FULLNAT address translation.', + 'type' => 'string', + 'required' => false, + 'example' => 'xxx.com', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD97C3', + ], + 'FullNatEntryId' => [ + 'description' => 'The FULLNAT entry ID.'."\n", + 'type' => 'string', + 'example' => 'fullnat-gw8fz23jezpbblf1j****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IllegalParamFormat.NatIp', + 'errorMessage' => 'The param format of %s[%s] is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.PrivateLinkMode', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'QuotaExceeded.FullNatEntry', + 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.FullNatEntry', + 'errorMessage' => 'The specified resource of %s is already exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.NetworkInterface', + 'errorMessage' => 'The status of network interface is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.AllocateNatIpPortFailed', + 'errorMessage' => 'NatIpPort allocation failed.', + ], + [ + 'errorCode' => 'IllegalParam.NetworkInterfaceId', + 'errorMessage' => 'The param of NetworkInterfaceId is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.AccessDomain', + 'errorMessage' => 'The request parameter AccessDomain is illegal.', + ], + [ + 'errorCode' => 'ExclusiveParam.AccessIpAndAccessDomain', + 'errorMessage' => 'The specified AccessIp and AccessDomain are mutually exclusive.', + ], + [ + 'errorCode' => 'InstanceUnsupported.FullNatDomain', + 'errorMessage' => 'The current instance does not support the configuration of the FullNat rule domain name.', + ], + [ + 'errorCode' => 'ZoneUnsupported.FullNatDomain', + 'errorMessage' => 'The current zone does not support the configuration of the FullNat rule domain name.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The NatGateway instance not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\",\\n \\"FullNatEntryId\\": \\"fullnat-gw8fz23jezpbblf1j****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\n fullnat-gw8fz23jezpbblf1j****\\n","errorExample":""}]', + 'title' => 'CreateFullNatEntry', + 'description' => '* **CreateFullNatEntry** is an asynchronous operation. After you send a request to call this operation, the system returns a FULLNAT entry and the FULLNAT entry is being added in the backend. You can call the [ListFullNatEntries](~~348779~~) operation to query the status of a FULLNAT entry.'."\n" + ."\n" + .' * If the FULLNAT entry is in the **Creating** state, the system is adding the FULLNAT entry. You can only query the status of the FULLNAT entry, but cannot perform other operations.'."\n" + .' * If the FULLNAT entry is in the **Available** state, the FULLNAT entry is added.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateFullNatEntry** operation for the same VPN gateway within the specified period of time.', + 'translator' => 'machine', + ], + 'DeleteFullNatEntry' => [ + 'summary' => 'Deletes a FULLNAT entry.', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'FullNatTableId', + 'in' => 'query', + 'schema' => [ + 'title' => 'FullNAT条目所属的FullNAT列表的ID。', + 'description' => 'The ID of the FULLNAT table to which the FULLNAT entry to be deleted belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + ], + [ + 'name' => 'FullNatEntryId', + 'in' => 'query', + 'schema' => [ + 'title' => '要修改的DNAT条目的ID。', + 'description' => 'The ID of the FULLNAT entry that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fullnat-gw8fz23jezpbblf1j****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, the related error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + .'* **false**: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPC NAT gateway to which the FULLNAT entry to be deleted belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eu-central-1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2BCC426F-A9F2-3F03-99D2-1E0D647236DB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.FullNatEntry', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.FullNatEntry', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.FullNatTableId', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2BCC426F-A9F2-3F03-99D2-1E0D647236DB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2BCC426F-A9F2-3F03-99D2-1E0D647236DB\\n","errorExample":""}]', + 'title' => 'DeleteFullNatEntry', + 'description' => '## [](#)Description'."\n" + ."\n" + .'**DeleteFullNatEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListFullNatEntries](~~348779~~) operation to query the status of a FULLNAT entry.'."\n" + ."\n" + .'* If the FULLNAT entry is in the **Deleting** state, the system is deleting the FULLNAT entry. In this case, you can query the status of the FULLNAT entry, but cannot perform other operations.'."\n" + .'* If the FULLNAT entry cannot be found, the FULLNAT entry is deleted.'."\n" + ."\n" + .'You cannot repeatedly call the **DeleteFullNatEntry** operation to delete a FULLNAT entry within the specified period of time.'."\n", + ], + 'ModifyFullNatEntryAttribute' => [ + 'summary' => 'Modifies a FULLNAT entry.', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'FullNatTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the FULLNAT table to be modified.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + ], + [ + 'name' => 'FullNatEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the FULLNAT entry to be modified.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'fullnat-gw8fz23jezpbblf1j****', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the elastic network interface (ENI) to be modified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-gw8g131ef2dnbu3k****', + ], + ], + [ + 'name' => 'NatIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The NAT IP address to be modified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'NatIpPort', + 'in' => 'query', + 'schema' => [ + 'description' => 'The frontend port to be modified in FULLNAT port mapping. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'AccessIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The backend IP address to be modified in FULLNAT address translation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.XX.XX', + ], + ], + [ + 'name' => 'AccessPort', + 'in' => 'query', + 'schema' => [ + 'description' => 'The backend port to be modified in FULLNAT port mapping. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol of the packets that are forwarded by the port. Valid values:'."\n" + ."\n" + .'* **TCP**: TCP'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + ], + ], + [ + 'name' => 'FullNatEntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the FULLNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'modify', + ], + ], + [ + 'name' => 'FullNatEntryDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the FULLNAT entry.'."\n" + ."\n" + .'You can leave this parameter empty or enter a description. If you enter a description, the description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abcd', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Virtual Private Cloud (VPC) NAT gateway to which the FULLNAT entry to be modified belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'AccessDomain', + 'in' => 'query', + 'schema' => [ + 'description' => 'The backend domain name of the FULLNAT address translation that needs to be modified.', + 'type' => 'string', + 'required' => false, + 'example' => 'xxx.com', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD97C3', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.NetworkInterfaceId', + 'errorMessage' => 'The specified resource is not found.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.FullNatEntry', + 'errorMessage' => 'The specified resource of %s is already exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'UnsupportedFeature.PrivateLinkMode', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'DependencyViolation.PrivateLinkMode', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IllegalParam.AccessDomain', + 'errorMessage' => 'The request parameter AccessDomain is illegal.', + ], + [ + 'errorCode' => 'ExclusiveParam.AccessIpAndAccessDomain', + 'errorMessage' => 'The specified AccessIp and AccessDomain are mutually exclusive.', + ], + [ + 'errorCode' => 'InstanceUnsupported.FullNatDomain', + 'errorMessage' => 'The current instance does not support the configuration of the FullNat rule domain name.', + ], + [ + 'errorCode' => 'ZoneUnsupported.FullNatDomain', + 'errorMessage' => 'The current zone does not support the configuration of the FullNat rule domain name.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\n","errorExample":""}]', + 'title' => 'ModifyFullNatEntryAttribute', + 'description' => '## [](#)'."\n" + ."\n" + .'* **ModifyFullNatEntryAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListFullNatEntries](~~348779~~) operation to query the status of a FULLNAT entry.'."\n" + ."\n" + .' * **Modifying**: indicates that the system is modifying the FULLNAT entry. You can query the FULLNAT entry, but cannot perform other operations.'."\n" + .' * **Available**: indicates that the FULLNAT entry is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyFullNatEntryAttribute** operation to modify a FULLNAT entry within the specified period of time.'."\n", + 'translator' => 'machine', + ], + 'ListFullNatEntries' => [ + 'summary' => 'Queries FULLNAT entries.', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'FullNatTableId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the FULLNAT table to which the FULLNAT entries to be queried belong.'."\n" + ."\n" + .'> You must specify at least one of **FullNatTableId** and **NatGatewayId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + ], + [ + 'name' => 'FullNatEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the FULLNAT entry that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'fullnat-gw8fz23jezpbblf1j****', + ], + ], + [ + 'name' => 'FullNatEntryNames', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The name of the FULLNAT entry that you want to query. You can specify at most 20 names.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The name of the FULLNAT entry that you want to query. You can specify at most 20 names.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'NetworkInterfaceIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the elastic network interface (ENI) that you want to query.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the ENI that you want to query. You can specify up to 20 ENIs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-gw80wedm8pq0tpr2****', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of the **NextToken** parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the virtual private cloud (VPC) NAT gateway to which the FULLNAT entries to be queried belong.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol of the packets that are forwarded by the port. Valid values:'."\n" + ."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n" + ."\n" + .'> You must specify at least one of **FullNatTableId** and **NatGatewayId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ngw-bp1uewa15k4iy5770****', + ], + ], + [ + 'name' => 'NatIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The NAT IP address that provides address translation in FULLNAT entries.', + 'type' => 'string', + 'required' => false, + 'example' => '10.0.XX.XX', + ], + ], + [ + 'name' => 'NatIpPort', + 'in' => 'query', + 'schema' => [ + 'description' => 'The frontend port to be modified in the mapping of FULLNAT port. Valid values: **1** to **65535**.', + 'type' => 'string', + 'required' => false, + 'example' => '443', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F03E41F6-1A74-311F-8D98-124EEE9F37B8', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the VPC NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'ngw-gw8054kn57y3hq3bv****', + ], + 'FullNatTableId' => [ + 'description' => 'The ID of the FULLNAT table to which the queried FULLNAT entries belong.'."\n", + 'type' => 'string', + 'example' => 'fullnat-gw8fz23jezpbblf1j****', + ], + 'TotalCount' => [ + 'description' => 'The number of FULLNAT entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'NextToken' => [ + 'description' => 'Indicates whether the token for the next query exists. Valid values:'."\n" + ."\n" + .'* If the value of **NextToken** is empty, no next queries are sent.'."\n" + .'* If the value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'MaxResults' => [ + 'description' => 'The maximum number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'FullNatEntries' => [ + 'description' => 'The information about the FULLNAT entries that are queried.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NatIp' => [ + 'title' => 'DNAT条目中提供公网访问的公网IP地址。', + 'description' => 'The NAT IP address that is used for address translation in FULLNAT entries.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'NatIpPort' => [ + 'title' => 'DNAT条目中进行端口转发的外部端口,取值范围:1~65535。', + 'description' => 'The frontend port that is used for port mapping in FULLNAT entries. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '80', + ], + 'AccessIp' => [ + 'title' => '通过DNAT条目进行公网通信的ECS实例的私网IP地址。', + 'description' => 'The backend IP address that is used for FULLNAT address translation in FULLNAT entries.'."\n", + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + 'AccessPort' => [ + 'title' => 'DNAT条目中进行端口转发的内部端口,取值范围:1-65535。', + 'description' => 'The backend port that is used for port mapping in FULLNAT entries. Valid values: **1** to **65535**.'."\n", + 'type' => 'string', + 'example' => '80', + ], + 'IpProtocol' => [ + 'title' => '协议类型,取值: • TCP:转发TCP协议的报文。 • UDP:转发UDP协议的报文。', + 'description' => 'The protocol of the packets that are forwarded. Valid values:'."\n" + ."\n" + .'* **TCP**'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'example' => 'TCP', + ], + 'NetworkInterfaceId' => [ + 'title' => '当前VpcNat作为服务资源所加入的eni', + 'description' => 'The ID of the elastic network interface (ENI).'."\n", + 'type' => 'string', + 'example' => 'eni-gw80wedm8pq0tpr2****', + ], + 'NetworkInterfaceType' => [ + 'title' => 'ENI类型,目前仅支持Endpoint', + 'description' => 'The type of the ENI. The value is set to **Endpoint**, which indicates a reverse endpoint.'."\n", + 'type' => 'string', + 'example' => 'Endpoint', + ], + 'FullNatEntryName' => [ + 'title' => 'FULLNAT规则的名称。 长度为2~128个字符,必须以大小写字母或中文开头,但不能以http://或https://开头。', + 'description' => 'The name of the FULLNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'FullNatEntryDescription' => [ + 'description' => 'The description of the FULLNAT entry.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'abc', + ], + 'CreationTime' => [ + 'description' => 'The time when the FULLNAT entry was created.'."\n", + 'type' => 'string', + 'example' => '2021-10-27T02:44:40Z', + ], + 'FullNatEntryId' => [ + 'description' => 'The ID of the FULLNAT entry.'."\n", + 'type' => 'string', + 'example' => 'fullnat-gw8fz23jezpbblf1j****', + ], + 'FullNatEntryStatus' => [ + 'description' => 'The status of the FULLNAT entry. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n" + .'* **Deleting**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'FullNatTableId' => [ + 'description' => 'The ID of the FULLNAT table to which the FULLNAT entry belongs.'."\n", + 'type' => 'string', + 'example' => 'fulltb-gw88z7hhlv43rmb26****', + ], + 'AccessDomain' => [ + 'description' => 'The backend domain name for FULLNAT address translation in a FULLNAT entry.', + 'type' => 'string', + 'example' => 'xxx.com', + ], + 'DomainResolve' => [ + 'description' => 'The IP resolved from the backend domain name for address translation in the FULLNAT entry.', + 'type' => 'string', + 'example' => '192.168.XX.XX', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.FullNatTableId', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'MissingParam.FullnatTableIdOrNatGatewayId', + 'errorMessage' => 'FullnatTableId and natGatewayId can not both be null', + ], + [ + 'errorCode' => 'ResourceNotFound.FullNatTable', + 'errorMessage' => 'The NAT gateway has no full nat table.', + ], + [ + 'errorCode' => 'NATGW_NOT_EXIST', + 'errorMessage' => 'The specified NAT gateway does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F03E41F6-1A74-311F-8D98-124EEE9F37B8\\",\\n \\"NatGatewayId\\": \\"ngw-gw8054kn57y3hq3bv****\\",\\n \\"FullNatTableId\\": \\"fullnat-gw8fz23jezpbblf1j****\\",\\n \\"TotalCount\\": 1,\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"MaxResults\\": 1,\\n \\"FullNatEntries\\": [\\n {\\n \\"NatIp\\": \\"192.168.XX.XX\\",\\n \\"NatIpPort\\": \\"80\\",\\n \\"AccessIp\\": \\"192.168.XX.XX\\",\\n \\"AccessPort\\": \\"80\\",\\n \\"IpProtocol\\": \\"TCP\\",\\n \\"NetworkInterfaceId\\": \\"eni-gw80wedm8pq0tpr2****\\",\\n \\"NetworkInterfaceType\\": \\"Endpoint\\",\\n \\"FullNatEntryName\\": \\"test\\",\\n \\"FullNatEntryDescription\\": \\"abc\\",\\n \\"CreationTime\\": \\"2021-10-27T02:44:40Z\\",\\n \\"FullNatEntryId\\": \\"fullnat-gw8fz23jezpbblf1j****\\",\\n \\"FullNatEntryStatus\\": \\"Available\\",\\n \\"FullNatTableId\\": \\"fulltb-gw88z7hhlv43rmb26****\\",\\n \\"AccessDomain\\": \\"xxx.com\\",\\n \\"DomainResolve\\": \\"192.168.XX.XX\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n F03E41F6-1A74-311F-8D98-124EEE9F37B8\\n ngw-gw8054kn57y3hq3bv****\\n fullnat-gw8fz23jezpbblf1j****\\n 1\\n caeba0bbb2be03f84eb48b699f0a4883\\n 1\\n \\n 192.168.XX.XX\\n 80\\n 192.168.XX.XX\\n 80\\n TCP\\n eni-gw80wedm8pq0tpr2****\\n Endpoint\\n test\\n abc\\n 2021-10-27T02:44:40Z\\n fullnat-gw8fz23jezpbblf1j****\\n Available\\n fulltb-gw88z7hhlv43rmb26****\\n \\n","errorExample":""}]', + 'title' => 'ListFullNatEntries', + 'translator' => 'machine', + ], + 'CreateNatIp' => [ + 'summary' => 'Creates a NAT IP address.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT IP address that you want to create belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Virtual Private Cloud (VPC) NAT gateway for which you want to create the NAT IP address.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + ], + [ + 'name' => 'NatIpName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the NAT IP address.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. The name must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'newnatip', + ], + ], + [ + 'name' => 'NatIpDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the NAT IP address.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length and start with a letter. The description cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'NatIpCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block to which the NAT IP address belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.0.0/24', + ], + ], + [ + 'name' => 'NatIp', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The NAT IP address that you want to create.'."\n" + ."\n" + .'If you do not specify an IP address, the system randomly allocates an IP address from the specified CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.34', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT IP address that you want to create belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'Ipv4Prefix', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '', + 'description' => 'The created IP prefix address segment must be within the reserved network segment of the switch where the NAT is located, and the reserved network segment cannot be occupied. The IP prefix mask must be /28.', + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'Ipv4PrefixCount', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The number of automatically assigned IP prefixes. These are randomly allocated from the unassigned reserved segments of the switch where the NAT is located. Value range: 1 to 10.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The created NAT IP address.'."\n", + 'type' => 'object', + 'properties' => [ + 'NatIp' => [ + 'description' => 'The NAT IP address.'."\n", + 'type' => 'string', + 'example' => '192.168.0.34', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E9AD97A0-5338-43F8-8A80-5E274CCBA11B', + ], + 'NatIpId' => [ + 'description' => 'The ID of the NAT IP address.'."\n", + 'type' => 'string', + 'example' => 'vpcnatip-gw8y7q3cpk3fggs8****', + ], + 'Ipv4Prefix' => [ + 'title' => '旧接口返回的Ipv4Prefix,已经废弃。', + 'description' => 'The IPv4Prefix returned by the previous API is obsolete.'."\n", + 'type' => 'string', + 'example' => '""', + ], + 'NatIps' => [ + 'title' => '创建NatIp后返回的NatIp参数,当使用IPv4Prefix创建NatIp后将返回所有的NatIp信息,当创建单个NatIp时也推荐使用此参数获取NatIp信息。', + 'description' => 'The NatIp parameter that is returned after you create a NatIp. If you use IPv4Prefix to create a NatIp, the information about all NatIp is returned. We recommend that you use this parameter to obtain the information about a NatIp when you create a NatIp.'."\n", + 'type' => 'array', + 'items' => [ + 'title' => '创建的Ipv4Preix时返回创建的NatIpList列表。', + 'description' => 'The list of created NatIpLists is returned when Ipv4Preix is created.'."\n", + 'type' => 'object', + 'properties' => [ + 'NatIp' => [ + 'title' => '创建的Ipv4Preix时返回创建的NatIpList列表的NatIp地址。', + 'description' => 'Returns the NatIp address of the created NatIpList list when Ipv4Preix is created.'."\n", + 'type' => 'string', + 'example' => '192.168.2.128', + ], + 'NatIpId' => [ + 'title' => '创建的Ipv4Preix时返回创建的NatIpList列表的NatIpId。', + 'description' => 'Returns the NatIpId of the created NatIpList list when Ipv4Preix is created.'."\n", + 'type' => 'string', + 'example' => 'vpcnatip-xxxxxxxx', + ], + 'Ipv4Prefix' => [ + 'title' => '创建的Ipv4Preix时返回创建的NatIpList列表的Ipv4Prefix。', + 'description' => 'The Ipv4Prefix of the created NatIpList list is returned when Ipv4Preix is created.'."\n", + 'type' => 'string', + 'example' => '192.168.1.128/28', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Mismatch.NatIpAndNatIpCidr', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIpCidr', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => '%The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'QuotaExceeded.NatIp', + 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', + ], + [ + 'errorCode' => 'ResourceNotEnough.SwitchAvailableIps', + 'errorMessage' => 'The available private Ip number is not enough in your subnet.', + ], + [ + 'errorCode' => 'ResourceNotEnough.NatIp', + 'errorMessage' => 'The specified resource of NatIp is not enough.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.NatIp', + 'errorMessage' => 'The specified resource of NatIp has already exist.', + ], + [ + 'errorCode' => 'Mismatch.Ipv4PrefixAndNatIpCidr', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'Mismatch.Ipv4PrefixAndCidrReservations', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.Ipv4Prefix', + 'errorMessage' => '%s is already associated.', + ], + [ + 'errorCode' => 'ResourceNotEnough.Ipv4Prefix', + 'errorMessage' => 'The resource of %s is not enough.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ipv4Prefix', + 'errorMessage' => 'The resource of s% is not found.', + ], + [ + 'errorCode' => 'ResourceAlreadyAssociated.NatIp', + 'errorMessage' => 'The resource of %s was already associated.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv4Prefix', + 'errorMessage' => 'The param of %s is illegal, must be /28 network segment.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.Ipv4Prefix', + 'errorMessage' => 'The specified resource of %s is already exist.', + ], + [ + 'errorCode' => 'QuotaExceeded.Ipv4Prefix', + 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', + ], + [ + 'errorCode' => 'OperationFailed.InstanceNotSupport', + 'errorMessage' => 'natgateway not support ipv4prefix.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NatIp\\": \\"192.168.0.34\\",\\n \\"RequestId\\": \\"E9AD97A0-5338-43F8-8A80-5E274CCBA11B\\",\\n \\"NatIpId\\": \\"vpcnatip-gw8y7q3cpk3fggs8****\\",\\n \\"Ipv4Prefix\\": \\"\\\\\\"\\\\\\"\\",\\n \\"NatIps\\": [\\n {\\n \\"NatIp\\": \\"192.168.2.128\\",\\n \\"NatIpId\\": \\"vpcnatip-xxxxxxxx\\",\\n \\"Ipv4Prefix\\": \\"192.168.1.128/28\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 192.168.0.34\\n E9AD97A0-5338-43F8-8A80-5E274CCBA11B\\n vpcnatip-gw8y7q3cpk3fggs8****\\n","errorExample":""}]', + 'title' => 'CreateNatIp', + 'description' => '## [](#)'."\n" + ."\n" + .'**CreateNatIp** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListNatIps](~~287000~~) operation to query the status of the task.'."\n" + ."\n" + .'* If a NAT IP address is in the **Creating** state, the NAT IP address is being created. In this case, you can only query the NAT IP address and cannot perform other operations.'."\n" + .'* If a NAT IP address is in the **Available** state, the NAT IP address is created.'."\n" + ."\n" + .'You cannot repeatedly call the **CreateNatIp** operation to create a NAT IP address within a specific period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'translator' => 'machine', + ], + 'DeleteNatIp' => [ + 'summary' => 'Deletes a NAT IP address.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT IP address that you want to delete belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'NatIpId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The ID of the NAT IP address that you want to delete.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'vpcnatip-gw8y7q3cpk3fggs87****', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway instance to which the IP prefix to be deleted belongs. Required when deleting an IP prefix.', + 'type' => 'string', + 'required' => false, + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + ], + [ + 'name' => 'Ipv4Prefix', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP prefix address to be deleted.', + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/28', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT IP address that you want to delete belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-qingdao', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E9AD97A0-5338-43F8-8A80-5E274CCBA11B', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.NatIp', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.DefaultNatIp', + 'errorMessage' => 'The operation is failed because of default NatIP can not be deleted.', + ], + [ + 'errorCode' => 'DependencyViolation.NatIp', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.FullNatEntry', + 'errorMessage' => 'The fullnat entry depends on this nat ip,so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IllegalParam.NatIp', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'Mismatch.Ipv4PrefixAndNatIpCidr', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'Mismatch.Ipv4PrefixAndCidrReservations', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv4Prefix', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'DependencyViolation.%s', + 'errorMessage' => 'The specified resource of [%s] depends on [%s], so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.SnatEntry', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.Ipv4Prefix', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIpCidr', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.%s', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ipv4Prefix', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E9AD97A0-5338-43F8-8A80-5E274CCBA11B\\"\\n}","errorExample":""},{"type":"xml","example":"\\n E9AD97A0-5338-43F8-8A80-5E274CCBA11B\\n","errorExample":""}]', + 'title' => 'DeleteNatIp', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **DeleteNatIp** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListNatIps](~~281979~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the NAT IP address is in the **Deleting** state, the NAT IP address is being deleted. In this case, you can only query the NAT IP address but cannot perform other operations.'."\n" + .' * If the NAT IP address cannot be found, it is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteNatIp** operation to delete a NAT IP address within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'ModifyNatIpAttribute' => [ + 'summary' => 'Modifies the name and description of a NAT IP address.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT IP address that you want to modify belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'NatIpId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT IP address that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpcnatip-gw8e1n11f44wpg****', + ], + ], + [ + 'name' => 'NatIpName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the NAT IP address that you want to modify.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. The name must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'newname', + ], + ], + [ + 'name' => 'NatIpDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the NAT IP address that you want to modify.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length and start with a letter. The description cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request.'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the precheck, a 2xx HTTP status code is returned and the name and description of the NAT IP address are modified.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT IP address that you want to modify belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6CC9456C-2E29-452A-9180-B6926E51B5CA', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatIp', + 'errorMessage' => 'The specified resource of NatIp is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6CC9456C-2E29-452A-9180-B6926E51B5CA\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 6CC9456C-2E29-452A-9180-B6926E51B5CA\\n","errorExample":""}]', + 'title' => 'ModifyNatIpAttribute', + 'description' => '## [](#)Description'."\n" + ."\n" + .'You cannot repeatedly call the **ModifyNatIpAttribute** operation to modify the name and description of a NAT IP address within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListNatIps' => [ + 'summary' => 'Queries the IP addresses on a NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the NAT gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + ], + [ + 'name' => 'NatIpCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block to which the IP address belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '192.168.0.0/24', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: checks the API request. IP addresses are not queried. The system checks the required parameters, request syntax, and limits. If the request fails to pass the precheck, the corresponding error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. If the request passes the precheck, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'NatIpStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the IP address. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **Deleting**'."\n" + .'* **Creating**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Available', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If this is your first query or no next query is to be sent, ignore this parameter.'."\n" + .'* If a next query is to be sent, set the value to the value of NextToken that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'NatIpName', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The name of the IP address. Valid values of **N**: **1** to **20**.', + 'type' => 'array', + 'items' => [ + 'description' => 'The name of the IP address. Valid values of **N**: **1** to **20**.', + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + 'required' => false, + 'example' => 'test', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'NatIpIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the IP address. Valid values of **N**: **1** to **20**.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the IP address. Valid values of **N**: **1** to **20**.', + 'type' => 'string', + 'required' => false, + 'example' => 'vpcnatcidr-gw8ov42ei6xh1jys2****', + ], + 'required' => false, + 'example' => 'vpcnatip-gw8a863sut1zijxh0****', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the NAT gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'IpOrigin', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'title' => '用于描述NatIp来源的字段的枚举,取值为“prefix”表示所属IPv4Prefix的NatIp; 取值为“cidr”表示孤立NatIp; 控制表示所有的NatIp.', + 'description' => 'The enumeration of the fields used to describe the source of the NatIp. Prefix indicates the NatIp that belongs to the IPv4Prefix. The value cidr indicates isolated NatIp. The value control indicates all NatIp.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'cidr', + 'enum' => [ + 'cidr', + 'prefix', + ], + ], + ], + [ + 'name' => 'Ipv4Prefix', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP prefix address range.', + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/28', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If the value of **NextToken** is not returned, it indicates that no next query is to be sent.'."\n" + .'* If the value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '7E78CEEA-BF8F-44D1-9DCD-D9141135B71E', + ], + 'TotalCount' => [ + 'description' => 'The number of IP addresses that are returned.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'NatIps' => [ + 'description' => 'The list of IP addresses of the NAT gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'IsDefault' => [ + 'description' => 'Indicates whether the IP address is the default IP address of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'NatIp' => [ + 'description' => 'The IP address.'."\n", + 'type' => 'string', + 'example' => '192.168.0.126', + ], + 'Ipv4Prefix' => [ + 'description' => 'The IP prefix address range to which the queried NAT IP address belongs.', + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/28', + ], + 'NatIpCidr' => [ + 'description' => 'The CIDR block to which the IP address belongs.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/24', + ], + 'NatIpId' => [ + 'description' => 'The ID of the IP address.'."\n", + 'type' => 'string', + 'example' => 'vpcnatip-gw8a863sut1zijxh0****', + ], + 'NatIpDescription' => [ + 'description' => 'The description of the IP address.'."\n", + 'type' => 'string', + 'example' => 'default', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the Virtual Private Cloud (VPC) NAT gateway to which the IP address is assigned.'."\n", + 'type' => 'string', + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + 'NatIpName' => [ + 'description' => 'The name of the IP address.'."\n", + 'type' => 'string', + 'example' => 'default', + ], + 'NatIpStatus' => [ + 'description' => 'The status of the IP address. Valid values:'."\n" + ."\n" + .'* **Available**: available'."\n" + .'* **Deleted**: deleted'."\n" + .'* **Deleting**: deleting'."\n" + .'* **Creating**: creating'."\n" + .'* **Associated**: specified in an SNAT or DNAT entry'."\n" + .'* **Associating**: being specified in an SNAT or DNAT entry'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"7E78CEEA-BF8F-44D1-9DCD-D9141135B71E\\",\\n \\"TotalCount\\": \\"1\\",\\n \\"NatIps\\": [\\n {\\n \\"IsDefault\\": true,\\n \\"NatIp\\": \\"192.168.0.126\\",\\n \\"Ipv4Prefix\\": \\"192.168.0.0/28\\",\\n \\"NatIpCidr\\": \\"192.168.0.0/24\\",\\n \\"NatIpId\\": \\"vpcnatip-gw8a863sut1zijxh0****\\",\\n \\"NatIpDescription\\": \\"default\\",\\n \\"NatGatewayId\\": \\"ngw-gw8v16wgvtq26vh59****\\",\\n \\"NatIpName\\": \\"default\\",\\n \\"NatIpStatus\\": \\"Available\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 7E78CEEA-BF8F-44D1-9DCD-D9141135B71E\\n 1\\n \\n true\\n 192.168.0.126\\n 192.168.0.0/24\\n vpcnatip-gw8a863sut1zijxh0****\\n default\\n ngw-gw8v16wgvtq26vh59****\\n default\\n Available\\n \\n","errorExample":""}]', + 'title' => 'ListNatIps', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'translator' => 'machine', + ], + 'CreateNatIpCidr' => [ + 'summary' => 'Creates a NAT CIDR block.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway with which you want to associate the CIDR block.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Virtual Private Cloud (VPC) NAT gateway with which you want to associate the CIDR block.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + ], + [ + 'name' => 'NatIpCidrName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the CIDR block.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. The name must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'newcidr', + ], + ], + [ + 'name' => 'NatIpCidrDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the NAT CIDR block.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length and start with a letter. The description cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'mycidr', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'NatIpCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The NAT CIDR block that you want to associate with the NAT gateway.'."\n" + ."\n" + .'The new CIDR block must meet the following conditions:'."\n" + ."\n" + .'* The NAT CIDR block must fall within 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, or their subnets.'."\n" + .'* The subnet mask must be 16 to 32 bits in length.'."\n" + .'* The NAT CIDR block cannot overlap with the private CIDR block of the VPC to which the NAT gateway belongs. If you want to use other IP addresses from the private CIDR block of the VPC to provide NAT services, create a vSwitch and attach the vSwitch to another VPC NAT gateway.'."\n" + .'* If you want to use public IP addresses to provide NAT services, make sure that the public IP addresses fall within a customer CIDR block of the VPC to which the VPC NAT gateway belongs. For more information, see [What is customer CIDR block?](~~185311~~).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '172.16.0.0/24', + 'docRequired' => true, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway with which you want to associate the CIDR block.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NatIpCidrId' => [ + 'description' => 'The ID of the NAT CIDR block.'."\n", + 'type' => 'string', + 'example' => 'vpcnatcidr-gw8lhqtvdn4qnea****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7021BEB1-210F-48A9-AB82-BE9A9110BB89', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.NatIpCidrInUse', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'QuotaExceeded.NatIpCidr', + 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', + ], + [ + 'errorCode' => 'OperationFailed.CreateNatIpCidrInVpcCidrBlock', + 'errorMessage' => 'The operation is failed because of Creating NatIpCidr in Vpc Cidr.', + ], + [ + 'errorCode' => 'OperationFailed.CreateNatIpCidrNotInUserCidr', + 'errorMessage' => 'The operation is failed because of Creating NatIpCidr not in UserCidr.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.NatIpCidr', + 'errorMessage' => 'The specified resource of %s is already exist.', + ], + [ + 'errorCode' => 'IllegalParamFormat.NatIpCidr', + 'errorMessage' => 'The param format of NatIpCidr is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'ResourceNotFound.NatGateway', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.VPC', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NatIpCidrId\\": \\"vpcnatcidr-gw8lhqtvdn4qnea****\\",\\n \\"RequestId\\": \\"7021BEB1-210F-48A9-AB82-BE9A9110BB89\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vpcnatcidr-gw8lhqtvdn4qnea****\\n 7021BEB1-210F-48A9-AB82-BE9A9110BB89\\n","errorExample":""}]', + 'title' => 'CreateNatIpCidr', + 'description' => '## [](#)Description'."\n" + ."\n" + .'You cannot repeatedly call the **CreateNatIpCidr** operation to create a NAT CIDR block within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteNatIpCidr' => [ + 'summary' => 'Deletes a NAT CIDR block.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT CIDR block to be deleted belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'NatIpCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The NAT CIDR block to be deleted.'."\n" + ."\n" + .'* Before you delete a NAT CIDR block, you must delete all NAT IP addresses from the CIDR block.'."\n" + .'* The default NAT CIDR block cannot be deleted.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '172.16.0.0/24', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the NAT gateway to which the NAT CIDR block to be deleted belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT CIDR block to be deleted belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7021BEB1-210F-48A9-AB82-BE9A9110BB89', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.NatIpCidr', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'OperationFailed.DefaultNatIpCidr', + 'errorMessage' => 'The operation is failed because of default NatIPCidr can not be deleted.', + ], + [ + 'errorCode' => 'DependencyViolation.NatIp', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IncorrectStatus.NatGateway', + 'errorMessage' => '%The status of %s [%s] is incorrect.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7021BEB1-210F-48A9-AB82-BE9A9110BB89\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7021BEB1-210F-48A9-AB82-BE9A9110BB89\\n","errorExample":""}]', + 'title' => 'DeleteNatIpCidr', + 'description' => '## [](#)Description'."\n" + ."\n" + .'You cannot repeatedly call the **DeleteNatIpCidr** operation to delete a NAT CIDR block within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyNatIpCidrAttribute' => [ + 'summary' => 'Modifies the name and description of a NAT CIDR block.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT CIDR block belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'NatIpCidrName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the NAT CIDR block.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'newname', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'NatIpCidrDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the NAT CIDR block.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'newtest', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Virtual Private Cloud (VPC) NAT gateway to which the NAT CIDR block belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + ], + [ + 'name' => 'NatIpCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The NAT CIDR block whose name and description you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '172.16.0.0/24', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the NAT gateway to which the NAT CIDR block belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParamFormat.NatIpCidr', + 'errorMessage' => 'The param format of NatIpCidr is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.NatIpCidr', + 'errorMessage' => 'The specified resource of NatIpCidr is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'ModifyNatIpCidrAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListNatIpCidrs' => [ + 'summary' => 'Queries the CIDR blocks of a specified NAT gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Virtual Private Cloud (VPC) NAT gateway that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'NatGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC NAT gateway that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + ], + [ + 'name' => 'NatIpCidr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the NAT gateway that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '172.16.0.0/24', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck this request. Valid values:'."\n" + ."\n" + .'* **true**: checks the API request. The CIDR blocks of the NAT gateway are not queried if the API request passes the precheck. The system checks whether your AccessKey pair is valid, whether the Resource Access Management (RAM) user is authorized, and whether the required parameters are set. If the request fails to pass the precheck, the corresponding error message is returned. If the check succeeds, the DryRunOperation error code is returned.'."\n" + .'* **false**: sends the API request. If the request passes the precheck, 2xx HTTP status code is returned and the CIDR blocks of the NAT gateway are queried. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, the system automatically uses **RequestId** as **ClientToken**. **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'NatIpCidrStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the CIDR block that you want to query. Set the value to **Available**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Available', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Set the value as needed.'."\n" + ."\n" + .'* If this is your first query or no next query is to be sent, ignore this parameter.'."\n" + .'* If a next query is to be sent, set the value to the value of NextToken that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'NatIpCidrName', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The name of the CIDR block that you want to query. Valid values of **N**: **1** to **20**.', + 'type' => 'array', + 'items' => [ + 'description' => 'The name of the CIDR block that you want to query. Valid values of **N**: **1** to **20**.', + 'type' => 'string', + 'required' => false, + 'example' => 'cidrname', + ], + 'required' => false, + 'example' => 'test', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'NatIpCidrs', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The CIDR block of the NAT gateway that you want to query. Valid values of **N**: **1** to **20**.', + 'type' => 'array', + 'items' => [ + 'description' => 'The CIDR block of the NAT gateway that you want to query. Valid values of **N**: **1** to **20**.', + 'type' => 'string', + 'required' => false, + 'example' => '172.16.0.0/24', + ], + 'required' => false, + 'example' => '172.16.0.0/24', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the Virtual Private Cloud (VPC) NAT gateway that you want to query.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If the value of **NextToken** is not returned, it indicates that no next query is to be sent.'."\n" + .'* If the value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '7479A224-4A28-4895-9604-11F48BCE6A88', + ], + 'TotalCount' => [ + 'description' => 'The number of CIDR blocks that are returned.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'NatIpCidrs' => [ + 'description' => 'The CIDR blocks of the NAT gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the CIDR block was created.'."\n", + 'type' => 'string', + 'example' => '2021-06-28T20:50Z', + ], + 'NatIpCidrId' => [ + 'description' => 'The ID of the CIDR block of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'vpcnatcidr-gw8ov42ei6xh1jys2****', + ], + 'IsDefault' => [ + 'description' => 'Indicates whether the CIDR block is the default CIDR block of the NAT gateway. Valid values:'."\n" + ."\n" + .'* **true**: The CIDR block is the default CIDR block of the NAT gateway.'."\n" + .'* **false**: The CIDR block is not the default CIDR block of the NAT gateway.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'NatIpCidrStatus' => [ + 'description' => 'The status of the CIDR block of the NAT gateway. If **Available** is returned, it indicates that the CIDR block is available.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'NatIpCidrName' => [ + 'description' => 'The name of the CIDR block of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'Name', + ], + 'NatIpCidr' => [ + 'description' => 'The CIDR block of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => '172.16.0.0/24', + ], + 'NatGatewayId' => [ + 'description' => 'The ID of the VPC NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'ngw-gw8v16wgvtq26vh59****', + ], + 'NatIpCidrDescription' => [ + 'description' => 'The description of the CIDR block of the NAT gateway.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"RequestId\\": \\"7479A224-4A28-4895-9604-11F48BCE6A88\\",\\n \\"TotalCount\\": \\"1\\",\\n \\"NatIpCidrs\\": [\\n {\\n \\"CreationTime\\": \\"2021-06-28T20:50Z\\",\\n \\"NatIpCidrId\\": \\"vpcnatcidr-gw8ov42ei6xh1jys2****\\",\\n \\"IsDefault\\": true,\\n \\"NatIpCidrStatus\\": \\"Available\\",\\n \\"NatIpCidrName\\": \\"Name\\",\\n \\"NatIpCidr\\": \\"172.16.0.0/24\\",\\n \\"NatGatewayId\\": \\"ngw-gw8v16wgvtq26vh59****\\",\\n \\"NatIpCidrDescription\\": \\"test\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n caeba0bbb2be03f84eb48b699f0a4883\\n 7479A224-4A28-4895-9604-11F48BCE6A88\\n 1\\n \\n 2021-06-28T20:50Z\\n vpcnatcidr-gw8ov42ei6xh1jys2****\\n true\\n Available\\n default\\n 172.16.0.0/24\\n ngw-gw8v16wgvtq26vh59****\\n default\\n \\n","errorExample":""}]', + 'title' => 'ListNatIpCidrs', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateIpv4Gateway' => [ + 'summary' => 'Creates an IPv4 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Ipv4GatewayName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv4 gateway.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv4', + ], + ], + [ + 'name' => 'Ipv4GatewayDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IPv4 gateway.'."\n" + ."\n" + .'The description must be 1 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC where you want to create the IPv4 gateway.'."\n" + ."\n" + .'You can create only one IPv4 gateway in a VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-5tss06uvoyps5xoya****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the required parameters, request syntax, and limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system sets **ClientToken** to the value of **RequestId**. The value of **RequestId** for each API request is different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the IPv4 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where you want to create the IPv4 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Ipv4GatewayId' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F282742B-1BBB-5F63-A3AF-E92EC575A1A6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.ExistDirectEip', + 'errorMessage' => 'The operation is not allowed because of existing direct eip.', + ], + [ + 'errorCode' => 'UnsupportedRegion', + 'errorMessage' => 'The feature of ipv4Gateway is not supported in the region.', + ], + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'You cannot operate shared resources.', + ], + [ + 'errorCode' => 'OperationDenied.SubnetRouteV1Exist', + 'errorMessage' => 'The operation is not allowed because of existing subnetRouteV1.', + ], + [ + 'errorCode' => 'OperationDenied.NormalNatExist', + 'errorMessage' => 'The operation is not allowed because of existing normalNat.', + ], + [ + 'errorCode' => 'OperationDenied.VpcExistIpv4Gateway', + 'errorMessage' => 'An IPv4 gateway already exists in the VPC.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv4Gateway', + 'errorMessage' => 'The feature of ipv4Gateway is not supported for [%s].', + ], + [ + 'errorCode' => 'OperationDenied.VpnExist', + 'errorMessage' => 'The operation is not allowed because of existing vpn.', + ], + [ + 'errorCode' => 'OperationDenied.DirectEipExist', + 'errorMessage' => 'The operation is not allowed because of existing directEip.', + ], + [ + 'errorCode' => 'OperationFailed.GetNfvServiceList', + 'errorMessage' => 'The operation is failed because of get nfv serviceList failed.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.VpcNotExist', + 'errorMessage' => 'The operation is failed because of vpc is not found.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceGroupId', + 'errorMessage' => 'Invalid ResourceGroupld value.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::GetIpv4GatewayAttribute', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Ipv4GatewayId\\": \\"ipv4gw-5tsnc6s4ogsedtp3k****\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\",\\n \\"RequestId\\": \\"F282742B-1BBB-5F63-A3AF-E92EC575A1A6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ipv4gw-5tsnc6s4ogsedtp3k****\\n rg-acfmxazb4ph6aiy****\\n F282742B-1BBB-5F63-A3AF-E92EC575A1A6\\n","errorExample":""}]', + 'title' => 'CreateIpv4Gateway', + 'description' => '* **CreateIpv4Gateway** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. You can call the [GetIpv4GatewayAttribute](~~407670~~) operation to query the status of an IPv4 gateway:'."\n" + ."\n" + .' * If the IPv4 gateway is in the **Creating** state, the IPv4 gateway is being created.'."\n" + .' * If the IPv4 gateway is in the **Created** state, the IPv4 gateway is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateIpv4Gateway** operation to create IPv4 gateways in a virtual private cloud (VPC) within the specified period of time.', + ], + 'DeleteIpv4Gateway' => [ + 'summary' => 'Deletes an IPv4 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '38044', + 'abilityTreeNodes' => [ + 'FEATUREvpcTEV4TQ', + ], + ], + 'parameters' => [ + [ + 'name' => 'Ipv4GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv4 gateway that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + ], + [ + 'name' => 'InternetMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'Select the public network mode of the VPC after deleting the IPv4 gateway. The values are:'."\n" + .'- **private**: Default value, after deleting the IPv4 gateway, the VPC will become a pure private VPC without public network access capability. '."\n" + .'- **public**: After deleting the IPv4 gateway, the VPC\'s public network access is no longer centrally controlled by the IPv4 gateway, and instances with public IPs bound can access the public network by default.', + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'enumValueTitles' => [ + 'private' => 'private', + 'public' => 'public', + ], + 'example' => 'public', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway that you want to delete.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run, without performing the actual request. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway that you want to delete.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '21133AC0-0636-521B-A400-253818691A56', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.Ipv4Gateway', + 'errorMessage' => 'The specified resource ipv4Gateway is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv4Gateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationDenied.RouteEntryExist', + 'errorMessage' => 'The operation is not allowed because of existing routeEntry point to ipv4Gateway.', + ], + [ + 'errorCode' => 'OperationDenied.GatewayAlreadyAssociated', + 'errorMessage' => 'The operation is not allowed because of the specified resource %s is already associated.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv4GatewayUsedByEipBindIpAddress', + 'errorMessage' => 'Failed to delete the IPv4 gateway because the EIP associated with a private IP address requires the IPv4 gateway to implement outbound Internet access.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::GetIpv4GatewayAttribute', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"21133AC0-0636-521B-A400-253818691A56\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 21133AC0-0636-521B-A400-253818691A56\\n","errorExample":""}]', + 'title' => 'DeleteIpv4Gateway', + 'description' => '### [](#)Description'."\n" + ."\n" + .'* Before you delete an IPv4 gateway, make sure that no route tables are associated with the IPv4 gateway.'."\n" + ."\n" + .'* **DeleteIpv4Gateway** is an asynchronous operation. After a request is sent, the system returns a **request ID** and runs the task in the background. You can call the [GetIpv4GatewayAttribute](~~407670~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the IPv4 gateway is in the **Deleting** state, the IPv4 gateway is being deleted.'."\n" + .' * If the IPv4 gateway cannot be queried, the IPv4 gateway is deleted.'."\n" + ."\n" + .'* After you call the **DeleteIpv4Gateway** operation to delete an IPv4 gateway, you cannot call the operation again to delete the IPv4 gateway until the deletion task is complete.'."\n", + 'translator' => 'machine', + ], + 'EnableVpcIpv4Gateway' => [ + 'summary' => 'Activates an IPv4 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Ipv4GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv4 gateway that you want to activate.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv4gw-5tsp9lumsxoqizvq2****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RouteTableList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'A list of route tables. The system adds a 0.0.0.0/0 route that points to the IPv4 gateway to the route tables.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'A list of route tables. The system adds a 0.0.0.0/0 route that points to the IPv4 gateway to the route tables. The system supports at most 10 route tables.'."\n" + ."\n" + .'> The route table and the IPv4 gateway must belong to the same virtual private cloud (VPC).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VPC_ROUTE_ENTRY_CIDR_BLOCK_DUPLICATE', + 'errorMessage' => 'Specified CIDR block is already exists.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ipv4Gateway', + 'errorMessage' => 'The specified resource ipv4Gateway is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv4Gateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv4GatewayAlreadyActive.', + 'errorMessage' => 'The operation failed because of ipv4Gateway is already active.', + ], + [ + 'errorCode' => 'OperationDenied.ConflictOfAllZeroRouting', + 'errorMessage' => 'The operation is not allowed because of routetable [%s] exist all-zero route entry.', + ], + [ + 'errorCode' => 'UnsupportedFeature.Ipv4Gateway', + 'errorMessage' => 'The feature of ipv4Gateway is not supported for [%s].', + ], + [ + 'errorCode' => 'OperationDenied.VpnExist', + 'errorMessage' => 'The operation is not allowed because of existing vpn.', + ], + [ + 'errorCode' => 'OperationDenied.NatgatewayExist', + 'errorMessage' => 'The operation is not allowed because of existing nat.', + ], + [ + 'errorCode' => 'OperationDenied.DirectEipExist', + 'errorMessage' => 'The operation is not allowed because of existing directEip.', + ], + [ + 'errorCode' => 'OperationDenied.VpcHasAlreadyActive', + 'errorMessage' => 'The operation is not allowed because of vpc has already been active.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::GetIpv4GatewayAttribute', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'EnableVpcIpv4Gateway', + 'description' => '## [](#)Description'."\n" + ."\n" + .'* **EnableVpcIpv4Gateway** is an asynchronous operation. After a request is sent, the system returns a **request ID** and runs the task in the background. You can call the [GetIpv4GatewayAttribute](~~407670~~) operation to query the status of an IPv4 gateway.'."\n" + ."\n" + .' * If the IPv4 gateway is in the **Activating** state, the IPv4 gateway is being activated.'."\n" + .' * If the IPv4 gateway is in the **Created** state, the IPv4 gateway is activated.'."\n" + ."\n" + .'* You cannot repeatedly call the **EnableVpcIpv4Gateway** operation to activate an IPv4 gateway within the specified period of time.'."\n", + ], + 'UpdateIpv4GatewayAttribute' => [ + 'summary' => 'Modifies the description or name of an IPv4 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'Ipv4GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv4 gateway whose name or description you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + ], + [ + 'name' => 'Ipv4GatewayName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the IPv4 gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'newname', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Ipv4GatewayDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the IPv4 gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'new', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway whose name or description you want to modify.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway whose name or description you want to modify.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '671CEB03-C98D-5916-950C-C55B0BD06621', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.Ipv4Gateway', + 'errorMessage' => 'The specified resource ipv4Gateway is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv4Gateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"671CEB03-C98D-5916-950C-C55B0BD06621\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 671CEB03-C98D-5916-950C-C55B0BD06621\\n","errorExample":""}]', + 'title' => 'UpdateIpv4GatewayAttribute', + 'description' => 'You cannot repeatedly call the **UpdateIpv4GatewayAttribute** operation to modify the name or description of an IPv4 gateway within the specified period of time.', + ], + 'ListIpv4Gateways' => [ + 'summary' => 'Queries IPv4 gateways.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv4 gateways to be queried are deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If this is your first query and no next queries are to be sent, ignore this parameter.'."\n" + .'* If a next query is to be sent, set the value to the value of NextToken that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) with which the IPv4 gateway is associated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-5tsrxlw7dv074gci4****', + ], + ], + [ + 'name' => 'Ipv4GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + ], + [ + 'name' => 'Ipv4GatewayName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv4 gateway.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'name', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv4 gateways to be queried are deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IPv4 gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the resource.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The key cannot exceed 64 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. It can be an empty string.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter but cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If a value of **NextToken** is returned, the value is the token that is used for the subsequent query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '2D265800-E306-529C-8418-84B0A1D201DB', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'Ipv4GatewayModels' => [ + 'description' => 'The list of IPv4 gateways.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC with which the IPv4 gateways are associated.'."\n", + 'type' => 'string', + 'example' => 'vpc-5tsrxlw7dv074gci4****', + ], + 'Status' => [ + 'description' => 'The status of the IPv4 gateway. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'Ipv4GatewayId' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + 'Ipv4GatewayDescription' => [ + 'description' => 'The description of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the IPv4 gateway is activated. Valid values:'."\n" + ."\n" + .'* **true**: yes'."\n" + .'* **false**: no'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'GmtCreate' => [ + 'description' => 'The time when the IPv4 gateway was created.'."\n", + 'type' => 'string', + 'example' => '2021-12-02T07:07:35Z', + ], + 'Ipv4GatewayRouteTableId' => [ + 'description' => 'The ID of the route table associated with the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + 'Ipv4GatewayName' => [ + 'description' => 'The name of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'name', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPv4 gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'description' => 'The list of tags that are added to the resource group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"2D265800-E306-529C-8418-84B0A1D201DB\\",\\n \\"TotalCount\\": \\"1\\",\\n \\"Ipv4GatewayModels\\": [\\n {\\n \\"VpcId\\": \\"vpc-5tsrxlw7dv074gci4****\\",\\n \\"Status\\": \\"Created\\",\\n \\"Ipv4GatewayId\\": \\"ipv4gw-5tsnc6s4ogsedtp3k****\\",\\n \\"Ipv4GatewayDescription\\": \\"test\\",\\n \\"Enabled\\": true,\\n \\"GmtCreate\\": \\"2021-12-02T07:07:35Z\\",\\n \\"Ipv4GatewayRouteTableId\\": \\"vtb-5ts0ohchwkp3dydt2****\\",\\n \\"Ipv4GatewayName\\": \\"name\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 2D265800-E306-529C-8418-84B0A1D201DB\\n 1\\n \\n vpc-5tsrxlw7dv074gci4****\\n Created\\n ipv4gw-5tsnc6s4ogsedtp3k****\\n test\\n true\\n 2021-12-02T07:07:35Z\\n vtb-5ts0ohchwkp3dydt2****\\n name\\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'ListIpv4Gateways', + ], + 'GetIpv4GatewayAttribute' => [ + 'summary' => 'Queries an IPv4 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + [ + 'name' => 'Ipv4GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv4 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ap-southeast-6', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The details of the IPv4 gateway.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC with which the IPv4 gateway is associated.'."\n", + 'type' => 'string', + 'example' => 'vpc-5tsrxlw7dv074gci4****', + ], + 'Status' => [ + 'description' => 'The status of the IPv4 gateway. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Deleting**'."\n" + .'* **Deleted**'."\n" + .'* **Activating**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'Ipv4GatewayId' => [ + 'description' => 'The ID of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv4gw-5tsnc6s4ogsedtp3k****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7F79A919-6FE9-50C4-967B-45705E1F9C38', + ], + 'Ipv4GatewayDescription' => [ + 'description' => 'The description of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'new', + ], + 'Enabled' => [ + 'description' => 'Indicates whether the IPv4 gateway is activated. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Ipv4GatewayRouteTableId' => [ + 'description' => 'The ID of the route table associated with the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + 'Ipv4GatewayName' => [ + 'description' => 'The name of the IPv4 gateway.'."\n", + 'type' => 'string', + 'example' => 'name', + ], + 'CreateTime' => [ + 'description' => 'The time when the IPv4 gateway was created.'."\n", + 'type' => 'string', + 'example' => '2022-02-24T09:02:36Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPv4 gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.Ipv4Gateway', + 'errorMessage' => 'The specified resource ipv4Gateway is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpcId\\": \\"vpc-5tsrxlw7dv074gci4****\\",\\n \\"Status\\": \\"Created\\",\\n \\"Ipv4GatewayId\\": \\"ipv4gw-5tsnc6s4ogsedtp3k****\\",\\n \\"RequestId\\": \\"7F79A919-6FE9-50C4-967B-45705E1F9C38\\",\\n \\"Ipv4GatewayDescription\\": \\"new\\",\\n \\"Enabled\\": true,\\n \\"Ipv4GatewayRouteTableId\\": \\"vtb-5ts0ohchwkp3dydt2****\\",\\n \\"Ipv4GatewayName\\": \\"name\\",\\n \\"CreateTime\\": \\"2022-02-24T09:02:36Z\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n vpc-5tsrxlw7dv074gci4****\\n Created\\n ipv4gw-5tsnc6s4ogsedtp3k****\\n 7F79A919-6FE9-50C4-967B-45705E1F9C38\\n new\\n true\\n vtb-5ts0ohchwkp3dydt2****\\n name\\n 2022-02-24T09:02:36Z\\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n","errorExample":""}]', + 'title' => 'GetIpv4GatewayAttribute', + ], + 'CreateVpnGateway' => [ + 'summary' => 'Creates a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'high', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the VPN gateway. The default value is the ID of the VPN gateway.'."\n" + ."\n" + .'The name must be 2 to 100 characters in length and cannot start with `http://` or `https://`. It must start with a letter and can contain letters, digits, underscores (\\_), hyphens (-), and periods (.). Other special characters are not supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'MYVPN', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) where you want to create the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp1ub1yt9cvakoelj****', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the VPN gateway. Set the value to **POSTPAY**, which specifies the pay-as-you-go billing method.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Example value for the Alibaba Cloud China site: PREPAY. Example value for the Alibaba Cloud International site: POSTPAY.', + 'default' => 'POSTPAY', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription duration. Unit: month. Valid values: **1** to **9**, **12**, **24**, and **36**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payment. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n" + ."\n" + .'> To create a VPN gateway, we recommend that you enable automatic payment. If you disable automatic payment, you must manually pay the bill to create the VPN gateway.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the VPN gateway. Unit: Mbit/s.'."\n" + ."\n" + .'* If you want to create a public VPN gateway, valid values are **10**, **100**, **200**, **500**, and **1000**.'."\n" + .'* If you want to create a private VPN gateway, valid values are **200** and **1000**.'."\n" + ."\n" + .'> The maximum bandwidth supported by VPN gateways in some regions is 500 Mbit/s. For more information, see [VPN gateway limits](~~65290~~).', + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '5', + ], + ], + [ + 'name' => 'EnableIpsec', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable IPsec-VPN for the VPN gateway. Valid values:'."\n" + ."\n" + .'* **true** (default)'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + [ + 'name' => 'EnableSsl', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable SSL-VPN. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'SslConnections', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of clients that can be connected at the same time. Valid values: **5** (default), **10**, **20**, **50**, **100**, **200**, **500**, and **1000**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The vSwitch with which you want to associate the VPN gateway.'."\n" + ."\n" + .'* If you call this operation in a region that supports the IPsec-VPN connections in dual-tunnel mode, this parameter is required. You must specify a vSwitch and specify **DisasterRecoveryVSwitchId**.'."\n" + .'* If you call this operation in a region that supports the IPsec-VPN connections in single-tunnel mode and do not specify a vSwitch, the system automatically specifies a vSwitch.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1j5miw2bae9s2vt****', + ], + ], + [ + 'name' => 'VpnType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the VPN gateway. Valid values:'."\n" + ."\n" + .'Set the value to **Normal** (default), which specifies a standard NAT gateway.', + 'type' => 'string', + 'required' => false, + 'example' => 'Normal', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a value, and you must make sure that each request has a unique token value. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. The value of **RequestId** for each API request is different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4****', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the VPN gateway. Valid values:'."\n" + ."\n" + .'* **public** (default)'."\n" + .'* **private**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'public', + ], + ], + [ + 'name' => 'DisasterRecoveryVSwitchId', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'The second vSwitch with which you want to associate the VPN gateway.'."\n" + ."\n" + .'* If you call this operation in a region that supports the IPsec-VPN connections in dual-tunnel mode, this parameter is required.'."\n" + .'* You need to specify two vSwitches in different zones in the virtual private cloud (VPC) that is associated with the VPN gateway to implement disaster recovery across zones.'."\n" + .'* For a region that supports only one zone, disaster recovery across zones is not supported. We recommend that you specify two vSwitches in the zone to implement high availability. You can specify the same vSwitch.'."\n" + ."\n" + .'For more information about the regions and zones that support the IPsec-VPN connections in dual-tunnel mode, see [IPsec-VPN connections support the dual-tunnel mode](~~2358946~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-p0wiz7obm0tbimu4r****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the VPN gateway belongs.'."\n" + ."\n" + .'* You can call the [ListResourceGroups](~~158855~~) operation to query resource group IDs.'."\n" + ."\n" + .'* If you do not specify a resource group ID, the VPN gateway belongs to the default resource group.'."\n" + ."\n" + .'* After the VPN gateway is created, the following resources also belong to the resource group and you cannot change the resource group: SSL servers, SSL client certificates, IPsec servers, and IPsec-VPN connections.'."\n" + ."\n" + .' If you move the VPN gateway to a new resource group, the preceding resources are also moved to the new resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.', + 'type' => 'object', + 'properties' => [ + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-uf68lxhgr7ftbqr3p****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'EB2C156A-41F8-49CC-A756-D55AFC8BFD69', + ], + 'Name' => [ + 'description' => 'The name of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'MYVPN', + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n" + ."\n" + .'If automatic payment is disabled, you must manually complete the payment for the VPN gateway in the [Alibaba Cloud Management console](https://usercenter2-intl.aliyun.com/billing/#/account/overview).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '208240895400460', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'The specified VPC id does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified value of Name not supported.', + ], + [ + 'errorCode' => 'InvalidSpec.NotFound', + 'errorMessage' => 'The specified Spec does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified period is not valid', + ], + [ + 'errorCode' => 'ChargeType.NotSupport', + 'errorMessage' => 'The specified charge type is not support.', + ], + [ + 'errorCode' => 'InventoryNotEnough', + 'errorMessage' => 'The inventory is not enough.', + ], + [ + 'errorCode' => 'UnnecessarySslConnection', + 'errorMessage' => 'The SSL connection is unnecessary for ssl vpn disabled.', + ], + [ + 'errorCode' => 'InvalidVpnEnable', + 'errorMessage' => 'Either IPsec or SSL VPN must be set enable.', + ], + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified vswitchId is not found.', + ], + [ + 'errorCode' => 'OperationFailed.InventoryNotEnough', + 'errorMessage' => 'No enough available resource. Try another vswitch with different available zone.', + ], + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'Operating shared resources is forbidden.', + ], + [ + 'errorCode' => 'OperationFailed.IpNotEnough', + 'errorMessage' => 'Operation failed because private ip address of the virtual switch is not enough.', + ], + [ + 'errorCode' => 'Forbidden.NoSLRPermission', + 'errorMessage' => 'User not authorized to create service linked role.', + ], + [ + 'errorCode' => 'OperationFailed.VSwitchConflict', + 'errorMessage' => 'The vswitch can\'t create vpn. Try another vswitch.', + ], + [ + 'errorCode' => 'OperationFailed.AzNotSupport', + 'errorMessage' => 'Current available zone can\'t create vpn. Try another vswitch with different available zone.', + ], + [ + 'errorCode' => 'OperationFailed.NetworkTypeNotMatch', + 'errorMessage' => 'Create NationalStandard vpn with private networkType is unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.SslNotSupport', + 'errorMessage' => 'Enable ssl vpn with private networkType is unsupported.', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.SecondVswitchNotSupport', + 'errorMessage' => 'The available zone of vswitch2 not supported.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.FirstVswitchNotSupport', + 'errorMessage' => 'The available zone of vswitch1 not supported.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.VswitchIdShouldDifferent', + 'errorMessage' => 'The VSwitch ids should be different.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.FirstVswitchIpNotEnough', + 'errorMessage' => 'The ip of vswitch1 not enough.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.SecondVswitchIpNotEnough', + 'errorMessage' => 'The ip of vswitch2 not enough.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.ZoneIdShouldDifferent', + 'errorMessage' => 'Two vSwitches should belong to different Availability Zones.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 6000, + 'maxCallbackTimes' => 100, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpnGatewayId\\": \\"vpn-uf68lxhgr7ftbqr3p****\\",\\n \\"RequestId\\": \\"EB2C156A-41F8-49CC-A756-D55AFC8BFD69\\",\\n \\"Name\\": \\"MYVPN\\",\\n \\"OrderId\\": 208240895400460\\n}","errorExample":""},{"type":"xml","example":"\\n vpn-uf68lxhgr7ftbqr3p****\\n EB2C156A-41F8-49CC-A756-D55AFC8BFD69\\n MYVPN\\n 208240895400460\\n","errorExample":""}]', + 'title' => 'CreateVpnGateway', + 'description' => '* Before you create a VPN gateway, we recommend that you know more about the limits of VPN gateways. For more information, see the [Limits](~~65290~~) section in the "Create and manage a VPN gateway" topic.'."\n" + ."\n" + .'* VPN gateways in some regions support only IPsec-VPN connections in dual-tunnel mode. If you call `CreateVpnGateway` in these regions, you must specify **VSwitchId** and **DisasterRecoveryVSwitchId** in addition to the required parameters. For more information about the regions and zones that support the IPsec-VPN connections in dual-tunnel mode, see [IPsec-VPN connections support the dual-tunnel mode](~~2358946~~).'."\n" + ."\n" + .'* **CreateVpnGateway** is an asynchronous operation. After you send a request to call this operation, the system returns a request ID and the endpoint service is being created in the backend. You can call [DescribeVpnGateway](~~73720~~) to query the status of a VPN gateway.'."\n" + ."\n" + .' * If the VPN gateway is in the **provisioning** state, the VPN gateway is being created.'."\n" + .' * If the VPN gateway is in the **active** state, the VPN gateway is created.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssociateVpnGatewayWithCertificate' => [ + 'summary' => 'Associates a VPN gateway with a certificate.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n" + ."\n" + .'> You can associate only VPN gateways of the SM type with certificates.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + ], + [ + 'name' => 'CertificateType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the certificate. Valid values:'."\n" + ."\n" + .'* **Encryption**'."\n" + .'* **Signature**'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'Signature', + ], + ], + [ + 'name' => 'CertificateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the certificate.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '6bfe4218-ea1d****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request passes the dry run, a request ID is returned. Otherwise, an error message is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.CertificateType', + 'errorMessage' => 'The specified certificate type (%s) is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.NotNationalStandard', + 'errorMessage' => 'The VPN gateway is not national standard.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'OperationFailed.NoRamPermission', + 'errorMessage' => 'VPN service has no permission to operate your KMS instances.', + ], + [ + 'errorCode' => 'OperationFailed.AssociationExist', + 'errorMessage' => 'The association already exists.', + ], + [ + 'errorCode' => 'OperationFailed.AnotherAssociationExist', + 'errorMessage' => 'The VPN gateway has associated with %s.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'The system is busy. Please try again later.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidCertificate', + 'errorMessage' => 'The specified certificate is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'Forbidden.NoSlrPermission', + 'errorMessage' => 'User not authorized to create service linked role.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidCertificateId.NotFound', + 'errorMessage' => 'The specified certificate ID (%s) does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'The operation against this instance is too frequent, please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'AssociateVpnGatewayWithCertificate', + 'description' => 'Before you associate a VPN gateway with an SSL certificate, take note of the following items:'."\n" + ."\n" + .'* You can associate only VPN gateways of the ShangMi (SM) type with SSL certificates. You need to associate a VPN gateway of the SM type with two SSL certificates, one as the encryption certificate and the other as the signature certificate.'."\n" + ."\n" + .'* The SSL certificates must use the SM algorithm.'."\n" + ."\n" + .'* You cannot specify one SSL certificate as both the encryption certificate and signature certificate for one VPN gateway.'."\n" + ."\n" + .'* **AssociateVpnGatewayWithCertificate** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnGateway](~~73720~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the SSL certificate is being associated.'."\n" + .' * If the VPN gateway is in the **active** state, the SSL certificate is being associated.'."\n" + ."\n" + .'* You cannot call **AssociateVpnGatewayWithCertificate** within a specific period of time.'."\n" + ."\n" + .'### [](#)Prerequisites'."\n" + ."\n" + .'Make sure that you have two SSL certificates that use the SM algorithm in the Certificate Management Service console. For more information about SSL certificates, see [What is Certificate Management Service?](~~28535~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVpnGateway' => [ + 'summary' => 'Deletes a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'high', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '>0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DependencyViolation.VpnConnection', + 'errorMessage' => 'There are vpn connections on specified customer gateway not deleted.', + ], + [ + 'errorCode' => 'DependencyViolation.SslVpnServer', + 'errorMessage' => 'There is SSL VPN server on specified vpn gateway not deleted.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'DependencyViolation.GreTunnel', + 'errorMessage' => 'There is Gre tunnel on specified vpn gateway not deleted.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The eip operate too frequent, TaskConflict.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'DependencyViolation.IpsecServer', + 'errorMessage' => 'the resource cannot be deleted because the resource has an ipsec server dependency.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'ForbiddenRelease', + 'errorMessage' => 'Forbidden to release a prepaid instance within validity period', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 6000, + 'maxCallbackTimes' => 100, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\">0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":"{ \\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}"},{"type":"xml","example":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n"}]', + 'title' => 'DeleteVpnGateway', + 'description' => '> You cannot delete a VPN gateway associated with existing IPsec-VPN connections.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DissociateVpnGatewayWithCertificate' => [ + 'summary' => 'Disassociates a certificate from a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + ], + [ + 'name' => 'CertificateType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The certificate type. Valid values:'."\n" + ."\n" + .'* **Encryption**'."\n" + .'* **Signature**'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'Encryption', + ], + ], + [ + 'name' => 'CertificateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the certificate.'."\n" + ."\n" + .'> The certificate ID refers to the ID generated after the SSL certificate is associated with the VPN gateway. It is not the ID of the SSL certificate.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '6bfe4218-ea1d****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e*******', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request passes the dry run, the `DryRunOperation` error code is returned. Otherwise, an error message is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.CertificateType', + 'errorMessage' => 'The specified certificate type (%s) is invalid.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidAssociateRelation.NotFound', + 'errorMessage' => 'The specified association does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'The operation against this instance is too frequent, please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\"\\n}","errorExample":""},{"type":"xml","example":" \\r\\n611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\r\\n ","errorExample":""}]', + 'title' => 'DissociateVpnGatewayWithCertificate', + 'description' => '* **DissociateVpnGatewayWithCertificate** is an asynchronous operation. After a request is sent, the system returns a request and runs the task in the background. You can call the [DescribeVpnGateway](~~73720~~) operation to query the status the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the SSL certificate is being disassociated from the VPN gateway.'."\n" + .' * If the VPN gateway is in the **active** state, the SSL certificate is disassociated from the VPN gateway.'."\n" + ."\n" + .'* You cannot repeatedly call **DissociateVpnGatewayWithCertificate** within a specific period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVpnGatewayAttribute' => [ + 'summary' => 'Modifies the name and description of a VPN Gateway or the automatic route advertisement feature.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the VPN gateway.'."\n" + ."\n" + .'The name must be 2 to 100 characters in length and cannot start with `http://` or `https://`. It must start with a letter and can contain letters, digits, underscores (\\_), hyphens (-), and periods (.). Other characters are not supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'myvpn', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the VPN connection.'."\n" + ."\n" + .'The description must be 1 to 100 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'AutoPropagate', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically advertise BGP routes to the virtual private cloud (VPC). Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The results returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the VPN gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1ub1yt9cvakoel****', + ], + 'Status' => [ + 'description' => 'The status of the VPN gateway. Valid values:'."\n" + ."\n" + .'* **init**'."\n" + .'* **provisioning**'."\n" + .'* **active**'."\n" + .'* **updating**'."\n" + .'* **deleting**'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'InternetIp' => [ + 'description' => '* If the VPN gateway supports IPsec-VPN connections in single-tunnel mode, the address is the IP address of the VPN gateway and can be used to create an IPsec-VPN connection or an SSL-VPN connection.'."\n" + ."\n" + .'* If the VPN gateway supports IPsec-VPN connections in dual-tunnel mode, the address is the first IP address used to create an IPsec-VPN connection. The address cannot be used to create an SSL-VPN connection.'."\n" + ."\n" + .' If the VPN gateway supports IPsec-VPN connections in dual-tunnel mode, the system assigns two IP addresses to the VPN gateway to create two encrypted tunnels.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'Spec' => [ + 'description' => 'The maximum bandwidth of the VPN gateway. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '5M', + ], + 'CreateTime' => [ + 'description' => 'The time when the VPN gateway was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492753580000', + ], + 'AutoPropagate' => [ + 'description' => 'Indicates whether BGP routes are automatically advertised to the VPC. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + 'IntranetIp' => [ + 'description' => 'The private IP address of the vSwitch that is used by the system when the VPN gateway is deployed.'."\n" + ."\n" + .'The parameter is returned only for VPN gateways that support single-tunnel IPsec-VPN connections. The IPsec-VPN feature must be enabled.'."\n", + 'type' => 'string', + 'example' => '172.27.30.24', + ], + 'EndTime' => [ + 'description' => 'The time when the VPN gateway expires. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1495382400000', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch associated with the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1y9ovl1cu9ou4tv****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457', + ], + 'Description' => [ + 'description' => 'The description of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'EnableBgp' => [ + 'description' => 'Indicates whether BGP is enabled for the VPN gateway. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'BusinessStatus' => [ + 'description' => 'The payment status of the VPN gateway. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Name' => [ + 'description' => 'The name of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'DisasterRecoveryInternetIp' => [ + 'description' => 'The second IP address assigned by the system to create an IPsec-VPN connection.'."\n" + ."\n" + .'This parameter is returned only when the VPN gateway supports the dual-tunnel mode.'."\n", + 'type' => 'string', + 'example' => '116.11.XX.XX', + ], + 'DisasterRecoveryVSwitchId' => [ + 'description' => 'The ID of the second vSwitch associated with the VPN gateway.'."\n" + ."\n" + .'This parameter is returned only when the VPN gateway supports the dual-tunnel mode.'."\n", + 'type' => 'string', + 'example' => 'vsw-p0w95ql6tmr2ludkt****', + ], + 'SslVpnInternetIp' => [ + 'description' => 'The IP address of the SSL-VPN connection.'."\n" + ."\n" + .'This parameter is returned only when the VPN gateway is a public VPN gateway and supports only the single-tunnel mode. In addition, the VPN gateway must have the SSL-VPN feature enabled.'."\n", + 'type' => 'string', + 'example' => '116.33.XX.XX', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the VPN gateway belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.', + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'InvalidDescription', + 'errorMessage' => 'The description is not valid', + ], + [ + 'errorCode' => 'OperationUnsupported.EnableBgp', + 'errorMessage' => 'Current version of the VPN does not support enable BGP.', + ], + [ + 'errorCode' => 'OperationFailed.VpnConnectionExist', + 'errorMessage' => 'Auto propagate cannot be closed when VPN connections with BGP enabled exist.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'OperationFailed.CenLevelNotSupport', + 'errorMessage' => 'When the VPC to which the VPN gateway belongs is attached to a FULL-mode CEN, the VPN gateway cannot enable BGP.', + ], + [ + 'errorCode' => 'OperationFailed.VpcRoutePropagationDisable', + 'errorMessage' => 'The VPC system routing table does not enable the acceptance of propagated routes.', + ], + [ + 'errorCode' => 'OperationFailed.VpcRoutePublishEnabledInTR', + 'errorMessage' => 'A VPC supports at most one dynamic route learning source. In the forwarding router, disable route synchronization for the VPC.', + ], + [ + 'errorCode' => 'OperationFailed.VpcRoutePublishEnabledInECR', + 'errorMessage' => 'VPC supports only one dynamic route learning source at most. Please remove the VPC from ECR.', + ], + [ + 'errorCode' => 'OperationFailed.BondingVpnNotSupportBGP', + 'errorMessage' => 'The architecture does not support BGP capabilities (single tunnel bonding architecture VPN gateway).', + ], + [ + 'errorCode' => 'OperationFailed.StaleBGPRoutes', + 'errorMessage' => 'BGP routes are still there and automatic route propagation cannot be disabled.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpcId\\": \\"vpc-bp1ub1yt9cvakoel****\\",\\n \\"Status\\": \\"active\\",\\n \\"InternetIp\\": \\"116.62.XX.XX\\",\\n \\"Spec\\": \\"5M\\",\\n \\"CreateTime\\": 1492753580000,\\n \\"AutoPropagate\\": true,\\n \\"VpnGatewayId\\": \\"vpn-bp1q8bgx4xnkm2ogj****\\",\\n \\"IntranetIp\\": \\"172.16.10.46\\",\\n \\"EndTime\\": 1495382400000,\\n \\"VSwitchId\\": \\"vsw-bp1y9ovl1cu9ou4tv****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\",\\n \\"Description\\": \\"test\\",\\n \\"EnableBgp\\": true,\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Name\\": \\"test\\",\\n \\"DisasterRecoveryInternetIp\\": \\"116.11.XX.XX\\",\\n \\"DisasterRecoveryVSwitchId\\": \\"vsw-p0w95ql6tmr2ludkt****\\",\\n \\"SslVpnInternetIp\\": \\"116.33.XX.XX\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vpc-bp1ub1yt9cvakoel****\\n active\\n 116.62.XX.XX\\n 5M\\n 1492753580000\\n true\\n vpn-bp1q8bgx4xnkm2ogj****\\n 1495382400000\\n vsw-bp1y9ovl1cu9ou4tv****\\n 54B48E3D-DF70-471B-AA93-08E683A1B457\\n test\\n true\\n Normal\\n vsw-p0w95ql6tmr2ludkt****\\n 116.11.XX.XX\\n 116.33.XX.XX\\n test\\n","errorExample":""}]', + 'title' => 'ModifyVpnGatewayAttribute', + 'description' => '* **ModifyVpnGatewayAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the VPN gateway is being modified.'."\n" + .' * If the VPN gateway is in the **active** state, the VPN gateway is modified.'."\n" + ."\n" + .'* You cannot repeatedly call **ModifyVpnGatewayAttribute** to modify a VPN gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'MoveVpnResourceGroup' => [ + 'summary' => 'Moves a VPN gateway resource to a new resource group.', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource.', + 'type' => 'string', + 'required' => true, + 'example' => 'vpn-8vb3lzn7biepthri8****', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of resource.'."\n" + ."\n" + .'* **VpnGateway**: VPN gateway'."\n" + ."\n" + .' After you move a VPN gateway to a new resource group, the following associated resources are also moved to the new resource group: IPsec servers, SSL servers, SSL client certificates, and IPsec-VPN connections.'."\n" + ."\n" + .'* **CustomerGateway**: customer gateway'."\n" + ."\n" + .'* **VpnAttachment**: IPsec-VPN connection'."\n" + ."\n" + .' An IPsec-VPN connection associated with a transit router or not associate with a resource.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'VpnGateway', + ], + ], + [ + 'name' => 'NewResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the new resource group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'rg-acfmzs372yg****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-zhangjiakou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The returned result, which indicates whether the operation was successful.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '89ED47AF-3319-566E-A5F5-94E3F47F54A8', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'InstanceId is not found.', + ], + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'The specified ResourceId does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceType', + 'errorMessage' => 'Invalid Resource Type value.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"89ED47AF-3319-566E-A5F5-94E3F47F54A8\\"\\n}","type":"json"}]', + 'title' => 'MoveVpnResourceGroup', + ], + 'DescribeVpnGateway' => [ + 'summary' => 'Queries the detailed information about a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + 'title' => '', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1r3v1xqkl0w519g****', + 'title' => '', + ], + ], + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to include the data about pending orders. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'title' => '', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpnType' => [ + 'description' => 'The type of VPN gateway. Only **Normal** may be returned, which indicates a standard VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'Normal', + 'title' => '', + ], + 'Status' => [ + 'description' => 'The status of the VPN gateway. Valid values:'."\n" + ."\n" + .'* **init**'."\n" + .'* **provisioning**'."\n" + .'* **active**'."\n" + .'* **updating**'."\n" + .'* **deleting**'."\n", + 'type' => 'string', + 'example' => 'init', + 'title' => '', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the VPN gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp19m2yx1m5q0avyq****', + 'title' => '', + ], + 'SslMaxConnections' => [ + 'description' => 'The maximum number of concurrent SSL-VPN connections.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '5', + 'title' => '', + ], + 'Spec' => [ + 'description' => 'The maximum bandwidth of the VPN gateway. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '5', + 'title' => '', + ], + 'InternetIp' => [ + 'description' => '* If the VPN gateway supports IPsec-VPN connections in single-tunnel mode, the address is the IP address of the VPN gateway and can be used to create an IPsec-VPN connection or an SSL-VPN connection.'."\n" + ."\n" + .'* If the VPN gateway supports IPsec-VPN connections in dual-tunnel mode, the address is the first IP address used to create an IPsec-VPN connection. The address cannot be used to create an SSL-VPN connection.'."\n" + ."\n" + .' If the VPN gateway supports IPsec-VPN connections in dual-tunnel mode, the system assigns two IP addresses to the VPN gateway to create two encrypted tunnels.'."\n", + 'type' => 'string', + 'example' => '47.22.XX.XX', + 'title' => '', + ], + 'CreateTime' => [ + 'description' => 'The timestamp when the VPN gateway was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1495382400000', + 'title' => '', + ], + 'AutoPropagate' => [ + 'description' => 'Indicates whether BGP routes are automatically advertised to the VPC. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + 'title' => '', + ], + 'ChargeType' => [ + 'description' => 'The billing method. Valid value:'."\n" + ."\n" + .'**POSTPAY**: pay-as-you-go'."\n", + 'type' => 'string', + 'example' => '中国站示例值:Prepay,国际站示例值:POSTPAY', + 'title' => '', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1r3v1xqkl0w519g****', + 'title' => '', + ], + 'Tag' => [ + 'description' => 'The tag that is automatically generated for the VPN gateway. The tag consists of the following parameters:'."\n" + ."\n" + .'* **VpnEnableBgp**: indicates whether the VPN gateway supports BGP. Valid values:'."\n" + ."\n" + .' * **true**'."\n" + .' * **false**'."\n" + ."\n" + .'* **VisuallySsl**: indicates whether the VPN gateway allows you to view the connection information of SSL clients. Valid values:'."\n" + ."\n" + .' * **true**'."\n" + .' * **false**'."\n" + ."\n" + .'* **PbrPriority**: indicates whether the VPN gateway allows you to configure priorities for policy-based routes. Valid values:'."\n" + ."\n" + .' * **true**'."\n" + .' * **false**'."\n" + ."\n" + .'* **VpnNewImage**: indicates whether the VPN gateway is upgraded. Valid values:'."\n" + ."\n" + .' * **true**'."\n" + .' * **false**'."\n" + ."\n" + .'* **description**: the description of the VPN gateway. This parameter is only for internal use.'."\n" + ."\n" + .'* **VpnVersion**: the version of the VPN gateway.'."\n" + ."\n" + .'* **IDaaSNewVersion**: indicates whether the VPN gateway can be associated with an EIAM 2.0 instance.'."\n" + ."\n" + .' * **true**'."\n" + .' * **false**'."\n", + 'type' => 'string', + 'example' => '{\\"VpnEnableBgp\\":\\"true\\",\\"VisuallySsl\\":\\"true\\",\\"PbrPriority\\":\\"true\\",\\"VpnNewImage\\":\\"true\\",\\"description\\":\\"转发1.3.24\\",\\"VpnVersion\\":\\"v1.2.4\\",\\"IDaaSNewVersion\\":\\"true\\"}', + 'title' => '', + ], + 'IpsecVpn' => [ + 'description' => 'Indicates whether the IPsec-VPN feature is enabled. Valid values:'."\n" + ."\n" + .'* **enable**'."\n" + .'* **disable**'."\n", + 'type' => 'string', + 'example' => 'enable', + 'title' => '', + ], + 'EndTime' => [ + 'description' => 'The timestamp when the VPN gateway expires. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1544666102000', + 'title' => '', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which the VPN gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1dmzugdikc6hdgx****', + 'title' => '', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '27E4E088-8DE0-4672-BF5C-0A412389DB9E', + 'title' => '', + ], + 'Description' => [ + 'description' => 'The description of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpngatewaydescription', + 'title' => '', + ], + 'EnableBgp' => [ + 'description' => 'Indicates whether BGP is enabled for the VPN gateway. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + 'title' => '', + ], + 'BusinessStatus' => [ + 'description' => 'The payment status of the VPN gateway. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + 'title' => '', + ], + 'SslVpn' => [ + 'description' => 'The status of the SSL-VPN feature. Valid values:'."\n" + ."\n" + .'* **enable**'."\n" + .'* **disable**'."\n", + 'type' => 'string', + 'example' => 'enable', + 'title' => '', + ], + 'Name' => [ + 'description' => 'The name of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpngatewayname', + 'title' => '', + ], + 'ReservationData' => [ + 'description' => 'The information about pending orders.'."\n" + ."\n" + .'> This set of parameters is returned only when **IncludeReservationData** is set to **true**.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the pending order. Valid values:'."\n" + ."\n" + .'* **1**: indicates that the order of the renewal or specification change has not taken effect.'."\n" + .'* **2**: indicates that the order is an order for temporary upgrade and the order has taken effect. After the temporary upgrade expires, the system restores the VPN gateway to its previous specifications. In this case, **ReservationIpsec**, **ReservationMaxConnections**, **ReservationSpec**, and **ReservationSsl** indicate the previous specification.'."\n", + 'type' => 'string', + 'example' => '1', + 'title' => '', + ], + 'ReservationOrderType' => [ + 'description' => 'The type of the pending order. Valid values:'."\n" + ."\n" + .'* **RENEWCHANGE**: renewal with upgrade or downgrade'."\n" + .'* **TEMP_UPGRADE**: temporary upgrade'."\n" + .'* **RENEW**: renewal'."\n", + 'type' => 'string', + 'example' => 'TEMP_UPGRADE', + 'title' => '', + ], + 'ReservationIpsec' => [ + 'description' => 'The IPsec-VPN status of the pending order. Valid values:'."\n" + ."\n" + .'* **enable**'."\n" + .'* **disable**'."\n", + 'type' => 'string', + 'example' => 'enable', + 'title' => '', + ], + 'ReservationSpec' => [ + 'description' => 'The bandwidth of the pending order. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '5', + 'title' => '', + ], + 'ReservationSsl' => [ + 'description' => 'The SSL-VPN status of the pending order. Valid values:'."\n" + ."\n" + .'* **enable**'."\n" + .'* **disable**'."\n", + 'type' => 'string', + 'example' => 'enable', + 'title' => '', + ], + 'ReservationMaxConnections' => [ + 'description' => 'The maximum number of concurrent SSL-VPN connections of the pending order.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + 'title' => '', + ], + 'ReservationEndTime' => [ + 'description' => 'If the order type is **TEMP_UPGRADE** (temporary upgrade), this parameter specifies the time when the temporary upgrade expires.'."\n" + ."\n" + .'If the order type is **RENEWCHANGE** (renewal with a specification change) or **RENEW** (renewal), this parameter indicates the time when the renewal or renewal with a specification change takes effect.'."\n", + 'type' => 'string', + 'example' => '2020-07-20T16:00:00Z', + 'title' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'Tags' => [ + 'description' => '', + 'type' => 'object', + 'items' => [ + 'description' => 'VPN网关实例绑定的标签列表。', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'name' => 'Key', + 'description' => '标签键。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'aaa', + 'backendName' => 'tagKey', + ], + 'Value' => [ + 'name' => 'Value', + 'description' => '标签值。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'bbb', + 'backendName' => 'tagValue', + ], + ], + 'extendType' => 'true', + ], + 'title' => '', + 'example' => '', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'type' => 'string', + ], + 'Value' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + 'NetworkType' => [ + 'description' => 'The network type of the VPN gateway.'."\n" + ."\n" + .'* **public**'."\n" + .'* **private**'."\n", + 'type' => 'string', + 'example' => 'public', + 'title' => '', + ], + 'DisasterRecoveryInternetIp' => [ + 'description' => 'The second IP address assigned by the system to create an IPsec-VPN connection.'."\n" + ."\n" + .'This parameter is returned only when the VPN gateway supports the dual-tunnel mode.'."\n", + 'type' => 'string', + 'example' => '47.91.XX.XX', + 'title' => '', + ], + 'DisasterRecoveryVSwitchId' => [ + 'description' => 'The ID of the second vSwitch associated with the VPN gateway.'."\n" + ."\n" + .'This parameter is returned only when the VPN gateway supports the dual-tunnel mode.'."\n", + 'type' => 'string', + 'example' => 'vsw-p0w95ql6tmr2ludkt****', + 'title' => '', + ], + 'SslVpnInternetIp' => [ + 'description' => 'The IP address of the SSL-VPN connection.'."\n" + ."\n" + .'This parameter is returned only when the VPN gateway is a public VPN gateway and supports only the single-tunnel mode. In addition, the VPN gateway must have the SSL-VPN feature enabled.'."\n", + 'type' => 'string', + 'example' => '47.74.XX.XX', + 'title' => '', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the VPN gateway belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + 'title' => '', + ], + 'EniInstanceIds' => [ + 'description' => '', + 'type' => 'object', + 'items' => [ + 'description' => 'ENI ID。'."\n" + ."\n" + .'仅支持创建双隧道模式IPsec-VPN连接的VPN网关实例会返回当前参数。', + 'type' => 'string', + 'example' => 'eni-7xvcxgmd4y2ypibn****', + 'extendType' => 'true', + ], + 'title' => '', + 'example' => '', + 'itemNode' => true, + 'properties' => [ + 'EniInstanceId' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'string', + ], + ], + ], + ], + 'GatewayType' => [ + 'description' => 'Type of VPN gateway:'."\n" + .'- **Traditional**: Traditional-type VPN gateway, supports both IPSec and SSL.'."\n" + .'- **Enhanced.SiteToSite**: Enhanced Site-to-Site VPN gateway, only supports IPSec.', + 'type' => 'string', + 'example' => 'Enhanced.SiteToSite', + 'title' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpnType\\": \\"Normal\\",\\n \\"Status\\": \\"init\\",\\n \\"VpcId\\": \\"vpc-bp19m2yx1m5q0avyq****\\",\\n \\"SslMaxConnections\\": 5,\\n \\"Spec\\": \\"5\\",\\n \\"InternetIp\\": \\"47.22.XX.XX\\",\\n \\"CreateTime\\": 1495382400000,\\n \\"AutoPropagate\\": true,\\n \\"ChargeType\\": \\"中国站示例值:Prepay,国际站示例值:POSTPAY\\",\\n \\"VpnGatewayId\\": \\"vpn-bp1r3v1xqkl0w519g****\\",\\n \\"Tag\\": \\"{\\\\\\\\\\\\\\"VpnEnableBgp\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"VisuallySsl\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"PbrPriority\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"VpnNewImage\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"description\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"转发1.3.24\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"VpnVersion\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"v1.2.4\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"IDaaSNewVersion\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\"}\\",\\n \\"IpsecVpn\\": \\"enable\\",\\n \\"EndTime\\": 1544666102000,\\n \\"VSwitchId\\": \\"vsw-bp1dmzugdikc6hdgx****\\",\\n \\"RequestId\\": \\"27E4E088-8DE0-4672-BF5C-0A412389DB9E\\",\\n \\"Description\\": \\"vpngatewaydescription\\",\\n \\"EnableBgp\\": true,\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"SslVpn\\": \\"enable\\",\\n \\"Name\\": \\"vpngatewayname\\",\\n \\"ReservationData\\": {\\n \\"Status\\": \\"1\\",\\n \\"ReservationOrderType\\": \\"TEMP_UPGRADE\\",\\n \\"ReservationIpsec\\": \\"enable\\",\\n \\"ReservationSpec\\": \\"5\\",\\n \\"ReservationSsl\\": \\"enable\\",\\n \\"ReservationMaxConnections\\": 5,\\n \\"ReservationEndTime\\": \\"2020-07-20T16:00:00Z\\"\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"aaa\\",\\n \\"Value\\": \\"bbb\\"\\n }\\n ]\\n },\\n \\"NetworkType\\": \\"public\\",\\n \\"DisasterRecoveryInternetIp\\": \\"47.91.XX.XX\\",\\n \\"DisasterRecoveryVSwitchId\\": \\"vsw-p0w95ql6tmr2ludkt****\\",\\n \\"SslVpnInternetIp\\": \\"47.74.XX.XX\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\",\\n \\"EniInstanceIds\\": {\\n \\"EniInstanceId\\": [\\n \\"eni-7xvcxgmd4y2ypibn****\\"\\n ]\\n },\\n \\"GatewayType\\": \\"Enhanced.SiteToSite\\"\\n}","errorExample":""},{"type":"xml","example":"\\n Normal\\n init\\n vpc-bp19m2yx1m5q0avyq****\\n 5\\n 5\\n 47.22.XX.XX\\n 1495382400000\\n true\\n 中国站示例值:Prepay,国际站示例值:POSTPAY\\n vpn-bp1r3v1xqkl0w519g****\\n {\\\\\\"VpnEnableBgp\\\\\\":\\\\\\"true\\\\\\",\\\\\\"VisuallySsl\\\\\\":\\\\\\"true\\\\\\",\\\\\\"PbrPriority\\\\\\":\\\\\\"true\\\\\\",\\\\\\"VpnNewImage\\\\\\":\\\\\\"true\\\\\\",\\\\\\"description\\\\\\":\\\\\\"转发1.3.7\\\\\\",\\\\\\"VpnVersion\\\\\\":\\\\\\"v1.2.4\\\\\\"}\\n enable\\n 1544666102000\\n vsw-bp1dmzugdikc6hdgx****\\n 27E4E088-8DE0-4672-BF5C-0A412389DB9E\\n vpngatewaydescription\\n true\\n Normal\\n enable\\n vpngatewayname\\n vsw-p0w95ql6tmr2ludkt****\\n 47.91.XX.XX\\n 47.74.XX.XX\\n \\n 1\\n TEMP_UPGRADE\\n enable\\n 5\\n enable\\n 5\\n 2020-07-20T16:00:00Z\\n \\n \\n aaa\\n bbb\\n \\n public\\n","errorExample":""}]', + 'title' => 'DescribeVpnGateway', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVpnGateways' => [ + 'summary' => 'Queries VPN gateways in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + 'title' => '', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the VPN gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1m3i0kn1nd4wiw9****', + 'title' => '', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-bp17lofy9fd0dnvzv****', + 'title' => '', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the VPN gateway. Valid values:'."\n" + ."\n" + .'* **init**'."\n" + .'* **provisioning**'."\n" + .'* **active**'."\n" + .'* **updating**'."\n" + .'* **deleting**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'active', + 'title' => '', + ], + ], + [ + 'name' => 'BusinessStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The payment status of the VPN gateway. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Normal', + 'title' => '', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + 'title' => '', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + 'title' => '', + ], + ], + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to return information about pending orders. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'docRequired' => false, + 'example' => 'true', + 'title' => '', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags that are added to the VPN gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag added to the VPN gateway.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n" + ."\n" + .'You can specify at most 20 tag keys at a time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + 'title' => '', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values at a time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + 'title' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 20, + 'title' => '', + 'example' => '', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the VPN gateway belongs.'."\n" + ."\n" + .' You can call the [ListResourceGroups](~~158855~~) operation to query the resource group list.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + 'title' => '', + ], + ], + [ + 'name' => 'GatewayType', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => 'VPN 网关类型,取值:'."\n" + .'Traditional:传统型VPN网关,覆盖IPsec功能和SSL功能'."\n" + .'Enhance.SiteToSite:增强型站点入云VPN,只覆盖IPsec功能', + 'description' => 'VPN 网关类型,取值:'."\n" + .'Traditional:传统型VPN网关,覆盖IPsec功能和SSL功能'."\n" + .'Enhance.SiteToSite:增强型站点入云VPN,只覆盖IPsec功能', + 'type' => 'string', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + 'title' => '', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DF11D6F6-E35A-41C3-9B20-6FC8A901FE65', + 'title' => '', + ], + 'PageNumber' => [ + 'description' => 'The number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + 'title' => '', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + 'title' => '', + ], + 'VpnGateways' => [ + 'description' => '', + 'type' => 'object', + 'items' => [ + 'description' => 'VPN网关的信息。', + 'type' => 'object', + 'properties' => [ + 'VpnType' => [ + 'name' => 'VpnType', + 'description' => 'VPN网关类型。'."\n" + .' '."\n" + .''."\n" + ."\n" + .'- **Normal**:普通型。'."\n" + .'- **NationalStandard**:国密型。'."\n" + ."\n" + .''."\n" + ."\n" + .'取值:**Normal**,表示普通型。'."\n", + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'Normal', + 'backendName' => 'vpnType', + ], + 'Status' => [ + 'name' => 'Status', + 'description' => 'VPN网关的状态。'."\n" + ."\n" + .'- **init** :初始化。'."\n" + ."\n" + .'- **provisioning** :准备中。'."\n" + ."\n" + .'- **active** :正常。'."\n" + ."\n" + .'- **updating** :更新中。'."\n" + ."\n" + .'- **deleting** :删除中。'."\n", + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'active', + 'backendName' => 'status', + ], + 'VpcId' => [ + 'name' => 'VpcId', + 'description' => ' VPN网关所属VPC的ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'vpc-bp1m3i0kn1nd4wiw9****', + 'backendName' => 'vpcId', + ], + 'SslMaxConnections' => [ + 'name' => 'SslMaxConnections', + 'description' => 'VPN网关SSL连接数的规格。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '5', + 'backendName' => 'maxConnections', + ], + 'Spec' => [ + 'name' => 'Spec', + 'description' => 'VPN网关的带宽峰值。**M**表示单位Mbps。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '5M', + 'backendName' => 'spec', + ], + 'InternetIp' => [ + 'name' => 'InternetIp', + 'description' => '- 在VPN网关实例支持创建单隧道模式IPsec-VPN连接的场景下,该地址为VPN网关实例的IP地址,可用于创建IPsec-VPN连接或SSL-VPN连接。'."\n" + ."\n" + .'- 在VPN网关实例支持创建双隧道模式IPsec-VPN连接的场景下,该地址为用于创建IPsec-VPN连接的第一个IP地址,不能用于创建SSL-VPN连接。'."\n" + ."\n" + .' 在VPN网关实例支持创建双隧道模式IPsec-VPN连接的场景下,系统会为VPN网关实例分配两个IPsec地址,用于创建双隧道模式的IPsec-VPN连接。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.12.XX.XX', + 'backendName' => 'internetIp', + ], + 'CreateTime' => [ + 'name' => 'CreateTime', + 'description' => '创建VPN网关的时间戳。单位:毫秒。'."\n" + ."\n" + .'时间戳的格式采用Unix时间戳,表示从格林威治时间1970年01月01日00时00分00秒至创建VPN网关实例时的总时长。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1515383700000', + 'backendName' => 'createTime', + ], + 'AutoPropagate' => [ + 'name' => 'AutoPropagate', + 'description' => '是否已开启VPN网关的路由自动传播功能。'."\n" + ."\n" + .'- **true**:已开启。'."\n" + ."\n" + .'- **false**:未开启。', + 'visibility' => 'Public', + 'type' => 'boolean', + 'example' => 'true', + 'backendName' => 'autoPropagate', + ], + 'ChargeType' => [ + 'name' => 'ChargeType', + 'description' => 'VPN网关的付费类型。'."\n" + ."\n" + .'仅取值:**Prepay**,包年包月。'."\n" + ."\n" + .'仅取值:**POSTPAY**,按量计费。'."\n" + ."\n" + .'仅取值: **POSTPAY**,按量计费。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '中国站示例值:Prepay,国际站示例值:POSTPAY', + 'backendName' => 'chargeType', + ], + 'VpnGatewayId' => [ + 'name' => 'VpnGatewayId', + 'description' => 'VPN网关的ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'vpn-bp17lofy9fd0dnvzv****', + 'backendName' => 'instanceId', + ], + 'Tag' => [ + 'name' => 'Tag', + 'description' => '系统自动生成的VPN网关标签。'."\n" + ."\n" + .'- **VpnEnableBgp**:表示VPN网关是否支持BGP功能。'."\n" + .' - **true**:支持。'."\n" + .' - **false**:不支持。'."\n" + .'- **VisuallySsl**:表示VPN网关是否支持查看SSL客户端的连接信息。'."\n" + .' - **true**:支持。'."\n" + .' - **false**:不支持。'."\n" + .'- **PbrPriority**:表示VPN网关是否支持为策略路由配置策略优先级。'."\n" + .' - **true**:支持。'."\n" + .' - **false**:不支持。'."\n" + .'- **VpnNewImage**:表示VPN网关是否为新型VPN网关。'."\n" + .' - **true**:是。'."\n" + .' - **false**:否。'."\n" + .'- **description**:表示VPN网关的描述信息,仅供系统内部使用。'."\n" + .'- **VpnVersion**:表示VPN网关的版本号。'."\n" + .'- **IDaaSNewVersion**:表示VPN网关是否支持绑定EIAM 2.0实例。'."\n" + .' - **true**:支持。'."\n" + .' - **false**:不支持。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '{\\"VpnEnableBgp\\":\\"true\\",\\"VisuallySsl\\":\\"true\\",\\"PbrPriority\\":\\"true\\",\\"VpnNewImage\\":\\"true\\",\\"description\\":\\"转发1.3.24\\",\\"VpnVersion\\":\\"v1.2.4\\",\\"IDaaSNewVersion\\":\\"true\\"}', + 'backendName' => 'tag', + ], + 'IpsecVpn' => [ + 'name' => 'IpsecVpn', + 'description' => 'VPN网关是否开启了IPsec-VPN功能。'."\n" + ."\n" + .'- **enable**:已开启。'."\n" + ."\n" + .'- **disable**:未开启。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'enable', + 'backendName' => 'enableIpsecVpn', + ], + 'EndTime' => [ + 'name' => 'EndTime', + 'description' => 'VPN网关到期时间戳。单位:毫秒。'."\n" + ."\n" + .'时间戳的格式采用Unix时间戳,表示从格林威治时间1970年01月01日00时00分00秒至VPN网关实例到期时的总时长。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1518105600000', + 'backendName' => 'endTime', + ], + 'VSwitchId' => [ + 'name' => 'VSwitchId', + 'description' => 'VPN网关所属交换机的ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'vsw-bp15lbk8sgtr6r5b0****', + 'backendName' => 'vswitchId', + ], + 'Description' => [ + 'name' => 'Description', + 'description' => 'VPN网关的描述信息。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'test', + 'backendName' => 'description', + ], + 'EnableBgp' => [ + 'name' => 'EnableBgp', + 'description' => 'VPN网关BGP功能的开启状态。'."\n" + ."\n" + .'- **true**:已开启。'."\n" + ."\n" + .'- **false**:未开启。', + 'visibility' => 'Public', + 'type' => 'boolean', + 'example' => 'true', + 'backendName' => 'enableBgp', + ], + 'BusinessStatus' => [ + 'name' => 'BusinessStatus', + 'description' => 'VPN网关的付费状态。'."\n" + ."\n" + .'- **Normal**:正常。'."\n" + ."\n" + .'- **FinancialLocked**:欠费锁定。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'Normal', + 'backendName' => 'businessStatus', + ], + 'SslVpn' => [ + 'name' => 'SslVpn', + 'description' => 'VPN网关是否开启了SSL-VPN功能。'."\n" + ."\n" + .'- **enable**:已开启。'."\n" + ."\n" + .'- **disable**:未开启。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'enable', + 'backendName' => 'enableSslVpn', + ], + 'Name' => [ + 'name' => 'Name', + 'description' => 'VPN网关的名称。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'test', + 'backendName' => 'name', + ], + 'NetworkType' => [ + 'name' => 'NetworkType', + 'description' => 'VPN网关的网络类型。'."\n" + ."\n" + .'- **public**:公网VPN网关。'."\n" + .'- **private**:私网VPN网关。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'public', + 'backendName' => 'networkType', + ], + 'Tags' => [ + 'name' => 'Tags', + 'description' => 'VPN网关绑定的标签列表。', + 'visibility' => 'Public', + 'type' => 'array', + 'items' => [ + 'description' => 'VPN网关绑定的标签信息。', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'name' => 'Key', + 'description' => '标签键。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'FinanceDept', + 'backendName' => 'tagKey', + ], + 'Value' => [ + 'name' => 'Value', + 'description' => '标签值。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'FinanceJoshua', + 'backendName' => 'tagValue', + ], + ], + 'extendType' => 'true', + ], + 'backendName' => 'tags', + 'itemName' => 'Tag', + ], + 'ReservationData' => [ + 'name' => 'ReservationData', + 'description' => '未生效的订购数据。'."\n" + ."\n" + .'>仅**IncludeReservationData**传入**true**才会返回该组参数。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'name' => 'Status', + 'description' => '未生效订单状态。'."\n" + ."\n" + .'- **1**:表示续费或续费变配的订单未生效。'."\n" + ."\n" + .'- **2**:表示临时升配的订单已生效。在到达还原时间后,系统会将VPN网关规格恢复到临时升配前的规格。此时**ReservationIpsec**、**ReservationMaxConnections**、**ReservationSpec**、**ReservationSsl**表示为VPN网关临时升配前的规格。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '1', + 'backendName' => 'status', + ], + 'ReservationOrderType' => [ + 'name' => 'ReservationOrderType', + 'description' => '未生效订单类型。'."\n" + ."\n" + .'- **RENEWCHANGE**:续费变配。'."\n" + ."\n" + .'- **TEMP_UPGRADE**:临时升配。'."\n" + ."\n" + .'- **RENEW**:续费。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'TEMP_UPGRADE', + 'backendName' => 'reservationOrderType', + ], + 'ReservationIpsec' => [ + 'name' => 'ReservationIpsec', + 'description' => '未生效订单IPsec-VPN功能开启状态。'."\n" + ."\n" + .'- **enable**:已开启。'."\n" + ."\n" + .'- **disable**:未开启。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'enable', + 'backendName' => 'reservationIpsec', + ], + 'ReservationSpec' => [ + 'name' => 'ReservationSpec', + 'description' => '未生效订单的带宽规格。单位:Mbps。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '5', + 'backendName' => 'reservationSpec', + ], + 'ReservationSsl' => [ + 'name' => 'ReservationSsl', + 'description' => '未生效订单SSL-VPN功能开启状态。'."\n" + .'- **enable**:已开启。'."\n" + ."\n" + .'- **disable**:未开启。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'enable', + 'backendName' => 'reservationSsl', + ], + 'ReservationMaxConnections' => [ + 'name' => 'ReservationMaxConnections', + 'description' => '未生效订单SSL-VPN并发连接用户数的规格。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + 'backendName' => 'reservationMaxConnections', + ], + 'ReservationEndTime' => [ + 'name' => 'ReservationEndTime', + 'description' => '如果未生效订单类型为**TEMP_UPGRADE**(临时升配)时,该参数表示为临时升配的还原时间。'."\n" + ."\n" + .'如果未生效订单类型为**RENEWCHANGE**(续费变配)或**RENEW**(续费)时,该参数表示为续费或续费变配开始生效时间。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '2021-07-20T16:00:00Z', + 'backendName' => 'reservationEndTime', + ], + ], + 'backendName' => 'reservationDataType', + ], + 'DisasterRecoveryInternetIp' => [ + 'name' => 'DisasterRecoveryInternetIp', + 'description' => '系统为VPN网关实例分配的用于创建IPsec-VPN连接的第二个IP地址。'."\n" + ."\n" + .'仅支持创建双隧道模式IPsec-VPN连接的VPN网关实例会返回当前参数。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.91.XX.XX', + 'backendName' => 'disasterRecoveryInternetIp', + ], + 'DisasterRecoveryVSwitchId' => [ + 'name' => 'DisasterRecoveryVSwitchId', + 'description' => 'VPN网关实例关联的第二个交换机ID。'."\n" + ."\n" + .'仅支持创建双隧道模式IPsec-VPN连接的VPN网关实例会返回当前参数。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'vsw-p0w95ql6tmr2ludkt****', + 'backendName' => 'disasterRecoveryVSwitchId', + ], + 'SslVpnInternetIp' => [ + 'name' => 'SslVpnInternetIp', + 'title' => '', + 'description' => 'SSL-VPN连接的IP地址。'."\n" + ."\n" + .'仅支持创建双隧道模式IPsec-VPN连接的公网网络类型的VPN网关实例开启SSL-VPN功能后,才会返回当前参数。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.74.XX.XX', + 'backendName' => 'sslVpnInternetIp', + ], + 'ResourceGroupId' => [ + 'name' => 'ResourceGroupId', + 'description' => 'VPN网关所属的资源组ID。'."\n" + ."\n" + .'您可以调用[ListResourceGroups](~~158855~~)接口查询资源组信息。', + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + 'backendName' => 'resourceGroupId', + ], + 'EniInstanceIds' => [ + 'name' => 'EniInstanceIds', + 'description' => '系统为VPN网关实例创建的弹性网卡ENI(Elastic Network Interfaces)列表。', + 'type' => 'array', + 'items' => [ + 'description' => 'ENI ID。'."\n" + ."\n" + .'仅支持创建双隧道模式IPsec-VPN连接的VPN网关实例会返回当前参数。', + 'type' => 'string', + 'example' => 'eni-7xvcxgmd4y2ypibn****', + 'extendType' => 'true', + ], + 'backendName' => 'eniInstanceIds', + 'itemName' => 'EniInstanceId', + ], + 'GatewayType' => [ + 'name' => 'GatewayType', + 'title' => 'VPN 网关类型,取值:'."\n" + .'Traditional:传统型VPN网关,覆盖IPsec功能和SSL功能'."\n" + .'Enhance.SiteToSite:增强型站点入云VPN,只覆盖IPsec功能', + 'description' => 'VPN 网关类型,取值:'."\n" + .'Traditional:传统型VPN网关,覆盖IPsec功能和SSL功能'."\n" + .'Enhance.SiteToSite:增强型站点入云VPN,只覆盖IPsec功能', + 'type' => 'string', + 'backendName' => 'gatewayType', + ], + ], + 'extendType' => 'true', + ], + 'title' => '', + 'example' => '', + 'itemNode' => true, + 'properties' => [ + 'VpnGateway' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'VpnType' => [ + 'type' => 'string', + ], + 'Status' => [ + 'type' => 'string', + ], + 'VpcId' => [ + 'type' => 'string', + ], + 'SslMaxConnections' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'Spec' => [ + 'type' => 'string', + ], + 'InternetIp' => [ + 'type' => 'string', + ], + 'CreateTime' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'AutoPropagate' => [ + 'type' => 'boolean', + ], + 'ChargeType' => [ + 'type' => 'string', + ], + 'VpnGatewayId' => [ + 'type' => 'string', + ], + 'Tag' => [ + 'type' => 'string', + ], + 'IpsecVpn' => [ + 'type' => 'string', + ], + 'EndTime' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'VSwitchId' => [ + 'type' => 'string', + ], + 'Description' => [ + 'type' => 'string', + ], + 'EnableBgp' => [ + 'type' => 'boolean', + ], + 'BusinessStatus' => [ + 'type' => 'string', + ], + 'SslVpn' => [ + 'type' => 'string', + ], + 'Name' => [ + 'type' => 'string', + ], + 'NetworkType' => [ + 'type' => 'string', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'type' => 'string', + ], + 'Value' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + 'ReservationData' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'type' => 'string', + ], + 'ReservationOrderType' => [ + 'type' => 'string', + ], + 'ReservationIpsec' => [ + 'type' => 'string', + ], + 'ReservationSpec' => [ + 'type' => 'string', + ], + 'ReservationSsl' => [ + 'type' => 'string', + ], + 'ReservationMaxConnections' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + 'ReservationEndTime' => [ + 'type' => 'string', + ], + ], + ], + 'DisasterRecoveryInternetIp' => [ + 'type' => 'string', + ], + 'DisasterRecoveryVSwitchId' => [ + 'type' => 'string', + ], + 'SslVpnInternetIp' => [ + 'title' => '', + 'type' => 'string', + ], + 'ResourceGroupId' => [ + 'type' => 'string', + ], + 'EniInstanceIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'EniInstanceId' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'string', + ], + ], + ], + ], + 'GatewayType' => [ + 'title' => 'VPN 网关类型,取值:'."\n" + .'Traditional:传统型VPN网关,覆盖IPsec功能和SSL功能'."\n" + .'Enhance.SiteToSite:增强型站点入云VPN,只覆盖IPsec功能', + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + 'title' => '', + 'example' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"DF11D6F6-E35A-41C3-9B20-6FC8A901FE65\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"VpnGateways\\": {\\n \\"VpnGateway\\": [\\n {\\n \\"VpnType\\": \\"Normal\\",\\n \\"Status\\": \\"active\\",\\n \\"VpcId\\": \\"vpc-bp1m3i0kn1nd4wiw9****\\",\\n \\"SslMaxConnections\\": 5,\\n \\"Spec\\": \\"5M\\",\\n \\"InternetIp\\": \\"47.12.XX.XX\\",\\n \\"CreateTime\\": 1515383700000,\\n \\"AutoPropagate\\": true,\\n \\"ChargeType\\": \\"中国站示例值:Prepay,国际站示例值:POSTPAY\\",\\n \\"VpnGatewayId\\": \\"vpn-bp17lofy9fd0dnvzv****\\",\\n \\"Tag\\": \\"{\\\\\\\\\\\\\\"VpnEnableBgp\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"VisuallySsl\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"PbrPriority\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"VpnNewImage\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"description\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"转发1.3.24\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"VpnVersion\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"v1.2.4\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"IDaaSNewVersion\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\"}\\",\\n \\"IpsecVpn\\": \\"enable\\",\\n \\"EndTime\\": 1518105600000,\\n \\"VSwitchId\\": \\"vsw-bp15lbk8sgtr6r5b0****\\",\\n \\"Description\\": \\"test\\",\\n \\"EnableBgp\\": true,\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"SslVpn\\": \\"enable\\",\\n \\"Name\\": \\"test\\",\\n \\"NetworkType\\": \\"public\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"ReservationData\\": {\\n \\"Status\\": \\"1\\",\\n \\"ReservationOrderType\\": \\"TEMP_UPGRADE\\",\\n \\"ReservationIpsec\\": \\"enable\\",\\n \\"ReservationSpec\\": \\"5\\",\\n \\"ReservationSsl\\": \\"enable\\",\\n \\"ReservationMaxConnections\\": 5,\\n \\"ReservationEndTime\\": \\"2021-07-20T16:00:00Z\\"\\n },\\n \\"DisasterRecoveryInternetIp\\": \\"47.91.XX.XX\\",\\n \\"DisasterRecoveryVSwitchId\\": \\"vsw-p0w95ql6tmr2ludkt****\\",\\n \\"SslVpnInternetIp\\": \\"47.74.XX.XX\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\",\\n \\"EniInstanceIds\\": {\\n \\"EniInstanceId\\": [\\n \\"eni-7xvcxgmd4y2ypibn****\\"\\n ]\\n },\\n \\"GatewayType\\": \\"Enhance.SiteToSite\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n DF11D6F6-E35A-41C3-9B20-6FC8A901FE65\\n 1\\n 1\\n \\n Normal\\n Active\\n vpc-bp1m3i0kn1nd4wiw9****\\n 5\\n 5M\\n 47.12.XX.XX\\n 1515383700000\\n true\\n 中国站示例值:Prepay,国际站示例值:POSTPAY\\n vpn-bp17lofy9fd0dnvzv****\\n {\\\\\\"VpnEnableBgp\\\\\\":\\\\\\"true\\\\\\",\\\\\\"VisuallySsl\\\\\\":\\\\\\"true\\\\\\",\\\\\\"PbrPriority\\\\\\":\\\\\\"true\\\\\\",\\\\\\"VpnNewImage\\\\\\":\\\\\\"true\\\\\\",\\\\\\"description\\\\\\":\\\\\\"转发1.3.7\\\\\\",\\\\\\"VpnVersion\\\\\\":\\\\\\"v1.2.4\\\\\\"}\\n enable\\n 1518105600000\\n vsw-bp15lbk8sgtr6r5b0****\\n test\\n true\\n Normal\\n enable\\n test\\n public\\n vsw-p0w95ql6tmr2ludkt****\\n 47.91.XX.XX\\n 47.74.XX.XX\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n 1\\n TEMP_UPGRADE\\n enable\\n 5\\n enable\\n 5\\n 2021-07-20T16:00:00Z\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeVpnGateways', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListVpnCertificateAssociations' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'CertificateType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The certificate type. Valid values:'."\n" + ."\n" + .'* **Encryption**'."\n" + .'* **Signature**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Signature', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be0****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **20**. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of VPN gateway IDs.'."\n" + ."\n" + .'You can query the association between at most 20 VPN gateways and SSL certificates.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the VPN gateway.'."\n" + ."\n" + .'You can query the association between at most 20 VPN gateways and SSL certificates.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + 'required' => false, + 'example' => 'vpn-bp1q8bgx4xnkm****', + 'maxLength' => 128, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'CertificateId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of certificate IDs.'."\n" + ."\n" + .'You can query the association between at most 20 SSL certificates and VPN gateways.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The certificate ID.'."\n" + ."\n" + .'You can query the association between at most 20 SSL certificates and VPN gateways.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '848****', + ], + 'required' => false, + 'example' => '6bfe4218-ea1d****', + 'maxLength' => 128, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The returned value of NextToken is a pagination token, which can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If **NextToken** is not empty, the value indicates the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '197AF2BD-547F-470C-B29A-8400400233EB', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4', + ], + 'MaxResults' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'VpnCertificateRelations' => [ + 'description' => 'The association information.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The association between the VPN gateway and the certificate.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1usbiorilk51760****', + ], + 'CertificateType' => [ + 'description' => 'The type of the certificate.'."\n" + ."\n" + .'* **Encryption**'."\n" + .'* **Signature**'."\n", + 'type' => 'string', + 'example' => 'Signature', + ], + 'CertificateId' => [ + 'description' => 'The certificate ID.'."\n", + 'type' => 'string', + 'example' => '6bfe4218-ea1d****', + ], + 'AssociationTime' => [ + 'description' => 'The time when the Anycast EIP was associated.'."\n" + ."\n" + .'The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2020-12-29T09:30:29Z', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the VPN gateway is created.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified next token (%s) is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be****\\",\\n \\"RequestId\\": \\"197AF2BD-547F-470C-B29A-8400400233EB\\",\\n \\"TotalCount\\": 4,\\n \\"MaxResults\\": 10,\\n \\"VpnCertificateRelations\\": [\\n {\\n \\"VpnGatewayId\\": \\"vpn-bp1usbiorilk51760****\\",\\n \\"CertificateType\\": \\"Signature\\",\\n \\"CertificateId\\": \\"6bfe4218-ea1d****\\",\\n \\"AssociationTime\\": \\"2020-12-29T09:30:29Z\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 4\\n 197AF2BD-547F-470C-B29A-8400400233EB\\n \\n Signature\\n 2020-12-29T09:30:29Z\\n vpn-bp1usbiorilk51760****\\n 848****\\n cn-hangzhou\\n \\n \\n Encryption\\n 2020-12-29T09:30:16Z\\n vpn-bp1usbiorilk51760****\\n 848****\\n cn-hangzhou\\n \\n \\n Signature\\n 2020-12-09T02:36:23Z\\n vpn-bp1mrlw7134czer3l****\\n 848****\\n cn-hangzhou\\n \\n \\n Encryption\\n 2020-12-09T02:35:50Z\\n vpn-bp1mrlw7134czer3l****\\n 848****\\n cn-hangzhou\\n \\n 10\\n","errorExample":""}]', + 'title' => 'ListVpnCertificateAssociations', + 'summary' => 'Queries the association between VPN gateways and certificates in a region.', + 'description' => 'When you call **ListVpnCertificateAssociations**, take note of the following information:'."\n" + ."\n" + .'* If you specify only **RegionId**, the SSL certificates associated with all VPN gateways in the specified region are queried.'."\n" + .'* If you specify **RegionId** and **CertificateType**, the SSL certificates of the specified type that are associated with the VPN gateways in the specified region are queried.'."\n" + .'* If you specify **RegionId** and **VpnGatewayId**, the SSL certificates associated with the specified VPN gateway in the specified region are queried.'."\n" + .'* If you specify **RegionId** and **CertificateId**, the VPN gateways associated with the specified SSL certificate in the specified region are queried.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DiagnoseVpnGateway' => [ + 'summary' => 'Diagnoses a VPN gateway.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => 'RegionId', + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'title' => 'ResourceId', + 'description' => 'The ID of the resource to be diagnosed.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-uf66xniofskqtuoz1****', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'title' => 'ResourceType', + 'description' => 'The type of the resource.'."\n" + ."\n" + .'Set the value to **Ipsec**, which specifies an IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'IPsec', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VpnGatewayId', + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpn-m5efhj0k1p47ctuhl****', + ], + ], + [ + 'name' => 'IPsecExtendInfo', + 'in' => 'query', + 'schema' => [ + 'title' => 'IPsecExtendInfo', + 'description' => 'Check the connectivity of the destination address. Valid values:'."\n" + ."\n" + .'* **PrivateSourceIp**: the source IP address. The source IP address must be on the VPC side.'."\n" + .'* **PrivateDestinationIp**: the destination IP address. The destination IP address must be on the data center side.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"PrivateSourceIp":"192.168.1.1","PrivateDestinationIp":"192.168.0.1"}', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => 'system param', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'DiagnoseId' => [ + 'title' => 'DiagnoseId', + 'description' => 'The diagnostic ID.'."\n" + ."\n" + .'After a diagnostic ID is returned, you can call [GetVpnGatewayDiagnoseResult](~~2521963~~) to query the diagnostic report.'."\n", + 'type' => 'string', + 'example' => 'vpndgn-uf6kuxbe3iv028k3s****', + ], + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'OperationUnsupported.DiagnoseVpn', + 'errorMessage' => 'Current version of the VPN does not support diagnose.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceType', + 'errorMessage' => 'The specified resource type [%s] is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.VpnGatewayDiagnosing', + 'errorMessage' => 'The VPN gateway is diagnosing.', + ], + [ + 'errorCode' => 'OperationFailed.StartDiagnose', + 'errorMessage' => 'Start VPN gateway diagnose failed.', + ], + [ + 'errorCode' => 'IllegalParam.PrivateSourceIp', + 'errorMessage' => 'The specified private source IP [%s] is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.PrivateDestinationIp', + 'errorMessage' => 'The specified private destination IP [%s] is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'The specified resource id [%s] does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"DiagnoseId\\": \\"vpndgn-uf6kuxbe3iv028k3s****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vpndgn-uf6kuxbe3iv028k3s****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n","errorExample":""}]', + 'title' => 'DiagnoseVpnGateway', + ], + 'GetVpnGatewayDiagnoseResult' => [ + 'summary' => 'Queries the diagnostic result of a VPN gateway.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => 'RegionId', + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'DiagnoseId', + 'in' => 'query', + 'schema' => [ + 'title' => 'DiagnoseId', + 'description' => 'The ID of the diagnostic operation.'."\n" + ."\n" + .'When you call the [DiagnoseVpnGateway](~~469751~~) operation, the system returns a corresponding ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpndgn-uf6kuxbe3iv028k3s****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VpnGatewayId', + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-uf6fzwp0ck3frwtbk****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => 'system param', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Description** If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema object', + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'BeginTime' => [ + 'title' => 'FinishTime', + 'description' => 'The time when the diagnostic started.'."\n" + ."\n" + .'The time follows the ISO8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2022-12-15T05:28:57Z', + ], + 'DiagnoseId' => [ + 'title' => 'DiagnoseId', + 'description' => 'The ID of the diagnostic.'."\n", + 'type' => 'string', + 'example' => 'vpndgn-uf6sgneym02lxyuv4****', + ], + 'DiagnoseResult' => [ + 'title' => 'DiagnoseResult', + 'description' => 'The information about the diagnostic items.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'DiagnoseName' => [ + 'title' => 'diagnoseName', + 'description' => 'The diagnostic item.'."\n" + ."\n" + .'* **RouteEntryConflict**: route conflicts.'."\n" + .'* **VpnRouteQuota**: the quota of destination-based routes for the VPN gateway.'."\n" + .'* **VpnIPsecQuota**: the quota of IPsec-VPN connections for the VPN gateway.'."\n" + .'* **VpnPbrRouteQuota**: the quota of policy-based routes for the VPN gateway.'."\n" + .'* **VcoConfigConsistency**: the consistency of the IPsec-VPN connection.'."\n" + .'* **VcoUserInternetIpConnectivity**: Internet connectivity of the customer gateway.'."\n" + .'* **VcoPrivateConnectivity**: private network connectivity.'."\n" + ."\n" + .'For more information about the diagnostic items, see [Background information about quick diagnostics](~~190330~~).'."\n", + 'type' => 'string', + 'example' => 'RouteEntryConflict', + ], + 'DiagnoseResultDescription' => [ + 'title' => 'DiagnoseResultDescription', + 'description' => 'The diagnostic result.'."\n" + ."\n" + .'The system returns different results for each diagnostic item.'."\n" + ."\n" + .'* **RouteEntryConflict**: information about route conflicts.'."\n" + ."\n" + .'* **VpnRouteQuota**:'."\n" + ."\n" + .' * **quotaName**: the quota ID of destination-based routes.'."\n" + .' * **quantity**: the quota of destination-based routes for the VPN gateway.'."\n" + .' * **used**: the number of destination-based routes created for the VPN gateway.'."\n" + ."\n" + .'* **VpnIPsecQuota**:'."\n" + ."\n" + .' * **quotaName**: the quota ID of IPsec-VPN connections.'."\n" + .' * **quantity**: the quota of IPsec-VPN connections for the VPN gateway.'."\n" + .' * **used**: the number of IPsec-VPN connections created for the VPN gateway.'."\n" + ."\n" + .'* **VpnPbrRouteQuota**:'."\n" + ."\n" + .' * **quotaName**: the quota ID of policy-based routes.'."\n" + .' * **quantity**: the quota of policy-based routes for the VPN gateway.'."\n" + .' * **used**: the number of policy-based routes created for the VPN gateway.'."\n" + ."\n" + .'* **VcoConfigConsistency**:'."\n" + ."\n" + .' * **vcoLackConf**: The system cannot obtain the configuration of the peer of the IPsec-VPN connection.'."\n" + .' * **vcoRunningConf**: the configurations that have been added to the peer of the IPsec-VPN connection.'."\n" + .' * **vcoDiffConf**: the configurations that are inconsistent between the local end and the peer.'."\n" + .' * **vcoConf**: the configurations that have been added to the local end.'."\n" + ."\n" + .'* **VcoUserInternetIpConnectivity**:'."\n" + ."\n" + .' * **targetIp**: the public IP address of the customer gateway.'."\n" + .' * **rtt**: the latency when the system accesses the public IP address of the customer gateway. Unit: milliseconds.'."\n" + .' * **lossRate**: the packet loss when the system accesses the public IP address of the customer gateway.'."\n" + ."\n" + .'* **VcoPrivateConnectivity**:'."\n" + ."\n" + .' * **targetIp**: the source IP address.'."\n" + .' * **srcIp**: the destination IP address.'."\n" + .' * **rtt**: the latency when the source IP address accesses the destination IP address. Unit: milliseconds.'."\n" + .' * **lossRate**: the packet loss when the source IP address accesses the destination IP address.'."\n", + 'type' => 'string', + 'example' => '{\\"targetIp\\":\\"192.168.0.1\\",\\"srcIp\\":\\"192.168.1.1\\",\\"rtt\\":-1.0,\\"lossRate\\":100.0}', + ], + 'DiagnoseResultLevel' => [ + 'title' => 'DiagnoseResultLevel', + 'description' => 'The diagnostic result level.'."\n" + ."\n" + .'* **normal**'."\n" + .'* **warning**'."\n" + .'* **error**'."\n" + ."\n" + .'For more information, see [Background information about quick diagnostics](~~190330~~).'."\n", + 'type' => 'string', + 'example' => 'normal', + ], + ], + ], + ], + 'FinishTime' => [ + 'title' => 'FinishTime', + 'description' => 'The timestamp when the system finishes diagnosing the item.'."\n" + ."\n" + .'The time follows the ISO8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2022-12-15T05:29:08Z', + ], + 'FinishedCount' => [ + 'title' => 'FinishedCount', + 'description' => 'The number of diagnostic items that have been diagnosed.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '7', + ], + 'RequestId' => [ + 'title' => 'RequestId', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '312C4D5A-6563-5FC6-8C6E-A43A5A316FEB', + ], + 'ResourceInstanceId' => [ + 'title' => 'ResourceInstanceId', + 'description' => 'The ID of the resource that is diagnosed.'."\n", + 'type' => 'string', + 'example' => 'vco-uf6huqsu63azl7mdp****', + ], + 'ResourceType' => [ + 'title' => 'ResourceType', + 'description' => 'The type of the resource.'."\n" + ."\n" + .'The value is set to **IPsec**, which indicates an IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'IPsec', + ], + 'TotalCount' => [ + 'title' => 'TotalCount', + 'description' => 'The total number of diagnostic items.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '7', + ], + 'VpnGatewayId' => [ + 'title' => 'VpnGatewayId', + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-uf6fzwp0ck3frwtbk****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'param_error', + 'errorMessage' => 'The param is must be in ...', + ], + [ + 'errorCode' => 'MissingParam.DiagnoseInfo', + 'errorMessage' => 'The VPN gateway ID and diagnose ID cannot be empty at the same time.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'IncorrectStatus.DiagnoseTimeout', + 'errorMessage' => 'Diagnose failed because of timeout.', + ], + [ + 'errorCode' => 'IncorrectStatus.VpnConnectionDeleted', + 'errorMessage' => 'Diagnose failed because the VPN connection has been deleted.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiagnoseId.NotFound', + 'errorMessage' => 'The specified diagnose ID [%s] does not exist.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayId.NotFound', + 'errorMessage' => 'The specified VPN gateway [%s] does not have any diagnoses.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"BeginTime\\": \\"2022-12-15T05:28:57Z\\",\\n \\"DiagnoseId\\": \\"vpndgn-uf6sgneym02lxyuv4****\\",\\n \\"DiagnoseResult\\": [\\n {\\n \\"DiagnoseName\\": \\"RouteEntryConflict\\",\\n \\"DiagnoseResultDescription\\": \\"{\\\\\\\\\\\\\\"targetIp\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"192.168.0.1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"srcIp\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"192.168.1.1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"rtt\\\\\\\\\\\\\\":-1.0,\\\\\\\\\\\\\\"lossRate\\\\\\\\\\\\\\":100.0}\\",\\n \\"DiagnoseResultLevel\\": \\"normal\\"\\n }\\n ],\\n \\"FinishTime\\": \\"2022-12-15T05:29:08Z\\",\\n \\"FinishedCount\\": 7,\\n \\"RequestId\\": \\"312C4D5A-6563-5FC6-8C6E-A43A5A316FEB\\",\\n \\"ResourceInstanceId\\": \\"vco-uf6huqsu63azl7mdp****\\",\\n \\"ResourceType\\": \\"IPsec\\",\\n \\"TotalCount\\": 7,\\n \\"VpnGatewayId\\": \\"vpn-uf6fzwp0ck3frwtbk****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7\\n 2022-12-15T05:29:08Z\\n 312C4D5A-6563-5FC6-8C6E-A43A5A316FEB\\n vpn-uf6fzwp0ck3frwtbk****\\n 7\\n vpndgn-uf6sgneym02lxyuv4****\\n 2022-12-15T05:28:57Z\\n IPsec\\n vco-uf6huqsu63azl7mdp****\\n \\n normal\\n No routing conflict\\n RouteEntryConflict\\n \\n \\n normal\\n {\\"quotaName\\":\\"vpn_route_entry_quota\\",\\"quantity\\":\\"30\\",\\"used\\":\\"0\\"}\\n VpnRouteQuota\\n \\n \\n normal\\n {\\"quotaName\\":\\"vpn_quota_ipsec_connetcions_num\\",\\"quantity\\":\\"10\\",\\"used\\":\\"1\\"}\\n VpnIPsecQuota\\n \\n \\n normal\\n {\\"quotaName\\":\\"vpn_pbr_route_entry_quota\\",\\"quantity\\":\\"20\\",\\"used\\":\\"0\\"}\\n VpnPbrRouteQuota\\n \\n \\n warning\\n {\\"vcoLackConf\\":[\\"leftid\\",\\"rightid\\",\\"right\\",\\"leftsubnets\\",\\"rightsubnets\\",\\"ike_auth_alg\\",\\"ike_enc_alg\\",\\"ike_lifetime\\",\\"ipsec_auth_alg\\",\\"ipsec_enc_alg\\",\\"ipsec_lifetime\\",\\"nat_traversal\\",\\"dpd\\",\\"ike_pfs\\",\\"ipsec_pfs\\"],\\"vcoRunningConf\\":{},\\"vcoDiffConf\\":{},\\"vcoConf\\":{\\"ipsec_lifetime\\":\\"86400\\",\\"ike_pfs\\":\\"group2\\",\\"ike_enc_alg\\":\\"aes\\",\\"leftsubnets\\":\\"0.0.0.0/0\\",\\"nat_traversal\\":\\"true\\",\\"leftid\\":\\"47.XX.XX.15\\",\\"right\\":\\"1.XX.XX.1\\",\\"rightsubnets\\":\\"0.0.0.0/0\\",\\"ipsec_pfs\\":\\"group2\\",\\"ike_auth_alg\\":\\"sha1\\",\\"ike_lifetime\\":\\"86400\\",\\"rightid\\":\\"1.XX.XX.1\\",\\"dpd\\":\\"true\\",\\"ipsec_auth_alg\\":\\"sha1\\",\\"ipsec_enc_alg\\":\\"aes\\"}}\\n VcoConfigConsistency\\n \\n \\n error\\n {\\"targetIp\\":\\"1.XX.XX.1\\",\\"rtt\\":-1.0,\\"lossRate\\":100.0}\\n VcoUserInternetIpConnectivity\\n \\n \\n error\\n {\\"targetIp\\":\\"192.168.0.1\\",\\"srcIp\\":\\"192.168.1.1\\",\\"rtt\\":-1.0,\\"lossRate\\":100.0}\\n VcoPrivateConnectivity\\n \\n","errorExample":""}]', + 'title' => 'GetVpnGatewayDiagnoseResult', + 'description' => 'When you call the **GetVpnGatewayDiagnoseResult** operation, you must specify one of **DiagnoseId** and **VpnGatewayId**.'."\n", + ], + 'DescribeVpnGatewayAvailableZones' => [ + 'summary' => 'Queries zones that support IPsec-VPN connections in a region.', + 'methods' => [ + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth specification.'."\n" + ."\n" + .'* If an IPsec-VPN connection can be associated with the VPN gateway, this parameter specifies the bandwidth specification of the VPN gateway.'."\n" + .'* In scenarios where an IPsec-VPN connection can be associated with a transit router. This parameter specifies the bandwidth specification supported by an IPsec-VPN connection.'."\n" + ."\n" + .'Different bandwidth specifications may affect returned zone information. Valid values:'."\n" + ."\n" + .'* **5M**'."\n" + .'* **10M**'."\n" + .'* **20M**'."\n" + .'* **50M**'."\n" + .'* **100M**'."\n" + .'* **200M**'."\n" + .'* **500M**'."\n" + .'* **1000M**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '5M', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The language in which the returned results are displayed. Valid values:'."\n" + ."\n" + .'* **zh-CN**: Chinese'."\n" + .'* **en-US** (default): English'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'zh-CN', + ], + ], + [ + 'name' => 'GatewayType', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '29784052-931F-543D-A612-36B3838163FA', + ], + 'AvailableZoneIdList' => [ + 'description' => 'The zones.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + 'ZoneName' => [ + 'description' => 'The zone name.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"29784052-931F-543D-A612-36B3838163FA\\",\\n \\"AvailableZoneIdList\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-h\\",\\n \\"ZoneName\\": \\"cn-hangzhou-h\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribeVpnGatewayAvailableZones', + ], + 'CreateCustomerGateway' => [ + 'summary' => 'Creates a customer gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the customer gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44****', + ], + ], + [ + 'name' => 'IpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The static IP address of the gateway device in the data center.'."\n" + ."\n" + .'* If you want to create a public IPsec-VPN connection, enter a public IP address.'."\n" + .'* If you want to create a private IPsec-VPN connection, enter a private IP address.'."\n" + ."\n" + .'You cannot use the following IP addresses. Otherwise, a IPsec-VPN connection cannot be established:'."\n" + ."\n" + .'* 100.64.0.0~100.127.255.255'."\n" + .'* 127.0.0.0~127.255.255.255'."\n" + .'* 169.254.0.0~169.254.255.255'."\n" + .'* 224.0.0.0~239.255.255.255'."\n" + .'* 255.0.0.0~255.255.255.255'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '101.12.XX.XX', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the customer gateway.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nametest', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the customer gateway.'."\n" + ."\n" + .'The description must be 1 to 100 characters in length, and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'desctest', + ], + ], + [ + 'name' => 'Asn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The autonomous system number (ASN) of the gateway device in your data center. This parameter is required If you want to use Border Gateway Protocol (BGP) for the IPsec-VPN connection. Valid values: 1 to 4294967295. 45104 is not supported.'."\n" + ."\n" + .'**Asn** is a 4-byte number. You can enter it in two segments and separate the first 16 bits from the following 16 bits with a period (.). Enter the number in each segment in decimal format.'."\n" + ."\n" + .'For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.'."\n" + ."\n" + .'> - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.'."\n" + .'> - 45104 is a unique identifier assigned by IANA to Alibaba Cloud. It is used to identify Alibaba Cloud during route selection and data transmission over the Internet.', + 'type' => 'string', + 'required' => false, + 'example' => '65530', + ], + ], + [ + 'name' => 'AuthKey', + 'in' => 'query', + 'schema' => [ + 'description' => 'The authentication key of the BGP routing protocol for the gateway device in the data center.'."\n" + ."\n" + .'The key must be 1 to 64 characters in length. It can contain only ASCII characters and cannot contain spaces or question marks (?).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AuthKey****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n" + ."\n" + .'You can specify at most 20 tag keys in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the customer gateway belongs.'."\n" + ."\n" + .'- You can call the [ListResourceGroups](~~158855~~) operation to query the resource group list.'."\n" + ."\n" + .'- If you do not specify a resource group, the customer gateway will belong to the default resource group after being created.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-aek2qo2h4jy****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'D32B3C26-6C6C-4988-93E9-D2A6444CE6AE', + ], + 'IpAddress' => [ + 'description' => 'The static IP address of the gateway device in the on-premises data center.', + 'type' => 'string', + 'example' => '101.12.XX.XX', + ], + 'Description' => [ + 'description' => 'The description of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'cgw-bp1jrawp82av6bws9****', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the customer gateway was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1493363486000', + ], + 'Name' => [ + 'description' => 'The name of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidAuthkey.Malformed', + 'errorMessage' => 'The specified BGP authentication key (%s) is malformed.', + ], + [ + 'errorCode' => 'InvalidIpAddress.AlreadyExist', + 'errorMessage' => 'Specified IpAddress is already exist.', + ], + [ + 'errorCode' => 'InvalidIpAddress.WrongFormat', + 'errorMessage' => 'Specified IpAddress is invalid.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'InvalidDescription', + 'errorMessage' => 'The description is not valid', + ], + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'IllegalParam.Asn', + 'errorMessage' => 'The specified Asn is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.MissingAsn', + 'errorMessage' => 'The autonomous system number of the customer gateway is mandatory when BGP authentication key is specified.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + [ + 'errorCode' => 'OperationFailed.NoRamPermission', + 'errorMessage' => 'Vpn Service has no permission to operate your IDaaS instances.', + ], + [ + 'errorCode' => 'CreateVpnUserGatewayQuotaFull.QuotaFull', + 'errorMessage' => 'The number of created VPN customer gateways exceeds the quota.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'The operation against this instance is too frequent, please try again later.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D32B3C26-6C6C-4988-93E9-D2A6444CE6AE\\",\\n \\"IpAddress\\": \\"101.12.XX.XX\\",\\n \\"Description\\": \\"desctest\\",\\n \\"CustomerGatewayId\\": \\"cgw-bp1jrawp82av6bws9****\\",\\n \\"CreateTime\\": 1493363486000,\\n \\"Name\\": \\"nametest\\"\\n}","errorExample":""},{"type":"xml","example":"\\n D32B3C26-6C6C-4988-93E9-D2A6444CE6AE\\n 101.12.XX.XX\\n desctest\\n cgw-bp1jrawp82av6bws9****\\n 1493363486000\\n nametest\\n","errorExample":""}]', + 'title' => 'CreateCustomerGateway', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteCustomerGateway' => [ + 'summary' => 'Deletes a customer gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the customer gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04****', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cgw-bp1pvpl9r9adju6l5****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DependencyViolation.VpnConnection', + 'errorMessage' => 'There are vpn connections on specified customer gateway not deleted.', + ], + [ + 'errorCode' => 'VpnGateway.task.conflict', + 'errorMessage' => 'The VPN is in the configuration state, please wait a while before operating.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidCustomerGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified customer gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n","errorExample":""}]', + 'title' => 'DeleteCustomerGateway', + 'description' => 'Before you delete a customer gateway, make sure that no IPsec-VPN connection is associated with the customer gateway. For more information about how to delete an IPsec-VPN connection, see [DeleteVpnAttachment](~~2526938~~) or [DeleteVpnConnection](~~2526948~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyCustomerGatewayAttribute' => [ + 'summary' => 'Modifies the configuration of a customer gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the customer gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44****', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cgw-bp1pvpl9r9adju6l5****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the customer gateway.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nametest', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the customer gateway.'."\n" + ."\n" + .'The description must be 1 to 100 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'desctest', + ], + ], + [ + 'name' => 'AuthKey', + 'in' => 'query', + 'schema' => [ + 'description' => 'The authentication key of the BGP routing protocol for the gateway device in the data center.'."\n" + ."\n" + .'The key must be 1 to 64 characters in length. It can contain only ASCII characters and cannot contain spaces or question marks (?).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AuthKey****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8AA5CE21-2E6A-4530-BDF5-F055849476E6', + ], + 'IpAddress' => [ + 'description' => 'The public IP address of the gateway device in the data center.'."\n", + 'type' => 'string', + 'example' => '139.32.XX.XX', + ], + 'Description' => [ + 'description' => 'The description of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'cgw-bp1pvpl9r9adju6l5****', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the customer gateway was created.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492747187000', + ], + 'Name' => [ + 'description' => 'The name of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the customer gateway belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'InvalidDescription', + 'errorMessage' => 'The description is not valid', + ], + [ + 'errorCode' => 'OperationDenied.MissingAsn', + 'errorMessage' => 'The autonomous system number of the customer gateway is mandatory when BGP authentication key is specified.', + ], + [ + 'errorCode' => 'InvalidAuthkey.Malformed', + 'errorMessage' => 'The specified BGP authentication key (%s) is malformed.', + ], + [ + 'errorCode' => 'OperationDenied.VpnFinancialLocked', + 'errorMessage' => 'The associated VPN gateway is financially locked. You cannot update the attributes of the customer gateway.', + ], + [ + 'errorCode' => 'OperationDenied.VpnConfiguring', + 'errorMessage' => 'The associated VPN gateway is being configured. You cannot update the attributes of the customer gateway.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidCustomerGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified customer gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8AA5CE21-2E6A-4530-BDF5-F055849476E6\\",\\n \\"IpAddress\\": \\"139.32.XX.XX\\",\\n \\"Description\\": \\"desctest\\",\\n \\"CustomerGatewayId\\": \\"cgw-bp1pvpl9r9adju6l5****\\",\\n \\"CreateTime\\": 1492747187000,\\n \\"Name\\": \\"nametest\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 8AA5CE21-2E6A-4530-BDF5-F055849476E6\\n 139.32.XX.XX\\n desctest\\n cgw-bp1pvpl9r9adju6l5****\\n 1492747187000\\n nametest\\n","errorExample":""}]', + 'title' => 'ModifyCustomerGatewayAttribute', + 'description' => '* When you call **ModifyCustomerGatewayAttribute**, if a value is assigned to **AuthKey**, the operation is asynchronous. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the configurations are being modified.'."\n" + .' * If a VPN gateway is in the **active** state, the configurations are modified.'."\n" + ."\n" + .'* When you call **ModifyCustomerGatewayAttribute**, if no value is assigned to **AuthKey**, the operation is synchronous.'."\n" + ."\n" + .'* You cannot repeatedly call **ModifyCustomerGatewayAttribute** to modify the configurations of a customer gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeCustomerGateway' => [ + 'summary' => 'Queries details of a customer gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the customer gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cgw-bp1pvpl9r9adju6l5****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'Asn' => [ + 'description' => 'The autonomous system number (ASN) of the gateway device in the data center.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65535', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A0457BC9-6C0F-4437-AB9D-FB2EABC1D6A2', + ], + 'IpAddress' => [ + 'description' => 'The IP address of the gateway device in the data center.'."\n", + 'type' => 'string', + 'example' => '139.32.XX.XX', + ], + 'Description' => [ + 'description' => 'The description of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'cgw-bp1pvpl9r9adju6l5****', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the customer gateway was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492747187000', + ], + 'Name' => [ + 'description' => 'The name of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'AuthKey' => [ + 'description' => 'The authentication key of the Border Gateway Protocol (BGP) routing protocol for the gateway device in the data center.'."\n", + 'type' => 'string', + 'example' => 'AuthKey****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The list of tags added to the customer gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'TagValue', + ], + ], + ], + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the customer gateway belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidCustomerGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified customer gateway instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Asn\\": 65535,\\n \\"RequestId\\": \\"A0457BC9-6C0F-4437-AB9D-FB2EABC1D6A2\\",\\n \\"IpAddress\\": \\"139.32.XX.XX\\",\\n \\"Description\\": \\"desctest\\",\\n \\"CustomerGatewayId\\": \\"cgw-bp1pvpl9r9adju6l5****\\",\\n \\"CreateTime\\": 1492747187000,\\n \\"Name\\": \\"nametest\\",\\n \\"AuthKey\\": \\"AuthKey****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ]\\n },\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 65535\\n A0457BC9-6C0F-4437-AB9D-FB2EABC1D6A2\\n 139.32.XX.XX\\n desctest\\n cgw-bp1pvpl9r9adju6l5****\\n 1492747187000\\n nametest\\n AuthKey****\\n \\n TagKey\\n TagValue\\n \\n","errorExample":""}]', + 'title' => 'DescribeCustomerGateway', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeCustomerGateways' => [ + 'summary' => 'Queries customer gateways.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the customer gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the customer gateway.'."\n" + ."\n" + .'> If you do not specify a customer gateway ID, the system queries all customer gateways in the current region by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-bp1pvpl9r9adju6l5****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to be added to the customer gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 64 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n" + ."\n" + .'You can specify at most 20 tag keys at a time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The value of the tag.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It can be an empty string. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values at a time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the customer gateway belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query the resource group list.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E82612A9-CB90-4D7E-B394-1DB7F6509B29', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'CustomerGateways' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CustomerGateway' => [ + 'description' => 'The information about customer gateways.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The IP address of the gateway device in the data center.'."\n", + 'type' => 'string', + 'example' => '139.32.XX.XX', + ], + 'Asn' => [ + 'description' => 'The autonomous system number (ASN) of the gateway device in the data center.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65530', + ], + 'Description' => [ + 'description' => 'The description of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'CustomerGatewayId' => [ + 'description' => 'The customer gateway ID.'."\n", + 'type' => 'string', + 'example' => 'cgw-bp1pvpl9r9adju6l5****', + ], + 'CreateTime' => [ + 'description' => 'The time when the customer gateway was created. Unit: millisecond.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492747187000', + ], + 'Name' => [ + 'description' => 'The name of the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'AuthKey' => [ + 'description' => 'The authentication key that is used to connect to the gateway device in the data center by using Border Gateway Protocol (BGP).'."\n", + 'type' => 'string', + 'example' => 'AuthKey****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags that are added to the customer gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag.'."\n", + 'type' => 'string', + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The value of the tag.'."\n", + 'type' => 'string', + 'example' => 'TagValue', + ], + ], + ], + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the customer gateway belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"E82612A9-CB90-4D7E-B394-1DB7F6509B29\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"CustomerGateways\\": {\\n \\"CustomerGateway\\": [\\n {\\n \\"IpAddress\\": \\"139.32.XX.XX\\",\\n \\"Asn\\": 65530,\\n \\"Description\\": \\"desctest\\",\\n \\"CustomerGatewayId\\": \\"cgw-bp1pvpl9r9adju6l5****\\",\\n \\"CreateTime\\": 1492747187000,\\n \\"Name\\": \\"nametest\\",\\n \\"AuthKey\\": \\"AuthKey****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ]\\n },\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n E82612A9-CB90-4D7E-B394-1DB7F6509B29\\n 1\\n 1\\n \\n 139.32.XX.XX\\n 65530\\n desctest\\n cgw-bp1pvpl9r9adju6l5****\\n 1492747187000\\n nametest\\n AuthKey****\\n \\n TagKey\\n TagValue\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeCustomerGateways', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateVpnConnection' => [ + 'summary' => 'Creates an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec-VPN connection is created. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-001****', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'When you create an IPsec-VPN connection in single-tunnel mode, this parameter is required.'."\n" + ."\n" + .'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1q8bgx4xnkm****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPsec', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the virtual private cloud (VPC) that needs to communicate with the on-premises database. The CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.1.0/24,192.168.2.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.10.1.0/24,10.10.2.0/24', + ], + ], + [ + 'name' => 'RemoteSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the on-premises database that needs to communicate with the VPC. The CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.3.0/24,192.168.4.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.10.3.0/24,10.10.4.0/24', + ], + ], + [ + 'name' => 'EffectImmediately', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to immediately start IPsec negotiations. Valid values:'."\n" + ."\n" + .'* **true**: immediately starts IPsec negotiations.'."\n" + .'* **false** (default): starts IPsec negotiations when inbound traffic is detected.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'IkeConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The configurations of Phase 1 negotiations:'."\n" + ."\n" + .'* **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.'."\n" + ."\n" + .' * The key cannot contain spaces. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + ."\n" + .' * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](~~2526951~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .' > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.'."\n" + ."\n" + .'* **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.'."\n" + ."\n" + .' Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n" + ."\n" + .'* **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.'."\n" + ."\n" + .' * **main:** This mode offers higher security during negotiations.'."\n" + .' * **aggressive:** This mode is faster and has a higher success rate.'."\n" + ."\n" + .'* **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .' Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n" + ."\n" + .'* **IkeConfig.IkeAuthAlg**: the authentication algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .' Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.'."\n" + ."\n" + .'* **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.'."\n" + ."\n" + .'* **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0** to **86400**. Default value: **86400**.'."\n" + ."\n" + .'* **IkeConfig.LocalId**: the identifier of the VPN gateway. It can be up to 100 characters in length and cannot contain space characters. The default value is the IP address of the VPN gateway.'."\n" + ."\n" + .'* **IkeConfig.RemoteId**: the identifier of the customer gateway. It can be up to 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway.', + 'type' => 'string', + 'required' => false, + 'example' => '{"Psk":"1234****","IkeVersion":"ikev1","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400,"LocalId":"47.XX.XX.1","RemoteId":"47.XX.XX.2"}', + ], + ], + [ + 'name' => 'IpsecConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The configurations of Phase 2 negotiations:'."\n" + ."\n" + .'* **IpsecConfig.IpsecEncAlg**: the encryption algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .' Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n" + ."\n" + .'* **IpsecConfig. IpsecAuthAlg**: the authentication algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .' Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.'."\n" + ."\n" + .'* **IpsecConfig. IpsecPfs**: the DH key exchange algorithm that is used in Phase 2 negotiations. Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.'."\n" + ."\n" + .'* **IpsecConfig. IpsecLifetime**: the SA lifetime that is determined by Phase 2 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400}', + ], + ], + [ + 'name' => 'HealthCheckConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The health check configuration:'."\n" + ."\n" + .'* **HealthCheckConfig.enable**: specifies whether to enable health checks. Valid values: **true** and **false**. Default value: false.'."\n" + .'* **HealthCheckConfig.dip**: the destination IP address configured for health checks.'."\n" + .'* **HealthCheckConfig.sip:** the source IP address that is used for health checks.'."\n" + .'* **HealthCheckConfig.interval**: the time interval of health check retries. Unit: seconds. Default value: **3**.'."\n" + .'* **HealthCheckConfig.retry**: the maximum number of health check retries. Default value: **3**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"enable":"true","dip":"192.168.10.1","sip":"10.10.1.1","interval":"3","retry":"3"}', + ], + ], + [ + 'name' => 'AutoConfigRoute', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically configure routes. Valid values:'."\n" + ."\n" + .'* **true** (default)'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableDpd', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable the dead peer detection (DPD) feature. Valid values:'."\n" + ."\n" + .'* **true** (default) The initiator of the IPsec-VPN connection sends DPD packets to verify the existence and availability of the peer. If no feedback is received from the peer within a specified period of time, the connection fails. ISAKMP SAs and IPsec SAs are deleted. The IPsec tunnel is also deleted.'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableNatTraversal', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable NAT traversal. Valid values:'."\n" + ."\n" + .'* **true** (default) After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the VPN tunnel.'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'BgpConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'BGP configuration:'."\n" + ."\n" + .'* **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values: **true** and **false** (default).'."\n" + ."\n" + .'* **BgpConfig.LocalAsn:** the autonomous system number (ASN) on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.'."\n" + ."\n" + .' You can enter a value in two segments separated by a period (.). Each segment is 16 bits in length. Enter the number in each segment in decimal format.'."\n" + ."\n" + .' For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.'."\n" + ."\n" + .'* **BgpConfig.TunnelCidr**: The CIDR block of the IPsec tunnel. The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .' > The CIDR block of the IPsec tunnel for each IPsec-VPN connection on a VPN gateway must be unique.'."\n" + ."\n" + .'* **LocalBgpIp**: the BGP address on the Alibaba Cloud side. It must be an IP address that falls within the CIDR block of the IPsec tunnel.'."\n" + ."\n" + .'> - Before you add BGP configurations, we recommend that you learn about how BGP works and the limits. For more information, see [Configure BGP dynamic routing](~~2638220~~).'."\n" + .'> - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. Refer to the relevant documentation for the private ASN range.', + 'type' => 'string', + 'required' => false, + 'example' => '{"EnableBgp":"true","LocalAsn":"45104","TunnelCidr":"169.254.11.0/30","LocalBgpIp":"169.254.11.1"}', + ], + ], + [ + 'name' => 'RemoteCaCertificate', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The certificate authority (CA) certificate. If the VPN gateway is of the ShangMi (SM) type, you need to configure a CA certificate for the peer gateway device.'."\n" + ."\n" + .'* If an SM VPN gateway is used to create the IPsec-VPN connection, this parameter is required.'."\n" + .'* If a standard VPN gateway is used to create the IPsec-VPN connection, leave this parameter empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag value.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n" + ."\n" + .'You can specify at most 20 tag keys in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'TunnelOptionsSpecification', + 'in' => 'formData', + 'allowEmptyValue' => true, + 'style' => 'flat', + 'schema' => [ + 'description' => 'The tunnel configurations.'."\n" + ."\n" + .'* You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.'."\n" + .'* When you create an IPsec-VPN connection in dual tunnel mode, you must add configurations of the active and standby tunnels for the IPsec-VPN connection. Each IPsec-VPN connection supports only one active tunnel and one standby tunnel.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel configuration.'."\n", + 'type' => 'object', + 'properties' => [ + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway that is associated with the tunnel.'."\n" + ."\n" + .'> - This parameter is required when you create an IPsec-VPN connection in dual-tunnel mode.'."\n" + .'> - You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.'."\n" + .'> - When you create an IPsec-VPN connection in dual tunnel mode, you must add configurations of the active and standby tunnels for the IPsec-VPN connection. Each IPsec-VPN connection supports only one active tunnel and one standby tunnel.', + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-p0wy363lucf1uyae8****', + ], + 'EnableDpd' => [ + 'description' => 'Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:'."\n" + ."\n" + .'* **true** (default): enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted. The security tunnel is also deleted.'."\n" + .'* **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Specifies whether to enable NAT traversal for the tunnel. Valid values:'."\n" + ."\n" + .'* **true** (default): enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.'."\n" + .'* **false**: disables NAT traversal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'RemoteCaCertificate' => [ + 'description' => 'If the VPN gateway uses an SM certificate, you need to configure the CA certificate used by the IPsec peer.'."\n" + ."\n" + .'* If the VPN gateway uses an SM certificate, this parameter is required.'."\n" + .'* If the VPN gateway does not use an SM certificate, leave this parameter empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + 'Role' => [ + 'description' => 'The role of the tunnel. Valid values:'."\n" + ."\n" + .'* **master**: The tunnel is an active tunnel.'."\n" + .'* **slave**: The tunnel is a standby tunnel.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'master', + ], + 'TunnelBgpConfig' => [ + 'description' => 'The Border Gateway Protocol (BGP) configurations of the tunnel.'."\n", + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'description' => 'The autonomous system number (ASN) of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.'."\n" + ."\n" + .'> - If you set **EnableTunnelsBgp** to **true**, you must set this parameter.'."\n" + .'> - Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [Configure BGP dynamic routing](~~2638220~~).'."\n" + .'> - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.', + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.1', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the tunnel. The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .'> The BGP CIDR block of each tunnel must be unique on a VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.0/30', + ], + ], + 'required' => false, + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configurations of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'md5', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .'Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 1 negotiations. Unit: seconds'."\n" + ."\n" + .'Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive:** This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: **group2**.\\'."\n" + .'Valid values: **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ikev1', + ], + 'LocalId' => [ + 'description' => 'The identifier of the tunnel on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the tunnel.'."\n" + ."\n" + .'**LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.21.XX.XX', + ], + 'Psk' => [ + 'description' => 'The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.'."\n" + ."\n" + .'* The key cannot contain spaces. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .'* If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](~~2526951~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .'> The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway that is associated with the tunnel.'."\n" + ."\n" + .'**RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.42.XX.XX', + ], + ], + 'required' => false, + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configurations of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'md5', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 2 negotiations. Unit: seconds'."\n" + ."\n" + .'Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Default value: **group2**.'."\n" + ."\n" + .'Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + ], + 'required' => false, + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnableTunnelsBgp', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'This parameter is available if you create an IPsec-VPN connection in dual-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable the BGP feature for the tunnel. Valid values: **true** and **false**. Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '082AD562-B8DB-4BB2-861F-DA1FCA01FD76', + ], + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-bp15oes1py4i6****', + ], + 'Name' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the IPsec-VPN connection was established. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1544666102000', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'InvalidVpnConnection.AlreadyExists', + 'errorMessage' => 'Vpn connection already exists.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnGateway.IpsecVpnDisabled', + 'errorMessage' => 'The vpn gateway does not enable IPSec VPN.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecPfs', + 'errorMessage' => 'The specified vpn connection ipsec Ipsec Pfs is not support.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecAuthAlg', + 'errorMessage' => 'The specified vpn connection ipsec Auth Alg is not support.', + ], + [ + 'errorCode' => 'VpnRouteEntry.ConflictSSL', + 'errorMessage' => 'The specified route entry has conflict with SSL client.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + [ + 'errorCode' => 'VpnRouteEntry.InvalidWeight', + 'errorMessage' => 'Invalid route entry weight value.', + ], + [ + 'errorCode' => 'InvalidParameter.VpnConnectionName', + 'errorMessage' => 'The specified vpn connection name is invalid.', + ], + [ + 'errorCode' => 'OperationUnsupported.SetDPD', + 'errorMessage' => 'Current version of the VPN does not support setting DPD.', + ], + [ + 'errorCode' => 'OperationUnsupported.SetNatTraversal', + 'errorMessage' => 'Current version of the VPN does not support setting NAT traversal.', + ], + [ + 'errorCode' => 'QuotaExceeded.PolicyBasedRoute', + 'errorMessage' => 'The maximum number of policy-based routes is exceeded. Existing routes: %s. Routes to be created: %s. Maximum routes: %s.', + ], + [ + 'errorCode' => 'MissingParameter.TunnelCidr', + 'errorMessage' => 'The parameter TunnelCidr is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'OperationUnsupported.EnableBgp', + 'errorMessage' => 'Current version of the VPN does not support enable BGP.', + ], + [ + 'errorCode' => 'MissingParam.CustomerGatewayAsn', + 'errorMessage' => 'Asn of customer gateway is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'IllegalParam.LocalAsn', + 'errorMessage' => 'The specified LocalAsn is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.BgpConfig', + 'errorMessage' => 'The specified BgpConfig is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.EnableBgp', + 'errorMessage' => 'VPN connection must enable BGP when VPN gateway has enabled BGP.', + ], + [ + 'errorCode' => 'IllegalParam.TunnelCidr', + 'errorMessage' => 'The specified TunnelCidr is invalid.', + ], + [ + 'errorCode' => 'InvalidLocalBgpIp.Malformed', + 'errorMessage' => 'The specified LocalBgpIp is malformed.', + ], + [ + 'errorCode' => 'IllegalParam.LocalBgpIp', + 'errorMessage' => 'The specified LocalBgpIp is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.RemoteSubnet', + 'errorMessage' => 'The specified "RemoteSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.MissCertificate', + 'errorMessage' => 'The VPN gateway has not associated any certificates.', + ], + [ + 'errorCode' => 'MissingParam.RemoteId', + 'errorMessage' => 'The remote ID is mandatory when creating national standard VPN connection.', + ], + [ + 'errorCode' => 'OperationFailed.CenLevelNotSupport', + 'errorMessage' => 'When the VPC to which the VPN gateway belongs is attached to a FULL-mode CEN, the VPN gateway cannot enable BGP.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictRouteEntry', + 'errorMessage' => 'The specified customer gateway has conflict with route entry.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidTunnelCidr.Malformed', + 'errorMessage' => 'The specified TunnelCidr is malformed.', + ], + [ + 'errorCode' => 'VpnConnectionParamInvalid.SameVpnAndCgwDifferentIkeConfigs', + 'errorMessage' => 'IPSec connections associated with the same user gateway and VPN gateway should have the same pre-shared key and IKE configuration.', + ], + [ + 'errorCode' => 'VpnConnectionParamInvalid.SameVpnAndCgwTrafficSelectorOverlap', + 'errorMessage' => 'Traffic selectors of IPSec connections associated with the same user gateway and VPN gateway should not overlap.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictVpnIp', + 'errorMessage' => 'The customer gateway associated with the IPSec connection should not have the same IP address as the VPN gateway.', + ], + [ + 'errorCode' => 'VpnGateway.IPsecServerAndVpnConnectionConflict', + 'errorMessage' => 'The IPSec connection and IPSec server cannot be configured on the same VPN gateway at the same time.', + ], + [ + 'errorCode' => 'InvalidSslVpnServerCertId.NotFound', + 'errorMessage' => 'The parameter is incorrect. The corresponding SSL VPN server certificate cannot be found.', + ], + [ + 'errorCode' => 'MissingParameter.TunnelOptionsSpecification', + 'errorMessage' => 'The required parameters are missing when creating a tunnel for dual-tunnel VPN.', + ], + [ + 'errorCode' => 'CreateDbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of created destination routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'CreatePbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of policy routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'CreateVpnConnectionsQuotaFull.QuotaFull', + 'errorMessage' => 'The number of VPN connections exceeds the quota limit.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + [ + 'errorCode' => 'OperationFailed.OpenCdtServiceFirst', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'EncAlgInvalid.DesIncompatible', + 'errorMessage' => 'Des/3des in IkeEncAlg and IpsecEncAlg does not support multi algorithm.', + ], + [ + 'errorCode' => 'IkeVersionInvalid.GcmIncompatible', + 'errorMessage' => 'Ikev1 does not support IkeEncAlg of gcm16.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidCustomerGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified customer gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 60, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"082AD562-B8DB-4BB2-861F-DA1FCA01FD76\\",\\n \\"VpnConnectionId\\": \\"vco-bp15oes1py4i6****\\",\\n \\"Name\\": \\"test\\",\\n \\"CreateTime\\": 1544666102000\\n}","errorExample":""},{"type":"xml","example":"\\n 082AD562-B8DB-4BB2-861F-DA1FCA01FD76\\n vco-bp15oes1py4i6****\\n test\\n 1544666102000\\n","errorExample":""}]', + 'title' => 'CreateVpnConnection', + 'description' => '* If the VPN gateway supports the dual-tunnel mode, you can specify the following parameters in addition to the required parameters when you call `CreateVpnConnection`:'."\n" + ."\n" + .' **ClientToken**, **Name**, **EffectImmediately**, **AutoConfigRoute**, **Tags** array, **TunnelOptionsSpecification** array, and **EnableTunnelsBgp**.'."\n" + ."\n" + .' For more information about the regions and zones that support the dual-tunnel mode, see [IPsec-VPN connections support the dual-tunnel mode](~~2358946~~).'."\n" + ."\n" + .'* If the VPN gateway supports only the dual-tunnel mode, you can specify the following parameters in addition to the required parameters when you call `CreateVpnConnection`:'."\n" + ."\n" + .' **ClientToken**, **CustomerGatewayId**, **Name**, **EffectImmediately**, **IkeConfig**, **IpsecConfig**, **HealthCheckConfig**, **AutoConfigRoute**, **EnableDpd**, **EnableNatTraversal**, **BgpConfig**, **RemoteCaCertificate**, and **Tags** array.'."\n" + ."\n" + .'* **CreateVpnConnection** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the IPsec-VPN connection is being created.'."\n" + .' * If the VPN gateway is in the **active** state, the IPsec-VPN connection is created.'."\n" + ."\n" + .'* You cannot call **CreateVpnConnection** to create multiple IPsec-VPN connections associated with a VPN gateway at the same time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVpnConnection' => [ + 'summary' => 'Deletes an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec-VPN connection is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-bp1bbi27hojx80nck****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}"},{"type":"xml","example":"\\n\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n","errorExample":"\\n\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n"}]', + 'title' => 'DeleteVpnConnection', + 'description' => '* **DeleteVpnConnection** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnGateway](~~73720~~) operation to query the status of a VPN gateway.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the IPsec-VPN connection is being deleted.'."\n" + .' * If a VPN gateway is in the **active** state, the IPsec-VPN connection has been deleted.'."\n" + ."\n" + .'* You cannot call the **DeleteVpnConnection** operation to delete multiple IPsec-VPN connections for a VPN gateway at a time.'."\n" + ."\n" + .'> After an IPsec-VPN connection between a data center and Alibaba Cloud is deleted, the connection between the data center and Alibaba Cloud is closed.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVpnConnectionAttribute' => [ + 'summary' => 'Modifies the configuration of an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IPsec-VPN connection is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => ' cn-shanghai', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp1bbi27hojx80nck****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nametest', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block used to connect the virtual private cloud (VPC) to the data center. The CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.1.0/24,192.168.2.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.1.0/24,10.1.2.0/24', + ], + ], + [ + 'name' => 'RemoteSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block on the data center side. This CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.3.0/24,192.168.4.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.2.1.0/24,10.2.2.0/24', + ], + ], + [ + 'name' => 'EffectImmediately', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to immediately start IPsec negotiations after the configuration takes effect. Valid values:'."\n" + ."\n" + .'* **true**: immediately starts IPsec negotiations after the configuration takes effect.'."\n" + .'* **false**: IPsec negotiations start when inbound traffic is detected.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IkeConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The configurations of Phase 1 negotiations:'."\n" + ."\n" + .'* **IkeConfig.Psk**: The pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.'."\n" + ."\n" + .' * The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .' * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](~~2526951~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .' > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.'."\n" + ."\n" + .'* **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**.'."\n" + ."\n" + .' Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n" + ."\n" + .'* **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**.'."\n" + ."\n" + .' * **main:** This mode offers higher security during negotiations.'."\n" + .' * **aggressive:** This mode supports faster negotiations and a higher success rate.'."\n" + ."\n" + .'* **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .' Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + ."\n" + .'* **IkeConfig.IkeAuthAlg**: the authentication algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .' Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + ."\n" + .'* **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.'."\n" + ."\n" + .'* **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0 to 86400**.'."\n" + ."\n" + .'* **IkeConfig.LocalId**: the identifier of the VPN gateway. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the VPN gateway.'."\n" + ."\n" + .'* **IkeConfig.RemoteId**: the identifier of the customer gateway. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway.', + 'type' => 'string', + 'required' => false, + 'example' => '{"Psk":"pgw6dy7d1i8i****","IkeVersion":"ikev1","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400,"LocalId":"116.64.XX.XX","RemoteId":"139.18.XX.XX"}', + ], + ], + [ + 'name' => 'IpsecConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.'."\n" + ."\n" + .'The configuration of Phase 2 negotiations:'."\n" + ."\n" + .'* **IpsecConfig.IpsecEncAlg**: the encryption algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .' Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + ."\n" + .'* **IpsecConfig. IpsecAuthAlg**: the authentication algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .' Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + ."\n" + .'* **IpsecConfig. IpsecPfs**: the DH key exchange algorithm that is used in Phase 1 negotiations. If you specify this parameter, packets of all protocols are forwarded. Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.'."\n" + ."\n" + .'* **IpsecConfig. IpsecLifetime:** the SA lifetime that is determined by Phase 2 negotiations. Unit: seconds. Valid values: **0 to 86400**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400}', + ], + ], + [ + 'name' => 'HealthCheckConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.'."\n" + ."\n" + .'The health check configuration:'."\n" + ."\n" + .'* **HealthCheckConfig.enable**: specifies whether to enable health checks. Valid values: **true** and **false**.'."\n" + .'* **HealthCheckConfig.dip**: the destination IP address that is used for health checks.'."\n" + .'* **HealthCheckConfig.sip**: the source IP address that is used for health checks.'."\n" + .'* **HealthCheckConfig.interval**: the interval between two consecutive health checks. Unit: seconds.'."\n" + .'* **HealthCheckConfig.retry**: the maximum number of health check retries.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"enable":"true","dip":"192.168.1.1","sip":"10.1.1.1","interval":"3","retry":"3"}', + ], + ], + [ + 'name' => 'AutoConfigRoute', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically advertise routes. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableDpd', + 'in' => 'query', + 'schema' => [ + 'description' => 'You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.'."\n" + ."\n" + .'Specifies whether to enable the dead peer detection (DPD) feature. Valid values:'."\n" + ."\n" + .'* **true:**: enables the DPD feature. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within a specific period of time, the connection fails. Then, the ISAKMP SA, IPsec SA, and IPsec tunnel are deleted.'."\n" + .'* **false**: disables the DPD feature. The initiator of the IPsec-VPN connection does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableNatTraversal', + 'in' => 'query', + 'schema' => [ + 'description' => 'You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.'."\n" + ."\n" + .'Specifies whether to enable NAT traversal. Valid values:'."\n" + ."\n" + .'* **true** After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec tunnel.'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'BgpConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'BGP configuration:'."\n" + ."\n" + .'* **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values: **true** and **false**.'."\n" + ."\n" + .'* **BgpConfig.LocalAsn:** the autonomous system number (ASN) on the Alibaba Cloud side. Valid values: **1** to **4294967295**.'."\n" + ."\n" + .' You can enter a value in two segments separated by a period (.). Each segment is 16 bits in length. Enter the number in each segment in decimal format.'."\n" + ."\n" + .' For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.'."\n" + ."\n" + .'* **BgpConfig.TunnelCidr**: The CIDR block of the IPsec tunnel. The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .' > The CIDR block of the IPsec tunnel for each IPsec-VPN connection on a VPN gateway must be unique.'."\n" + ."\n" + .'* **LocalBgpIp**: the BGP address on the Alibaba Cloud side. It must be an IP address that falls within the CIDR block of the IPsec tunnel.'."\n" + ."\n" + .'> - This parameter is required when the VPN gateway has dynamic BGP enabled.'."\n" + .'> - Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [Configure BGP dynamic routing](~~2638220~~).'."\n" + .'> - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.', + 'type' => 'string', + 'required' => false, + 'example' => '{"EnableBgp":"true","LocalAsn":"65530","TunnelCidr":"169.254.11.0/30","LocalBgpIp":"169.254.11.1"}', + ], + ], + [ + 'name' => 'RemoteCaCertificate', + 'in' => 'query', + 'schema' => [ + 'description' => 'You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.'."\n" + ."\n" + .'If the VPN gateway uses a ShangMi (SM) certificate, you can modify the CA certificate used by the IPsec peer.'."\n" + ."\n" + .'If the VPN gateway does not use an SM certificate, you cannot specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + ], + [ + 'name' => 'TunnelOptionsSpecification', + 'in' => 'formData', + 'allowEmptyValue' => true, + 'style' => 'flat', + 'schema' => [ + 'description' => 'The tunnel configurations.'."\n" + ."\n" + .'You can specify parameters in the **TunnelOptionsSpecification** array when you modify the configurations of an IPsec-VPN connection in dual-tunnel mode. You can modify the configurations of both the active and standby tunnels of the IPsec-VPN connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel configurations.'."\n", + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tun-opsqc4d97wni27****', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the tunnel.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-1nmwbpgrp7ssqm1yn****', + ], + 'Role' => [ + 'description' => 'The tunnel role. Valid values:'."\n" + ."\n" + .'* **master**: The tunnel is an active tunnel.'."\n" + .'* **slave**: The tunnel is a standby tunnel.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'master', + ], + 'EnableDpd' => [ + 'description' => 'Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:'."\n" + ."\n" + .'* **true**: enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted. The security tunnel is also deleted.'."\n" + .'* **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Specifies whether to enable NAT traversal for the tunnel. Valid values:'."\n" + ."\n" + .'* **true**: enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.'."\n" + .'* **false**: disables NAT traversal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'RemoteCaCertificate' => [ + 'description' => 'If the VPN gateway uses an SM certificate, you can modify the CA certificate used by the IPsec peer.'."\n" + ."\n" + .'If the VPN gateway does not use an SM certificate, this parameter is not supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + 'TunnelBgpConfig' => [ + 'description' => 'The Border Gateway Protocol (BGP) configurations of the tunnel.'."\n", + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'description' => 'The ASN of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.'."\n" + ."\n" + .'> You can specify this parameter only if **EnableTunnelsBgp** is set to **true**.'."\n" + ."\n" + .'* Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [Configure BGP dynamic routing](~~2638220~~).'."\n" + ."\n" + .'* We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.', + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.1', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the tunnel.'."\n" + ."\n" + .'The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .'> The BGP CIDR block of each tunnel must be unique on a VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.0/30', + ], + ], + 'required' => false, + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configurations of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'md5', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 1 negotiations.'."\n" + ."\n" + .'Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0** to **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The negotiation mode of IKE. Valid values:'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive:** This mode supports faster negotiations and a higher success rate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol. Valid values: **ikev1** and **ikev2**.'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ikev1', + ], + 'LocalId' => [ + 'description' => 'The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the tunnel.'."\n" + ."\n" + .'**LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.21.XX.XX', + ], + 'Psk' => [ + 'description' => 'The pre-shared key, which is used for identity authentication between the tunnel and the tunnel peer.'."\n" + ."\n" + .'* The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .'* If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](~~2526951~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .'> The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be built.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway that is associated with the tunnel.'."\n" + ."\n" + .'**RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.42.XX.XX', + ], + ], + 'required' => false, + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configurations of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'md5', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 2 negotiations. Unit: seconds Valid values: **0** to **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + ], + 'required' => false, + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnableTunnelsBgp', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'You can specify this parameter if you modify the configuration of a dual-tunnel IPsec-VPN connection.'."\n" + ."\n" + .'Specifies whether to enable BGP for the tunnel. Valid values: **true** and **false**.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableNatTraversal' => [ + 'description' => 'Indicates whether NAT traversal is enabled for the IPsec-VPN connection. Valid values: Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n" + ."\n" + .'This parameter is returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the IPsec-VPN connection was established. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492753817000', + ], + 'EffectImmediately' => [ + 'description' => 'Indicates whether IPsec negotiations immediately start after the configuration takes effect. Valid values:'."\n" + ."\n" + .'* **true**: IPsec negotiations immediately start after the configuration takes effect.'."\n" + .'* **false**: IPsec negotiations start when inbound traffic is detected.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + 'LocalSubnet' => [ + 'description' => 'The CIDR block on the VPC side.'."\n", + 'type' => 'string', + 'example' => '10.1.1.0/24,10.1.2.0/24', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7DB79D0C-5F27-4AB5-995B-79BE55102F90', + ], + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-bp1bbi27hojx80nck****', + ], + 'Description' => [ + 'description' => 'The description of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'description', + ], + 'RemoteSubnet' => [ + 'description' => 'The CIDR block on the data center side.'."\n", + 'type' => 'string', + 'example' => '10.2.1.0/24,10.2.2.0/24', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the IPsec-VPN connection.'."\n" + ."\n" + .'This parameter is returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'string', + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + 'Name' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'EnableDpd' => [ + 'description' => 'Indicates whether the DPD feature is enabled for the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n" + ."\n" + .'This parameter is returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'IkeConfig' => [ + 'description' => 'The configuration of Phase 1 negotiations.'."\n" + ."\n" + .'**IkeConfig** parameters are returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'RemoteId' => [ + 'description' => 'The identifier on the data center side. The default value is the IP address of the customer gateway. The value can be a FQDN or an IP address.'."\n", + 'type' => 'string', + 'example' => '139.18.XX.XX', + ], + 'IkeLifetime' => [ + 'description' => 'The lifetime in the IKE phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'LocalId' => [ + 'description' => 'The identifier on the VPC side. The default value is the IP address of the VPN gateway. The value can be an FQDN or an IP address.'."\n", + 'type' => 'string', + 'example' => '116.64.XX.XX', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode.'."\n" + ."\n" + .'* **main**: This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol.'."\n" + ."\n" + .'* **ikev1**'."\n" + .'* **ikev2**'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and is more suitable for scenarios in which multiple CIDR blocks are used.'."\n", + 'type' => 'string', + 'example' => 'ikev1', + ], + 'IkePfs' => [ + 'description' => 'The DH group in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => 'pgw6dy7d1i8i****', + ], + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + ], + ], + 'IpsecConfig' => [ + 'description' => 'The configuration of Phase 2 negotiations.'."\n" + ."\n" + .'**IpsecConfig** parameters are returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecLifetime' => [ + 'description' => 'The lifetime in the IPsec phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecPfs' => [ + 'description' => 'The DH group in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + 'VcoHealthCheck' => [ + 'description' => 'The health check configuration.'."\n" + ."\n" + .'**VcoHealthCheck** parameters are returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'Dip' => [ + 'description' => 'The destination IP address.'."\n", + 'type' => 'string', + 'example' => '192.168.1.1', + ], + 'Interval' => [ + 'description' => 'The interval between two consecutive health checks. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Retry' => [ + 'description' => 'The maximum number of health check retries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Sip' => [ + 'description' => 'The source IP address that is used for health checks.'."\n", + 'type' => 'string', + 'example' => '10.1.1.1', + ], + 'Enable' => [ + 'description' => 'Indicates whether the health check feature is enabled for the IPsec-VPN connection.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + ], + ], + 'VpnBgpConfig' => [ + 'description' => 'The BGP configuration.'."\n" + ."\n" + .'**VpnBgpConfig** parameters are returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The negotiation state of BGP. Valid values:'."\n" + ."\n" + .'* **success**: normal'."\n" + .'* **false**: abnormal'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'PeerBgpIp' => [ + 'description' => 'The BGP IP address of the data center.'."\n", + 'type' => 'string', + 'example' => '169.254.11.2', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => '169.254.11.0/30', + ], + 'EnableBgp' => [ + 'description' => 'Indicates whether BGP is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '169.254.11.1', + ], + 'PeerAsn' => [ + 'description' => 'The ASN on the data center side.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '65531', + ], + 'LocalAsn' => [ + 'description' => 'The ASN on the Alibaba Cloud side.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '65530', + ], + ], + ], + 'TunnelOptionsSpecification' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TunnelOptions' => [ + 'description' => 'The tunnel configuration of the IPsec-VPN connection.'."\n" + ."\n" + .'**TunnelOptionsSpecification** parameters are returned only for dual-tunnel IPsec-VPN connections.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel configurations of the IPsec-VPN connection.', + 'type' => 'object', + 'properties' => [ + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the tunnel.'."\n", + 'type' => 'string', + 'example' => 'cgw-p0wy363lucf1uyae8****', + ], + 'EnableDpd' => [ + 'description' => 'Indicates whether the DPD feature is enabled for the tunnel. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Indicates whether NAT traversal is enabled for the tunnel. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InternetIp' => [ + 'description' => 'The IP address on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '47.21.XX.XX', + ], + 'RemoteCaCertificate' => [ + 'description' => 'The CA certificate of the tunnel peer.'."\n" + ."\n" + .'This parameter is returned only if the VPN gateway is of the SM type.'."\n", + 'type' => 'string', + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + 'Role' => [ + 'description' => 'The tunnel role. Valid values:'."\n" + ."\n" + .'* **master**: The tunnel is an active tunnel.'."\n" + .'* **slave**: The tunnel is a standby tunnel.'."\n", + 'type' => 'string', + 'example' => 'master', + ], + 'State' => [ + 'description' => 'The tunnel status. Valid values:'."\n" + ."\n" + .'* **active**'."\n" + .'* **updating**'."\n" + .'* **deleting**'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'TunnelBgpConfig' => [ + 'description' => 'The BGP configuration.'."\n", + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'description' => 'The ASN of the tunnel on the Alibaba Cloud side.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '169.254.10.1', + ], + 'PeerAsn' => [ + 'description' => 'The ASN of the tunnel peer.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65531', + ], + 'PeerBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel peer.'."\n", + 'type' => 'string', + 'example' => '169.254.10.2', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the tunnel.'."\n", + 'type' => 'string', + 'example' => '169.254.10.0/30', + ], + ], + ], + 'TunnelId' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'example' => 'tun-opsqc4d97wni27****', + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configuration of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The lifetime in the IKE phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode.'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The DH group in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol.'."\n", + 'type' => 'string', + 'example' => 'ikev1', + ], + 'LocalId' => [ + 'description' => 'The identifier of the tunnel on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '47.21.XX.XX', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The identifier of the tunnel peer.'."\n", + 'type' => 'string', + 'example' => '47.42.XX.XX', + ], + ], + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configuration of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The lifetime in the IPsec phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The DH group in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + 'ZoneNo' => [ + 'description' => 'The zone of the tunnel.'."\n", + 'type' => 'string', + 'example' => 'ap-southeast-5a', + ], + ], + ], + ], + ], + ], + 'EnableTunnelsBgp' => [ + 'description' => 'Indicates whether BGP is enabled for the tunnel. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'This parameter is returned only by dual-tunnel IPsec-VPN connections.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPsec-VPN connection belongs.'."\n" + ."\n" + .'The IPsec-VPN connection and the VPN gateway associated with the IPsec-VPN connection belong to the same resource group. You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecPfs', + 'errorMessage' => 'The specified vpn connection ipsec Ipsec Pfs is not support.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecAuthAlg', + 'errorMessage' => 'The specified vpn connection ipsec Auth Alg is not support.', + ], + [ + 'errorCode' => 'VpnRouteEntry.ConflictSSL', + 'errorMessage' => 'The specified route entry has conflict with SSL client.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + [ + 'errorCode' => 'VpnRouteEntry.InvalidWeight', + 'errorMessage' => 'Invalid route entry weight value.', + ], + [ + 'errorCode' => 'QuotaExceeded.PBR', + 'errorMessage' => 'The policy-based routes has reached the upper limit.', + ], + [ + 'errorCode' => 'OperationUnsupported.SetDPD', + 'errorMessage' => 'Current version of the VPN does not support setting DPD.', + ], + [ + 'errorCode' => 'OperationUnsupported.SetNatTraversal', + 'errorMessage' => 'Current version of the VPN does not support setting NAT traversal.', + ], + [ + 'errorCode' => 'QuotaExceeded.PolicyBasedRoute', + 'errorMessage' => 'The maximum number of policy-based routes is exceeded. Existing routes: %s. Routes to be created: %s. Maximum routes: %s.', + ], + [ + 'errorCode' => 'MissingParameter.TunnelCidr', + 'errorMessage' => 'The parameter TunnelCidr is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'OperationUnsupported.EnableBgp', + 'errorMessage' => 'Current version of the VPN does not support enable BGP.', + ], + [ + 'errorCode' => 'MissingParam.CustomerGatewayAsn', + 'errorMessage' => 'Asn of customer gateway is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'IllegalParam.LocalAsn', + 'errorMessage' => 'The specified LocalAsn is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.BgpConfig', + 'errorMessage' => 'The specified BgpConfig is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.EnableBgp', + 'errorMessage' => 'VPN connection must enable BGP when VPN gateway has enabled BGP.', + ], + [ + 'errorCode' => 'IllegalParam.TunnelCidr', + 'errorMessage' => 'The specified TunnelCidr is invalid.', + ], + [ + 'errorCode' => 'InvalidLocalBgpIp.Malformed', + 'errorMessage' => 'The specified LocalBgpIp is malformed.', + ], + [ + 'errorCode' => 'IllegalParam.LocalBgpIp', + 'errorMessage' => 'The specified LocalBgpIp is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.RemoteSubnet', + 'errorMessage' => 'The specified "RemoteSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.CenLevelNotSupport', + 'errorMessage' => 'When the VPC to which the VPN gateway belongs is attached to a FULL-mode CEN, the VPN gateway cannot enable BGP.', + ], + [ + 'errorCode' => 'InvalidTunnelCidr.Malformed', + 'errorMessage' => 'The specified TunnelCidr is malformed.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictRouteEntry', + 'errorMessage' => 'The specified customer gateway has conflict with route entry.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'OperationFailed.RouteConflictWithIPsecServer', + 'errorMessage' => 'Operation failed because the route to create conflicts with the client IP pool of the IPsec server.', + ], + [ + 'errorCode' => 'IllegalParam.TunnelId', + 'errorMessage' => 'The specified TunnelId is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.Role', + 'errorMessage' => 'The specified Role is invalid.', + ], + [ + 'errorCode' => 'VpnConnectionParamInvalid.SameVpnAndCgwDifferentIkeConfigs', + 'errorMessage' => 'IPSec connections associated with the same user gateway and VPN gateway should have the same pre-shared key and IKE configuration.', + ], + [ + 'errorCode' => 'VpnConnectionParamInvalid.SameVpnAndCgwTrafficSelectorOverlap', + 'errorMessage' => 'Traffic selectors of IPSec connections associated with the same user gateway and VPN gateway should not overlap.', + ], + [ + 'errorCode' => 'ModifyIkeV1WithMultiRoutes.Invalid', + 'errorMessage' => 'Failed to modify VPN connection parameters. Multi-network is configured while using IkeV1 protocol.', + ], + [ + 'errorCode' => 'Vco.StatusNotSupport', + 'errorMessage' => 'The current VPN connection state does not support this operation.', + ], + [ + 'errorCode' => 'IkeVersionInvalid.GcmIncompatible', + 'errorMessage' => 'Ikev1 does not support IkeEncAlg of gcm16.', + ], + [ + 'errorCode' => 'EncAlgInvalid.DesIncompatible', + 'errorMessage' => 'Des/3des in IkeEncAlg and IpsecEncAlg does not support multi algorithm.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictVpnIp', + 'errorMessage' => 'The specified customer gateway has conflict with vpn gateway ip.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationFailed.RouteConflictWithIPsecServer', + 'errorMessage' => 'Operation failed because the specified route conflicts with IPsec server.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 30, + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"EnableNatTraversal\\": true,\\n \\"CreateTime\\": 1492753817000,\\n \\"EffectImmediately\\": false,\\n \\"VpnGatewayId\\": \\"vpn-bp1q8bgx4xnkm2ogj****\\",\\n \\"LocalSubnet\\": \\"10.1.1.0/24,10.1.2.0/24\\",\\n \\"RequestId\\": \\"7DB79D0C-5F27-4AB5-995B-79BE55102F90\\",\\n \\"VpnConnectionId\\": \\"vco-bp1bbi27hojx80nck****\\",\\n \\"Description\\": \\"description\\",\\n \\"RemoteSubnet\\": \\"10.2.1.0/24,10.2.2.0/24\\",\\n \\"CustomerGatewayId\\": \\"cgw-p0w2jemrcj5u61un8****\\",\\n \\"Name\\": \\"nametest\\",\\n \\"EnableDpd\\": true,\\n \\"IkeConfig\\": {\\n \\"RemoteId\\": \\"139.18.XX.XX\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"LocalId\\": \\"116.64.XX.XX\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkeVersion\\": \\"ikev1\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"Psk\\": \\"pgw6dy7d1i8i****\\",\\n \\"IkeAuthAlg\\": \\"sha1\\"\\n },\\n \\"IpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"VcoHealthCheck\\": {\\n \\"Dip\\": \\"192.168.1.1\\",\\n \\"Interval\\": 3,\\n \\"Retry\\": 3,\\n \\"Sip\\": \\"10.1.1.1\\",\\n \\"Enable\\": \\"true\\"\\n },\\n \\"VpnBgpConfig\\": {\\n \\"Status\\": \\"success\\",\\n \\"PeerBgpIp\\": \\"169.254.11.2\\",\\n \\"TunnelCidr\\": \\"169.254.11.0/30\\",\\n \\"EnableBgp\\": \\"true\\",\\n \\"LocalBgpIp\\": \\"169.254.11.1\\",\\n \\"PeerAsn\\": 65531,\\n \\"LocalAsn\\": 65530\\n },\\n \\"TunnelOptionsSpecification\\": {\\n \\"TunnelOptions\\": [\\n {\\n \\"CustomerGatewayId\\": \\"cgw-p0wy363lucf1uyae8****\\",\\n \\"EnableDpd\\": true,\\n \\"EnableNatTraversal\\": true,\\n \\"InternetIp\\": \\"47.21.XX.XX\\",\\n \\"RemoteCaCertificate\\": \\"-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----\\",\\n \\"Role\\": \\"master\\",\\n \\"State\\": \\"active\\",\\n \\"TunnelBgpConfig\\": {\\n \\"LocalAsn\\": 65530,\\n \\"LocalBgpIp\\": \\"169.254.10.1\\",\\n \\"PeerAsn\\": 65531,\\n \\"PeerBgpIp\\": \\"169.254.10.2\\",\\n \\"TunnelCidr\\": \\"169.254.10.0/30\\"\\n },\\n \\"TunnelId\\": \\"tun-opsqc4d97wni27****\\",\\n \\"TunnelIkeConfig\\": {\\n \\"IkeAuthAlg\\": \\"sha1\\",\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeMode\\": \\"main\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeVersion\\": \\"ikev1\\",\\n \\"LocalId\\": \\"47.21.XX.XX\\",\\n \\"Psk\\": \\"123456****\\",\\n \\"RemoteId\\": \\"47.42.XX.XX\\"\\n },\\n \\"TunnelIpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"ZoneNo\\": \\"ap-southeast-5a\\"\\n }\\n ]\\n },\\n \\"EnableTunnelsBgp\\": true,\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n true\\n 1492753817000\\n false\\n vpn-bp1q8bgx4xnkm2ogj****\\n 10.1.1.0/24,10.1.2.0/24\\n 7DB79D0C-5F27-4AB5-995B-79BE55102F90\\n vco-bp1bbi27hojx80nck****\\n description\\n 10.2.1.0/24,10.2.2.0/24\\n cgw-p0w2jemrcj5u61un8****\\n nametest\\n true\\n \\n 139.18.XX.XX\\n 86400\\n aes\\n 116.64.XX.XX\\n main\\n ikev1\\n group2\\n pgw6dy7d1i8i****\\n sha1\\n \\n \\n sha1\\n 86400\\n aes\\n group2\\n \\n \\n 192.168.1.1\\n 3\\n 3\\n 10.1.1.1\\n true\\n \\n \\n success\\n 169.254.11.2\\n 169.254.11.0/30\\n true\\n 169.254.11.1\\n 65531\\n 65530\\n \\n","errorExample":""}]', + 'title' => 'ModifyVpnConnectionAttribute', + 'description' => '* If you want to modify a IPsec-VPN connection in dual-tunnel mode, call the `ModifyVpnConnectionAttribute` operation. You can modify the required parameters and the following request parameters:'."\n" + ."\n" + .' **ClientToken**, **Name**, **LocalSubnet**, **RemoteSubnet**, **EffectImmediately**, **AutoConfigRoute**, **TunnelOptionsSpecification**, and **EnableTunnelsBgp**.'."\n" + ."\n" + .'* If you want to modify a IPsec-VPN connection in single-tunnel mode, call the `ModifyVpnConnectionAttribute` operation. You can modify the required parameters and the following request parameters:'."\n" + ."\n" + .' **ClientToken**, **Name**, **LocalSubnet**, **RemoteSubnet**, **EffectImmediately**, **IkeConfig**, **IpsecConfig**, **HealthCheckConfig**, **AutoConfigRoute**, **EnableDpd**, **EnableNatTraversal**, **BgpConfig**, and **RemoteCaCertificate**.'."\n" + ."\n" + .'* **ModifyVpnConnectionAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and modifies the configuration of the IPsec-VPN connection in the backend. You can call the [DescribeVpnGateway](~~73720~~) operation to query the status of a VPN gateway.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the configuration of the IPsec-VPN connection is being modified.'."\n" + .' * If the VPN gateway is in the **active** state, the configuration of the IPsec-VPN connection is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyVpnConnectionAttribute** operation for the same VPN gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyTunnelAttribute' => [ + 'summary' => 'Modifies a VPN tunnel.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the **client token**. The value of **RequestId** is different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'TunnelOptionsSpecification', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The tunnel configurations.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableDpd' => [ + 'description' => 'Specifies whether to enable dead peer detection (DPD). Valid values:'."\n" + ."\n" + .'* **true** The IPsec initiator sends DPD packets to check the IPsec peer is alive. If no response is received from the peer within a specified period of time, the IPsec peer is considered disconnected. Then, the ISAKMP SA, IPsec SA, and IPsec tunnel are deleted.'."\n" + .'* **false**: DPD is disabled. The IPsec initiator does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Specifies whether to enable NAT traversal. Valid values:'."\n" + ."\n" + .'* **true**: enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.'."\n" + .'* **false**: disables NAT traversal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'RemoteCaCertificate' => [ + 'description' => 'The peer certificate authority (CA) certificate when you want to attach the IPsec connection to a virtual private network (VPN) gateway that uses a ShangMi (SM) certificate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + 'TunnelBgpConfig' => [ + 'description' => 'The Border Gateway Protocol (BGP) configurations of the tunnel.'."\n" + ."\n" + .'If the BGP feature is not enabled for the tunnel, you must call the [ModifyVpnConnectionAttribute](~~120381~~) operation to enable the feature and configure BGP.'."\n", + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'description' => 'The local autonomous system number (ASN). Valid values: **1** to **4294967295**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel. The address needs to be an IP address within the **TunnelCidr**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.11.1', + ], + 'TunnelCidr' => [ + 'description' => 'The CIDR block of the tunnel.'."\n" + ."\n" + .'The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .'> The CIDR block of the IPsec tunnel for each IPsec-VPN connection on a VPN gateway must be unique.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.11.0/30', + ], + ], + 'required' => false, + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configurations of IKE Phase 1.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in IKE Phase 1 negotiations.'."\n" + ."\n\n" + .''."\n" + ."\n" + .'* If an IPsec-VPN gateway is associated with a standard VPN gateway, the valid values are **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + .'* If the IPsec-VPN gateway is associated with an SSL-VPN gateway, the valid value is **sm3**.'."\n" + ."\n" + .''."\n" + .''."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + ."\n" + .'', + 'type' => 'string', + 'required' => false, + 'example' => 'sha1', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm that is used in IKE Phase 1 negotiations.'."\n" + ."\n" + .''."\n" + ."\n" + .'* If an IPsec-VPN gateway is associated with a standard VPN gateway, the valid values are **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + .'* If the IPsec-VPN gateway is associated with an SSL-VPN gateway, set the value to **sm4**.'."\n" + ."\n" + .''."\n" + .''."\n" + ."\n" + .'Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + ."\n" + .'', + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0 to 86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The negotiation mode of IKE. Valid values:'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol. Valid values: **ikev1** and **ikev2**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ikev2', + ], + 'LocalId' => [ + 'description' => 'The tunnel identifier. The identifier can be up to 100 characters in length and cannot contain spaces. It supports fully qualified domain names (FQDNs) and IP addresses. The default value is the IP address of the tunnel.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.XX.XX.87', + ], + 'Psk' => [ + 'description' => 'The pre-shared key that is used to verify identities between the tunnel and peer.'."\n" + ."\n" + .'* The key must be 1 to 100 characters in length, and can contain digits, and letters. It cannot contain spaces. ``~!`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .'* If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the key. You can call the [DescribeVpnConnection](~~120374~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .'> The pre-shared key that is configured for the tunnel and the tunnel peer must be the same. Otherwise, the system cannot establish the tunnel.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The peer identifier. The identifier can be up to 100 characters in length, and cannot contain spaces. It supports FQDNs and IP addresses. The default identifier is the IP address of the customer gateway associated with the tunnel.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.XX.XX.207', + ], + ], + 'required' => false, + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configurations of IPsec Phase 2.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in IPsec Phase 2 negotiations.'."\n" + ."\n" + .''."\n" + ."\n" + .'* If an IPsec-VPN gateway is associated with a standard VPN gateway, the valid values are **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + .'* If the IPsec-VPN gateway is associated with an SSL-VPN gateway, set the value to **sm3**.'."\n" + ."\n" + .''."\n" + ."\n" + .''."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + ."\n" + .'', + 'type' => 'string', + 'required' => false, + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm that is used in IPsec Phase 2 negotiations.'."\n" + ."\n" + .''."\n" + ."\n" + .'* If an IPsec-VPN gateway is associated with a standard VPN gateway, the valid values are **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + .'* If the IPsec connection is attached to a VPN gateway that uses an SM certificate, set the value to **sm4**.'."\n" + ."\n" + .''."\n" + ."\n" + .''."\n" + ."\n" + .'Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + ."\n" + .'', + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 2 negotiations. Unit: seconds Valid values: **0 to 86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + ], + 'required' => false, + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the tunnel.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-1nmwbpgrp7ssqm1yn****', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IPsec connection is established.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-gw69vm1i71y354****', + ], + ], + [ + 'name' => 'TunnelId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'tun-gbyz2e070xzo93****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'example' => 'tun-gbyz2e070xzo93****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E6F36FF0-9544-3AEE-8673-A4647D50064C', + ], + 'TunnelIkeConfig' => [ + 'description' => 'The Phase 1 configuration.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The IKE authentication algorithm.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IkeEncAlg' => [ + 'description' => 'The IKE encryption algorithm.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The IKE lifetime. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode.'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The DH group.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The IKE version.'."\n" + ."\n" + .'* **ikev1**'."\n" + .'* **ikev2**'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n", + 'type' => 'string', + 'example' => 'ikev2', + ], + 'LocalId' => [ + 'description' => 'The tunnel identifier. The identifier supports FQDNs and IP addresses. The default value is the tunnel IP address.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.87', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The peer identifier. The identifier supports FQDNs and IP addresses. The default identifier is the IP address of the customer gateway associated with the tunnel.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.207', + ], + ], + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configurations of IPsec Phase 2.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The IPsec authentication algorithm.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The IPsec encryption algorithm.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The IPsec lifetime. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The DH group.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + 'TunnelBgpConfig' => [ + 'description' => 'The BGP configuration.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableBgp' => [ + 'description' => 'Indicates whether the BGP feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'LocalAsn' => [ + 'description' => 'The local ASN.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel.'."\n", + 'type' => 'string', + 'example' => '169.254.11.1', + ], + 'PeerAsn' => [ + 'description' => 'The peer ASN.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65531', + ], + 'PeerBgpIp' => [ + 'description' => 'The BGP IP address of the peer.'."\n", + 'type' => 'string', + 'example' => '169.254.11.2', + ], + 'TunnelCidr' => [ + 'description' => 'The CIDR block to which the tunnel BGP IP address belongs.'."\n", + 'type' => 'string', + 'example' => '169.254.11.0/30', + ], + ], + ], + 'EnableNatTraversal' => [ + 'description' => 'Indicates whether NAT traversal is enabled. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'EnableDpd' => [ + 'description' => 'Indicates whether DPD is enabled. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'RemoteCaCertificate' => [ + 'description' => 'The peer CA certificate when a VPN gateway that uses an SM certificate is used to create the IPsec connection.'."\n", + 'type' => 'string', + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the customer gateway.'."\n", + 'type' => 'string', + 'example' => 'cgw-p0wx48ayhrygitm80****', + ], + 'Role' => [ + 'description' => 'The tunnel role. Valid values:'."\n" + ."\n" + .'* **master**'."\n" + .'* **slave**'."\n", + 'type' => 'string', + 'example' => 'master', + ], + 'ZoneNo' => [ + 'description' => 'The tunnel zone.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + 'InternetIp' => [ + 'description' => 'The tunnel IP address.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.87', + ], + 'State' => [ + 'description' => 'The tunnel status. Valid values:'."\n" + ."\n" + .'* **active**'."\n" + .'* **updating**'."\n" + .'* **deleting**'."\n", + 'type' => 'string', + 'example' => 'active', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecPfs', + 'errorMessage' => 'The specified vpn connection ipsec Ipsec Pfs is not support.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecAuthAlg', + 'errorMessage' => 'The specified vpn connection ipsec Auth Alg is not support.', + ], + [ + 'errorCode' => 'VpnConnectionParamInvalid.SameVpnAndCgwDifferentIkeConfigs', + 'errorMessage' => 'IPSec connections associated with the same user gateway and VPN gateway should have the same pre-shared key and IKE configuration.', + ], + [ + 'errorCode' => 'VpnConnectionParamInvalid.SameVpnAndCgwTrafficSelectorOverlap', + 'errorMessage' => 'Traffic selectors of IPSec connections associated with the same user gateway and VPN gateway should not overlap.', + ], + [ + 'errorCode' => 'IllegalParam.LocalAsn', + 'errorMessage' => 'The param of LocalAsn is illegal', + ], + [ + 'errorCode' => 'IllegalParam.LocalBgpIp', + 'errorMessage' => 'The specified LocalBgpIp is invalid.', + ], + [ + 'errorCode' => 'VpnGateway.task.conflict', + 'errorMessage' => 'The VPN is in the configuration state, please wait a while before operating.', + ], + [ + 'errorCode' => 'ModifyIkeV1WithMultiRoutes.Invalid', + 'errorMessage' => 'Failed to modify VPN connection parameters. Multi-network is configured while using IkeV1 protocol.', + ], + [ + 'errorCode' => 'EncAlgInvalid.DesIncompatible', + 'errorMessage' => 'Des/3des in IkeEncAlg and IpsecEncAlg does not support multi algorithm.', + ], + [ + 'errorCode' => 'IkeVersionInvalid.GcmIncompatible', + 'errorMessage' => 'Ikev1 does not support IkeEncAlg of gcm16.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictVpnIp', + 'errorMessage' => 'The specified customer gateway has conflict with vpn gateway ip.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"TunnelId\\": \\"tun-gbyz2e070xzo93****\\",\\n \\"RequestId\\": \\"E6F36FF0-9544-3AEE-8673-A4647D50064C\\",\\n \\"TunnelIkeConfig\\": {\\n \\"IkeAuthAlg\\": \\"sha1\\",\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeMode\\": \\"main\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeVersion\\": \\"ikev2\\",\\n \\"LocalId\\": \\"47.XX.XX.87\\",\\n \\"Psk\\": \\"123456****\\",\\n \\"RemoteId\\": \\"47.XX.XX.207\\"\\n },\\n \\"TunnelIpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"TunnelBgpConfig\\": {\\n \\"EnableBgp\\": true,\\n \\"LocalAsn\\": 65530,\\n \\"LocalBgpIp\\": \\"169.254.11.1\\",\\n \\"PeerAsn\\": 65531,\\n \\"PeerBgpIp\\": \\"169.254.11.2\\",\\n \\"TunnelCidr\\": \\"169.254.11.0/30\\"\\n },\\n \\"EnableNatTraversal\\": true,\\n \\"EnableDpd\\": true,\\n \\"RemoteCaCertificate\\": \\"-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----\\",\\n \\"CustomerGatewayId\\": \\"cgw-p0wx48ayhrygitm80****\\",\\n \\"Role\\": \\"master\\",\\n \\"ZoneNo\\": \\"cn-hangzhou-h\\",\\n \\"InternetIp\\": \\"47.XX.XX.87\\",\\n \\"State\\": \\"active\\"\\n}","errorExample":""},{"type":"xml","example":"\\n tun-gbyz2e070xzo93****\\n E6F36FF0-9544-3AEE-8673-A4647D50064C\\n \\n sha1\\n aes\\n 86400\\n main\\n group2\\n ikev2\\n 47.XX.XX.87\\n 123456****\\n 47.XX.XX.207\\n \\n \\n sha1\\n aes\\n 86400\\n group2\\n \\n \\n true\\n 65530\\n 169.254.11.1\\n 65531\\n 169.254.11.2\\n 169.254.11.0/30\\n \\n true\\n true\\n -----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----\\n cgw-p0wx48ayhrygitm80****\\n master\\n ap-southeast-2b\\n 47.XX.XX.87\\n active\\n","errorExample":""}]', + 'title' => 'ModifyTunnelAttribute', + ], + 'DescribeVpnConnection' => [ + 'summary' => 'Queries the detailed information about an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec-VPN connection is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp1bbi27hojx80nck****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The results returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The state of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **ike_sa_not_established**: Phase 1 negotiations failed.'."\n" + .'* **ike_sa_established**: Phase 1 negotiations succeeded.'."\n" + .'* **ipsec_sa_not_established**: Phase 2 negotiations failed.'."\n" + .'* **ipsec_sa_established**: Phase 2 negotiations succeeded.'."\n", + 'type' => 'string', + 'example' => 'ike_sa_not_established', + ], + 'RemoteCaCertificate' => [ + 'description' => 'The certificate authority (CA) certificate of the peer.'."\n", + 'type' => 'string', + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW****', + ], + 'EnableNatTraversal' => [ + 'description' => 'Indicates whether NAT traversal is enabled for the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec tunnel.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the IPsec-VPN connection was established. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492753817000', + ], + 'EffectImmediately' => [ + 'description' => 'Indicates whether IPsec negotiations immediately start after the configuration takes effect. Valid values:'."\n" + ."\n" + .'* **true**: Negotiations are reinitiated after the configuration is changed.'."\n" + .'* **false**: Negotiations are reinitiated after traffic is detected.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + 'LocalSubnet' => [ + 'description' => 'The CIDR block on the Alibaba Cloud side.'."\n" + ."\n" + .'Multiple CIDR blocks are separated by commas (,).'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/8', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F2310D45-BCF6-4E2E-9082-B4503844BA4C', + ], + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-bp1bbi27hojx80nck****', + ], + 'RemoteSubnet' => [ + 'description' => 'The CIDR block on the data center side.'."\n" + ."\n" + .'Multiple CIDR blocks are separated by commas (,).'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'cgw-bp1mvj4g9kogwwcxk****', + ], + 'Name' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'ipsec1', + ], + 'EnableDpd' => [ + 'description' => 'Indicates whether the dead peer detection (DPD) feature is enabled for the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n" + ."\n" + .'After you enable the DPD feature, the initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no response is received from the peer within a specified period of time, the connection fails. Then, the ISAKMP security association (SA), IPsec SA, and IPsec tunnel are deleted.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'IkeConfig' => [ + 'description' => 'The configuration of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'RemoteId' => [ + 'description' => 'The identifier of the IPsec-VPN connection on the data center side.'."\n", + 'type' => 'string', + 'example' => '139.34.XX.XX', + ], + 'IkeLifetime' => [ + 'description' => 'The lifetime in the IKE phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'LocalId' => [ + 'description' => 'The identifier of the IPsec-VPN connection on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '116.28.XX.XX', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode.'."\n" + ."\n" + .'* **main**: This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol.'."\n" + ."\n" + .'* **ikev1**'."\n" + .'* **ikev2**'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and is more suitable for scenarios in which multiple CIDR blocks are used.'."\n", + 'type' => 'string', + 'example' => 'ikev1', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman (DH) group in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => 'pgw6dy****', + ], + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + ], + ], + 'IpsecConfig' => [ + 'description' => 'The configuration of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecLifetime' => [ + 'description' => 'The lifetime in the IPsec phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecPfs' => [ + 'description' => 'The DH group in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + 'VcoHealthCheck' => [ + 'description' => 'The health check information about the IPsec-VPN connection.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The state of the health check. Valid values:'."\n" + ."\n" + .'* **failed**'."\n" + .'* **success**: normal'."\n", + 'type' => 'string', + 'example' => 'failed', + ], + 'Dip' => [ + 'description' => 'The destination IP address.'."\n", + 'type' => 'string', + 'example' => '10.0.0.1', + ], + 'Interval' => [ + 'description' => 'The interval between two consecutive health checks. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Retry' => [ + 'description' => 'The maximum number of health check retries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Sip' => [ + 'description' => 'The source IP address.'."\n", + 'type' => 'string', + 'example' => '192.168.1.1', + ], + 'Enable' => [ + 'description' => 'Indicates whether the health check feature is enabled for the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'Policy' => [ + 'description' => 'Indicates whether advertised routes are withdrawn when the health check fails. Valid values:'."\n" + ."\n" + .'* **revoke_route**: Advertised routes are withdrawn.'."\n" + .'* **reserve_route**: Advertised routes are not withdrawn.'."\n", + 'type' => 'string', + 'example' => 'revoke_route', + ], + ], + ], + 'VpnBgpConfig' => [ + 'description' => 'The Border Gateway Protocol (BGP) configuration of the IPsec-VPN connection.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The negotiation state of the BGP routing protocol. Valid values:'."\n" + ."\n" + .'* **success**: normal'."\n" + .'* **failed**'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'PeerBgpIp' => [ + 'description' => 'The BGP IP address of the peer.'."\n", + 'type' => 'string', + 'example' => '169.254.11.1', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the IPsec-VPN connection. The CIDR block falls within 169.254.0.0/16. The subnet mask of the CIDR block must be 30 bits in length.'."\n", + 'type' => 'string', + 'example' => '169.254.11.0/30', + ], + 'EnableBgp' => [ + 'description' => 'Indicates whether BGP is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '169.254.11.2', + ], + 'PeerAsn' => [ + 'description' => 'The autonomous system number (ASN) of the peer.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65530', + ], + 'LocalAsn' => [ + 'description' => 'The ASN on the Alibaba Cloud side.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65531', + ], + 'AuthKey' => [ + 'description' => 'The authentication key of the BGP routing protocol.'."\n", + 'type' => 'string', + 'example' => 'AuthKey****', + ], + ], + ], + 'AttachType' => [ + 'description' => 'The type of the resource that is associated with the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **CEN**: indicates that the IPsec-VPN connection is associated with a transit router of a Cloud Enterprise Network (CEN) instance.'."\n" + .'* **NO_ASSOCIATED**: indicates that the IPsec-VPN connection is not associated with any resource.'."\n" + .'* **VPNGW**: indicates that the IPsec-VPN connection is associated with a VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'CEN', + ], + 'NetworkType' => [ + 'description' => 'The network type of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **public**: an encrypted connection over the Internet'."\n" + .'* **private**: an encrypted connection over private networks'."\n", + 'type' => 'string', + 'example' => 'public', + ], + 'AttachInstanceId' => [ + 'description' => 'The ID of the CEN instance to which the transit router belongs.'."\n", + 'type' => 'string', + 'example' => 'cen-lxxpbpalc776qz****', + ], + 'Spec' => [ + 'description' => 'The bandwidth specification of the IPsec-VPN connection. Unit: **Mbit/s**.'."\n", + 'type' => 'string', + 'example' => '1000M', + ], + 'State' => [ + 'description' => 'The association state of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **active**: The IPsec-VPN connection is associated with a VPN gateway.'."\n" + .'* **init**: The IPsec-VPN connection is not associated with any resource and is being initialized.'."\n" + .'* **attaching**: The IPsec-VPN connection is being associated with a transit router.'."\n" + .'* **attached**: The IPsec-VPN connection is associated with a transit router.'."\n" + .'* **detaching**: The IPsec-VPN connection is being disassociated from a transit router.'."\n" + .'* **financialLocked**: The IPsec-VPN connection is locked due to overdue payments.'."\n" + .'* **provisioning**: The IPsec-VPN connection is being prepared.'."\n" + .'* **updating**: The IPsec-VPN connection is being updated.'."\n" + .'* **Upgrading**: The IPsec-VPN connection is being upgraded.'."\n" + .'* **deleted**: The IPsec-VPN connection is deleted.'."\n", + 'type' => 'string', + 'example' => 'attached', + ], + 'ZoneNo' => [ + 'description' => 'The ID of the zone where the IPsec-VPN connection is deployed.'."\n" + ."\n" + .'You can call [DescribeZones](~~36064~~) to query zone IDs and mapping between zone IDs and zone names.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + 'InternetIp' => [ + 'description' => 'The gateway IP address of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.162', + ], + 'TransitRouterId' => [ + 'description' => 'The ID of the transit router with which the IPsec-VPN connection is associated.'."\n", + 'type' => 'string', + 'example' => 'tr-p0we2edef9qr44a85****', + ], + 'TransitRouterName' => [ + 'description' => 'The name of the transit router.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'CrossAccountAuthorized' => [ + 'description' => 'Indicates whether the IPsec-VPN connection is associated with a transit router that belongs to another Alibaba Cloud account. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The list of tags added to the IPsec-VPN connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag information.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'TagValue', + ], + ], + ], + ], + ], + ], + 'TunnelOptionsSpecification' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TunnelOptions' => [ + 'description' => 'The tunnel configurations of the IPsec-VPN connection.'."\n" + ."\n" + .'Parameters in **TunnelOptionsSpecification** are returned only if you query an IPsec-VPN connection in dual-tunnel mode.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel configurations.'."\n", + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'example' => 'tun-opsqc4d97wni27****', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the tunnel.'."\n", + 'type' => 'string', + 'example' => 'cgw-p0wy363lucf1uyae8****', + ], + 'EnableDpd' => [ + 'description' => 'Indicates whether the DPD feature is enabled for the tunnel. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Indicates whether NAT traversal is enabled for the tunnel. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'InternetIp' => [ + 'description' => 'The tunnel IP address.'."\n", + 'type' => 'string', + 'example' => '47.21.XX.XX', + ], + 'RemoteCaCertificate' => [ + 'description' => 'The CA certificate of the tunnel peer.'."\n" + ."\n" + .'This parameter is returned only if the VPN gateway is of the ShangMi (SM) type.'."\n", + 'type' => 'string', + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + 'Role' => [ + 'description' => 'The tunnel role. Valid values:'."\n" + ."\n" + .'* **master**: The tunnel is an active tunnel.'."\n" + .'* **slave**: The tunnel is a standby tunnel.'."\n", + 'type' => 'string', + 'example' => 'master', + ], + 'TunnelIndex' => [ + 'description' => 'The order in which the tunnel is created.'."\n" + ."\n" + .'* **1**: Tunnel 1.'."\n" + .'* **2**: Tunnel 2.'."\n" + ."\n" + .'> This parameter is returned only if the IPsec-VPN connection is associated with a transit router.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'State' => [ + 'description' => 'The tunnel status. Valid values:'."\n" + ."\n" + .'* **active**'."\n" + .'* **updating**'."\n" + .'* **deleting**'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'Status' => [ + 'description' => 'The state of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **ike_sa_not_established**: Phase 1 negotiations failed.'."\n" + .'* **ike_sa_established**: Phase 1 negotiations succeeded.'."\n" + .'* **ipsec_sa_not_established**: Phase 2 negotiations failed.'."\n" + .'* **ipsec_sa_established**: Phase 2 negotiations succeeded.'."\n", + 'type' => 'string', + 'example' => 'ipsec_sa_established', + ], + 'TunnelBgpConfig' => [ + 'description' => 'The BGP configurations.'."\n", + 'type' => 'object', + 'properties' => [ + 'BgpStatus' => [ + 'description' => 'The negotiation state of BGP. Valid values:'."\n" + ."\n" + .'* **success**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'LocalAsn' => [ + 'description' => 'The ASN on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP address on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '169.254.10.1', + ], + 'PeerAsn' => [ + 'description' => 'The ASN of the tunnel peer.'."\n", + 'type' => 'string', + 'example' => '65531', + ], + 'PeerBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel peer.'."\n", + 'type' => 'string', + 'example' => '169.254.10.2', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the tunnel.'."\n", + 'type' => 'string', + 'example' => '169.254.10.0/30', + ], + ], + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configuration of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The lifetime in the IKE phase. Unit: seconds.'."\n", + 'type' => 'string', + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode.'."\n" + ."\n" + .'* **main**: This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman (DH) group in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol.'."\n", + 'type' => 'string', + 'example' => 'ikev1', + ], + 'LocalId' => [ + 'description' => 'The identifier of the tunnel on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '47.21.XX.XX', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The identifier of the tunnel peer.'."\n", + 'type' => 'string', + 'example' => '47.42.XX.XX', + ], + ], + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configurations of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The lifetime in the IPsec phase. Unit: seconds.'."\n", + 'type' => 'string', + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The DH group in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + 'ZoneNo' => [ + 'description' => 'The zone where the tunnel is deployed.'."\n" + ."\n" + .'You can call [DescribeZones](~~36064~~) to query zone IDs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-i', + ], + ], + ], + ], + ], + ], + 'EnableTunnelsBgp' => [ + 'description' => 'Indicates whether BGP is enabled for the tunnel. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPsec-VPN connection belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query the resource group information.', + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + 'TunnelBandwidth' => [ + 'title' => '用于说明VPN单条隧道的带宽规格,取值:'."\n" + .'Standard(默认值):标准型,默认带宽1Gbps'."\n" + .'Large(大型):大型,默认带宽3Gbps', + 'type' => 'string', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Status\\": \\"ike_sa_not_established\\",\\n \\"RemoteCaCertificate\\": \\"-----BEGIN CERTIFICATE----- MIIB7zCCAZW****\\",\\n \\"EnableNatTraversal\\": true,\\n \\"CreateTime\\": 1492753817000,\\n \\"EffectImmediately\\": true,\\n \\"VpnGatewayId\\": \\"vpn-bp1q8bgx4xnkm2ogj****\\",\\n \\"LocalSubnet\\": \\"10.0.0.0/8\\",\\n \\"RequestId\\": \\"F2310D45-BCF6-4E2E-9082-B4503844BA4C\\",\\n \\"VpnConnectionId\\": \\"vco-bp1bbi27hojx80nck****\\",\\n \\"RemoteSubnet\\": \\"192.168.0.0/16\\",\\n \\"CustomerGatewayId\\": \\"cgw-bp1mvj4g9kogwwcxk****\\",\\n \\"Name\\": \\"ipsec1\\",\\n \\"EnableDpd\\": true,\\n \\"IkeConfig\\": {\\n \\"RemoteId\\": \\"139.34.XX.XX\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"LocalId\\": \\"116.28.XX.XX\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkeVersion\\": \\"ikev1\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"Psk\\": \\"pgw6dy****\\",\\n \\"IkeAuthAlg\\": \\"sha1\\"\\n },\\n \\"IpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"VcoHealthCheck\\": {\\n \\"Status\\": \\"failed\\",\\n \\"Dip\\": \\"10.0.0.1\\",\\n \\"Interval\\": 3,\\n \\"Retry\\": 3,\\n \\"Sip\\": \\"192.168.1.1\\",\\n \\"Enable\\": \\"true\\",\\n \\"Policy\\": \\"revoke_route\\"\\n },\\n \\"VpnBgpConfig\\": {\\n \\"Status\\": \\"success\\",\\n \\"PeerBgpIp\\": \\"169.254.11.1\\",\\n \\"TunnelCidr\\": \\"169.254.11.0/30\\",\\n \\"EnableBgp\\": \\"true\\",\\n \\"LocalBgpIp\\": \\"169.254.11.2\\",\\n \\"PeerAsn\\": 65530,\\n \\"LocalAsn\\": 65531,\\n \\"AuthKey\\": \\"AuthKey****\\"\\n },\\n \\"AttachType\\": \\"CEN\\",\\n \\"NetworkType\\": \\"public\\",\\n \\"AttachInstanceId\\": \\"cen-lxxpbpalc776qz****\\",\\n \\"Spec\\": \\"1000M\\",\\n \\"State\\": \\"attached\\",\\n \\"ZoneNo\\": \\"cn-hangzhou-h\\",\\n \\"InternetIp\\": \\"47.XX.XX.162\\",\\n \\"TransitRouterId\\": \\"tr-p0we2edef9qr44a85****\\",\\n \\"TransitRouterName\\": \\"nametest\\",\\n \\"CrossAccountAuthorized\\": false,\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ]\\n },\\n \\"TunnelOptionsSpecification\\": {\\n \\"TunnelOptions\\": [\\n {\\n \\"TunnelId\\": \\"tun-opsqc4d97wni27****\\",\\n \\"CustomerGatewayId\\": \\"cgw-p0wy363lucf1uyae8****\\",\\n \\"EnableDpd\\": \\"true\\",\\n \\"EnableNatTraversal\\": \\"true\\",\\n \\"InternetIp\\": \\"47.21.XX.XX\\",\\n \\"RemoteCaCertificate\\": \\"-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----\\",\\n \\"Role\\": \\"master\\",\\n \\"TunnelIndex\\": 1,\\n \\"State\\": \\"active\\",\\n \\"Status\\": \\"ipsec_sa_established\\",\\n \\"TunnelBgpConfig\\": {\\n \\"BgpStatus\\": \\"success\\",\\n \\"LocalAsn\\": \\"65530\\",\\n \\"LocalBgpIp\\": \\"169.254.10.1\\",\\n \\"PeerAsn\\": \\"65531\\",\\n \\"PeerBgpIp\\": \\"169.254.10.2\\",\\n \\"TunnelCidr\\": \\"169.254.10.0/30\\"\\n },\\n \\"TunnelIkeConfig\\": {\\n \\"IkeAuthAlg\\": \\"sha1\\",\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"IkeLifetime\\": \\"86400\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeVersion\\": \\"ikev1\\",\\n \\"LocalId\\": \\"47.21.XX.XX\\",\\n \\"Psk\\": \\"123456****\\",\\n \\"RemoteId\\": \\"47.42.XX.XX\\"\\n },\\n \\"TunnelIpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecLifetime\\": \\"86400\\",\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"ZoneNo\\": \\"cn-hangzhou-i\\"\\n }\\n ]\\n },\\n \\"EnableTunnelsBgp\\": true,\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\",\\n \\"TunnelBandwidth\\": \\"Standard\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ike_sa_not_established\\n -----BEGIN CERTIFICATE----- MIIB7zCCAZW****\\n true\\n 1492753817000\\n true\\n vpn-bp1q8bgx4xnkm2ogj****\\n active\\n 10.0.0.0/8\\n F2310D45-BCF6-4E2E-9082-B4503844BA4C\\n vco-bp1bbi27hojx80nck****\\n 192.168.0.0/16\\n cgw-bp1mvj4g9kogwwcxk****\\n ipsec1\\n true\\n \\n 139.34.XX.XX\\n 86400\\n aes\\n 116.28.XX.XX\\n main\\n ikev1\\n group2\\n pgw6dy****\\n sha1\\n \\n \\n sha1\\n 86400\\n aes\\n group2\\n \\n \\n failed\\n 10.0.0.1\\n 3\\n 3\\n 192.168.1.1\\n true\\n \\n \\n success\\n 169.254.11.1\\n 169.254.11.0/30\\n true\\n 169.254.11.2\\n 65530\\n 65531\\n AuthKey****\\n \\n","errorExample":""}]', + 'title' => 'DescribeVpnConnection', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVpnConnections' => [ + 'summary' => 'Queries IPsec-VPN connections.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec-VPN connection is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + 'title' => '', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-bp1q8bgx4xnkx****', + 'title' => '', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the customer gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-bp1mvj4g9kogw****', + 'title' => '', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + 'title' => '', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries returned on each page. Default value: **10**. Valid values: **1** to **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + 'title' => '', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vco-bp10lz7aejumd****', + 'title' => '', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag value.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n" + ."\n" + .'You can specify at most 20 tag keys in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagKey', + 'title' => '', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagValue', + 'title' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 21, + 'title' => '', + 'example' => '', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IPsec-VPN connection belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query the resource group ID.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + 'title' => '', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + 'title' => '', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '238752DC-0693-49BE-9C85-711D5691D3E5', + 'title' => '', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + 'title' => '', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + 'title' => '', + ], + 'VpnConnections' => [ + 'description' => '', + 'type' => 'object', + 'items' => [ + 'description' => 'IPsec连接的配置信息。', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'name' => 'Status', + 'description' => 'IPsec连接的状态。'."\n" + ."\n" + .'- **ike_sa_not_established**:第一阶段协商失败。'."\n" + ."\n" + .'- **ike_sa_established**:第一阶段协商成功。'."\n" + ."\n" + .'- **ipsec_sa_not_established**:第二阶段协商失败。'."\n" + ."\n" + .'- **ipsec_sa_established**:第二阶段协商成功。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'ipsec_sa_established', + 'backendName' => 'status', + ], + 'EnableNatTraversal' => [ + 'name' => 'EnableNatTraversal', + 'description' => 'IPsec连接是否已开启NAT穿越功能。'."\n" + ."\n" + .'- **true**:开启NAT穿越功能。'."\n" + ."\n" + .' 开启后,IKE协商过程会删除对UDP端口号的验证过程,同时实现对VPN隧道中NAT网关设备的发现功能。'."\n" + ."\n" + .'- **false**:不开启NAT穿越功能。', + 'visibility' => 'Public', + 'type' => 'boolean', + 'example' => 'true', + 'backendName' => 'enableNatTraversal', + ], + 'RemoteCaCertificate' => [ + 'name' => 'RemoteCaCertificate', + 'description' => '对端的CA证书。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + 'backendName' => 'remoteCaCert', + ], + 'CreateTime' => [ + 'name' => 'CreateTime', + 'description' => '创建IPsec连接的时间戳。单位:毫秒。'."\n" + ."\n" + .'时间戳的格式采用Unix时间戳,表示从格林威治时间1970年01月01日00时00分00秒至创建IPsec连接时的总时长。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492753817000', + 'backendName' => 'createTime', + ], + 'EffectImmediately' => [ + 'name' => 'EffectImmediately', + 'description' => 'IPsec连接的配置是否立即生效。'."\n" + ."\n" + .'- **true**:是,配置变更完成后触发重连。'."\n" + .'- **false**:否,有流量时触发重连。', + 'visibility' => 'Public', + 'type' => 'boolean', + 'example' => 'true', + 'backendName' => 'effectImmediately', + ], + 'VpnGatewayId' => [ + 'name' => 'VpnGatewayId', + 'description' => 'VPN网关的实例ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'vpn-bp1q8bgx4xnkm****', + 'backendName' => 'vpnGatewayId', + ], + 'LocalSubnet' => [ + 'name' => 'LocalSubnet', + 'description' => 'IPsec连接阿里云侧的网段。'."\n" + ."\n" + .'在多个网段的情况下,网段之间使用半角逗号(,)分隔。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '192.168.0.0/16,172.17.0.0/16', + 'backendName' => 'localSubnet', + ], + 'VpnConnectionId' => [ + 'name' => 'VpnConnectionId', + 'description' => 'IPsec连接的ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'vco-bp10lz7aejumd****', + 'backendName' => 'instanceId', + ], + 'RemoteSubnet' => [ + 'name' => 'RemoteSubnet', + 'description' => '本地数据中心侧的网段。'."\n" + ."\n" + .'在多个网段的情况下,网段之间使用半角逗号(,)分隔。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '10.0.0.0/8,172.16.0.0/16', + 'backendName' => 'remoteSubnet', + ], + 'CustomerGatewayId' => [ + 'name' => 'CustomerGatewayId', + 'description' => 'IPsec连接关联的用户网关的实例ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'cgw-bp1mvj4g9kogw****', + 'backendName' => 'customerGatewayId', + ], + 'Name' => [ + 'name' => 'Name', + 'description' => 'IPsec连接的名称。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'nametest', + 'backendName' => 'name', + ], + 'EnableDpd' => [ + 'name' => 'EnableDpd', + 'description' => 'IPsec连接是否已开启DPD(对等体存活检测)功能。'."\n" + ."\n" + .'- **true**:开启DPD功能。'."\n" + ."\n" + .' IPsec发起端会发送DPD报文用来检测对端的设备是否存活,如果在设定时间内未收到正确回应则认为对端已经断线,IPsec将删除ISAKMP SA和相应的IPsec SA,安全隧道同样也会被删除。'."\n" + ."\n" + .'- **false**:不开启DPD功能,IPsec发起端不会发送DPD探测报文。', + 'visibility' => 'Public', + 'type' => 'boolean', + 'example' => 'true', + 'backendName' => 'enableDpd', + ], + 'IkeConfig' => [ + 'name' => 'IkeConfig', + 'description' => '第一阶段协商的配置。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'RemoteId' => [ + 'name' => 'RemoteId', + 'description' => 'IPsec连接阿里云侧的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '139.17.XX.XX', + 'backendName' => 'remoteId', + ], + 'IkeLifetime' => [ + 'name' => 'IkeLifetime', + 'description' => 'IKE阶段生存时间。单位:秒。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + 'backendName' => 'ikeLifetime', + ], + 'IkeEncAlg' => [ + 'name' => 'IkeEncAlg', + 'description' => 'IKE阶段加密算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'aes', + 'backendName' => 'ikeEncAlg', + ], + 'LocalId' => [ + 'name' => 'LocalId', + 'description' => 'IPsec连接对端本地数据中心侧的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '116.64.XX.XX', + 'backendName' => 'localId', + ], + 'IkeMode' => [ + 'name' => 'IkeMode', + 'description' => 'IKE阶段协商模式。'."\n" + ."\n" + .'- **main**:主模式,协商过程安全性高。'."\n" + .'- **aggressive**:野蛮模式,协商快速且协商成功率高。'."\n" + ."\n", + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'main', + 'backendName' => 'ikeMode', + ], + 'IkeVersion' => [ + 'name' => 'IkeVersion', + 'description' => 'IKE协议版本。'."\n" + ."\n" + .'- **ikev1**'."\n" + .'- **ikev2**'."\n" + ."\n" + .'相对于IKEv1版本,IKEv2版本简化了SA的协商过程并且对于多网段的场景提供了更好的支持。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'ikev1', + 'backendName' => 'ikeVersion', + ], + 'IkePfs' => [ + 'name' => 'IkePfs', + 'description' => 'IKE阶段DH分组。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'group2', + 'backendName' => 'ikePfs', + ], + 'Psk' => [ + 'name' => 'Psk', + 'description' => '预共享密钥。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'pgw6dy7****', + 'backendName' => 'psk', + ], + 'IkeAuthAlg' => [ + 'name' => 'IkeAuthAlg', + 'description' => 'IKE阶段认证算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'sha1', + 'backendName' => 'ikeAuthAlg', + ], + ], + 'backendName' => 'ikeConfig', + ], + 'IpsecConfig' => [ + 'name' => 'IpsecConfig', + 'description' => '第二阶段协商的配置。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'name' => 'IpsecAuthAlg', + 'description' => 'IPsec阶段认证算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'sha1', + 'backendName' => 'ipsecAuthAlg', + ], + 'IpsecLifetime' => [ + 'name' => 'IpsecLifetime', + 'description' => 'IPsec阶段生存时间。单位:秒。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + 'backendName' => 'ipsecLifetime', + ], + 'IpsecEncAlg' => [ + 'name' => 'IpsecEncAlg', + 'description' => 'IPsec阶段加密算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'aes', + 'backendName' => 'ipsecEncAlg', + ], + 'IpsecPfs' => [ + 'name' => 'IpsecPfs', + 'description' => 'IPsec阶段DH分组。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'group2', + 'backendName' => 'ipsecPfs', + ], + ], + 'backendName' => 'ipsecConfig', + ], + 'VcoHealthCheck' => [ + 'name' => 'VcoHealthCheck', + 'description' => 'IPsec连接的健康检查配置。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'name' => 'Status', + 'description' => '健康检查状态。'."\n" + ."\n" + .'- **success**:正常。'."\n" + .'- **failed**:异常。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'success', + 'backendName' => 'status', + ], + 'Dip' => [ + 'name' => 'Dip', + 'description' => '目的IP地址。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '192.168.0.1', + 'backendName' => 'dip', + ], + 'Interval' => [ + 'name' => 'Interval', + 'description' => '健康检查的时间间隔。单位:秒。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + 'backendName' => 'interval', + ], + 'Retry' => [ + 'name' => 'Retry', + 'description' => '健康检查的重试发包次数。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + 'backendName' => 'retry', + ], + 'Sip' => [ + 'name' => 'Sip', + 'description' => '源IP地址。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '192.168.0.50', + 'backendName' => 'sip', + ], + 'Enable' => [ + 'name' => 'Enable', + 'description' => '健康检查的开启状态。'."\n" + ."\n" + .'- **true**:已开启。'."\n" + ."\n" + .'- **false**:未开启。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'true', + 'backendName' => 'enable', + ], + 'Policy' => [ + 'name' => 'Policy', + 'description' => '健康检查失败时是否撤销已发布的路由。'."\n" + ."\n" + .'- **revoke_route**:撤销路由。'."\n" + .'- **reserve_route**:不撤销路由。', + 'type' => 'string', + 'example' => 'revoke_route', + 'backendName' => 'policy', + ], + ], + 'backendName' => 'vcoHealthCheck', + ], + 'VpnBgpConfig' => [ + 'name' => 'VpnBgpConfig', + 'description' => 'IPsec连接BGP路由协议的配置。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'name' => 'Status', + 'description' => 'BGP路由协议的协商状态。'."\n" + ."\n" + .'- **success**:正常。'."\n" + ."\n" + .'- **false**:异常。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'success', + 'backendName' => 'status', + ], + 'PeerBgpIp' => [ + 'name' => 'PeerBgpIp', + 'description' => '对端BGP地址。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '169.254.10.1', + 'backendName' => 'peerBgpIp', + ], + 'TunnelCidr' => [ + 'name' => 'TunnelCidr', + 'description' => 'IPsec连接BGP网段。该网段是一个在169.254.0.0/16内的子网掩码长度为30的网段。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '169.254.10.0/30', + 'backendName' => 'tunnelCidr', + ], + 'LocalBgpIp' => [ + 'name' => 'LocalBgpIp', + 'description' => '阿里云侧BGP地址。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '169.254.10.2', + 'backendName' => 'localBgpIp', + ], + 'PeerAsn' => [ + 'name' => 'PeerAsn', + 'description' => '对端自治系统号。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65530', + 'backendName' => 'peerAsn', + ], + 'LocalAsn' => [ + 'name' => 'LocalAsn', + 'description' => '阿里云侧自治系统号。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65531', + 'backendName' => 'localAsn', + ], + 'AuthKey' => [ + 'name' => 'AuthKey', + 'description' => 'BGP路由协议的认证密钥。', + 'type' => 'string', + 'example' => 'AuthKey****', + 'backendName' => 'authKey', + ], + ], + 'backendName' => 'bgpModel', + ], + 'AttachType' => [ + 'name' => 'AttachType', + 'description' => 'IPsec连接绑定的资源类型。'."\n" + ."\n" + .'- **CEN**:表示IPsec连接已绑定云企业网实例下的转发路由器实例。'."\n" + .'- **NO_ASSOCIATED**:表示IPsec连接未绑定任何资源。'."\n" + .'- **VPNGW**:表示IPsec连接绑定了VPN网关实例。', + 'type' => 'string', + 'example' => 'CEN', + 'backendName' => 'attachType', + ], + 'NetworkType' => [ + 'name' => 'NetworkType', + 'description' => 'IPsec连接的网络类型。'."\n" + ."\n" + .'- **public**:公网,表示IPsec连接通过公网建立加密通信通道。'."\n" + .'- **private**:私网,表示IPsec连接通过私网建立加密通信通道。', + 'type' => 'string', + 'example' => 'public', + 'backendName' => 'networkType', + ], + 'AttachInstanceId' => [ + 'name' => 'AttachInstanceId', + 'description' => '转发路由器实例所属的云企业网实例ID。', + 'type' => 'string', + 'example' => 'cen-lxxpbpalc776qz****', + 'backendName' => 'attachInstanceId', + ], + 'Spec' => [ + 'name' => 'Spec', + 'description' => 'IPsec连接的带宽规格。单位:**Mbps**。', + 'type' => 'string', + 'example' => '1000M', + 'backendName' => 'spec', + ], + 'State' => [ + 'name' => 'State', + 'description' => 'IPsec连接与转发路由器实例的绑定状态。'."\n" + ."\n" + .'- **active**:IPsec连接已与VPN网关实例绑定,状态正常。'."\n" + .'- **init**:IPsec连接未绑定任何资源,IPsec连接初始化。'."\n" + .'- **attaching**:IPsec连接与转发路由器实例绑定中。'."\n" + .'- **attached**:IPsec连接已与转发路由器实例绑定。'."\n" + .'- **detaching**:IPsec连接与转发路由器实例解绑中。'."\n" + .'- **financialLocked**:欠费锁定。'."\n" + .'- **provisioning**:资源准备中。'."\n" + .'- **updating**:更新中。'."\n" + .'- **upgrading**:升级中。'."\n" + .'- **deleted**:已删除。', + 'type' => 'string', + 'example' => 'attached', + 'backendName' => 'state', + ], + 'TransitRouterId' => [ + 'name' => 'TransitRouterId', + 'description' => 'IPsec连接绑定的转发路由器实例ID。', + 'type' => 'string', + 'example' => 'tr-p0we2edef9qr44a85****', + 'backendName' => 'transitRouterId', + ], + 'TransitRouterName' => [ + 'name' => 'TransitRouterName', + 'description' => '转发路由器实例的名称。', + 'type' => 'string', + 'example' => 'nametest', + 'backendName' => 'transitRouterName', + ], + 'CrossAccountAuthorized' => [ + 'name' => 'CrossAccountAuthorized', + 'description' => 'IPsec连接是否绑定了跨账号的转发路由器实例。'."\n" + ."\n" + .'- **true**:是。'."\n" + .'- **false**:否。', + 'type' => 'boolean', + 'example' => 'false', + 'backendName' => 'crossAccountAuthorized', + ], + 'InternetIp' => [ + 'name' => 'InternetIp', + 'description' => 'IPsec连接的网关IP地址。'."\n" + ."\n" + .'> 仅IPsec连接绑定转发路由器实例时会返回当前参数。', + 'type' => 'string', + 'example' => '10.XX.XX.10', + 'backendName' => 'internetIp', + ], + 'Tag' => [ + 'name' => 'Tag', + 'description' => 'IPsec连接绑定的标签列表。', + 'visibility' => 'Public', + 'type' => 'array', + 'items' => [ + 'description' => '标签信息。', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'name' => 'Key', + 'description' => '标签键。', + 'type' => 'string', + 'example' => 'TagKey', + 'backendName' => 'tagKey', + ], + 'Value' => [ + 'name' => 'Value', + 'description' => '标签值。', + 'type' => 'string', + 'example' => 'TagValue', + 'backendName' => 'tagValue', + ], + ], + 'extendType' => 'true', + ], + 'backendName' => 'tags', + 'itemName' => 'Tag', + ], + 'TunnelOptionsSpecification' => [ + 'name' => 'TunnelOptionsSpecification', + 'description' => 'IPsec连接的隧道配置信息。'."\n" + ."\n" + .'仅查询双隧道模式的IPsec连接会返回**TunnelOptionsSpecification**数组下的参数。', + 'visibility' => 'Public', + 'type' => 'array', + 'items' => [ + 'description' => '隧道的配置信息。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'name' => 'TunnelId', + 'description' => '隧道ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'tun-opsqc4d97wni27****', + 'backendName' => 'tunnelId', + ], + 'CustomerGatewayId' => [ + 'name' => 'CustomerGatewayId', + 'description' => '隧道关联的用户网关ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'cgw-p0wy363lucf1uyae8****', + 'backendName' => 'customerGatewayId', + ], + 'EnableDpd' => [ + 'name' => 'EnableDpd', + 'description' => '隧道是否已开启DPD(对等体存活检测)功能。'."\n" + .'- **false**:未开启。'."\n" + .'- **true**:已开启。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'true', + 'backendName' => 'enableDpd', + ], + 'EnableNatTraversal' => [ + 'name' => 'EnableNatTraversal', + 'description' => '隧道是否已开启NAT穿越功能。'."\n" + ."\n" + .'- **false**:未开启。'."\n" + .'- **true**:已开启。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'true', + 'backendName' => 'enableNatTraversal', + ], + 'InternetIp' => [ + 'name' => 'InternetIp', + 'description' => '隧道的IP地址。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.21.XX.XX', + 'backendName' => 'internetIp', + ], + 'RemoteCaCertificate' => [ + 'name' => 'RemoteCaCertificate', + 'description' => '隧道对端的CA证书。'."\n" + ."\n" + .'仅VPN网关实例的类型为国密型时才会返回当前参数。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + 'backendName' => 'remoteCaCertificate', + ], + 'Role' => [ + 'name' => 'Role', + 'description' => '隧道的角色。'."\n" + ."\n" + .'- **master**:表示当前隧道为主隧道。'."\n" + .'- **slave**:表示当前隧道为备隧道。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'master', + 'backendName' => 'locationRole', + ], + 'TunnelIndex' => [ + 'name' => 'TunnelIndex', + 'description' => '隧道的创建顺序。'."\n" + .'- **1**:第一条隧道。'."\n" + .'- **2**:第二条隧道。'."\n" + ."\n" + .'> 仅IPsec连接绑定转发路由器时会返回该参数。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + 'backendName' => 'tunnelIndex', + ], + 'State' => [ + 'name' => 'State', + 'description' => '隧道的状态。'."\n" + ."\n" + .'- **active**:状态正常。'."\n" + .'- **updating**:更新中。'."\n" + .'- **deleting**:删除中。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'active', + 'backendName' => 'state', + ], + 'Status' => [ + 'name' => 'Status', + 'description' => 'IPsec连接的状态。'."\n" + ."\n" + .'- **ike_sa_not_established**:第一阶段协商失败。'."\n" + ."\n" + .'- **ike_sa_established**:第一阶段协商成功。'."\n" + ."\n" + .'- **ipsec_sa_not_established**:第二阶段协商失败。'."\n" + ."\n" + .'- **ipsec_sa_established**:第二阶段协商成功。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'ipsec_sa_established', + 'backendName' => 'tunnelStatus', + ], + 'TunnelBgpConfig' => [ + 'name' => 'TunnelBgpConfig', + 'description' => '隧道的BGP配置信息。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'BgpStatus' => [ + 'name' => 'BgpStatus', + 'description' => 'BGP的协商状态。'."\n" + ."\n" + .'- **success**:正常。'."\n" + .'- **failed**:异常。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'success', + 'backendName' => 'bgpStatus', + ], + 'LocalAsn' => [ + 'name' => 'LocalAsn', + 'description' => '隧道本端(阿里云侧)的自治系统号。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '65530', + 'backendName' => 'localAsn', + ], + 'LocalBgpIp' => [ + 'name' => 'LocalBgpIp', + 'description' => '隧道本端(阿里云侧)的BGP地址。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '169.254.10.1', + 'backendName' => 'localBgpIp', + ], + 'PeerAsn' => [ + 'name' => 'PeerAsn', + 'description' => '隧道对端的自治系统号。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '65531', + 'backendName' => 'peerAsn', + ], + 'PeerBgpIp' => [ + 'name' => 'PeerBgpIp', + 'description' => '隧道对端的BGP地址。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '169.254.10.2', + 'backendName' => 'peerBgpIp', + ], + 'TunnelCidr' => [ + 'name' => 'TunnelCidr', + 'description' => '隧道的BGP网段。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '169.254.10.0/30', + 'backendName' => 'tunnelCidr', + ], + ], + 'backendName' => 'tunnelBgpConfig', + ], + 'TunnelIkeConfig' => [ + 'name' => 'TunnelIkeConfig', + 'description' => '第一阶段协商的配置。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'name' => 'IkeAuthAlg', + 'description' => 'IKE阶段认证算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'sha1', + 'backendName' => 'ikeAuthAlg', + ], + 'IkeEncAlg' => [ + 'name' => 'IkeEncAlg', + 'description' => 'IKE阶段加密算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'aes', + 'backendName' => 'ikeEncAlg', + ], + 'IkeLifetime' => [ + 'name' => 'IkeLifetime', + 'description' => 'IKE阶段生存时间。单位:秒。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '86400', + 'backendName' => 'ikeLifetime', + ], + 'IkeMode' => [ + 'name' => 'IkeMode', + 'description' => 'IKE协商模式。'."\n" + ."\n" + .'- **main**:主模式,协商过程安全性高。'."\n" + .'- **aggressive**:野蛮模式,协商快速且协商成功率高。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'main', + 'backendName' => 'ikeMode', + ], + 'IkePfs' => [ + 'name' => 'IkePfs', + 'description' => 'IKE阶段DH分组。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'group2', + 'backendName' => 'ikePfs', + ], + 'IkeVersion' => [ + 'name' => 'IkeVersion', + 'description' => 'IKE协议版本。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'ikev1', + 'backendName' => 'ikeVersion', + ], + 'LocalId' => [ + 'name' => 'LocalId', + 'description' => '隧道本端(阿里云侧)的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.21.XX.XX', + 'backendName' => 'leftId', + ], + 'Psk' => [ + 'name' => 'Psk', + 'description' => '预共享密钥。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '123456****', + 'backendName' => 'psk', + ], + 'RemoteId' => [ + 'name' => 'RemoteId', + 'description' => '隧道对端的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.42.XX.XX', + 'backendName' => 'rightId', + ], + ], + 'backendName' => 'tunnelIkeConfig', + ], + 'TunnelIpsecConfig' => [ + 'name' => 'TunnelIpsecConfig', + 'description' => '第二阶段协商的配置。', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'name' => 'IpsecAuthAlg', + 'description' => 'IPsec阶段认证算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'sha1', + 'backendName' => 'ipsecAuthAlg', + ], + 'IpsecEncAlg' => [ + 'name' => 'IpsecEncAlg', + 'description' => 'IPsec阶段加密算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'aes', + 'backendName' => 'ipsecEncAlg', + ], + 'IpsecLifetime' => [ + 'name' => 'IpsecLifetime', + 'description' => 'IPsec阶段生存时间。单位:秒。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '86400', + 'backendName' => 'ipsecLifetime', + ], + 'IpsecPfs' => [ + 'name' => 'IpsecPfs', + 'description' => 'IPsec阶段DH分组。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'group2', + 'backendName' => 'ipsecPfs', + ], + ], + 'backendName' => 'tunnelIpsecConfig', + ], + 'ZoneNo' => [ + 'name' => 'ZoneNo', + 'description' => '隧道部署的可用区。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'ap-southeast-5a', + 'backendName' => 'zoneNo', + ], + ], + 'extendType' => 'true', + ], + 'backendName' => 'tunnelOptionsList', + 'itemName' => 'TunnelOptions', + ], + 'EnableTunnelsBgp' => [ + 'name' => 'EnableTunnelsBgp', + 'description' => '隧道BGP的开启状态。'."\n" + ."\n" + .'- **true**:已开启。'."\n" + .'- **false**:未开启。', + 'visibility' => 'Public', + 'type' => 'boolean', + 'example' => 'true', + 'backendName' => 'enableTunnelsBgp', + ], + 'ResourceGroupId' => [ + 'name' => 'ResourceGroupId', + 'description' => 'IPsec连接所属的资源组ID。'."\n" + ."\n" + .'您可以调用[ListResourceGroups](~~158855~~)接口查询资源组信息。', + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + 'backendName' => 'resourceGroupId', + ], + 'TunnelBandwidth' => [ + 'name' => 'TunnelBandwidth', + 'title' => '用于说明VPN单条隧道的带宽规格,取值:'."\n" + .'Standard(默认值):标准型,默认带宽1Gbps'."\n" + .'Large(大型):大型,默认带宽3Gbps', + 'description' => '用于说明VPN单条隧道的带宽规格,取值:'."\n" + .'Standard(默认值):标准型,默认带宽1Gbps'."\n" + .'Large(大型):大型,默认带宽3Gbps', + 'type' => 'string', + 'example' => 'Standard', + 'backendName' => 'tunnelBandwidth', + ], + ], + 'extendType' => 'true', + ], + 'title' => '', + 'example' => '', + 'itemNode' => true, + 'properties' => [ + 'VpnConnection' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'type' => 'string', + ], + 'EnableNatTraversal' => [ + 'type' => 'boolean', + ], + 'RemoteCaCertificate' => [ + 'type' => 'string', + ], + 'CreateTime' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'EffectImmediately' => [ + 'type' => 'boolean', + ], + 'VpnGatewayId' => [ + 'type' => 'string', + ], + 'LocalSubnet' => [ + 'type' => 'string', + ], + 'VpnConnectionId' => [ + 'type' => 'string', + ], + 'RemoteSubnet' => [ + 'type' => 'string', + ], + 'CustomerGatewayId' => [ + 'type' => 'string', + ], + 'Name' => [ + 'type' => 'string', + ], + 'EnableDpd' => [ + 'type' => 'boolean', + ], + 'IkeConfig' => [ + 'type' => 'object', + 'properties' => [ + 'RemoteId' => [ + 'type' => 'string', + ], + 'IkeLifetime' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'IkeEncAlg' => [ + 'type' => 'string', + ], + 'LocalId' => [ + 'type' => 'string', + ], + 'IkeMode' => [ + 'type' => 'string', + ], + 'IkeVersion' => [ + 'type' => 'string', + ], + 'IkePfs' => [ + 'type' => 'string', + ], + 'Psk' => [ + 'type' => 'string', + ], + 'IkeAuthAlg' => [ + 'type' => 'string', + ], + ], + ], + 'IpsecConfig' => [ + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'type' => 'string', + ], + 'IpsecLifetime' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'IpsecEncAlg' => [ + 'type' => 'string', + ], + 'IpsecPfs' => [ + 'type' => 'string', + ], + ], + ], + 'VcoHealthCheck' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'type' => 'string', + ], + 'Dip' => [ + 'type' => 'string', + ], + 'Interval' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + 'Retry' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + 'Sip' => [ + 'type' => 'string', + ], + 'Enable' => [ + 'type' => 'string', + ], + 'Policy' => [ + 'type' => 'string', + ], + ], + ], + 'VpnBgpConfig' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'type' => 'string', + ], + 'PeerBgpIp' => [ + 'type' => 'string', + ], + 'TunnelCidr' => [ + 'type' => 'string', + ], + 'LocalBgpIp' => [ + 'type' => 'string', + ], + 'PeerAsn' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'LocalAsn' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'AuthKey' => [ + 'type' => 'string', + ], + ], + ], + 'AttachType' => [ + 'type' => 'string', + ], + 'NetworkType' => [ + 'type' => 'string', + ], + 'AttachInstanceId' => [ + 'type' => 'string', + ], + 'Spec' => [ + 'type' => 'string', + ], + 'State' => [ + 'type' => 'string', + ], + 'TransitRouterId' => [ + 'type' => 'string', + ], + 'TransitRouterName' => [ + 'type' => 'string', + ], + 'CrossAccountAuthorized' => [ + 'type' => 'boolean', + ], + 'InternetIp' => [ + 'type' => 'string', + ], + 'Tag' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'type' => 'string', + ], + 'Value' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + 'TunnelOptionsSpecification' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TunnelOptions' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'type' => 'string', + ], + 'CustomerGatewayId' => [ + 'type' => 'string', + ], + 'EnableDpd' => [ + 'type' => 'string', + ], + 'EnableNatTraversal' => [ + 'type' => 'string', + ], + 'InternetIp' => [ + 'type' => 'string', + ], + 'RemoteCaCertificate' => [ + 'type' => 'string', + ], + 'Role' => [ + 'type' => 'string', + ], + 'TunnelIndex' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + 'State' => [ + 'type' => 'string', + ], + 'Status' => [ + 'type' => 'string', + ], + 'TunnelBgpConfig' => [ + 'type' => 'object', + 'properties' => [ + 'BgpStatus' => [ + 'type' => 'string', + ], + 'LocalAsn' => [ + 'type' => 'string', + ], + 'LocalBgpIp' => [ + 'type' => 'string', + ], + 'PeerAsn' => [ + 'type' => 'string', + ], + 'PeerBgpIp' => [ + 'type' => 'string', + ], + 'TunnelCidr' => [ + 'type' => 'string', + ], + ], + ], + 'TunnelIkeConfig' => [ + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'type' => 'string', + ], + 'IkeEncAlg' => [ + 'type' => 'string', + ], + 'IkeLifetime' => [ + 'type' => 'string', + ], + 'IkeMode' => [ + 'type' => 'string', + ], + 'IkePfs' => [ + 'type' => 'string', + ], + 'IkeVersion' => [ + 'type' => 'string', + ], + 'LocalId' => [ + 'type' => 'string', + ], + 'Psk' => [ + 'type' => 'string', + ], + 'RemoteId' => [ + 'type' => 'string', + ], + ], + ], + 'TunnelIpsecConfig' => [ + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'type' => 'string', + ], + 'IpsecEncAlg' => [ + 'type' => 'string', + ], + 'IpsecLifetime' => [ + 'type' => 'string', + ], + 'IpsecPfs' => [ + 'type' => 'string', + ], + ], + ], + 'ZoneNo' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + 'EnableTunnelsBgp' => [ + 'type' => 'boolean', + ], + 'ResourceGroupId' => [ + 'type' => 'string', + ], + 'TunnelBandwidth' => [ + 'title' => '用于说明VPN单条隧道的带宽规格,取值:'."\n" + .'Standard(默认值):标准型,默认带宽1Gbps'."\n" + .'Large(大型):大型,默认带宽3Gbps', + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + 'title' => '', + 'example' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"238752DC-0693-49BE-9C85-711D5691D3E5\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"VpnConnections\\": {\\n \\"VpnConnection\\": [\\n {\\n \\"Status\\": \\"ipsec_sa_established\\",\\n \\"EnableNatTraversal\\": true,\\n \\"RemoteCaCertificate\\": \\"-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----\\",\\n \\"CreateTime\\": 1492753817000,\\n \\"EffectImmediately\\": true,\\n \\"VpnGatewayId\\": \\"vpn-bp1q8bgx4xnkm****\\",\\n \\"LocalSubnet\\": \\"192.168.0.0/16,172.17.0.0/16\\",\\n \\"VpnConnectionId\\": \\"vco-bp10lz7aejumd****\\",\\n \\"RemoteSubnet\\": \\"10.0.0.0/8,172.16.0.0/16\\",\\n \\"CustomerGatewayId\\": \\"cgw-bp1mvj4g9kogw****\\",\\n \\"Name\\": \\"nametest\\",\\n \\"EnableDpd\\": true,\\n \\"IkeConfig\\": {\\n \\"RemoteId\\": \\"139.17.XX.XX\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"LocalId\\": \\"116.64.XX.XX\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkeVersion\\": \\"ikev1\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"Psk\\": \\"pgw6dy7****\\",\\n \\"IkeAuthAlg\\": \\"sha1\\"\\n },\\n \\"IpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"VcoHealthCheck\\": {\\n \\"Status\\": \\"success\\",\\n \\"Dip\\": \\"192.168.0.1\\",\\n \\"Interval\\": 2,\\n \\"Retry\\": 3,\\n \\"Sip\\": \\"192.168.0.50\\",\\n \\"Enable\\": \\"true\\",\\n \\"Policy\\": \\"revoke_route\\"\\n },\\n \\"VpnBgpConfig\\": {\\n \\"Status\\": \\"success\\",\\n \\"PeerBgpIp\\": \\"169.254.10.1\\",\\n \\"TunnelCidr\\": \\"169.254.10.0/30\\",\\n \\"LocalBgpIp\\": \\"169.254.10.2\\",\\n \\"PeerAsn\\": 65530,\\n \\"LocalAsn\\": 65531,\\n \\"AuthKey\\": \\"AuthKey****\\"\\n },\\n \\"AttachType\\": \\"CEN\\",\\n \\"NetworkType\\": \\"public\\",\\n \\"AttachInstanceId\\": \\"cen-lxxpbpalc776qz****\\",\\n \\"Spec\\": \\"1000M\\",\\n \\"State\\": \\"attached\\",\\n \\"TransitRouterId\\": \\"tr-p0we2edef9qr44a85****\\",\\n \\"TransitRouterName\\": \\"nametest\\",\\n \\"CrossAccountAuthorized\\": false,\\n \\"InternetIp\\": \\"10.XX.XX.10\\",\\n \\"Tag\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ]\\n },\\n \\"TunnelOptionsSpecification\\": {\\n \\"TunnelOptions\\": [\\n {\\n \\"TunnelId\\": \\"tun-opsqc4d97wni27****\\",\\n \\"CustomerGatewayId\\": \\"cgw-p0wy363lucf1uyae8****\\",\\n \\"EnableDpd\\": \\"true\\",\\n \\"EnableNatTraversal\\": \\"true\\",\\n \\"InternetIp\\": \\"47.21.XX.XX\\",\\n \\"RemoteCaCertificate\\": \\"-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----\\",\\n \\"Role\\": \\"master\\",\\n \\"TunnelIndex\\": 1,\\n \\"State\\": \\"active\\",\\n \\"Status\\": \\"ipsec_sa_established\\",\\n \\"TunnelBgpConfig\\": {\\n \\"BgpStatus\\": \\"success\\",\\n \\"LocalAsn\\": \\"65530\\",\\n \\"LocalBgpIp\\": \\"169.254.10.1\\",\\n \\"PeerAsn\\": \\"65531\\",\\n \\"PeerBgpIp\\": \\"169.254.10.2\\",\\n \\"TunnelCidr\\": \\"169.254.10.0/30\\"\\n },\\n \\"TunnelIkeConfig\\": {\\n \\"IkeAuthAlg\\": \\"sha1\\",\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"IkeLifetime\\": \\"86400\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeVersion\\": \\"ikev1\\",\\n \\"LocalId\\": \\"47.21.XX.XX\\",\\n \\"Psk\\": \\"123456****\\",\\n \\"RemoteId\\": \\"47.42.XX.XX\\"\\n },\\n \\"TunnelIpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecLifetime\\": \\"86400\\",\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"ZoneNo\\": \\"ap-southeast-5a\\"\\n }\\n ]\\n },\\n \\"EnableTunnelsBgp\\": true,\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\",\\n \\"TunnelBandwidth\\": \\"Standard\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 238752DC-0693-49BE-9C85-711D5691D3E5\\n 1\\n 2\\n \\n ipsec_sa_established\\n true\\n -----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE----- \\n 1492753817000\\n true\\n vpn-bp1q8bgx4xnkm****\\n active\\n 192.168.0.0/16,172.17.0.0/16\\n vco-bp10lz7aejumd****\\n 10.0.0.0/8,172.16.0.0/16\\n cgw-bp1mvj4g9kogw****\\n nametest\\n true\\n \\n 139.17.XX.XX\\n 86400\\n aes\\n 116.64.XX.XX\\n main\\n ikev1\\n group2\\n pgw6dy7****\\n sha1\\n \\n \\n sha1\\n 86400\\n aes\\n group2\\n \\n \\n success\\n 192.168.0.1\\n 2\\n 3\\n 192.168.0.50\\n true\\n \\n \\n success\\n 169.254.10.1\\n 169.254.10.0/30\\n 169.254.10.2\\n 65530\\n 65531\\n AuthKey****\\n \\n \\n TagKey\\n TagValue\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeVpnConnections', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DownloadVpnConnectionConfig' => [ + 'summary' => 'Queries the configuration of an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec-VPN connection is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp1bbi27hojx80nck****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0C68048B-0F70-40DA-B8AE-1B79B5CF62E3', + ], + 'VpnConnectionConfig' => [ + 'description' => 'The configurations of the peer gateway device.'."\n", + 'type' => 'object', + 'properties' => [ + 'Remote' => [ + 'description' => 'The identifier of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'Local' => [ + 'description' => 'The identifier of the customer gateway.'."\n", + 'type' => 'string', + 'example' => '139.196.XX.XX', + ], + 'RemoteSubnet' => [ + 'description' => 'The CIDR block on the virtual private cloud (VPC) side.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/16', + ], + 'LocalSubnet' => [ + 'description' => 'The CIDR block on the data center side.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/8', + ], + 'IkeConfig' => [ + 'description' => 'The configurations of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'RemoteId' => [ + 'description' => 'The identifier of the VPN gateway. FQDN and IP formats are supported. The default value is the IP address of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => '139.196.XX.XX', + ], + 'IkeLifetime' => [ + 'description' => 'The lifetime in the IKE phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'LocalId' => [ + 'description' => 'The identifier of the customer gateway. FQDN and IP formats are supported. The default value is the IP address of the customer gateway.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode. Valid values:'."\n" + ."\n" + .'* **main**: This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster and has a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkeVersion' => [ + 'description' => 'The IKE version.'."\n", + 'type' => 'string', + 'example' => 'ikev1', + ], + 'IkePfs' => [ + 'description' => 'The DH group in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => 'pgw6dy7d1i8i****', + ], + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + ], + ], + 'IpsecConfig' => [ + 'description' => 'The configurations of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The lifetime in the IPsec phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The DH group in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + 'TunnelsConfig' => [ + 'description' => '', + 'type' => 'object', + 'items' => [ + 'description' => '隧道的配置信息。', + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'name' => 'TunnelId', + 'description' => '隧道ID。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'tun-opsqc4d97wni27****', + 'backendName' => 'tunnelId', + ], + 'Local' => [ + 'name' => 'Local', + 'description' => '本地IDC侧隧道的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.21.XX.XX', + 'backendName' => 'local', + ], + 'Remote' => [ + 'name' => 'Remote', + 'description' => '阿里云侧隧道的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.24.XX.XX', + 'backendName' => 'remote', + ], + 'IkeConfig' => [ + 'name' => 'IkeConfig', + 'description' => '第一阶段协商的配置信息。 ', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'Psk' => [ + 'name' => 'Psk', + 'description' => '预共享密钥。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'pgw6dy7d1i8i****', + 'backendName' => 'psk', + ], + 'IkeVersion' => [ + 'name' => 'IkeVersion', + 'description' => 'IKE协议的版本。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'ikev2', + 'backendName' => 'ikeVersion', + ], + 'IkeMode' => [ + 'name' => 'IkeMode', + 'description' => 'IKE协商模式。'."\n" + ."\n" + .'- **main**:主模式,协商过程安全性高。'."\n" + .'- **aggressive**:野蛮模式,协商快速且协商成功率高。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'main', + 'backendName' => 'ikeMode', + ], + 'IkeEncAlg' => [ + 'name' => 'IkeEncAlg', + 'description' => 'IKE阶段加密算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'aes', + 'backendName' => 'ikeEncAlg', + ], + 'IkeAuthAlg' => [ + 'name' => 'IkeAuthAlg', + 'description' => 'IKE阶段认证算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'sha1', + 'backendName' => 'ikeAuthAlg', + ], + 'IkePfs' => [ + 'name' => 'IkePfs', + 'description' => 'IKE阶段DH分组。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'group2', + 'backendName' => 'ikePfs', + ], + 'IkeLifetime' => [ + 'name' => 'IkeLifetime', + 'description' => 'IKE阶段生存时间。单位:秒。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + 'backendName' => 'ikeLifetime', + ], + 'LocalId' => [ + 'name' => 'LocalId', + 'description' => '本地IDC侧隧道的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.21.XX.XX', + 'backendName' => 'localId', + ], + 'RemoteId' => [ + 'name' => 'RemoteId', + 'description' => '阿里云侧隧道的标识。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => '47.24.XX.XX', + 'backendName' => 'remoteId', + ], + ], + 'backendName' => 'ikeConfig', + ], + 'IpsecConfig' => [ + 'name' => 'IpsecConfig', + 'description' => '第二阶段协商的配置信息。 ', + 'visibility' => 'Public', + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'name' => 'IpsecAuthAlg', + 'description' => 'IPsec阶段认证算法。', + 'type' => 'string', + 'example' => 'sha1', + 'backendName' => 'ipsecAuthAlg', + ], + 'IpsecEncAlg' => [ + 'name' => 'IpsecEncAlg', + 'description' => 'IPsec阶段加密算法。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'aes', + 'backendName' => 'ipsecEncAlg', + ], + 'IpsecPfs' => [ + 'name' => 'IpsecPfs', + 'description' => 'IPsec阶段DH分组。', + 'visibility' => 'Public', + 'type' => 'string', + 'example' => 'group2', + 'backendName' => 'ipsecPfs', + ], + 'IpsecLifetime' => [ + 'name' => 'IpsecLifetime', + 'description' => 'IPsec阶段生存时间。单位:秒。', + 'visibility' => 'Public', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + 'backendName' => 'ipsecLifetime', + ], + ], + 'backendName' => 'ipsecConfig', + ], + ], + 'extendType' => 'true', + ], + 'itemNode' => true, + 'properties' => [ + 'TunnelConfig' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'type' => 'string', + ], + 'Local' => [ + 'type' => 'string', + ], + 'Remote' => [ + 'type' => 'string', + ], + 'IkeConfig' => [ + 'type' => 'object', + 'properties' => [ + 'Psk' => [ + 'type' => 'string', + ], + 'IkeVersion' => [ + 'type' => 'string', + ], + 'IkeMode' => [ + 'type' => 'string', + ], + 'IkeEncAlg' => [ + 'type' => 'string', + ], + 'IkeAuthAlg' => [ + 'type' => 'string', + ], + 'IkePfs' => [ + 'type' => 'string', + ], + 'IkeLifetime' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'LocalId' => [ + 'type' => 'string', + ], + 'RemoteId' => [ + 'type' => 'string', + ], + ], + ], + 'IpsecConfig' => [ + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'type' => 'string', + ], + 'IpsecEncAlg' => [ + 'type' => 'string', + ], + 'IpsecPfs' => [ + 'type' => 'string', + ], + 'IpsecLifetime' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + ], + ], + ], + ], + ], + ], + ], + 'BgpConfigs' => [ + 'type' => 'object', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'name' => 'LocalAsn', + 'type' => 'string', + 'backendName' => 'localAsn', + ], + 'LocalBgpIp' => [ + 'name' => 'LocalBgpIp', + 'type' => 'string', + 'backendName' => 'localBgpIp', + ], + 'PeerAsn' => [ + 'name' => 'PeerAsn', + 'type' => 'string', + 'backendName' => 'peerAsn', + ], + 'PeerBgpIp' => [ + 'name' => 'PeerBgpIp', + 'type' => 'string', + 'backendName' => 'peerBgpIp', + ], + 'TunnelCidr' => [ + 'name' => 'TunnelCidr', + 'type' => 'string', + 'backendName' => 'tunnelCidr', + ], + 'TunnelId' => [ + 'name' => 'TunnelId', + 'type' => 'string', + 'backendName' => 'tunnelId', + ], + ], + 'extendType' => 'true', + ], + 'itemNode' => true, + 'properties' => [ + 'BgpConfig' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'type' => 'string', + ], + 'LocalBgpIp' => [ + 'type' => 'string', + ], + 'PeerAsn' => [ + 'type' => 'string', + ], + 'PeerBgpIp' => [ + 'type' => 'string', + ], + 'TunnelCidr' => [ + 'type' => 'string', + ], + 'TunnelId' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C68048B-0F70-40DA-B8AE-1B79B5CF62E3\\",\\n \\"VpnConnectionConfig\\": {\\n \\"Remote\\": \\"116.62.XX.XX\\",\\n \\"Local\\": \\"139.196.XX.XX\\",\\n \\"RemoteSubnet\\": \\"192.168.0.0/16\\",\\n \\"LocalSubnet\\": \\"10.0.0.0/8\\",\\n \\"IkeConfig\\": {\\n \\"RemoteId\\": \\"116.62.XX.XX\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"LocalId\\": \\"139.196.XX.XX\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkeVersion\\": \\"ikev2\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"Psk\\": \\"pgw6dy7d1i8i****\\",\\n \\"IkeAuthAlg\\": \\"sha1\\"\\n },\\n \\"IpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"TunnelsConfig\\": {\\n \\"TunnelConfig\\": [\\n {\\n \\"TunnelId\\": \\"tun-opsqc4d97wni27****\\",\\n \\"Local\\": \\"47.21.XX.XX\\",\\n \\"Remote\\": \\"47.24.XX.XX\\",\\n \\"IkeConfig\\": {\\n \\"Psk\\": \\"pgw6dy7d1i8i****\\",\\n \\"IkeVersion\\": \\"ikev2\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"IkeAuthAlg\\": \\"sha1\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeLifetime\\": 86400,\\n \\"LocalId\\": \\"47.21.XX.XX\\",\\n \\"RemoteId\\": \\"47.24.XX.XX\\"\\n },\\n \\"IpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecPfs\\": \\"group2\\",\\n \\"IpsecLifetime\\": 86400\\n }\\n }\\n ]\\n },\\n \\"BgpConfigs\\": {\\n \\"BgpConfig\\": [\\n {\\n \\"LocalAsn\\": \\"1219002\\",\\n \\"LocalBgpIp\\": \\"169.254.20.2\\",\\n \\"PeerAsn\\": \\"1219001\\",\\n \\"PeerBgpIp\\": \\"169.254.20.1\\",\\n \\"TunnelCidr\\": \\"169.254.20.0/30\\",\\n \\"TunnelId\\": \\"tun-900ghtunmhp75r14wh\\"\\n }\\n ]\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 0C68048B-0F70-40DA-B8AE-1B79B5CF62E3\\n \\n 116.62.XX.XX\\n 139.196.XX.XX\\n 192.168.0.0/16\\n 10.0.0.0/8\\n \\n 139.196.XX.XX\\n 86400\\n aes\\n 116.62.XX.XX\\n main\\n ikev1\\n group2\\n pgw6dy7d1i8i****\\n sha1\\n \\n \\n sha1\\n 86400\\n aes\\n group2\\n \\n \\n","errorExample":""}]', + 'title' => 'DownloadVpnConnectionConfig', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVpnConnectionLogs' => [ + 'summary' => 'Queries logs of IPsec-VPN connections.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'list', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-m5evqnds4y459flt3****', + ], + ], + [ + 'name' => 'From', + 'in' => 'query', + 'schema' => [ + 'description' => 'The start time of the flow log. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n" + ."\n" + .'> If you specify **From**, you must specify **To** or **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1671003744', + ], + ], + [ + 'name' => 'To', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end time of the flow log. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n" + ."\n" + .'> If you specify **To**, you must specify **From** or **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1671004344', + ], + ], + [ + 'name' => 'MinutePeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The interval at which log data is collected. Valid values: **1** to **10**. Unit: minutes.'."\n" + ."\n" + .'> If you do not specify **From** and **To**, you must specify **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'TunnelId', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n" + ."\n" + .'This parameter is available only for a dual-tunnel IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tun-opsqc4d97wni27****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'CF161502-4959-5C3B-B499-09B87BA931D9', + ], + 'Count' => [ + 'description' => 'The number of entries on the current page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'IsCompleted' => [ + 'description' => 'Indicates whether the log is accurate. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Data' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Logs' => [ + 'description' => 'The log list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'An array of strings.'."\n" + ."\n" + .'Each item in the array is a log entry.'."\n", + 'type' => 'string', + 'example' => '"Logs": [ "2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: isakmp_inf.c:1514:isakmp****", "2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:2832:oak****", "2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:2833:oak****" ]', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'QueryVpnConnectionLog.NotFound', + 'errorMessage' => 'the connection log of the vpn connection is not found.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"CF161502-4959-5C3B-B499-09B87BA931D9\\",\\n \\"Count\\": 10,\\n \\"IsCompleted\\": true,\\n \\"Data\\": {\\n \\"Logs\\": [\\n \\"\\\\\\"Logs\\\\\\": [ \\\\\\"2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: isakmp_inf.c:1514:isakmp****\\\\\\", \\\\\\"2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:2832:oak****\\\\\\", \\\\\\"2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:2833:oak****\\\\\\" ]\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n CF161502-4959-5C3B-B499-09B87BA931D9\\n 1\\n true\\n \\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: isakmp_inf.c:1514:isakmp_info_send_r_u(): DPD monitoring....\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:2832:oakley_newiv2(): compute IV for phase2\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:2833:oakley_newiv2(): phase1 last IV:\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: algorithm.c:381:alg_oakley_hashdef(): hash(sha1)\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: algorithm.c:524:alg_oakley_encdef(): encryption(aes)\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:2867:oakley_newiv2(): phase2 IV computed:\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:657:oakley_compute_hash1(): HASH with:\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: algorithm.c:464:alg_oakley_hmacdef(): hmac(hmac_sha1)\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:667:oakley_compute_hash1(): HASH computed:\\n 2022-12-14 15:52:28 vco-m5evqnds4y459flt3**** [DEBUG]: oakley.c:3035:oakley_do_encrypt(): begin encryption.\\n \\n 10\\n","errorExample":""}]', + 'title' => 'DescribeVpnConnectionLogs', + ], + 'DiagnoseVpnConnections' => [ + 'summary' => 'Diagnoses IPsec-VPN connections.', + 'methods' => [ + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-bp10hz6b0mbp39flt****', + ], + ], + [ + 'name' => 'VpnConnectionIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of IPsec-VPN connections.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n" + ."\n" + .'> This parameter is required if the IPsec-VPN connection is in single-tunnel mode.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vco-bp1spxu8hlcvpd7ry****', + ], + 'required' => false, + 'maxItems' => 51, + ], + ], + [ + 'name' => 'TunnelIds', + 'in' => 'query', + 'allowEmptyValue' => true, + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of tunnel IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel ID.'."\n" + ."\n" + .'> This parameter is required if the IPsec-VPN connection is in dual-tunnel mode.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tun-64n1sr9dig64k6****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B8094E1E-935B-1397-96A8-4F87A5D1BF29', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VpnConnections' => [ + 'description' => 'The diagnostic information.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'MismatchRemoteParam' => [ + 'description' => 'If the parameter values configured for the IPsec-VPN connection and the peer gateway device do not match, this parameter indicates the value of the parameter configured for the peer gateway device.'."\n", + 'type' => 'string', + 'example' => 'SHA', + ], + 'MismatchLocalParam' => [ + 'description' => 'If the values of the parameters configured for the IPsec-VPN connection and the peer gateway device do not match, this parameter indicates the value of the parameters configured for the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'SHA256', + ], + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-bp1spxu8hlcvpd7ry****', + ], + 'SourceLog' => [ + 'description' => 'The log information about the error.'."\n", + 'type' => 'string', + 'example' => '2023-01-13 11:39:21 vco-bp1spxu8hlcvpd7ry**** [PROTO_ERR]: ikev1.c:1433:isakmp_ph1resend(): phase1 negotiation failed due to time up. [{remote id:4}{ph1: 172.16.0.88[500] <=> 192.168.0.206[500], 172.16.0.88 <=> 192.168.0.206}]', + ], + 'FailedReasonCode' => [ + 'description' => 'The error code.'."\n", + 'type' => 'string', + 'example' => 'Phase1NegotiationTimeout', + ], + 'FailedTime' => [ + 'description' => 'The timestamp when the current error occurred on the IPsec-VPN connection. Unit: millisecond.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1673581161000', + ], + 'FailedReason' => [ + 'description' => 'The cause of the error.'."\n", + 'type' => 'string', + 'example' => 'Phase1 negotiation timeout', + ], + 'Severity' => [ + 'description' => 'The error level. Valid values:'."\n" + ."\n" + .'* **Critical**'."\n" + .'* **Warn**'."\n" + .'* **Normal**'."\n", + 'type' => 'string', + 'example' => 'Warn', + ], + 'TunnelId' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'example' => 'tun-64n1sr9dig64k6****', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The parameter is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B8094E1E-935B-1397-96A8-4F87A5D1BF29\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 1,\\n \\"VpnConnections\\": [\\n {\\n \\"MismatchRemoteParam\\": \\"SHA\\",\\n \\"MismatchLocalParam\\": \\"SHA256\\",\\n \\"VpnConnectionId\\": \\"vco-bp1spxu8hlcvpd7ry****\\",\\n \\"SourceLog\\": \\"2023-01-13 11:39:21 vco-bp1spxu8hlcvpd7ry**** [PROTO_ERR]: ikev1.c:1433:isakmp_ph1resend(): phase1 negotiation failed due to time up. [{remote id:4}{ph1: 172.16.0.88[500] <=> 192.168.0.206[500], 172.16.0.88 <=> 192.168.0.206}]\\",\\n \\"FailedReasonCode\\": \\"Phase1NegotiationTimeout\\",\\n \\"FailedTime\\": 1673581161000,\\n \\"FailedReason\\": \\"Phase1 negotiation timeout\\",\\n \\"Severity\\": \\"Warn\\",\\n \\"TunnelId\\": \\"tun-64n1sr9dig64k6****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n B8094E1E-935B-1397-96A8-4F87A5D1BF29\\n 50\\n 1\\n \\n \\n Phase1NegotiationTimeout\\n Phase1 negotiation timeout\\n Warn\\n vco-bp1spxu8hlcvpd7ry****\\n 1673581161000\\n \\n 2023-01-13 11:39:21 vco-bp1spxu8hlcvpd7ry**** [PROTO_ERR]: ikev1.c:1433:isakmp_ph1resend(): phase1 negotiation failed due to time up. [{remote id:4}{ph1: 172.16.0.88[500] <=> 192.168.0.206[500], 172.16.0.88 <=> 192.168.0.206}]\\n \\n","errorExample":""}]', + 'title' => 'DiagnoseVpnConnections', + 'description' => '* If the IPsec-VPN connection is in single-tunnel mode, the request parameter `VpnConnectionIds` is required when you call the **DiagnoseVpnConnections** operation.'."\n" + .'* If the IPsec-VPN connection is in dual-tunnel mode, the request parameter `TunnelIds` is required when you call the **DiagnoseVpnConnections** operation.'."\n" + .'* After you call the **DiagnoseVpnConnections** operation, if the current IPsec-VPN connection is faulty, the operation returns the corresponding error code (**FailedReasonCode**) and log (**SourceLog**). You can troubleshoot based on the error code and log information. For more information, see [Common errors and troubleshooting methods for IPsec-VPN connections](~~477862~~).'."\n", + ], + 'CreateVpnRouteEntry' => [ + 'summary' => 'Creates a destination-based route entry for a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3828dae****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the destination-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the destination-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The weight of the destination-based route. Valid values:'."\n" + ."\n" + .'* **100**: a high priority'."\n" + .'* **0**: a low priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'PublishVpc', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to advertise the destination-based route to a virtual private cloud (VPC) route table. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => true, + 'docRequired' => true, + 'example' => 'true', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the destination-based route.'."\n" + ."\n" + .'The description must be **1** to **100** characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'mytest', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. The value is set to **Ipsec**, which indicates the IPsec tunneling protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'NextHop' => [ + 'description' => 'The next hop of the destination-based route.'."\n", + 'type' => 'string', + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + 'Weight' => [ + 'description' => 'The weight of the destination-based route. Valid values:'."\n" + ."\n" + .'* **100**: a high priority'."\n" + .'* **0**: a low priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'RouteDest' => [ + 'description' => 'The destination CIDR block of the destination-based route.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + 'Description' => [ + 'description' => 'The description of the destination-based route.'."\n", + 'type' => 'string', + 'example' => 'mytest', + ], + 'State' => [ + 'description' => 'The status of the destination-based route.'."\n" + ."\n" + .'* **published**: advertised to the VPC route table.'."\n" + .'* **normal**: not advertised to the VPC route table.'."\n", + 'type' => 'string', + 'example' => 'published', + ], + 'CreateTime' => [ + 'description' => 'The timestamp when the destination-based route was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492747187000', + ], + 'OverlayMode' => [ + 'description' => 'The tunneling protocol. The value is set to **Ipsec**, which indicates the IPsec tunneling protocol.'."\n", + 'type' => 'string', + 'example' => 'Ipsec', + ], + 'VpnInstanceId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnRouteEntry.ConflictSSL', + 'errorMessage' => 'The specified route entry has conflict with SSL client.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + [ + 'errorCode' => 'VpnRouteEntry.InvalidWeight', + 'errorMessage' => 'Invalid route entry weight value.', + ], + [ + 'errorCode' => 'InvalidNextHop.NotFound', + 'errorMessage' => 'The specified NextHop does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.RouteDest', + 'errorMessage' => 'The specified RouteDest is invalid', + ], + [ + 'errorCode' => 'OperationFailed.RouteConflict', + 'errorMessage' => 'Operation failed because there is already a route in VPC route table to another VPN on the same network block.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidCidrBlock', + 'errorMessage' => 'Operation failed because the specified network block is invalid.', + ], + [ + 'errorCode' => 'QuotaExceeded.VpnRouteEntry', + 'errorMessage' => 'The number of route entries to the VPN gateway in the VPC routing table has reached the quota limit.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextHop\\": \\"vco-bp15oes1py4i66rmd****\\",\\n \\"Weight\\": 0,\\n \\"RouteDest\\": \\"10.0.0.0/24\\",\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\",\\n \\"Description\\": \\"mytest\\",\\n \\"State\\": \\"published\\",\\n \\"CreateTime\\": 1492747187000,\\n \\"OverlayMode\\": \\"Ipsec\\",\\n \\"VpnInstanceId\\": \\"vpn-bp1a3kqjiiq9legfx****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vco-bp15oes1py4i66rmd****\\n 0\\n 10.0.0.0/24\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n mytest\\n published\\n 1492747187000\\n Ipsec\\n vpn-bp1a3kqjiiq9legfx****\\n","errorExample":""}]', + 'title' => 'CreateVpnRouteEntry', + 'description' => '* **CreateVpnRouteEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the destination-based route entry is being created.'."\n" + .' * If a VPN gateway is in the **active** state, the destination-based route entry has been created.'."\n" + ."\n" + .'* You cannot repeatedly call **CreateVpnRouteEntry** to create a destination-based route entry for a VPN gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'PublishVpnRouteEntry' => [ + 'summary' => 'Advertises a VPN route to a VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b382****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the VPN gateway route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the VPN gateway route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + ], + [ + 'name' => 'RouteType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the VPN gateway route. Valid values:'."\n" + ."\n" + .'* **pbr**: policy-based route'."\n" + .'* **dbr**: destination-based route'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pbr', + ], + ], + [ + 'name' => 'PublishVpc', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to advertise the VPN gateway route to the VPC route table. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => true, + 'docRequired' => true, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE ', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'InvalidVpnRouteEntry.NotFound', + 'errorMessage' => 'The specified route entry does not exist.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidStatus', + 'errorMessage' => 'Route entry is not allowed to operate in current status.', + ], + [ + 'errorCode' => 'OperationFailed.RouteConflict', + 'errorMessage' => 'Operation failed because there is already a route in VPC route table to another VPN on the same network block.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidCidrBlock', + 'errorMessage' => 'Operation failed because the specified network block is invalid.', + ], + [ + 'errorCode' => 'QuotaExceeded.VpnRouteEntry', + 'errorMessage' => 'The number of route entries to the VPN gateway in the VPC routing table has reached the quota limit.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'IllegalParam.CidrBlock', + 'errorMessage' => 'The specified CidrBlock is illegal.', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'Route entry quota exceeded in this route table.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Miss mandatory parameter.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'InvalidCIDRBlock.Duplicate', + 'errorMessage' => 'Specified CIDR block is already exists.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'Current instance status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectRouteEntryStatus', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current virtual switch status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidCidrBlock', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'InvalidNextHopType', + 'errorMessage' => 'Specified parameter "NextHopType" is not valid', + ], + [ + 'errorCode' => 'InvalidNextHop.NotFound', + 'errorMessage' => 'Specified next hop does not exist.', + ], + [ + 'errorCode' => 'InvalidVRouter.NotFound', + 'errorMessage' => 'vRouter not exists.', + ], + [ + 'errorCode' => 'InvalidVPC.NotFound', + 'errorMessage' => 'vpc not exists.', + ], + [ + 'errorCode' => 'InvalidNexthopTypeAndList.BothNull', + 'errorMessage' => 'both nexthopType and nextHopList are null.', + ], + [ + 'errorCode' => 'InvalidNexthopTypeAndList.BothNotNull', + 'errorMessage' => 'both nexthopType and nextHopList are not null.', + ], + [ + 'errorCode' => 'InvalidRouterInterface', + 'errorMessage' => 'invalid router interface.', + ], + [ + 'errorCode' => 'InvalidOppositeRouterType', + 'errorMessage' => 'nexthop list cannot only contain router interface whose opposite router interface is on vbr.', + ], + [ + 'errorCode' => 'InvalidNexthopListSize', + 'errorMessage' => 'nexthop size is illegal. Must be between 2 and 4.', + ], + [ + 'errorCode' => 'InvalidEntryRuleQuota.NotFound', + 'errorMessage' => 'Route entry quota rule not exists.', + ], + [ + 'errorCode' => 'Forbidden.CheckEntryRuleQuota', + 'errorMessage' => 'Route entry quota rule check error.', + ], + [ + 'errorCode' => 'InvalidVBRStatus', + 'errorMessage' => 'invalid virtual border router status.', + ], + [ + 'errorCode' => 'InvalidPhysicalConnectionBusinessStatus', + 'errorMessage' => 'invalid physical connection business status.', + ], + [ + 'errorCode' => 'IncorrectHaVipStatus', + 'errorMessage' => 'This operation is denied because satus of the specified HaVip is neither Available nor InUse.', + ], + [ + 'errorCode' => 'CountLimitExceed.HaVipRouteEntry', + 'errorMessage' => 'There can be 5 route entry to HaVip at most in one route table.', + ], + [ + 'errorCode' => 'InvalidRouteEntry.Duplicate', + 'errorMessage' => 'The route entry already exist.', + ], + [ + 'errorCode' => 'INVALID_WEIGHT_PARAM', + 'errorMessage' => 'Specified value of weight invalid', + ], + [ + 'errorCode' => 'FORBIDDEN_USE_VPC_AS_INTERNET_GATEWAY', + 'errorMessage' => 'The Specified CIDR must be in vpc CIDR.', + ], + [ + 'errorCode' => 'INVALID_VPC_ID', + 'errorMessage' => 'The Specified VpcId not match.', + ], + [ + 'errorCode' => 'InvalidRouteEntrySize', + 'errorMessage' => 'The Specified routerEntry size not legal.', + ], + [ + 'errorCode' => 'RouteConflict.AlreadyExist', + 'errorMessage' => 'Route conflict exists in routing table.', + ], + [ + 'errorCode' => 'InvalidRouteEntryName.Malformed', + 'errorMessage' => 'Specified RouteEntry name is not valid.', + ], + [ + 'errorCode' => 'Duplicated.VpcNextHop', + 'errorMessage' => 'Route entry nexthop duplicate.', + ], + [ + 'errorCode' => 'InvalidNexthop.DirectEni', + 'errorMessage' => 'The direct Eni cannot be nexthop.', + ], + [ + 'errorCode' => 'InvalidAttachment.NotFound', + 'errorMessage' => 'The attachment is not found.', + ], + [ + 'errorCode' => 'OperationFailed.ActiveNetworkInterfaceNotFound', + 'errorMessage' => 'No active network interface is found on the attachment.', + ], + [ + 'errorCode' => 'InvalidNetworkInterface.NotFound', + 'errorMessage' => 'The network interface is not found on the attachment.', + ], + [ + 'errorCode' => 'OperationFailed.QueryAttachmentInfo', + 'errorMessage' => 'Failed to query attachment information.', + ], + [ + 'errorCode' => 'IllegalParam.AttachmentId', + 'errorMessage' => 'The attachment is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.NotSupportIPV6', + 'errorMessage' => 'The specified next hop does not support IPv6.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6Address', + 'errorMessage' => 'The IPv6 address of the specified next hop is being assigned or deleted.', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6EntryOnPrimaryNetworkInterface', + 'errorMessage' => 'You cannot create IPv6 route entries on a primary network interface.', + ], + [ + 'errorCode' => 'OperationUnsupported.SpecifyIpOnIpv6Entry', + 'errorMessage' => 'You cannot specify the private IP address when you create IPv6 route entries.', + ], + [ + 'errorCode' => 'OperationUnsupported.MutipleIpv6Address', + 'errorMessage' => 'You cannot specify a next hop that has bound multiple IPv6 addresses.', + ], + [ + 'errorCode' => 'OperationDenied.Ipv6EntryOnCustomTable', + 'errorMessage' => 'You cannot create any IPv6 route entry on a custom route table.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\t\\n","errorExample":""}]', + 'title' => 'PublishVpnRouteEntry', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVpnRouteEntry' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou ', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3828dae492b ', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the destination-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24 ', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the destination-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The weight of the destination-based route. Valid values:'."\n" + ."\n" + .'* **0**: a low priority'."\n" + .'* **100**: a high priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. Set the value to **Ipsec**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE ', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Configuring', + 'errorMessage' => 'The specified route entry is configuring.', + ], + [ + 'errorCode' => 'InvalidRouteEntry.NotFound', + 'errorMessage' => 'The specified route entry does not exist.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\r\\n","errorExample":""}]', + 'title' => 'DeleteVpnRouteEntry', + 'summary' => 'Deletes a destination-based route from a VPN gateway.', + 'description' => '* **DeleteVpnRouteEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the destination-based route is being deleted.'."\n" + .' * If the VPN gateway is in the **active** state, the destination-based route is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call **DeleteVpnRouteEntry** to delete a destination-based route from a VPN gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVpnRouteEntryWeight' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3828dae492b', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the destination-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the destination-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp15oes1py4i66rmd**** ', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The original weight of the destination-based route. Valid values:'."\n" + ."\n" + .'* **0**: a low priority'."\n" + .'* **100**: a high priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'NewWeight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new weight of the destination-based route. Valid values:'."\n" + ."\n" + .'* **0**: a low priority'."\n" + .'* **100**: a high priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '100', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. Set the value to **Ipsec**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE ', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\r\\n","errorExample":""}]', + 'title' => 'ModifyVpnRouteEntryWeight', + 'summary' => 'Modifies the weight of a destination-based route.', + 'description' => '* In scenarios where a VPN gateway has an active and a standby destination-based route, if you need to modify the weight of the active destination-based route, you must first delete the standby destination-based route. After you modify the active destination-based route, configure a standby destination-based route. If you need to modify the weight of the standby destination-based route, you also need to delete the active destination-based route first. After you modify the standby destination-based route, configure an active destination-based route. For more information about how to delete a destination-based route, see [DeleteVpnRouteEntry](~~2526961~~).'."\n" + ."\n" + .'* **ModifyVpnRouteEntryWeight** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the weight of the destination-based route is being modified.'."\n" + .' * If the VPN gateway is in the **active** state, the weight of the destination-based route is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyVpnRouteEntryWeight** operation to modify the weight of destination-based route for the same VPN gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVpnRouteEntries' => [ + 'summary' => 'Queries destination-based and BGP route entries of a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1cmw7jh1nfe43m9****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'RouteEntryType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the route entry. Valid values:'."\n" + ."\n" + .'* **Custom**: custom'."\n" + .'* **System**: system'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'System', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'BF3995A6-FA4F-4C74-B90F-89ECF4BFF4D5', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VpnRouteEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VpnRouteEntry' => [ + 'description' => 'The route entry list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The route details.'."\n", + 'type' => 'object', + 'properties' => [ + 'RouteEntryType' => [ + 'description' => 'The type of the route entry. Valid values:'."\n" + ."\n" + .'* **Custom**: custom'."\n" + .'* **System**: system'."\n", + 'type' => 'string', + 'example' => 'System', + ], + 'NextHop' => [ + 'description' => 'The next hop of the route entry.'."\n", + 'type' => 'string', + 'example' => 'vco-bp1tui07ob10fmuro****', + ], + 'Weight' => [ + 'description' => 'The weight of the route entry. Valid values: **0** and **100**.'."\n" + ."\n" + .'* **0**: a low priority'."\n" + .'* **100**: a high priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'RouteDest' => [ + 'description' => 'The destination CIDR block of the route entry.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'AsPath' => [ + 'description' => 'The AS path of the route entry.'."\n", + 'type' => 'string', + 'example' => '65501,65001,60011', + ], + 'State' => [ + 'description' => 'The status of the route entry. Valid values:'."\n" + ."\n" + .'* **published**: advertised'."\n" + .'* **normal**: not advertised'."\n", + 'type' => 'string', + 'example' => 'normal', + ], + 'CreateTime' => [ + 'description' => 'The timestamp when the route entry was created.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1563874074000', + ], + 'Community' => [ + 'description' => 'The community attributes of the route entry.'."\n", + 'type' => 'string', + 'example' => '65001:1000,65501:2000', + ], + 'Source' => [ + 'description' => 'The source of the BGP route. Valid values:'."\n" + ."\n" + .'* **CLOUD**: advertised from a cloud service associated with the VPN gateway.'."\n" + .'* **VPN_BGP**: indicates that the current route is learned by using BGP of the VPN gateway. For example, the BGP is used to learn the route of the on-premises data center.'."\n", + 'type' => 'string', + 'example' => '192.168.10.0/24', + ], + 'VpnInstanceId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1cmw7jh1nfe43m9****', + ], + 'NextHopTunnelId' => [ + 'description' => 'The ID of the tunnel associated with the next hop. '."\n" + ."\n\n" + .'> This parameter is returned only if the VPN gateway supports the dual-tunnel mode.', + 'type' => 'string', + 'example' => 'tun-36cfgpwjn58axj****', + ], + ], + ], + ], + ], + ], + 'VpnRouteCounts' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VpnRouteCount' => [ + 'description' => 'The information about route entries of the VPN gateway in dual-tunnel mode.'."\n" + ."\n" + .'> This parameter is returned only if the VPN gateway supports IPsec-VPN connections in dual-tunnel mode.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the routes.'."\n", + 'type' => 'object', + 'properties' => [ + 'RouteEntryType' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **custom** (default): destination-based route.'."\n" + .'* **bgp** : BGP route entry.'."\n", + 'type' => 'string', + 'example' => 'bgp', + ], + 'RouteCount' => [ + 'description' => 'The number of route entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Source' => [ + 'description' => 'The source of the BGP route. Valid values:'."\n" + ."\n" + .'* **CLOUD**: advertised from a cloud service associated with the VPN gateway.'."\n" + .'* **VPN_BGP**: indicates that the current route is learned by using BGP of the VPN gateway. For example, the BGP is used to learn the route of the on-premises data center.'."\n", + 'type' => 'string', + 'example' => 'VPN_BGP', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.RouteEntryType', + 'errorMessage' => 'The specified "RouteEntryType" is invalid.', + ], + [ + 'errorCode' => 'InvalidVpnInstanceId.NotFound', + 'errorMessage' => 'The specified VPN was not found.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"BF3995A6-FA4F-4C74-B90F-89ECF4BFF4D5\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"VpnRouteEntries\\": {\\n \\"VpnRouteEntry\\": [\\n {\\n \\"RouteEntryType\\": \\"custom\\",\\n \\"NextHop\\": \\"vco-bp1tui07ob10fmuro****\\",\\n \\"Weight\\": 100,\\n \\"RouteDest\\": \\"10.0.0.0/24\\",\\n \\"AsPath\\": \\"65501,65001,60011\\",\\n \\"State\\": \\"normal\\",\\n \\"CreateTime\\": 1563874074000,\\n \\"Community\\": \\"65001:1000,65501:2000\\",\\n \\"Source\\": \\"CLOUD\\",\\n \\"VpnInstanceId\\": \\"vpn-bp1cmw7jh1nfe43m9****\\",\\n \\"NextHopTunnelId\\": \\"tun-36cfgpwjn58axj****\\"\\n }\\n ]\\n },\\n \\"VpnRouteCounts\\": {\\n \\"VpnRouteCount\\": [\\n {\\n \\"RouteEntryType\\": \\"bgp\\",\\n \\"RouteCount\\": 3,\\n \\"Source\\": \\"VPN_BGP\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n BF3995A6-FA4F-4C74-B90F-89ECF4BFF4D5\\n 1\\n 1\\n \\n custom\\n vco-bp1tui07ob10fmuro****\\n 100\\n 10.0.0.0/24\\n normal\\n 1563874074000\\n vpn-bp1cmw7jh1nfe43m9****\\n tun-36cfgpwjn58axj****\\n \\n","errorExample":""}]', + 'title' => 'DescribeVpnRouteEntries', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateVpnPbrRouteEntry' => [ + 'summary' => 'Creates a policy-based route for a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'high', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to advertise the policy-based route to a virtual private cloud (VPC) route table. Valid values:'."\n" + ."\n" + .'* **true**: The route is advertised to the VPC system route table, but not to a VPC custom route table.'."\n" + ."\n" + .' You can manually add the route the a VPC custom route table. For more information, see [CreateRouteEntry](~~448722~~).'."\n" + ."\n" + .'* **false**: Do not advertise the route to the route table.'."\n" + ."\n" + .' You must manually add a policy-based route that points to the VPN gateway in the VPC custom and system route table. Otherwise, the VPC cannot access resources in the CIDR block through an IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the policy-based route.'."\n" + ."\n" + .'The description must be 1 to 100 characters in length, and cannot start with http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. Set the value to **Ipsec**.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteSource', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the policy-based route. Valid values: **1** to **100**. Default value: **10**.'."\n" + ."\n" + .'A smaller value indicates a higher priority.', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '192.168.1.0/24', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The weight of the policy-based route. Valid values:'."\n" + ."\n" + .'* **100**: The IPsec-VPN connection associated with the policy-based route serves as an active connection.'."\n" + .'* **0**: The IPsec-VPN connection associated with the policy-based route serves as a standby connection.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'PublishVpc', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the policy-based route.'."\n", + 'type' => 'boolean', + 'required' => true, + 'docRequired' => true, + 'example' => 'true', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'desctest', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the policy-based route.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the policy-based route. Valid values:'."\n" + ."\n" + .'* **published**: advertised to the VPC route table.'."\n" + .'* **normal**: not advertised to the VPC route table.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without performing the operation. The system prechecks the required parameters, request syntax, and limits. If the request fails to pass the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the precheck, a 2xx HTTP status code is returned and the operation is performed.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The time when the policy-based route was created.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'object', + 'properties' => [ + 'NextHop' => [ + 'description' => 'The tunneling protocol. The value is **Ipsec**.'."\n", + 'type' => 'string', + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + 'Weight' => [ + 'description' => 'The source CIDR block of the policy-based route.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'RouteDest' => [ + 'description' => 'The VPN gateway ID.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'RequestId' => [ + 'description' => 'The priority of the policy-based route.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + 'Description' => [ + 'description' => 'The description of the route.', + 'type' => 'string', + 'example' => 'desctest', + ], + 'State' => [ + 'description' => 'The status of the policy-based route.'."\n" + ."\n" + .'* **published**: advertised to the VPC route table.'."\n" + .'* **normal**: not advertised to the VPC route table.', + 'type' => 'string', + 'example' => 'normal', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the policy-based route was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492747187000', + ], + 'OverlayMode' => [ + 'description' => 'The tunneling protocol. The value is set to **Ipsec**, which indicates the IPsec tunneling protocol.'."\n", + 'type' => 'string', + 'example' => 'Ipsec', + ], + 'RouteSource' => [ + 'description' => 'The source CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'example' => '192.168.1.0/24', + ], + 'VpnInstanceId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1cmw7jh1nfe43m9****', + ], + 'Priority' => [ + 'description' => 'The priority of the policy-based route.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnRouteEntry.ConflictSSL', + 'errorMessage' => 'The specified route entry has conflict with SSL client.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + [ + 'errorCode' => 'VpnRouteEntry.InvalidWeight', + 'errorMessage' => 'Invalid route entry weight value.', + ], + [ + 'errorCode' => 'InvalidNextHop.NotFound', + 'errorMessage' => 'The specified NextHop does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.RouteDest', + 'errorMessage' => 'The specified RouteDest is invalid', + ], + [ + 'errorCode' => 'OperationFailed.RouteConflict', + 'errorMessage' => 'Operation failed because there is already a route in VPC route table to another VPN on the same network block.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidCidrBlock', + 'errorMessage' => 'Operation failed because the specified network block is invalid.', + ], + [ + 'errorCode' => 'QuotaExceeded.VpnRouteEntry', + 'errorMessage' => 'The number of route entries to the VPN gateway in the VPC routing table has reached the quota limit.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntryPriority.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support setting custom pbr route entry priority.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestWeightConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR, destination CIDR and weight.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SamePriorityPbrRoutePrefixOverlap', + 'errorMessage' => 'The source CIDR and destination CIDR of Policy-based routes with the same priority cannot overlap.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR and destination CIDR.', + ], + [ + 'errorCode' => 'CreatePbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of policy routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'InvalidCidrBlock.Malformed', + 'errorMessage' => 'Specified CIDR block is not valid.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntry.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support pbr route entry.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 1000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextHop\\": \\"vco-bp15oes1py4i66rmd****\\",\\n \\"Weight\\": 0,\\n \\"RouteDest\\": \\"10.0.0.0/24\\",\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\",\\n \\"Description\\": \\"desctest\\",\\n \\"State\\": \\"normal\\",\\n \\"CreateTime\\": 1492747187000,\\n \\"OverlayMode\\": \\"Ipsec\\",\\n \\"RouteSource\\": \\"192.168.1.0/24\\",\\n \\"VpnInstanceId\\": \\"vpn-bp1cmw7jh1nfe43m9****\\",\\n \\"Priority\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n vco-bp15oes1py4i66rmd****\\n 0\\n 10.0.0.0/24\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n desctest\\n normal\\n 1492747187000\\n Ipsec\\n 192.168.1.0/24\\n vpn-bp1cmw7jh1nfe43m9****\\n 10\\n","errorExample":""}]', + 'title' => 'CreateVpnPbrRouteEntry', + 'description' => 'Creates a policy-based route for a VPN gateway.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVpnPbrRouteEntry' => [ + 'summary' => 'Deletes a policy-based route from a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'high', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteSource', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '192.168.1.0/24', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The weight of the policy-based route. Valid values:'."\n" + ."\n" + .'You can call [DescribeVpnPbrRouteEntries](~~2526959~~) to query weights of policy-based routes.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. Set the value to **Ipsec**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the policy-based route.'."\n" + ."\n" + .'* If the route was not assigned a priority, this parameter is optional.'."\n" + ."\n" + .'* If the route was assigned a priority, this parameter is optional.'."\n" + ."\n" + .' If you specify this parameter, set the value to the priority configured for the policy-based route. Otherwise, the operation cannot be performed.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Configuring', + 'errorMessage' => 'The specified route entry is configuring.', + ], + [ + 'errorCode' => 'InvalidRouteEntry.NotFound', + 'errorMessage' => 'The specified route entry does not exist.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntry.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support pbr route entry.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n","errorExample":""}]', + 'title' => 'DeleteVpnPbrRouteEntry', + 'description' => '* **DeleteVpnPbrRouteEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the policy-based route is being deleted.'."\n" + .' * If a VPN gateway is in the **active** state, the policy-based route has been deleted.'."\n" + ."\n" + .'* You cannot repeatedly call **DeleteVpnPbrRouteEntry** to delete a policy-based route within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVpnPbrRouteEntryWeight' => [ + 'summary' => 'Modifies the weight of a policy-based route of a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3828dae492b', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteSource', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '192.168.1.0/24', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vco-bp15oes1py4i66rmd**** ', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The original weight of the policy-based route. Valid values:'."\n" + ."\n" + .'* **100**: The IPsec-VPN connection associated with the policy-based route serves as an active connection.'."\n" + .'* **0**: The IPsec-VPN connection associated with the policy-based route serves as a standby connection.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'NewWeight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new weight of the policy-based route. Valid values:'."\n" + ."\n" + .'* **100**: The IPsec-VPN connection associated with the policy-based route serves as an active connection.'."\n" + .'* **0**: The IPsec-VPN connection associated with the policy-based route serves as a standby connection.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '100', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. The value is set to **Ipsec**, which indicates the IPsec tunneling protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the policy-based route.'."\n" + ."\n" + .'* If the route was not assigned a priority, this parameter is optional.'."\n" + ."\n" + .'* If the route was assigned a priority, this parameter is optional.'."\n" + ."\n" + .' If you specify this parameter, set the value to the priority that was assigned to the policy-based route. Otherwise, the operation fails.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE ', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestWeightConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR, destination CIDR and weight.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SamePriorityPbrRoutePrefixOverlap', + 'errorMessage' => 'The source CIDR and destination CIDR of Policy-based routes with the same priority cannot overlap.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR and destination CIDR.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntry.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support pbr route entry.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\t\\n","errorExample":""}]', + 'title' => 'ModifyVpnPbrRouteEntryWeight', + 'description' => '* **ModifyVpnPbrRouteEntryWeight** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the policy-based route entry is being modified.'."\n" + .' * If a VPN gateway is in the **active** state, the policy-based route entry is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyVpnPbrRouteEntryWeight** operation for the same VPN gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyVpnPbrRouteEntryPriority' => [ + 'summary' => 'Modifies the priority of a policy-based route.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-henyuan', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteSource', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.1.0/24', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The original priority of the policy-based route. Valid values: **1** to **100**.'."\n" + ."\n" + .'A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'NewPriority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new priority of the policy-based route. Valid values: **1** to **100**.'."\n" + ."\n" + .'A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '10', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The weight of the policy-based route. Valid values:'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '100', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntryPriority.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support setting pbr route entry priority.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SamePriorityPbrRoutePrefixOverlap', + 'errorMessage' => 'The source CIDR and destination CIDR of Policy-based routes with the same priority cannot overlap.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR and destination CIDR.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestWeightConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR, destination CIDR and weight.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntry.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support pbr route entry.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 60, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n","errorExample":""}]', + 'title' => 'ModifyVpnPbrRouteEntryPriority', + 'description' => '* **ModifyVpnPbrRouteEntryPriority** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~73720~~) to query the status of the task.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the policy-based route entry is being modified.'."\n" + .' * If the VPN gateway is in the **active** state, the policy-based route is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyVpnPbrRouteEntryPriority** operation for the same VPN gateway within the specified period of time.'."\n", + ], + 'ModifyVpnPbrRouteEntryAttribute' => [ + 'summary' => 'Modifies the weight and priority of a policy-based route.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-heyuan', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'RouteSource', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.1.0/24', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the policy-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-bp15oes1py4i66rmd****', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The original priority of the policy-based route. Valid values: **1** to **100**.'."\n" + ."\n" + .'A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '5', + ], + ], + [ + 'name' => 'NewPriority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new priority of the policy-based route. Valid values: **1** to **100**.'."\n" + ."\n" + .'A smaller value indicates a higher priority.'."\n" + ."\n" + .'If you do not specify this parameter, the priority of the policy-based route is not modified.'."\n" + ."\n" + .'> You must specify at least one of **NewPriority** and **NewWeight**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The original weight of the policy-based route. Valid values:'."\n" + ."\n" + .'* **100**: The IPsec-VPN connection associated with the policy-based route serves as an active connection.'."\n" + .'* **0**: The IPsec-VPN connection associated with the policy-based route serves as a standby connection.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '100', + ], + ], + [ + 'name' => 'NewWeight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new weight of the policy-based route. Valid values:'."\n" + ."\n" + .'* **100**: The IPsec-VPN connection associated with the policy-based route serves as the active connection.'."\n" + .'* **0**: The IPsec-VPN connection associated with the policy-based route serves as the standby connection.'."\n" + ."\n" + .'If you do not specify this parameter, the weight of the policy-based route is not modified.'."\n" + ."\n" + .'> You must specify at least one of **NewPriority** and **NewWeight**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntryPriority.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support setting pbr route entry priority.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestWeightConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR, destination CIDR and weight.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SamePriorityPbrRoutePrefixOverlap', + 'errorMessage' => 'The source CIDR and destination CIDR of Policy-based routes with the same priority cannot overlap.', + ], + [ + 'errorCode' => 'VpnRouteEntry.SrcDestConflict', + 'errorMessage' => 'The VPN gateway does not support Policy-based routing with the same source CIDR and destination CIDR.', + ], + [ + 'errorCode' => 'VpnPbrRouteEntry.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support pbr route entry.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n","errorExample":""}]', + 'title' => 'ModifyVpnPbrRouteEntryAttribute', + 'description' => '* You can call the **ModifyVpnPbrRouteEntryAttribute** operation to modify the weight and priority of a policy-based route.'."\n" + ."\n" + .' * If you want to modify only the weight of a policy-based route, call [ModifyVpnPbrRouteEntryWeight](~~127249~~).'."\n" + .' * If you want to modify only the priority of a policy-based route, call [ModifyVpnPbrRouteEntryPriority](~~466870~~).'."\n" + .' * If a policy-based route does not support priorities, you can only call [ModifyVpnPbrRouteEntryWeight](~~127249~~) to modify its weight.'."\n" + ."\n" + .'* The **ModifyVpnPbrRouteEntryAttribute** operation is asynchronous. After you send a request, the system returns a request ID, but the operation is still being performed in the system background. You can call [DescribeVpnGateway](~~73720~~) to query the status of a VPN gateway.'."\n" + ."\n" + .' * If a VPN gateway is in the **updating** state, the policy-based route entry is being modified.'."\n" + .' * If a VPN gateway is in the **active** state, the policy-based route entry is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyVpnPbrRouteEntryAttribute** operation for the same VPN gateway within the specified period of time.'."\n", + ], + 'DescribeVpnPbrRouteEntries' => [ + 'summary' => 'Queries policy-based routes configured for a VPN gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-zhangjiakou', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE ', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VpnPbrRouteEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VpnPbrRouteEntry' => [ + 'description' => 'The list of policy-based routes.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'NextHop' => [ + 'description' => 'The next hop of the policy-based route.'."\n", + 'type' => 'string', + 'example' => 'vco-bp15oes1py4i66rmd**** ', + ], + 'Weight' => [ + 'description' => 'The weight of the policy-based route.'."\n" + ."\n" + .'For a VPN gateway that supports IPsec-VPN connections in single-tunnel mode, the weight of a policy-based route indicates the priority of the route.'."\n" + ."\n" + .'* **100**: a high priority If multiple policy-based routes with the same source CIDR block and destination CIDR block exist, the IPsec-VPN connection associated with the policy-based route is the active connection.'."\n" + .'* **0**: a low priority If multiple policy-based routes with the same source CIDR block and destination CIDR block exist, the IPsec-VPN connection associated with the policy-based route is the standby connection.'."\n" + ."\n" + .'> For a VPN gateway that does not support IPsec-VPN connections in single-tunnel mode, this parameter does not take effect.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'RouteDest' => [ + 'description' => 'The destination CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'State' => [ + 'description' => 'The status of the policy-based route. Valid values:'."\n" + ."\n" + .'* **published**: advertised to the VPC route table.'."\n" + .'* **normal**: not advertised to the VPC route table.'."\n", + 'type' => 'string', + 'example' => 'published', + ], + 'CreateTime' => [ + 'description' => 'The time when the policy-based route was created. Unit: millisecond.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492747187000', + ], + 'VpnInstanceId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1a3kqjiiq9legfx****', + ], + 'RouteSource' => [ + 'description' => 'The source CIDR block of the policy-based route.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/24', + ], + 'Priority' => [ + 'description' => 'The priority of the policy-based route.'."\n" + ."\n" + .'A smaller value indicates a higher priority.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'NextHopTunnelId' => [ + 'description' => 'The ID of the tunnel associated with the next hop of the policy-based route.'."\n" + ."\n" + .'This parameter is returned only if the VPN gateway supports IPsec-VPN connections in dual-tunnel mode.'."\n", + 'type' => 'string', + 'example' => 'tun-opsqc4d97wni2****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVpnInstanceId.NotFound', + 'errorMessage' => 'The specified VPN was not found.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"VpnPbrRouteEntries\\": {\\n \\"VpnPbrRouteEntry\\": [\\n {\\n \\"NextHop\\": \\"vco-bp15oes1py4i66rmd****\\",\\n \\"Weight\\": 100,\\n \\"RouteDest\\": \\"10.0.0.0/24\\",\\n \\"State\\": \\"published\\",\\n \\"CreateTime\\": 1492747187000,\\n \\"VpnInstanceId\\": \\"vpn-bp1a3kqjiiq9legfx****\\",\\n \\"RouteSource\\": \\"192.168.0.0/24\\",\\n \\"Priority\\": 10,\\n \\"NextHopTunnelId\\": \\"tun-opsqc4d97wni2****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n 1\\n 1\\n \\n vco-bp15oes1py4i66rmd****\\n 100\\n 10.0.0.0/24\\n published\\n 1492747187000\\n vpn-bp1a3kqjiiq9legfx****\\n 192.168.0.0/24\\n 10\\n tun-opsqc4d97wni2****\\n \\n","errorExample":""}]', + 'title' => 'DescribeVpnPbrRouteEntries', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateVpnAttachment' => [ + 'summary' => 'Creates an IPsec-VPN connection. After you create the IPsec-VPN connection, you can associate the IPsec-VPN connection with a transit router.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'high', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.', + 'type' => 'string', + 'required' => false, + 'example' => 'nametest', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The customer gateway ID.'."\n" + ."\n" + .'> This parameter is required only when you create a single-tunnel IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'title' => 'public/private', + 'description' => 'The network type of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **public** (default)'."\n" + .'* **private**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'public', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'title' => '路由模式为感兴趣流模式时,设置本端ip和对端ip', + 'description' => 'The CIDR block on the VPC side. The CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.1.0/24,192.168.2.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10.1.1.0/24,10.1.2.0/24', + ], + ], + [ + 'name' => 'RemoteSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block on the data center side. This CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.3.0/24,192.168.4.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10.1.3.0/24,10.1.4.0/24', + ], + ], + [ + 'name' => 'EffectImmediately', + 'in' => 'query', + 'schema' => [ + 'title' => '立即生效', + 'description' => 'Specifies whether to immediately start IPsec negotiations after the configuration takes effect. Valid values:'."\n" + ."\n" + .'* **true**: immediately starts IPsec negotiations after the configuration is complete.'."\n" + .'* **false** (default): starts IPsec negotiations when inbound traffic is received.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IkeConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The configurations of Phase 1 negotiations:'."\n" + ."\n" + .'* **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.'."\n" + ."\n" + .' * The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .' * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](~~2526951~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .' > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.'."\n" + ."\n" + .'* **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.'."\n" + ."\n" + .'* **IkeConfig.IkeMode**: the negotiation mode. Valid values: **main** and **aggressive**. Default value: **main**.'."\n" + ."\n" + .'* **IkeConfig.IkeEncAlg:** the encryption algorithm that is used in Phase 1 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n" + ."\n" + .'* **IkeConfig.IkeAuthAlg**: the authentication algorithm that is used in Phase 1 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.'."\n" + ."\n" + .'* **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.'."\n" + ."\n" + .'* **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.'."\n" + ."\n" + .'* **IkeConfig.LocalId**: the identifier on the Alibaba Cloud side. The identifier cannot exceed 100 characters in length and cannot contain space characters. This parameter is empty by default.'."\n" + ."\n" + .'* **IkeConfig.RemoteId**: the identifier on the data center side. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway.', + 'type' => 'string', + 'required' => false, + 'example' => '{"Psk":"1234****","IkeVersion":"ikev1","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400,"LocalId":"47.XX.XX.1","RemoteId":"47.XX.XX.2"}', + ], + ], + [ + 'name' => 'IpsecConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The configurations of Phase 2 negotiations:'."\n" + ."\n" + .'* **IpsecConfig.IpsecEncAlg**: the encryption algorithm that is used in Phase 2 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n" + .'* **IpsecConfig. IpsecAuthAlg**: the authentication algorithm that is used in Phase 2 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.'."\n" + .'* **IpsecConfig. IpsecPfs**: The Diffie-Hellman key exchange algorithm used in the second phase negotiation. Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.'."\n" + .'* **IkeConfig.IkeLifetime**: the SA lifetime determined by Phase 2 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400}', + ], + ], + [ + 'name' => 'BgpConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported when you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'BGP configuration:'."\n" + ."\n" + .'* **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values: **true** and **false** (default).'."\n" + ."\n" + .'* **BgpConfig.LocalAsn**: the ASN on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.'."\n" + ."\n" + .' You can enter a value in two segments separated by a period (.). Each segment is 16 bits in length. Enter the number in each segment in decimal format.'."\n" + ."\n" + .' For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.'."\n" + ."\n" + .'* **BgpConfig.TunnelCidr**: The CIDR block of the IPsec tunnel. The CIDR block must fall into 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .'* **LocalBgpIp**: the BGP address on the Alibaba Cloud side. It must be an IP address that falls within the CIDR block of the IPsec tunnel.'."\n" + ."\n" + .'> - Before you add BGP configurations, we recommend that you learn about how BGP works and the limits. For more information, see [Configure BGP dynamic routing](~~445767~~).'."\n" + .'> - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. Refer to the relevant documentation for the private ASN range.', + 'type' => 'string', + 'required' => false, + 'example' => '{"EnableBgp":"true","LocalAsn":"45104","TunnelCidr":"169.254.11.0/30","LocalBgpIp":"169.254.11.1"}', + ], + ], + [ + 'name' => 'HealthCheckConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The health check configurations:'."\n" + ."\n" + .'* **HealthCheckConfig.enable**: indicates whether the health check is enabled. Valid values: **true** and **false** (default).'."\n" + ."\n" + .'* **HealthCheckConfig.dip**: the destination IP address configured for health checks. Enter the IP address of the on-premises data center that the VPC can access through the IPsec connection.'."\n" + ."\n" + .'* **HealthCheckConfig.sip**: the source IP address configured for health checks. Enter the IP address of the VPC that the on-premises data center can access through the IPsec connection.'."\n" + ."\n" + .'* **HealthCheckConfig.interval**: the time interval of health check retries. Unit: seconds. Default value: **3**.'."\n" + ."\n" + .'* **HealthCheckConfig.retry**: the maximum number of health check retries. Default value: **3**.'."\n" + ."\n" + .'* **HealthCheckConfig.Policy**: specifies whether to withdraw published routes when health checks fail. Valid values:'."\n" + ."\n" + .' * **revoke_route** (default): withdraws published routes.'."\n" + .' * **reserve_route**: does not withdraw published routes.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"enable":"true","dip":"192.168.1.1","sip":"10.1.1.1","interval":"3","retry":"3","Policy": "revoke_route"}', + ], + ], + [ + 'name' => 'AutoConfigRoute', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically configure routes. Valid values:'."\n" + ."\n" + .'* **true** (default)'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableDpd', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable DPD. Valid values: Valid values:'."\n" + ."\n" + .'* **true** (default): enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted along with the security tunnel.'."\n" + .'* **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableNatTraversal', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable NAT traversal. Valid values:'."\n" + ."\n" + .'* **true** (default): enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.'."\n" + .'* **false**: disables NAT traversal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'RemoteCaCert', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => false, + 'description' => 'The peer CA certificate when a ShangMi (SM) VPN gateway is used to create the IPsec-VPN connection.'."\n", + 'example' => '-----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n" + ."\n" + .'You can specify at most 20 tag keys in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TagValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IPsec-VPN connection belongs.'."\n" + ."\n" + .'* You can call the [ListResourceGroups](~~158855~~) operation to query resource group IDs.'."\n" + .'* If you do not specify a resource group ID, the IPsec-VPN connection belongs to the default resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + ], + ], + [ + 'name' => 'TunnelOptionsSpecification', + 'in' => 'formData', + 'allowEmptyValue' => true, + 'style' => 'flat', + 'schema' => [ + 'description' => 'The tunnel configurations.'."\n" + ."\n" + .'* You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.'."\n" + .'* When you create a IPsec-VPN connection in dual-tunnel mode, you must add both tunnels to IPsec-VPN connection to ensure that the IPsec-VPN connection has connection redundancy. Each IPsec-VPN connection supports only two tunnels.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel configuration.'."\n", + 'type' => 'object', + 'properties' => [ + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway that is associated with the tunnel.'."\n" + ."\n" + .'> This parameter is required when you create a dual-tunnel IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + 'EnableDpd' => [ + 'description' => 'Specifies whether to enable the DPD feature for the tunnel. Valid values:'."\n" + ."\n" + .'* **true** (default): enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted along with the security tunnel.'."\n" + .'* **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Specifies whether to enable NAT traversal for the tunnel. Valid values:'."\n" + ."\n" + .'* **true** (default): enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.'."\n" + .'* **false**: disables NAT traversal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'TunnelIndex' => [ + 'description' => 'The order in which the tunnel was created.'."\n" + ."\n" + .'* **1**: Tunnel 1.'."\n" + .'* **2**: Tunnel 2.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'TunnelBgpConfig' => [ + 'description' => 'The BGP configurations of the tunnel.'."\n" + ."\n" + .'> If you enable BGP for an IPsec-VPN connection, you must set **EnableTunnelsBgp** parameter to **true**.'."\n", + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'description' => 'The ANS of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.'."\n" + ."\n" + .'> We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. Refer to the relevant documentation for the private ASN range.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.1', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the tunnel. The CIDR block must fall into 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .'> The two tunnels of an IPsec-VPN connection must use different CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.0/30', + ], + ], + 'required' => false, + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configurations of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 1 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **sha1**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sha1', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 1 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 1 negotiations. Unit: seconds.'."\n" + ."\n" + .'Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster with a higher success rate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: **group2**.\\'."\n" + .'Valid values: **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev2**.'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ikev2', + ], + 'LocalId' => [ + 'description' => 'The identifier of the tunnel on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain spaces. The default value is the IP address of the tunnel.'."\n" + ."\n" + .'**LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.XX.XX.1', + ], + 'Psk' => [ + 'description' => 'The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.'."\n" + ."\n" + .'* The key cannot contain spaces. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .'* If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnAttachments](~~2526939~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .'> The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain spaces. The default value is the IP address of the customer gateway that is associated with the tunnel.'."\n" + ."\n" + .'**RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.XX.XX.2', + ], + ], + 'required' => false, + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configurations of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **sha1**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 2 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 2 negotiations. Unit: seconds.'."\n" + ."\n" + .'Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Default value: **group2**.'."\n" + ."\n" + .'Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + ], + 'required' => false, + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnableTunnelsBgp', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'This parameter is available if you create an IPsec-VPN connection in dual-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable the BGP feature for the tunnel. Valid values: **true** and **false**. Default value: false.'."\n" + ."\n" + .'> Before you add BGP configurations, we recommend that you learn about how BGP works and the limits. For more information, see [Configure BGP dynamic routing](~~445767~~)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + ], + ], + [ + 'name' => 'TunnelBandwidth', + 'in' => 'query', + 'schema' => [ + 'title' => '用于说明VPN单条隧道的带宽规格,取值:'."\n" + .'Standard(默认值):标准型,默认带宽1Gbps'."\n" + .'Large(大型):大型,默认带宽3Gbps', + 'type' => 'string', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '88187252-0E26-3C4D-9D1D-32A04454EBBA', + ], + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-p0wb09rama8qwwgfn****', + ], + 'Name' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the IPsec-VPN connection was established. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1658201810000', + ], + 'Code' => [ + 'description' => 'The status code returned by the current operation. **200** indicates that the operation is successful.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The information returned by the current operation.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + 'Success' => [ + 'description' => 'Indicates whether the current operation is successful.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'InvalidVpnConnection.AlreadyExists', + 'errorMessage' => 'Vpn connection already exists.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecPfs', + 'errorMessage' => 'The specified vpn connection ipsec Ipsec Pfs is not support.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecAuthAlg', + 'errorMessage' => 'The specified vpn connection ipsec Auth Alg is not support.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + [ + 'errorCode' => 'VpnRouteEntry.InvalidWeight', + 'errorMessage' => 'Invalid route entry weight value.', + ], + [ + 'errorCode' => 'InvalidParameter.VpnConnectionName', + 'errorMessage' => 'The specified vpn connection name is invalid.', + ], + [ + 'errorCode' => 'QuotaExceeded.PolicyBasedRoute', + 'errorMessage' => 'The maximum number of policy-based routes is exceeded. Existing routes: %s. Routes to be created: %s. Maximum routes: %s.', + ], + [ + 'errorCode' => 'MissingParameter.TunnelCidr', + 'errorMessage' => 'The parameter TunnelCidr is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'OperationUnsupported.EnableBgp', + 'errorMessage' => 'Current region does not support enable BGP.', + ], + [ + 'errorCode' => 'MissingParam.CustomerGatewayAsn', + 'errorMessage' => 'Asn of customer gateway is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'IllegalParam.LocalAsn', + 'errorMessage' => 'The specified LocalAsn is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.BgpConfig', + 'errorMessage' => 'The specified BgpConfig is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.EnableBgp', + 'errorMessage' => 'VPN connection must enable BGP when VPN gateway has enabled BGP.', + ], + [ + 'errorCode' => 'IllegalParam.TunnelCidr', + 'errorMessage' => 'The specified TunnelCidr is invalid.', + ], + [ + 'errorCode' => 'InvalidLocalBgpIp.Malformed', + 'errorMessage' => 'The specified LocalBgpIp is malformed.', + ], + [ + 'errorCode' => 'IllegalParam.LocalBgpIp', + 'errorMessage' => 'The specified LocalBgpIp is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.RemoteSubnet', + 'errorMessage' => 'The specified "RemoteSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'OperationFailed.MissCertificate', + 'errorMessage' => 'The VPN connecton has not associated any certificates.', + ], + [ + 'errorCode' => 'MissingParam.RemoteId', + 'errorMessage' => 'The remote ID is mandatory when creating national standard VPN connection.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictRouteEntry', + 'errorMessage' => 'The specified customer gateway has conflict with route entry.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'OperationFailed.NoAvailableAmount', + 'errorMessage' => 'The available amount of your account is less than 0, please recharge before attempting to purchase.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidTunnelCidr.Malformed', + 'errorMessage' => 'The specified TunnelCidr is malformed.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictVpnIp', + 'errorMessage' => 'The customer gateway associated with the IPSec connection should not have the same IP address as the VPN gateway.', + ], + [ + 'errorCode' => 'MissingParameter.TunnelOptionsSpecification', + 'errorMessage' => 'The required parameters are missing when creating a tunnel for dual-tunnel VPN.', + ], + [ + 'errorCode' => 'CreateDbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of created destination routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + [ + 'errorCode' => 'VpnConnection.InvalidCreateTunnelOptions', + 'errorMessage' => 'The master and slave tunnels must be created at the same time.', + ], + [ + 'errorCode' => 'OperationUnsupported.LargeTunnelBandwidth', + 'errorMessage' => 'Large tunnelBandwidth VpnAttachment is unsupported.', + ], + [ + 'errorCode' => 'IllegalParam.TunnelBandwidth', + 'errorMessage' => 'TunnelBandwidth is illegal.', + ], + [ + 'errorCode' => 'EncAlgInvalid.DesIncompatible', + 'errorMessage' => 'Des/3des in IkeEncAlg and IpsecEncAlg does not support multi algorithm.', + ], + [ + 'errorCode' => 'OperationFailed.OpenCdtServiceFirst', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'IkeVersionInvalid.GcmIncompatible', + 'errorMessage' => 'Ikev1 does not support IkeEncAlg of gcm16.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidCustomerGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified customer gateway instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnConnection', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"88187252-0E26-3C4D-9D1D-32A04454EBBA\\",\\n \\"VpnConnectionId\\": \\"vco-p0wb09rama8qwwgfn****\\",\\n \\"Name\\": \\"nametest\\",\\n \\"CreateTime\\": 1658201810000,\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"successful\\",\\n \\"Success\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 88187252-0E26-3C4D-9D1D-32A04454EBBA\\n vco-p0wb09rama8qwwgfn****\\n nametest\\n 1658201810000\\n 200\\n true\\n successful\\n","errorExample":""}]', + 'title' => 'CreateVpnAttachment', + 'description' => '* By default, the IPsec-VPN connection created by calling the `CreateVpnAttachment` operation is not bound to any resources. You can call the [CreateTransitRouterVpnAttachment](~~443993~~) operation to bind the IPsec-VPN connection to a transit router.'."\n" + ."\n" + .'* If you want to associate an IPsec-VPN connection with a transit router, you can create a dual-tunnel connection in some regions. For more information, see [Dual-tunnel IPsec-VPN connections](~~2853535~~).'."\n" + ."\n" + .' * When you create a IPsec-VPN connection in dual tunnel mode, you can configure the following request parameters in addition to the required parameters: **ClientToken**, **Name**, **NetworkType**, **EffectImmediately**, **AutoConfigRoute**, **Tags** array, **ResourceGroupId**, **TunnelOptionsSpecification** array, and **EnableTunnelsBgp**.'."\n" + .' * When you create a IPsec-VPN connection in single tunnel mode, you can configure the following request parameters in addition to the required parameters: **ClientToken**, **CustomerGatewayId**, **NetworkType**, **Name**, **EffectImmediately**, **IkeConfig**, **IpsecConfig**, **HealthCheckConfig**, **AutoConfigRoute**, **EnableDpd**, **EnableNatTraversal**, **BgpConfig**, **Tags** array, and **ResourceGroupId**.'."\n" + ."\n" + .'### [](#)Prerequisites'."\n" + ."\n" + .'Before you create an IPsec-VPN connection, you must create a customer gateway in the region where you want to create the IPsec-VPN connection. For more information, see [CreateCustomerGateway](~~120368~~).'."\n" + ."\n" + .'If you want to add BGP configurations to an IPsec-VPN connection, make sure that an autonomous system number (ASN) is assigned to the customer gateway.'."\n", + ], + 'CreateVcoRouteEntry' => [ + 'summary' => 'Adds a destination-based route for an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'high', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.10.0/24', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the destination-based route.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '100', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the destination-based route.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The weight of the destination-based route. Valid values:'."\n" + ."\n" + .'* **0**: a low priority.'."\n" + .'* **100**: a high priority.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'desctest', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol.'."\n" + ."\n" + .'The value is set to **Ipsec**, which indicates the IPsec tunneling protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the destination-based route.'."\n" + ."\n" + .'Only **published** is returned, which indicates that the current route is published to the transit router.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without performing the operation. The system prechecks the required parameters, request syntax, and limits. If the request fails to pass the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the precheck, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'PlainResponse4OpenApi', + 'description' => 'The timestamp when the destination-based route was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpnConnectionId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + 'RouteDest' => [ + 'description' => 'The description of the destination-based route.'."\n", + 'type' => 'string', + 'example' => '192.168.10.0/24', + ], + 'NextHop' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + 'Weight' => [ + 'description' => '', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'OverlayMode' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'Ipsec', + ], + 'State' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'published', + ], + 'CreateTime' => [ + 'description' => '', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1658387202664', + ], + 'RequestId' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'CFC4D13B-E680-3985-95B1-87AA155481DF', + ], + 'Description' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'desctest', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnConnection.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnConnection.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'VpnRouteEntry.ConflictSSL', + 'errorMessage' => 'The specified route entry has conflict with SSL client.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + [ + 'errorCode' => 'InvalidNextHop.NotFound', + 'errorMessage' => 'The specified NextHop does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.RouteDest', + 'errorMessage' => 'The specified RouteDest is invalid', + ], + [ + 'errorCode' => 'OperationFailed.InvalidCidrBlock', + 'errorMessage' => 'Operation failed because the specified network block is invalid.', + ], + [ + 'errorCode' => 'QuotaExceeded.VpnRouteEntry', + 'errorMessage' => 'The number of route entries to the VPN gateway in the VPC routing table has reached the quota limit.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'Resource.PbrRouteQuotaFull', + 'errorMessage' => 'The quota of Policy-based route is full.', + ], + [ + 'errorCode' => 'CreatePbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of policy routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'CreateDbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of created destination routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnConnection', + 'callbackInterval' => 1000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpnConnectionId\\": \\"vco-p0w2jpkhi2eeop6q6****\\",\\n \\"RouteDest\\": \\"192.168.10.0/24\\",\\n \\"NextHop\\": \\"vco-p0w2jpkhi2eeop6q6****\\",\\n \\"Weight\\": 100,\\n \\"OverlayMode\\": \\"Ipsec\\",\\n \\"State\\": \\"published\\",\\n \\"CreateTime\\": 1658387202664,\\n \\"RequestId\\": \\"CFC4D13B-E680-3985-95B1-87AA155481DF\\",\\n \\"Description\\": \\"desctest\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vco-p0w2jpkhi2eeop6q6****\\n 192.168.10.0/24\\n vco-p0w2jpkhi2eeop6q6****\\n 100\\n Ipsec\\n published\\n 1658387202664\\n CFC4D13B-E680-3985-95B1-87AA155481DF\\n desctest\\n","errorExample":""}]', + 'title' => 'CreateVcoRouteEntry', + 'description' => 'Adds a destination-based route for an IPsec-VPN connection.', + ], + 'DeleteVpnAttachment' => [ + 'summary' => 'Deletes an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w7gtr14m09r9lkr****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'title' => 'BaseResponse4OpenApi', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '29440C49-398F-3D06-BA8B-E3CD13F3246D', + ], + 'Code' => [ + 'description' => 'The status code returned by the current operation. **200** indicates that the operation is successful.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Success' => [ + 'description' => 'Indicates whether the current operation is successful.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Message' => [ + 'description' => 'The information returned by the current operation.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnConnection.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'Vco.StatusNotSupport', + 'errorMessage' => 'The current VCO status does not support operations such as modification and deletion.', + ], + [ + 'errorCode' => 'CrossAccountAuthorizedVco.NotAllowDelete', + 'errorMessage' => 'Current vpn connection is cross account authorized to cen, should delete cross account authorization first.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user. ', + ], + [ + 'errorCode' => 'Forbidden ', + 'errorMessage' => 'User not authorized to operate on the specified resource. ', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound ', + 'errorMessage' => 'The specified vpn connection instance id does not exist. ', + ], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"29440C49-398F-3D06-BA8B-E3CD13F3246D\\",\\n \\"Code\\": \\"200\\",\\n \\"Success\\": true,\\n \\"Message\\": \\"successful\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 29440C49-398F-3D06-BA8B-E3CD13F3246D\\n 200\\n true\\n successful\\n","errorExample":""}]', + 'title' => 'DeleteVpnAttachment', + 'description' => '* If an IPsec-VPN connection is associated with a transit router, you must disassociate the transit router from the IPsec-VPN connection before you delete the IPsec-VPN connection. For more information, see [DeleteTransitRouterVpnAttachment](~~468251~~).'."\n" + .'* If an IPsec-VPN connection is not associated with a resource, you can call `DeleteVpnAttachment` to directly delete the IPsec-VPN connection.'."\n", + ], + 'DeleteVcoRouteEntry' => [ + 'summary' => 'Deletes a destination-based route from an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN attachment.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w5112fgnl2ihlmf****', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the destination-based route that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.10.0/24', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The weight of the destination-based route that you want to delete. Valid values:'."\n" + ."\n" + .'* **0**: a low priority'."\n" + .'* **100**: a high priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '100', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the destination-based route that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w5112fgnl2ihlmf****', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. Set the value to **Ipsec**, which specifies the IPsec tunneling protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'BaseResponse4OpenApi', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9208DDD8-0930-3CE6-AF7F-732B4E67B3DD', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnConnection.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnConnection.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'InvalidRouteEntry.NotFound', + 'errorMessage' => 'The specified route entry does not exist.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9208DDD8-0930-3CE6-AF7F-732B4E67B3DD\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9208DDD8-0930-3CE6-AF7F-732B4E67B3DD\\n","errorExample":""}]', + 'title' => 'DeleteVcoRouteEntry', + 'description' => '* **DeleteVcoRouteEntry** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnConnection](~~53046~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the IPsec-VPN connection is in the **updating** state, the route is being deleted.'."\n" + .' * If the IPsec-VPN connection is in the **attached** state, the route is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteVcoRouteEntry** operation within a specific time period.'."\n", + ], + 'ModifyVpnAttachmentAttribute' => [ + 'summary' => 'Modifies the configuration of an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IPsec-VPN connection is established.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w5112fgnl2ihlmf****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'nametest', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the virtual private cloud (VPC) that communicates with the data center. The CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.1.0/24,192.168.2.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.1.0/24,10.1.2.0/24', + ], + ], + [ + 'name' => 'RemoteSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CIDR block of the data center that communicates with the VPC. This CIDR block is used in Phase 2 negotiations.'."\n" + ."\n" + .'Separate multiple CIDR blocks with commas (,). Example: 192.168.3.0/24,192.168.4.0/24.'."\n" + ."\n" + .'The following routing modes are supported:'."\n" + ."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.'."\n" + .'* If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.3.0/24,10.1.4.0/24', + ], + ], + [ + 'name' => 'EffectImmediately', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to immediately start IPsec negotiations after the configuration takes effect. Valid values:'."\n" + ."\n" + .'* **true**: immediately starts IPsec negotiations after the configuration is complete.'."\n" + .'* **false**: starts IPsec negotiations when inbound traffic is detected.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IkeConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The configuration of Phase 1 negotiations:'."\n" + ."\n" + .'* **IkeConfig.Psk**: The pre-shared key that is used for identity authentication between the Alibaba Cloud IPsec connection and the on-premises data center.'."\n" + ."\n" + .' * The key must be 1 to 100 characters in length, and can contain digits, and letters. The key cannot contain spaces. ``~!`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .' * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](~~120374~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .' > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.'."\n" + ."\n" + .'* **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**.'."\n" + ."\n" + .'* **IkeConfig.IkeMode**: the negotiation mode. Valid values: **main** and **aggressive**.'."\n" + ."\n" + .'* **IkeConfig.IkeEncAlg:** the encryption algorithm that is used in Phase 1 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + ."\n" + .'* **IkeConfig.IkeAuthAlg**: the authentication algorithm that is used in Phase 1 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + ."\n" + .'* **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.'."\n" + ."\n" + .'* **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**.'."\n" + ."\n" + .'* **IkeConfig.LocalId**: the identifier on the Alibaba Cloud side. The identifier cannot exceed 100 characters in length and cannot contain spaces.'."\n" + ."\n" + .'* **IkeConfig.RemoteId**: the identifier of the data center. It cannot exceed 100 characters in length and cannot contain spaces.', + 'type' => 'string', + 'required' => false, + 'example' => '{"Psk":"1234****","IkeVersion":"ikev1","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400,"LocalId":"47.XX.XX.1","RemoteId":"47.XX.XX.2"}', + ], + ], + [ + 'name' => 'IpsecConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The configuration of Phase 2 negotiations:'."\n" + ."\n" + .'* **IpsecConfig.IpsecEncAlg:** the encryption algorithm that is used in Phase 2 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n" + .'* **IpsecConfig. IpsecAuthAlg:** the authentication algorithm that is used in Phase 2 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n" + .'* **IpsecConfig. IpsecPfs:** the Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.'."\n" + .'* **IkeConfig.IkeLifetime**: the SA lifetime determined by Phase 2 negotiations. Unit: seconds. Valid values: **0** to **86400**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400}', + ], + ], + [ + 'name' => 'BgpConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'BGP configuration:'."\n" + ."\n" + .'* **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values:'."\n" + ."\n" + .' * **true**'."\n" + .' * **false**'."\n" + ."\n" + .'* **BgpConfig.LocalAsn**: the autonomous system number (ASN) on the Alibaba Cloud side. Valid values: **1** to **4294967295**.'."\n" + ."\n" + .' You can enter a value in two segments separated by a period (.). Each segment is 16 bits in length. Enter the number in each segment in decimal format.'."\n" + ."\n" + .' For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.'."\n" + ."\n" + .'* **BgpConfig.TunnelCidr**: The CIDR block of the IPsec tunnel. The CIDR block must fall into 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .'* **LocalBgpIp**: the BGP address on the Alibaba Cloud side. It must be an IP address that falls within the CIDR block of the IPsec tunnel.'."\n" + ."\n" + .'> - Before you add BGP configurations, we recommend that you learn about how BGP works and the limits. For more information, see [Configure BGP dynamic routing](~~445767~~).'."\n" + .'> - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. Refer to the relevant documentation for the private ASN range.', + 'type' => 'string', + 'required' => false, + 'example' => '{"EnableBgp":"true","LocalAsn":"45104","TunnelCidr":"169.254.11.0/30","LocalBgpIp":"169.254.11.1"}', + ], + ], + [ + 'name' => 'HealthCheckConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'The health check configurations:'."\n" + ."\n" + .'* **HealthCheckConfig.enable**: specifies whether to enable the health check feature. Valid values:'."\n" + ."\n" + .' * **true**'."\n" + .' * **false**'."\n" + ."\n" + .'* **HealthCheckConfig.dip**: the destination IP address configured for health checks. Specify the IP address of the data center with which the VPC can access through the IPsec-VPN connection.'."\n" + ."\n" + .'* **HealthCheckConfig.sip**: the source IP address configured for health checks. The IP address of the VPC with which the data center can access through the IPsec-VPN connection.'."\n" + ."\n" + .'* **HealthCheckConfig.interval**: the interval between two consecutive health checks. Unit: seconds.'."\n" + ."\n" + .'* **HealthCheckConfig.retry:** the maximum number of health check retries.'."\n" + ."\n" + .'* **HealthCheckConfig.Policy**: specifies whether to withdraw advertised routes when health checks fail. Valid values:'."\n" + ."\n" + .' * **revoke_route**'."\n" + .' * **reserve_route**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"enable":"true","dip":"192.168.1.1","sip":"10.1.1.1","interval":"3","retry":"3","Policy": "revoke_route"}', + ], + ], + [ + 'name' => 'AutoConfigRoute', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically configure routes. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableDpd', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable dead peer detection (DPD). Valid values:'."\n" + ."\n" + .'* **true**: enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted, along with the security tunnel.'."\n" + .'* **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableNatTraversal', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.'."\n" + ."\n" + .'Specifies whether to enable NAT traversal. Valid values:'."\n" + ."\n" + .'* **true**: enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.'."\n" + .'* **false**: disables NAT traversal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'RemoteCaCert', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => false, + 'description' => 'The peer CA certificate when a ShangMi (SM) VPN gateway is used to create the IPsec-VPN connection.'."\n", + 'example' => 'c20ycDI1NnYxIENBIChURVNUIFN****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **public**: an encrypted connection over the Internet'."\n" + .'* **private**: an encrypted connection over private networks'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'public', + ], + ], + [ + 'name' => 'CustomerGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The customer gateways to be associated with the IPsec-VPN connections.'."\n" + ."\n" + .'> Only single-tunnel IPsec-VPN connections support this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + ], + [ + 'name' => 'TunnelOptionsSpecification', + 'in' => 'formData', + 'allowEmptyValue' => true, + 'style' => 'flat', + 'schema' => [ + 'description' => 'The tunnel configurations.'."\n" + ."\n" + .'You can specify parameters in the **TunnelOptionsSpecification** array when you modify the configurations of an IPsec-VPN connection in dual-tunnel mode. You can modify the configurations of the two tunnels of the IPsec-VPN connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel configuration.'."\n", + 'type' => 'object', + 'properties' => [ + 'TunnelId' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tun-0jod7plwf2a0o9lvu****', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway that is associated with the tunnel.'."\n" + ."\n" + .'> This parameter is only supported in dual-tunnel IPsec-VPN connections.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + 'TunnelIndex' => [ + 'description' => 'The order in which the tunnel was created.'."\n" + ."\n" + .'* **1**: Tunnel 1.'."\n" + .'* **2**: Tunnel 2.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'EnableDpd' => [ + 'description' => 'Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:'."\n" + ."\n" + .'* **true**: enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted along with the security tunnel.'."\n" + .'* **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Specifies whether to enable NAT traversal for the tunnel. Valid values:'."\n" + ."\n" + .'* **true**: enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.'."\n" + .'* **false**: disables NAT traversal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'TunnelBgpConfig' => [ + 'description' => 'Add BGP configurations for the tunnel.'."\n" + ."\n" + .'> If you enable BGP for an IPsec-VPN connection, you must set **EnableTunnelsBgp** parameter to **true**.'."\n", + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'description' => 'The autonomous system number (ASN) of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.'."\n" + ."\n" + .'> We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. Refer to the relevant documentation for the private ASN range.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.1', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the tunnel. The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.'."\n" + ."\n" + .'> The two tunnels of an IPsec connection must use different CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '169.254.10.0/30', + ], + ], + 'required' => false, + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configuration of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 1 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sha1', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 1 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 1 negotiations. Unit: seconds.'."\n" + ."\n" + .'Valid values: **0** to **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The negotiation mode of IKE. Valid values: **main** and **aggressive**.'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster with a higher success rate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol. Valid values: **ikev1** and **ikev2**.'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ikev2', + ], + 'LocalId' => [ + 'description' => 'The identifier of the tunnel on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain spaces.'."\n" + ."\n" + .'**LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.XX.XX.1', + ], + 'Psk' => [ + 'description' => 'The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.'."\n" + ."\n" + .'* The key must be 1 to 100 characters in length, and can contain digits, and letters. The key cannot contain spaces. ``~!\\`@#$%^&*()_-+={}[]|;:\',.<>/?``'."\n" + .'* If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnAttachments](~~2526939~~) operation to query the pre-shared key that is automatically generated by the system.'."\n" + ."\n" + .'> The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain spaces.'."\n" + ."\n" + .'**RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.XX.XX.2', + ], + ], + 'required' => false, + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configuration of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 2 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The SA lifetime as a result of Phase 2 negotiations. Unit: seconds.'."\n" + ."\n" + .'Valid values: **0** to **86400**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations.'."\n" + ."\n" + .'Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'group2', + ], + ], + 'required' => false, + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnableTunnelsBgp', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'You can specify this parameter if you modify the configuration of a dual-tunnel IPsec-VPN connection.'."\n" + ."\n" + .'Specifies whether to enable the BGP feature for the tunnel. Valid values: **true** and **false**.'."\n" + ."\n" + .'> Before you add BGP configurations, we recommend that you learn about how BGP works and the limits. For more information, see [Configure BGP dynamic routing](~~445767~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'PlainResponse4OpenApi', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-p0w5112fgnl2ihlmf****', + ], + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway associated with the IPsec-VPN connection.'."\n" + ."\n" + .'This parameter is returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'string', + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway that is associated with the IPsec-VPN connection.'."\n" + ."\n" + .'**vpn-not-exist**: The IPsec-VPN connection is not associated with a VPN Gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-p0wa1c1018pmeb6cu****', + ], + 'Name' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'Description' => [ + 'description' => 'The description of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'LocalSubnet' => [ + 'description' => 'The CIDR block on the Alibaba Cloud side that communicates with the on-premises data center is required, such as CIDR blocks of VPCs.'."\n", + 'type' => 'string', + 'example' => '10.1.1.0/24,10.1.2.0/24', + ], + 'RemoteSubnet' => [ + 'description' => 'The CIDR block of the on-premises data center that communicates with Alibaba Cloud is required.'."\n", + 'type' => 'string', + 'example' => '10.1.3.0/24,10.1.4.0/24', + ], + 'IkeConfig' => [ + 'description' => 'The configuration of Phase 1 negotiations.'."\n" + ."\n" + .'**IkeConfig** parameters are returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'Psk' => [ + 'description' => 'Enter a pre-shared key that is used for identity authentication between Alibaba Cloud and the data center.'."\n" + ."\n" + .'> The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and Alibaba Cloud cannot be established.', + 'type' => 'string', + 'example' => '1234***', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol.'."\n" + ."\n" + .'* **ikev1**'."\n" + .'* **ikev2**'."\n" + ."\n" + .'Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.'."\n", + 'type' => 'string', + 'example' => 'ikev1', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode.'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster with a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 1 negotiations.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 1 negotiations.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IkePfs' => [ + 'description' => 'The DH key exchange algorithm that is used in Phase 1 negotiations.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'IkeLifetime' => [ + 'description' => 'The SA lifetime that is determined by Phase 1 negotiations. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'LocalId' => [ + 'description' => 'The identifier of the IPsec-VPN connection on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.1', + ], + 'RemoteId' => [ + 'description' => 'The identifier of the IPsec-VPN connection on the data center side.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.2', + ], + ], + ], + 'IpsecConfig' => [ + 'description' => 'The configuration of Phase 2 negotiations.'."\n" + ."\n" + .'**IpsecConfig** parameters are returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm that is used in Phase 2 negotiations.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm that is used in Phase 2 negotiations.'."\n", + 'type' => 'string', + 'example' => 'md5', + ], + 'IpsecPfs' => [ + 'description' => 'The DH key exchange algorithm that is used in Phase 2 negotiations.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'IpsecLifetime' => [ + 'description' => 'The SA lifetime that is determined by Phase 2 negotiations. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + ], + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the IPsec-VPN connection was established. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1658201810000', + ], + 'EffectImmediately' => [ + 'description' => 'Indicates whether IPsec negotiations immediately start after the configuration takes effect. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Status' => [ + 'description' => 'The state of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **ike_sa_not_established**: Phase 1 negotiations failed.'."\n" + .'* **ike_sa_established**: Phase 1 negotiations succeeded.'."\n" + .'* **ipsec_sa_not_established**: Phase 2 negotiations failed.'."\n" + .'* **ipsec_sa_established**: Phase 2 negotiations succeeded.'."\n", + 'type' => 'string', + 'example' => 'ike_sa_not_established', + ], + 'VcoHealthCheck' => [ + 'description' => 'The health check configurations of the IPsec-VPN connection.'."\n" + ."\n" + .'**VcoHealthCheck** parameters are returned only for single-tunnel IPsec-VPC connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'Enable' => [ + 'description' => 'Indicates whether the health check feature is enabled for the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'Sip' => [ + 'description' => 'The source IP address that is used for health checks.'."\n", + 'type' => 'string', + 'example' => '10.1.1.1', + ], + 'Dip' => [ + 'description' => 'The destination IP address that is used for health checks.'."\n", + 'type' => 'string', + 'example' => '192.168.1.1', + ], + 'Interval' => [ + 'description' => 'The interval between two consecutive health check retries. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Retry' => [ + 'description' => 'The maximum number of health check retries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Policy' => [ + 'description' => 'Indicates whether advertised routes are withdrawn when the health check fails. Valid values:'."\n" + ."\n" + .'* **revoke_route**: Advertised routes are withdrawn.'."\n" + .'* **reserve_route**: Advertised routes are not withdrawn.'."\n", + 'type' => 'string', + 'example' => 'revoke_route', + ], + ], + ], + 'EnableDpd' => [ + 'description' => 'Indicates whether the DPD feature is enabled for the IPsec-VPN connection.'."\n" + ."\n" + .'* **true**: The feature is enabled.'."\n" + .'* **false**: The feature is disabled.'."\n" + ."\n" + .'This parameter is returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Specifies whether to enable NAT traversal for the IPsec-VPN connection.'."\n" + ."\n" + .'* **true**: The feature is enabled.'."\n" + .'* **false**: The feature is disabled.'."\n" + ."\n" + .'This parameter is returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VpnBgpConfig' => [ + 'description' => 'The BGP configurations of the IPsec-VPN connection.'."\n" + ."\n" + .'**VpnBgpConfig** parameters are returned only for single-tunnel IPsec-VPN connections.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableBgp' => [ + 'description' => 'Indicates whether BGP is enabled for the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'TunnelCidr' => [ + 'description' => 'The CIDR block of the IPsec tunnel.'."\n", + 'type' => 'string', + 'example' => '169.254.11.0/30', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '169.254.11.1', + ], + 'PeerBgpIp' => [ + 'description' => 'The BGP IP address on the data center side.'."\n", + 'type' => 'string', + 'example' => '169.254.11.2', + ], + 'LocalAsn' => [ + 'description' => 'The ASN on the Alibaba Cloud side.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '45104', + ], + 'PeerAsn' => [ + 'description' => 'The ASN on the data center side.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65535', + ], + 'Status' => [ + 'description' => 'The negotiation state of BGP. Valid values:'."\n" + ."\n" + .'* **success**: normal'."\n" + .'* **false**: abnormal'."\n", + 'type' => 'string', + 'example' => 'false', + ], + ], + ], + 'AttachType' => [ + 'description' => 'The type of the resource that is associated with the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **CEN**: The IPsec-VPN connection is associated with a transit router.'."\n" + .'* **VPNGW**: The IPsec-VPN connection is associated with a VPN gateway.'."\n" + .'* **NO_ASSOCIATED**: The IPsec-VPN connection is not associated with any resource.'."\n", + 'type' => 'string', + 'example' => 'CEN', + ], + 'NetworkType' => [ + 'description' => 'The network type of the IPsec-VPN connection. Valid values:'."\n" + ."\n" + .'* **public**: an encrypted connection over the Internet'."\n" + .'* **private**: an encrypted connection over private networks'."\n", + 'type' => 'string', + 'example' => 'public', + ], + 'AttachInstanceId' => [ + 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance to which the transit router associated with the IPsec-VPN connection belongs.'."\n", + 'type' => 'string', + 'example' => 'cen-c2r3m3zxkumoqz****', + ], + 'Spec' => [ + 'description' => 'The bandwidth specification of the IPsec-VPN connection.'."\n" + ."\n" + .'A value of **M** in the response indicates **Mbit/s**.'."\n", + 'type' => 'string', + 'example' => '1000M', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPsec-VPN connection belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + 'TunnelOptionsSpecification' => [ + 'description' => 'The tunnel configurations of the IPsec-VPN connection.'."\n" + ."\n" + .'**TunnelOptionsSpecification** parameters are returned only for dual-tunnel IPsec-VPN connections.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel configurations.'."\n", + 'type' => 'object', + 'properties' => [ + 'CustomerGatewayId' => [ + 'description' => 'The ID of the customer gateway that is associated with the tunnel.'."\n", + 'type' => 'string', + 'example' => 'cgw-p0w2jemrcj5u61un8****', + ], + 'EnableDpd' => [ + 'description' => 'Whether the DPD feature is enabled for the tunnel.'."\n" + ."\n" + .'* **true**: The feature is enabled.'."\n" + .'* **false**: The feature is disabled.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'EnableNatTraversal' => [ + 'description' => 'Indicates whether traversal feature is enabled for the tunnel. Valid values:'."\n" + ."\n" + .'* **true**: The feature is enabled.'."\n" + .'* **false**: The feature is disabled.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InternetIp' => [ + 'description' => 'The IP address on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.66', + ], + 'Role' => [ + 'description' => 'The tunnel role. Valid values:'."\n" + ."\n" + .'* **master**: The tunnel is an active tunnel.'."\n" + .'* **slave**: The tunnel is a standby tunnel.'."\n", + 'type' => 'string', + 'example' => 'master', + ], + 'TunnelId' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'example' => 'tun-0jod7plwf2a0o9lvu****', + ], + 'TunnelIndex' => [ + 'description' => 'The order in which the tunnel was created.'."\n" + ."\n" + .'* **1**: Tunnel 1.'."\n" + .'* **2**: Tunnel 2.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'State' => [ + 'description' => 'The status of the tunnel. Valid values:'."\n" + ."\n" + .'* **active**: The tunnel is active.'."\n" + .'* **updating**: The tunnel is being updated.'."\n" + .'* **deleting:** The tunnel is being deleted.'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'TunnelBgpConfig' => [ + 'description' => 'BGP configuration.'."\n", + 'type' => 'object', + 'properties' => [ + 'LocalAsn' => [ + 'description' => 'The ASN on the Alibaba Cloud side.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65530', + ], + 'LocalBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '169.254.10.1', + ], + 'PeerAsn' => [ + 'description' => 'The ASN of the tunnel peer.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '65531', + ], + 'PeerBgpIp' => [ + 'description' => 'The BGP IP address of the tunnel peer.'."\n", + 'type' => 'string', + 'example' => '169.254.10.2', + ], + 'TunnelCidr' => [ + 'description' => 'The BGP CIDR block of the tunnel.'."\n", + 'type' => 'string', + 'example' => '169.254.10.0/30', + ], + ], + ], + 'TunnelIkeConfig' => [ + 'description' => 'The configurations of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IkeAuthAlg' => [ + 'description' => 'The authentication algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IkeEncAlg' => [ + 'description' => 'The encryption algorithm in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IkeLifetime' => [ + 'description' => 'The lifetime in the IKE phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IkeMode' => [ + 'description' => 'The negotiation mode of IKE. Valid values:'."\n" + ."\n" + .'* **main:** This mode offers higher security during negotiations.'."\n" + .'* **aggressive**: This mode is faster with a higher success rate.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman (DH) group in the IKE phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'IkeVersion' => [ + 'description' => 'The version of the IKE protocol.'."\n", + 'type' => 'string', + 'example' => 'ikev2', + ], + 'LocalId' => [ + 'description' => 'The identifier of the tunnel on the Alibaba Cloud side.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.1', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'RemoteId' => [ + 'description' => 'The peer identifier.'."\n", + 'type' => 'string', + 'example' => '47.XX.XX.2', + ], + ], + ], + 'TunnelIpsecConfig' => [ + 'description' => 'The configurations of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The authentication algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecEncAlg' => [ + 'description' => 'The encryption algorithm in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecLifetime' => [ + 'description' => 'The lifetime in the IPsec phase. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IpsecPfs' => [ + 'description' => 'The DH group in the IPsec phase.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + ], + ], + ], + 'EnableTunnelsBgp' => [ + 'description' => 'Specifies whether to enable Border Gateway Protocol (BGP) for tunnels.'."\n" + ."\n" + .'* **true**: The feature is enabled.'."\n" + .'* **false**: The feature is disabled.'."\n" + ."\n" + .'This parameter is returned only by dual-tunnel IPsec-VPN connections.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '35822A84-867F-3936-A2E6-A4C4E3ED11C0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnConnection.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnConnection.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecPfs', + 'errorMessage' => 'The specified vpn connection ipsec Ipsec Pfs is not support.', + ], + [ + 'errorCode' => 'NotSupportVpnConnectionParameter.IpsecAuthAlg', + 'errorMessage' => 'The specified vpn connection ipsec Auth Alg is not support.', + ], + [ + 'errorCode' => 'VpnRouteEntry.BackupRoute', + 'errorMessage' => 'Validate backup route entry failed.', + ], + [ + 'errorCode' => 'VpnRouteEntry.InvalidWeight', + 'errorMessage' => 'Invalid route entry weight value.', + ], + [ + 'errorCode' => 'MissingParameter.TunnelCidr', + 'errorMessage' => 'The parameter TunnelCidr is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'OperationUnsupported.EnableBgp', + 'errorMessage' => 'Current region does not support enable BGP.', + ], + [ + 'errorCode' => 'MissingParam.CustomerGatewayAsn', + 'errorMessage' => 'Asn of customer gateway is mandatory when BGP is enabled.', + ], + [ + 'errorCode' => 'IllegalParam.LocalAsn', + 'errorMessage' => 'The specified LocalAsn is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.BgpConfig', + 'errorMessage' => 'The specified BgpConfig is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.EnableBgp', + 'errorMessage' => 'VPN connection must enable BGP when VPN gateway has enabled BGP.', + ], + [ + 'errorCode' => 'IllegalParam.TunnelCidr', + 'errorMessage' => 'The specified TunnelCidr is invalid.', + ], + [ + 'errorCode' => 'InvalidLocalBgpIp.Malformed', + 'errorMessage' => 'The specified LocalBgpIp is malformed.', + ], + [ + 'errorCode' => 'IllegalParam.LocalBgpIp', + 'errorMessage' => 'The specified LocalBgpIp is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.RemoteSubnet', + 'errorMessage' => 'The specified "RemoteSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictRouteEntry', + 'errorMessage' => 'The specified customer gateway has conflict with route entry.', + ], + [ + 'errorCode' => 'IllegalParam.NetworkType', + 'errorMessage' => 'The specified NetworkType (%s) is invalid.', + ], + [ + 'errorCode' => 'InvalidTunnelCidr.Malformed', + 'errorMessage' => 'The specified TunnelCidr is malformed.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnTask.CONFLICT', + 'errorMessage' => 'Vpn task has conflict.', + ], + [ + 'errorCode' => 'ModifyIkeV1WithMultiRoutes.Invalid', + 'errorMessage' => 'Failed to modify VPN connection parameters. Multi-network is configured while using IkeV1 protocol.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The resources you are operating have reached the upper limit of the quota. Please increase the quota or use other solutions to avoid it according to the VPN operation document.', + ], + [ + 'errorCode' => 'CreateDbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of created destination routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'CreatePbrRoutesQuotaFull.QuotaFull', + 'errorMessage' => 'The number of policy routes exceeds the quota limit.', + ], + [ + 'errorCode' => 'EncAlgInvalid.DesIncompatible', + 'errorMessage' => 'Des/3des in IkeEncAlg and IpsecEncAlg does not support multi algorithm.', + ], + [ + 'errorCode' => 'IkeVersionInvalid.GcmIncompatible', + 'errorMessage' => 'Ikev1 does not support IkeEncAlg of gcm16.', + ], + [ + 'errorCode' => 'CustomerGateway.ConflictVpnIp', + 'errorMessage' => 'The specified customer gateway has conflict with vpn gateway ip.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpnConnectionId\\": \\"vco-p0w5112fgnl2ihlmf****\\",\\n \\"CustomerGatewayId\\": \\"cgw-p0w2jemrcj5u61un8****\\",\\n \\"VpnGatewayId\\": \\"vpn-not-exist\\",\\n \\"Name\\": \\"nametest\\",\\n \\"Description\\": \\"desctest\\",\\n \\"LocalSubnet\\": \\"10.1.1.0/24,10.1.2.0/24\\",\\n \\"RemoteSubnet\\": \\"10.1.3.0/24,10.1.4.0/24\\",\\n \\"IkeConfig\\": {\\n \\"Psk\\": \\"1234***\\",\\n \\"IkeVersion\\": \\"ikev1\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"IkeAuthAlg\\": \\"sha1\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeLifetime\\": 86400,\\n \\"LocalId\\": \\"47.XX.XX.1\\",\\n \\"RemoteId\\": \\"47.XX.XX.2\\"\\n },\\n \\"IpsecConfig\\": {\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecAuthAlg\\": \\"md5\\",\\n \\"IpsecPfs\\": \\"group2\\",\\n \\"IpsecLifetime\\": 86400\\n },\\n \\"CreateTime\\": 1658201810000,\\n \\"EffectImmediately\\": false,\\n \\"Status\\": \\"ike_sa_not_established\\",\\n \\"VcoHealthCheck\\": {\\n \\"Enable\\": \\"true\\",\\n \\"Sip\\": \\"10.1.1.1\\",\\n \\"Dip\\": \\"192.168.1.1\\",\\n \\"Interval\\": 3,\\n \\"Retry\\": 3,\\n \\"Policy\\": \\"revoke_route\\"\\n },\\n \\"EnableDpd\\": true,\\n \\"EnableNatTraversal\\": true,\\n \\"VpnBgpConfig\\": {\\n \\"EnableBgp\\": \\"true\\",\\n \\"TunnelCidr\\": \\"169.254.11.0/30\\",\\n \\"LocalBgpIp\\": \\"169.254.11.1\\",\\n \\"PeerBgpIp\\": \\"169.254.11.2\\",\\n \\"LocalAsn\\": 45104,\\n \\"PeerAsn\\": 65535,\\n \\"Status\\": \\"false\\"\\n },\\n \\"AttachType\\": \\"CEN\\",\\n \\"NetworkType\\": \\"public\\",\\n \\"AttachInstanceId\\": \\"cen-c2r3m3zxkumoqz****\\",\\n \\"Spec\\": \\"1000M\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\",\\n \\"TunnelOptionsSpecification\\": [\\n {\\n \\"CustomerGatewayId\\": \\"cgw-p0w2jemrcj5u61un8****\\",\\n \\"EnableDpd\\": true,\\n \\"EnableNatTraversal\\": true,\\n \\"InternetIp\\": \\"47.XX.XX.66\\",\\n \\"Role\\": \\"master\\",\\n \\"TunnelId\\": \\"tun-0jod7plwf2a0o9lvu****\\",\\n \\"TunnelIndex\\": 1,\\n \\"State\\": \\"active\\",\\n \\"TunnelBgpConfig\\": {\\n \\"LocalAsn\\": 65530,\\n \\"LocalBgpIp\\": \\"169.254.10.1\\",\\n \\"PeerAsn\\": 65531,\\n \\"PeerBgpIp\\": \\"169.254.10.2\\",\\n \\"TunnelCidr\\": \\"169.254.10.0/30\\"\\n },\\n \\"TunnelIkeConfig\\": {\\n \\"IkeAuthAlg\\": \\"sha1\\",\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeMode\\": \\"main\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeVersion\\": \\"ikev2\\",\\n \\"LocalId\\": \\"47.XX.XX.1\\",\\n \\"Psk\\": \\"123456****\\",\\n \\"RemoteId\\": \\"47.XX.XX.2\\"\\n },\\n \\"TunnelIpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecPfs\\": \\"group2\\"\\n }\\n }\\n ],\\n \\"EnableTunnelsBgp\\": false,\\n \\"RequestId\\": \\"35822A84-867F-3936-A2E6-A4C4E3ED11C0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n vco-p0w5112fgnl2ihlmf****\\n cgw-p0w2jemrcj5u61un8****\\n nametest\\n desctest\\n 10.1.1.0/24,10.1.2.0/24\\n 10.1.3.0/24,10.1.4.0/24\\n \\n 1234***\\n ikev1\\n main\\n aes\\n sha1\\n group2\\n 86400\\n 47.XX.XX.1\\n 47.XX.XX.2\\n \\n \\n aes\\n md5\\n group2\\n 86400\\n \\n 1658201810000\\n false\\n ike_sa_not_established\\n \\n true\\n 10.1.1.1\\n 192.168.1.1\\n 3\\n 3\\n revoke_route\\n \\n true\\n true\\n \\n true\\n 169.254.11.0/30\\n 169.254.11.1\\n 169.254.11.2\\n 45104\\n 65535\\n false\\n \\n CEN\\n public\\n cen-c2r3m3zxkumoqz****\\n 1000M\\n 35822A84-867F-3936-A2E6-A4C4E3ED11C0\\n","errorExample":""}]', + 'title' => 'ModifyVpnAttachmentAttribute', + 'description' => '* When you modify a IPsec-VPN connection in dual-tunnel mode, you can configure the following parameters in addition to the required request parameters: **ClientToken**, **Name**, **LocalSubnet**, **RemoteSubnet**, **EffectImmediately**, **AutoConfigRoute**, **TunnelOptionsSpecification** array, and **EnableTunnelsBgp**.'."\n" + ."\n" + .'* When you modify a IPsec-VPN connection in single tunnel mode, you can configure the following parameters in addition to the required request parameters: **ClientToken**, **Name**, **LocalSubnet**, **RemoteSubnet**, **EffectImmediately**, **IkeConfig**, **IpsecConfig**, **HealthCheckConfig**, **AutoConfigRoute**, **EnableDpd**, **EnableNatTraversal**, **BgpConfig**, and **CustomerGatewayId**.'."\n" + ."\n" + .'* **ModifyVpnAttachmentAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnConnection](~~53046~~) operation to query the status of the task:'."\n" + ."\n" + .' * If the IPsec-VPN connection is in the **updating** state, the IPsec-VPN connection is being modified.'."\n" + .' * If the IPsec-VPN connection is in the **attached** state, the IPsec-VPN connection is modified.'."\n" + ."\n" + .'* You cannot concurrently call **ModifyVpnAttachmentAttribute** within the specified period of time.'."\n" + ."\n" + .'* You cannot call **ModifyVpnAttachmentAttribute** to modify the gateway type of an IPsec-VPN connection.'."\n", + ], + 'ModifyVcoRouteEntryWeight' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + ], + [ + 'name' => 'RouteDest', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination CIDR block of the destination-based route that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.10.0/24', + ], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The current weight of the destination-based route that you want to modify. Valid values:'."\n" + ."\n" + .'* **0**: a low priority'."\n" + .'* **100**: a high priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '100', + ], + ], + [ + 'name' => 'NewWeight', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new weight of the destination-based route that you want to modify. Valid values:'."\n" + ."\n" + .'* **0**: a low priority'."\n" + .'* **100**: a high priority'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '0', + ], + ], + [ + 'name' => 'NextHop', + 'in' => 'query', + 'schema' => [ + 'description' => 'The next hop of the destination-based route that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + ], + [ + 'name' => 'OverlayMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tunneling protocol. Set the value to **Ipsec**, which specifies the IPsec tunneling protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipsec', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'BaseResponse4OpenApi', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9496F8A-82F4-3130-A51A-2266ACC799B4', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnConnection.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnConnection.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'VpnRouteEntry.AlreadyExists', + 'errorMessage' => 'The specified route entry is already exist.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'staticInfo' => [], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9496F8A-82F4-3130-A51A-2266ACC799B4\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9496F8A-82F4-3130-A51A-2266ACC799B4\\n","errorExample":""}]', + 'title' => 'ModifyVcoRouteEntryWeight', + 'summary' => 'Modifies the weight of a destination-based route for an IPsec-VPN connection.', + 'description' => '* **ModifyVcoRouteEntryWeight** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnConnection](~~53046~~) operation to query the status of the associated IPsec-VPN connection and determine whether the weight of the specified destination-based route is modified.'."\n" + ."\n" + .' * If the IPsec-VPN connection is in the **updating** state, the weight of the destination-based route is being modified.'."\n" + .' * If the IPsec-VPN connection is in the **attached** state, the weight of the destination-based route is modified.'."\n" + ."\n" + .'* You cannot repeatedly call the **ModifyVcoRouteEntryWeight** operation for the same IPsec-VPN connection within the specified period of time.'."\n", + ], + 'DescribeVpnAttachments' => [ + 'summary' => 'Queries the IPsec-VPN connections associated with a transit router.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec-VPN connection is established.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Default value: **10**. Valid values: **1** to **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n" + ."\n" + .'> If you do not specify an IPsec-VPN connection ID, all IPsec-VPN connections associated with a transit router in the region are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + ], + [ + 'name' => 'AttachType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of resource that is associated with the IPsec-VPN connection. Default value: **CEN**.'."\n" + ."\n" + .'Set the value to **CEN**, which specifies to query IPsec-VPN connections associated with the transit router.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CEN', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9F0725BB-186A-3564-91C3-AAE48042F853', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'VpnAttachments' => [ + 'description' => 'The list of IPsec-VPN connections associated with the transit router.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the IPsec-VPN connection associated with the transit router.'."\n", + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + 'Name' => [ + 'description' => 'The name of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'nametest1', + ], + 'Description' => [ + 'description' => 'The description of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'desctest', + ], + 'AttachType' => [ + 'description' => 'The type of resource that is associated with the IPsec-VPN connection. The value is set to **CEN**, which indicates that the IPsec-VPN connection is associated with a transit router.'."\n", + 'type' => 'string', + 'example' => 'CEN', + ], + 'TransitRouterId' => [ + 'description' => 'The ID of the transit router with which the IPsec-VPN connection is associated.'."\n", + 'type' => 'string', + 'example' => 'tr-p0wkh4yryb1dnanqw****', + ], + 'TransitRouterName' => [ + 'description' => 'The name of the transit router.'."\n", + 'type' => 'string', + 'example' => 'nametest2', + ], + 'CrossAccountAuthorized' => [ + 'description' => 'Indicates whether the IPsec-VPN connection is associated with a transit router that belongs to another Alibaba Cloud account. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Tag' => [ + 'description' => 'The system tags of the IPsec-VPN connection.'."\n" + ."\n" + .'You can check whether an IPsec-VPN connection supports BGP based on the system tags.'."\n" + ."\n" + .'**BGPSupport**: indicates whether the IPsec-VPN connection supports BGP.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'string', + 'example' => '{\\"description\\":\\"forwarding 1.7.22\\",\\"VisuallySsl\\":\\"true\\",\\"PbrPriority\\":\\"true\\",\\"BGPSupport\\":\\"true\\",\\"IDaaSNewVersion\\":\\"true\\"}', + ], + 'Tags' => [ + 'description' => 'The list of tags to be added to the IPsec-VPN connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag added to the resource.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'TagKey', + ], + 'Value' => [ + 'description' => 'The tag value of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'TagValue', + ], + ], + ], + ], + 'TunnelBandwidth' => [ + 'title' => '用于说明VPN单条隧道的带宽规格,取值:'."\n" + .'Standard(默认值):标准型,默认带宽1Gbps'."\n" + .'Large(大型):大型,默认带宽3Gbps', + 'description' => 'Specifies the bandwidth specifications for a single tunnel in VPN attachment. Available options:'."\n" + .'- **Standard**: Standard, 1Gbps'."\n" + .'- **Large**: Large-sized, 3Gbps', + 'type' => 'string', + 'example' => 'Standard', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.TagValue', + 'errorMessage' => 'The specified parameter TagValue is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TagKey', + 'errorMessage' => 'The specified parameter TagKey is invalid.', + ], + [ + 'errorCode' => 'Duplicated.TagKey', + 'errorMessage' => 'The specified parameter TagKey is duplicated.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9F0725BB-186A-3564-91C3-AAE48042F853\\",\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"VpnAttachments\\": [\\n {\\n \\"InstanceId\\": \\"vco-p0w2jpkhi2eeop6q6****\\",\\n \\"Name\\": \\"nametest1\\",\\n \\"Description\\": \\"desctest\\",\\n \\"AttachType\\": \\"CEN\\",\\n \\"TransitRouterId\\": \\"tr-p0wkh4yryb1dnanqw****\\",\\n \\"TransitRouterName\\": \\"nametest2\\",\\n \\"CrossAccountAuthorized\\": false,\\n \\"Tag\\": \\"{\\\\\\\\\\\\\\"description\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"转发1.7.22\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"VisuallySsl\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"PbrPriority\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"BGPSupport\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"IDaaSNewVersion\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\"}\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ],\\n \\"TunnelBandwidth\\": \\"Standard\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 9F0725BB-186A-3564-91C3-AAE48042F853\\n 10\\n 1\\n 1\\n \\n vco-p0w2jpkhi2eeop6q6****\\n nametest1\\n CEN\\n tr-p0wkh4yryb1dnanqw****\\n nametest2\\n false\\n \\n","errorExample":""}]', + 'title' => 'DescribeVpnAttachments', + ], + 'DescribeVcoRouteEntries' => [ + 'summary' => 'Queries the routes of an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + ], + [ + 'name' => 'RouteEntryType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **custom** (default): a destination-based route'."\n" + .'* **bgp**: a BGP route'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'custom', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Default value: **10**. Valid values: **1** to **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among all requests. ClientToken can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. The value of **RequestId** for each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'PlainResponse4OpenApi', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageNumber' => [ + 'description' => 'The number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'VcoRouteEntries' => [ + 'description' => 'The list of route entries.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the routes.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + 'RouteDest' => [ + 'description' => 'The destination CIDR block of the route.'."\n", + 'type' => 'string', + 'example' => '192.168.10.0/24', + ], + 'NextHop' => [ + 'description' => 'The next hop of the route.'."\n", + 'type' => 'string', + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + 'Weight' => [ + 'description' => 'The weight of the destination-based route.'."\n" + ."\n" + .'> The current parameter has no effect.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'State' => [ + 'description' => 'The status of the route.'."\n" + ."\n" + .'* **published**: indicates that the current route is advertised to the transit router.'."\n" + .'* **Active**: indicates that the current BGP route is available.'."\n", + 'type' => 'string', + 'example' => 'published', + ], + 'RouteEntryType' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **custom**: a destination-based route'."\n" + .'* **bgp**: a BGP route'."\n", + 'type' => 'string', + 'example' => 'custom', + ], + 'CreateTime' => [ + 'description' => 'The timestamp when the route was created.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1658217008000', + ], + 'AsPath' => [ + 'description' => 'The list of autonomous system (AS) numbers that the BGP route goes through.'."\n", + 'type' => 'string', + 'example' => '[12000]', + ], + 'Community' => [ + 'description' => 'The community value carried by the BGP route.'."\n", + 'type' => 'string', + 'example' => '65535:65510', + ], + 'Source' => [ + 'description' => 'The source of the BGP route. Valid values:'."\n" + ."\n" + .'* **CLOUD**: indicates that the current BGP route is learned by the IPsec-VPN connection from the transit router.'."\n" + .'* **VPN_BGP**: indicates that the current BGP route is learned by the IPsec-VPN connection from the data center.'."\n", + 'type' => 'string', + 'example' => 'CLOUD', + ], + 'NextHopTunnelIdList' => [ + 'description' => 'The list of next hops.'."\n" + ."\n" + .'> - This parameter is returned only by dual-tunnel IPsec connections.'."\n" + .'> - This parameter is returned only when the tunnel status is **Phase 2 Negotiation Successful**.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tunnel ID.'."\n", + 'type' => 'string', + 'example' => 'tun-0jothw962cp3bvhbw****', + ], + ], + ], + ], + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'E18980E8-C8C2-31BD-8156-AE2BBDEC87E1', + ], + 'VpnRouteCounts' => [ + 'description' => 'The information on route entries of the dual-tunnel IPsec connection.'."\n" + ."\n" + .'> This parameter is returned only for IPsec connections in dual-tunnel mode.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the route entries.'."\n", + 'type' => 'object', + 'properties' => [ + 'RouteEntryType' => [ + 'description' => 'The route type. Valid values:'."\n" + ."\n" + .'* **custom**: destination-based route.'."\n" + .'* **bgp**: BGP route.'."\n", + 'type' => 'string', + 'example' => 'bgp', + ], + 'RouteCount' => [ + 'description' => 'The number of route entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Source' => [ + 'description' => 'The source of the BGP route. Valid values:'."\n" + ."\n" + .'* **CLOUD**: The current BGP route is learned by the IPsec connection from the transit router.'."\n" + .'* **VPN_BGP**: The current BGP route is learned by the IPsec connection from the data center.'."\n", + 'type' => 'string', + 'example' => 'VPN_BGP', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.RouteEntryType', + 'errorMessage' => 'The specified RouteEntryType is invalid.', + ], + [ + 'errorCode' => 'Vco.StatusNotSupport', + 'errorMessage' => 'The current VPN connection state does not support this operation.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnConnectionInstanceId.NotFound', + 'errorMessage' => 'The specified vpn connection instance id does not exist.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"TotalCount\\": 1,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"VcoRouteEntries\\": [\\n {\\n \\"VpnConnectionId\\": \\"vco-p0w2jpkhi2eeop6q6****\\",\\n \\"RouteDest\\": \\"192.168.10.0/24\\",\\n \\"NextHop\\": \\"vco-p0w2jpkhi2eeop6q6****\\",\\n \\"Weight\\": 100,\\n \\"State\\": \\"published\\",\\n \\"RouteEntryType\\": \\"custom\\",\\n \\"CreateTime\\": 1658217008000,\\n \\"AsPath\\": \\"[12000]\\",\\n \\"Community\\": \\"65535:65510\\",\\n \\"Source\\": \\"CLOUD\\",\\n \\"NextHopTunnelIdList\\": [\\n \\"tun-0jothw962cp3bvhbw****\\"\\n ]\\n }\\n ],\\n \\"RequestId\\": \\"E18980E8-C8C2-31BD-8156-AE2BBDEC87E1\\",\\n \\"VpnRouteCounts\\": [\\n {\\n \\"RouteEntryType\\": \\"bgp\\",\\n \\"RouteCount\\": 3,\\n \\"Source\\": \\"VPN_BGP\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 10\\n E18980E8-C8C2-31BD-8156-AE2BBDEC87E1\\n 1\\n \\n 192.168.10.0/24\\n vco-p0w2jpkhi2eeop6q6****\\n published\\n custom\\n 1658217008000\\n vco-p0w2jpkhi2eeop6q6****\\n 100\\n \\n","errorExample":""}]', + 'title' => 'DescribeVcoRouteEntries', + ], + 'CheckVpnBgpEnabled' => [ + 'summary' => 'Checks whether the region of an IPsec-VPN connection supports BGP.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPsec-VPN connection.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DF448D2E-215D-334F-B10D-7C3B087EF996', + ], + 'BgpEnabled' => [ + 'description' => 'Indicates whether the region supports BGP.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DF448D2E-215D-334F-B10D-7C3B087EF996\\",\\n \\"BgpEnabled\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n DF448D2E-215D-334F-B10D-7C3B087EF996\\n true\\n","errorExample":""}]', + 'title' => 'CheckVpnBgpEnabled', + ], + 'DescribeVpnCrossAccountAuthorizations' => [ + 'summary' => 'Queries the cross-account authorization information about an IPsec-VPN connection.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the IPsec-VPN connection belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnConnectionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return per page. Default value: **10**. Valid values: **1** to **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-4266****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DB04E39A-6F0C-36AC-BCA0-B6D371B90062', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'CrossAccountAuthorizations' => [ + 'description' => 'The cross-account authorization information about the IPsec-VPN connection.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VpnConnectionId' => [ + 'description' => 'The ID of the IPsec-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'vco-p0w2jpkhi2eeop6q6****', + ], + 'BindUid' => [ + 'description' => 'The ID of the Alibaba Cloud account whose resources the IPsec-VPN connection is authorized to be associated with.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1210123456123456', + ], + 'BindProduct' => [ + 'description' => 'The type of resource that can be associated with the IPsec-VPN connection.'."\n" + ."\n" + .'Only **CEN** can be returned, which indicates that the IPsec-VPN connection is authorized to be associated with the transit router of a Cloud Enterprise Network (CEN) instance that belongs to another Alibaba Cloud account.'."\n", + 'type' => 'string', + 'example' => 'CEN', + ], + 'BindInstance' => [ + 'description' => 'The ID of the CEN instance.'."\n", + 'type' => 'string', + 'example' => 'cen-vv8h0t3klfpaae****', + ], + 'AliUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1250123456123456', + ], + 'CreationTime' => [ + 'description' => 'The time when the authorization for the IPsec-VPN connection was created.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1658201810000', + ], + ], + ], + ], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DB04E39A-6F0C-36AC-BCA0-B6D371B90062\\",\\n \\"TotalCount\\": 1,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"CrossAccountAuthorizations\\": [\\n {\\n \\"VpnConnectionId\\": \\"vco-p0w2jpkhi2eeop6q6****\\",\\n \\"BindUid\\": 1210123456123456,\\n \\"BindProduct\\": \\"CEN\\",\\n \\"BindInstance\\": \\"cen-vv8h0t3klfpaae****\\",\\n \\"AliUid\\": 1250123456123456,\\n \\"CreationTime\\": 1658201810000\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n DB04E39A-6F0C-36AC-BCA0-B6D371B90062\\n 1\\n 1\\n 10\\n \\n vco-p0w2jpkhi2eeop6q6****\\n 1210123456123456\\n CEN\\n cen-vv8h0t3klfpaae****\\n 1250123456123456\\n 1658201810000\\n \\n","errorExample":""}]', + 'title' => 'DescribeVpnCrossAccountAuthorizations', + ], + 'CreateSslVpnClientCert' => [ + 'summary' => 'Creates an SSL client certificate.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not set this parameter, **ClientToken** is set to the value of **RequestId**. The value of **RequestId** may be different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SslVpnServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vss-m5et0q3iy1qex328w****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SSL client certificate.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SslVpnClientCert1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '079874CD-AEC1-43E6-AC03-ADD96B6E4907', + ], + 'Name' => [ + 'description' => 'The name of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'SslVpnClientCert', + ], + 'SslVpnClientCertId' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'vsc-m5euof6s5jy8vs5kd****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'SslVpnClientCreateTimes.ReachLimits', + 'errorMessage' => 'The number of client cert creation operations reaches the upper limit.', + ], + [ + 'errorCode' => 'CreateSslCertsQuotaFull.QuotaFull', + 'errorMessage' => 'Create the number of SSL certificates that exceed the quota limit.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSslVpnServerId.NotFound', + 'errorMessage' => 'The specified SSL VPN server id does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 1000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\",\\n \\"Name\\": \\"SslVpnClientCert\\",\\n \\"SslVpnClientCertId\\": \\"vsc-m5euof6s5jy8vs5kd****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n SslVpnClientCert\\n vsc-m5euof6s5jy8vs5kd****\\n","errorExample":""}]', + 'title' => 'CreateSslVpnClientCert', + 'description' => 'Before you create an SSL client certificate, make sure that an SSL server is created on the VPN gateway. For more information, see [CreateSslVpnServer](~~2794075~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteSslVpnClientCert' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the SSL client certificate is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'SslVpnClientCertId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsc-bp1n8wcf134yl0osr****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + [ + 'errorCode' => 'InvalidSslVpnClientCertId.NotFound', + 'errorMessage' => 'The specified SSL VPN client cert id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}"},{"type":"xml","example":"\\n\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n","errorExample":"\\n\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n"}]', + 'title' => 'DeleteSslVpnClientCert', + 'summary' => 'Deletes an SSL client certificate.', + 'description' => '* If you delete an SSL client certificate, all SSL-VPN client connections to the SSL server are disconnected. You need to reinitiate connections from SSL clients.'."\n" + ."\n" + .' For example, SSL client certificate 1 and SSL client certificate 2 are created on an SSL server. After you delete certificate 1, all client connections associated with certificate 1 and certificate 2 are disconnected from the SSL server.'."\n" + ."\n" + .' * If clients associated with certificate 1 require SSL-VPN connections, you need to install other certificates on the clients and reinitiate connections from the clients.'."\n" + .' * If clients associated with certificate 2 require SSL-VPN connections, you can directly reinitiate connections from the clients.'."\n" + ."\n" + .'* **DeleteSslVpnClientCert** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnGateway](~~2794055~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the SSL client certificate is being deleted.'."\n" + .' * If the VPN gateway is in the **active** state, the SSL client certificate is deleted.'."\n" + ."\n" + .'* You cannot call **DeleteSslVpnClientCert** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySslVpnClientCert' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the SSL client certificate is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SslVpnClientCertId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsc-bp1n8wcf134yl0osrc****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the SSL client certificate. This parameter cannot be left empty.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cert2', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + 'Name' => [ + 'description' => 'The name of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'cert2', + ], + 'SslVpnClientCertId' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'vsc-bp1n8wcf134yl0osr****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + [ + 'errorCode' => 'InvalidSslVpnClientCertId.NotFound', + 'errorMessage' => 'The specified SSL VPN client cert id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\",\\n \\"Name\\": \\"cert2\\",\\n \\"SslVpnClientCertId\\": \\"vsc-bp1n8wcf134yl0osr****\\"\\n}","errorExample":"{\\n \\"SslVpnClientCertId\\": \\"vsc-bp1n8wcf134yl0osrcg98\\",\\n \\"Name\\": \\"test\\",\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}"},{"type":"xml","example":"\\n\\n vsc-bp1n8wcf134yl0osr****\\n cert2\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n","errorExample":"\\n\\n vsc-bp1n8wcf134yl0osrcg98\\n test\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n"}]', + 'title' => 'ModifySslVpnClientCert', + 'summary' => 'Modifies the name of an SSL-VPN client certificate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSslVpnClientCerts' => [ + 'summary' => 'Queries SSL client certificates.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'list', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SSL client certificate.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SslVpnServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vss-bp18q7hzj6largv4v****', + ], + ], + [ + 'name' => 'SslVpnClientCertId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsc-bp1n8wcf134yl0osr****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SSL client certificate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cert1', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Default value: **10**. Valid values: **1** to **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the SSL client certificate belongs.'."\n" + ."\n" + .'The SSL client certificate and its associated SSL server belong to the same resource group. You can call the [DescribeSslVpnServers](~~2794078~~) operation to query the ID of the resource group to which the SSL server belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + 'PageNumber' => [ + 'description' => 'The number of the page to return.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'SslVpnClientCertKeys' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SslVpnClientCertKey' => [ + 'description' => 'The information about the SSL client certificates.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the SSL client certificate. Valid values:'."\n" + ."\n" + .'* **expiring-soon**: The certificate expires in one week.'."\n" + .'* **normal**'."\n" + .'* **expired**'."\n", + 'type' => 'string', + 'example' => 'normal', + ], + 'EndTime' => [ + 'description' => 'The timestamp generated when the SSL client certificate expires. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1494966335000', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the SSL client certificate was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492747187000', + ], + 'SslVpnClientCertId' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'vsc-bp1n8wcf134yl0osr****', + ], + 'SslVpnServerId' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'vss-bp18q7hzj6largv4v****', + ], + 'Name' => [ + 'description' => 'The name of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'cert1', + ], + 'RegionId' => [ + 'description' => 'The region ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the SSL client certificate belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"SslVpnClientCertKeys\\": {\\n \\"SslVpnClientCertKey\\": [\\n {\\n \\"Status\\": \\"normal\\",\\n \\"EndTime\\": 1494966335000,\\n \\"CreateTime\\": 1492747187000,\\n \\"SslVpnClientCertId\\": \\"vsc-bp1n8wcf134yl0osr****\\",\\n \\"SslVpnServerId\\": \\"vss-bp18q7hzj6largv4v****\\",\\n \\"Name\\": \\"cert1\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n 1\\n 1\\n \\n normal\\n 1494966335000\\n 1492747187000\\n vsc-bp1n8wcf134yl0osr****\\n vss-bp18q7hzj6largv4v****\\n cert1\\n cn-hangzhou\\n \\n","errorExample":""}]', + 'title' => 'DescribeSslVpnClientCerts', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSslVpnClientCert' => [ + 'summary' => 'Queries the details of an SSL client certificate.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SSL client certificate. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SslVpnClientCertId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL client certificate that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vsc-bp17r58rjf5r1gjyr****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the SSL client certificate. Valid values:'."\n" + ."\n" + .'* **expiring-soon**'."\n" + .'* **normal**'."\n" + .'* **expired**'."\n", + 'type' => 'string', + 'example' => 'normal', + ], + 'CreateTime' => [ + 'description' => 'The timestamp that indicates when the SSL client certificate was created. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1552550980000', + ], + 'ClientKey' => [ + 'description' => 'The client key.'."\n", + 'type' => 'string', + 'example' => 'The key of the client', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the SSL client certificate is created.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ClientConfig' => [ + 'description' => 'The client configuration.'."\n", + 'type' => 'string', + 'example' => 'Client configuration', + ], + 'EndTime' => [ + 'description' => 'The timestamp that indicates when the SSL client certificate expires. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1647158980000', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + 'ClientCert' => [ + 'description' => 'The client certificate.'."\n", + 'type' => 'string', + 'example' => 'Client certificate', + ], + 'CaCert' => [ + 'description' => 'The CA certificate.'."\n", + 'type' => 'string', + 'example' => 'CA certificate', + ], + 'SslVpnClientCertId' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'vsc-bp13k5mp4tg8v3z9b****', + ], + 'SslVpnServerId' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'vss-bp155e9yclsg1xgq4****', + ], + 'Name' => [ + 'description' => 'The name of the SSL client certificate.'."\n", + 'type' => 'string', + 'example' => 'nametest', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the SSL client certificate belongs.'."\n" + ."\n" + .'The SSL client certificate and the SSL server associated with the SSL client certificate belong to the same resource group. You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId is not found.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Status\\": \\"normal\\",\\n \\"CreateTime\\": 1552550980000,\\n \\"ClientKey\\": \\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEpAI****ZzNFhuM/za==\\\\n-----END RSA PRIVATE KEY-----\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ClientConfig\\": \\"client\\\\ndev tun\\\\nproto tcp\\\\nremote 120.XX.XX.33 1194\\\\nresolv-retry infinite\\\\nnobind\\\\npersist-key\\\\npersist-tun\\\\nca ca.crt\\\\ncert vsc-bp15t7****.crt\\\\nkey vsc-bp15t7****.key\\\\ncipher AES-128-CBC\\\\n;comp-lzo\\\\nverb 4\\",\\n \\"EndTime\\": 1647158980000,\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\",\\n \\"ClientCert\\": \\"-----BEGIN CERTIFICATE-----\\\\nMIIDR****A==\\\\n-----END CERTIFICATE-----\\",\\n \\"CaCert\\": \\"-----BEGIN CERTIFICATE-----\\\\nMIID****r4w=\\\\n-----END CERTIFICATE-----\\",\\n \\"SslVpnClientCertId\\": \\"vsc-bp13k5mp4tg8v3z9b****\\",\\n \\"SslVpnServerId\\": \\"vss-bp155e9yclsg1xgq4****\\",\\n \\"Name\\": \\"nametest\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n normal\\n 1552550980000\\n 客户端密钥\\n cn-hangzhou\\n 客户端配置\\n 1647158980000\\n 5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\n 客户端证书\\n CA证书\\n vsc-bp13k5mp4tg8v3z9b****\\n vss-bp155e9yclsg1xgq4****\\n nametest\\n","errorExample":""}]', + 'title' => 'DescribeSslVpnClientCert', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSslVpnClients' => [ + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eu-central-1', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpn-gw8gfb947ctddabja****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '885E117D-06A9-38A3-8DD2-40BDAC429FFC', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-gw8gfb947ctddabja****', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'eu-central-1', + ], + 'ClientInfoList' => [ + 'description' => 'The list of clients.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information of clients.', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the SSL-VPN connection.'."\n" + ."\n" + .'The value is set to **online**, which indicates that the client has connected to Alibaba Cloud through an SSL-VPN connection.'."\n", + 'type' => 'string', + 'example' => 'online', + ], + 'PrivateIp' => [ + 'description' => 'The private IP address allocated to the client by the VPN gateway when the client established an SSL-VPN connection to Alibaba Cloud.'."\n", + 'type' => 'string', + 'example' => '10.10.10.10', + ], + 'SendBytes' => [ + 'description' => 'The amount of data transferred from the VPN gateway to the client through the SSL-VPN connection. Unit: bytes.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '57144', + ], + 'ConnectedTime' => [ + 'description' => 'The timestamp that indicates when the client connected to Alibaba Cloud through an SSL-VPN connection. Unit: milliseconds.'."\n" + ."\n" + .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1670985008000', + ], + 'CommonName' => [ + 'description' => 'The SSL client certificate used by the client.'."\n" + ."\n" + .'> If the client uses two-factor authentication to establish an SSL-VPN connection to Alibaba Cloud, the return value is the username of the client.'."\n", + 'type' => 'string', + 'example' => 'CN=vsc-gw8gkh6gtilf1whgc****', + ], + 'Ip' => [ + 'description' => 'The actual public IP address used by the client when the client established an SSL-VPN connection to Alibaba Cloud.'."\n", + 'type' => 'string', + 'example' => '8.XX.XX.15', + ], + 'ReceiveBytes' => [ + 'description' => 'The amount of data transferred from the client to the VPN gateway through the SSL-VPN connection. Unit: bytes.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '60782', + ], + 'Port' => [ + 'description' => 'The port used by the client when the client established an SSL-VPN connection to Alibaba Cloud.'."\n", + 'type' => 'string', + 'example' => '4****', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instance id does not exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"885E117D-06A9-38A3-8DD2-40BDAC429FFC\\",\\n \\"VpnGatewayId\\": \\"vpn-gw8gfb947ctddabja****\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 1,\\n \\"RegionId\\": \\"eu-central-1\\",\\n \\"ClientInfoList\\": [\\n {\\n \\"Status\\": \\"online\\",\\n \\"PrivateIp\\": \\"10.10.10.10\\",\\n \\"SendBytes\\": 57144,\\n \\"ConnectedTime\\": 1670985008000,\\n \\"CommonName\\": \\"CN=vsc-gw8gkh6gtilf1whgc****\\",\\n \\"Ip\\": \\"8.XX.XX.15\\",\\n \\"ReceiveBytes\\": 60782,\\n \\"Port\\": \\"4****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 885E117D-06A9-38A3-8DD2-40BDAC429FFC\\n 10\\n vpn-gw8gfb947ctddabja****\\n 1\\n eu-central-1\\n \\n online\\n 57144\\n 10.10.10.10\\n 8.XX.XX.15\\n 4****\\n 1670985008000\\n CN=vsc-gw8gkh6gtilf1whgc****\\n 60782\\n \\n","errorExample":""}]', + 'title' => 'DescribeSslVpnClients', + 'summary' => 'Queries the clients that have connected to a VPN gateway through SSL-VPN connections.', + 'description' => 'If your VPN gateway was created before December 10, 2022, you need to upgrade the VPN gateway to the latest version to view the connection information about SSL clients. For more information, see [Upgrade a VPN gateway](~~2671058~~).'."\n" + ."\n" + .'If your VPN gateway was created after December 10, 2022, you can view the connection information about SSL clients by default.'."\n", + ], + 'CreateSslVpnServer' => [ + 'summary' => 'Creates an SSL server.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + 'title' => '', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + 'title' => '', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp1hgim8by0kc9nga****', + 'title' => '', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The SSL server name.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sslvpnname', + 'title' => '', + ], + ], + [ + 'name' => 'ClientIpPool', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client CIDR block.'."\n" + ."\n" + .'The CIDR block from which an IP address is allocated to the virtual network interface controller (NIC) of the client, rather than the private CIDR block.'."\n" + ."\n" + .'If the client accesses the SSL server over an SSL-VPN connection, the VPN gateway assigns an IP address from the specified client CIDR block for the client to access cloud resources.'."\n" + ."\n" + .'Make sure that the number of IP addresses in the client CIDR block is at least four times the maximum number of SSL-VPN connections supported by the VPN gateway.'."\n" + ."\n" + .'**Click to view the reason.**'."\n" + ."\n" + .'For example, if you specify 192.168.0.0/24 as the client CIDR block, the system first divides a subnet CIDR block with a subnet mask of 30 from 192.168.0.0/24, such as 192.168.0.4/30. This subnet provides up to four IP addresses. Then, the system allocates an IP address from 192.168.0.4/30 to the client and uses the other three IP addresses to ensure network communication. In this case, one client consumes four IP addresses. Therefore, to ensure that an IP address is assigned to your client, the number of IP addresses in the client CIDR block must be at least four times the maximum number of SSL-VPN connections supported by the VPN gateway with which the SSL server is associated.'."\n" + ."\n" + .'**Click to view the CIDR blocks that are not supported.**'."\n" + ."\n" + .'* 100.64.0.0~100.127.255.255'."\n" + .'* 127.0.0.0~127.255.255.255'."\n" + .'* 169.254.0.0~169.254.255.255'."\n" + .'* 224.0.0.0~239.255.255.255'."\n" + .'* 255.0.0.0~255.255.255.255'."\n" + ."\n" + .'**Click to view the recommended client CIDR blocks for different numbers of SSL-VPN connections.**'."\n" + ."\n" + .'* If the number of SSL-VPN connections is 5, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 27 bits in length. Examples: 10.0.0.0/27 and 10.0.0.0/26.'."\n" + .'* If the number of SSL-VPN connections is 10, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 26 bits in length. Examples: 10.0.0.0/26 and 10.0.0.0/25.'."\n" + .'* If the number of SSL-VPN connections is 20, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 25 bits in length. Examples: 10.0.0.0/25 and 10.0.0.0/24.'."\n" + .'* If the number of SSL-VPN connections is 50, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 24 bits in length. Examples: 10.0.0.0/24 and 10.0.0.0/23.'."\n" + .'* If the number of SSL-VPN connections is 100, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 23 bits in length. Examples: 10.0.0.0/23 and 10.0.0.0/22.'."\n" + .'* If the number of SSL-VPN connections is 200, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 22 bits in length. Examples: 10.0.0.0/22 and 10.0.0.0/21.'."\n" + .'* If the number of SSL-VPN connections is 500, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 21 bits in length. Examples: 10.0.0.0/21 and 10.0.0.0/20.'."\n" + .'* If the number of SSL-VPN connections is 1,000, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 20 bits in length. Examples: 10.0.0.0/20 and 10.0.0.0/19.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* The subnet mask of the client CIDR block must be 16 to 29 bits in length.'."\n" + ."\n" + .'* Make sure that the client CIDR block does not overlap with the local CIDR block, the VPC CIDR block, or route CIDR blocks associated with the client.'."\n" + ."\n" + .'* We recommend that you use 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, or one of their subnets as the client CIDR block. If you want to specify a public CIDR block as the client CIDR block, you must specify the public CIDR block as the user CIDR block of the virtual private cloud (VPC). This way, the VPC can access the public CIDR block. For more information, see [VPC FAQs](~~185311~~).'."\n" + ."\n" + .'* After you create an SSL server, the system automatically adds routes that point to the client CIDR block to the VPC route table. Do not manually add routes that point to the client CIDR block. Otherwise, SSL-VPN connections cannot work as expected.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '192.168.1.0/24', + 'title' => '', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The local CIDR block.'."\n" + ."\n" + .'The CIDR block that your client needs to access by using the SSL-VPN connection.'."\n" + ."\n" + .'This value can be the CIDR block of a VPC, a vSwitch, a data center that is connected to a VPC by using an Express Connect circuit, or an Alibaba Cloud service such as Object Storage Service (OSS).'."\n" + ."\n" + .'The subnet mask of the specified local CIDR block must be 8 to 32 bits in length. You cannot specify the following CIDR blocks as the local CIDR blocks:'."\n" + ."\n" + .'* 127.0.0.0~127.255.255.255'."\n" + .'* 169.254.0.0~169.254.255.255'."\n" + .'* 224.0.0.0~239.255.255.255'."\n" + .'* 255.0.0.0~255.255.255.255'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/8', + 'title' => '', + ], + ], + [ + 'name' => 'Proto', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol that is used by the SSL server. Valid values:'."\n" + ."\n" + .'* **TCP** (default)'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'UDP', + 'title' => '', + ], + ], + [ + 'name' => 'Cipher', + 'in' => 'query', + 'schema' => [ + 'description' => 'The encryption algorithm that is used by the SSL-VPN connection.'."\n" + ."\n" + .'* If the client uses Tunnelblick or OpenVPN 2.4.0 or later, the SSL server dynamically negotiates with the client about the encryption algorithm and uses the most secure encryption algorithm that is supported by the SSL server and the client. The encryption algorithm that you specify for the SSL server does not take effect.'."\n" + ."\n" + .'* If the client uses OpenVPN of a version that is earlier than 2.4.0, the SSL server and the client use the encryption algorithm that you specify for the SSL server. You can specify one of the following encryption algorithms for the SSL server:'."\n" + ."\n" + .' * **AES-128-CBC** (default)'."\n" + .' * **AES-192-CBC**'."\n" + .' * **AES-256-CBC**'."\n" + .' * **none**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AES-128-CBC', + 'title' => '', + ], + ], + [ + 'name' => 'Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port that is used by the SSL server. Valid values of port numbers: **1** to **65535**. Default value: **1194**.'."\n" + ."\n" + .'The following ports are not supported: **22**, **2222**, **22222**, **9000**, **9001**, **9002**, **7505**, **80**, **443**, **53**, **68**, **123**, **4510**, **4560**, **500**, and **4500**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1194', + 'title' => '', + ], + ], + [ + 'name' => 'Compress', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable data compression. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'title' => '', + ], + ], + [ + 'name' => 'EnableMultiFactorAuth', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable two-factor authentication. To enable two-factor authentication, you need to specify `IDaaSInstanceId`, `IDaaSRegionId`, and `IDaaSApplicationId`. Valid values:'."\n" + ."\n" + .'* **true**: enables this feature.'."\n" + .'* **false** (default): disables this feature.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* If you use two-factor authentication for the first time, you must first complete [authorization](https://ram.console.aliyun.com/role/authorization?request=%7B%22Services%22%3A%5B%7B%22Service%22%3A%22VPN%22%2C%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunVpnAccessingIdaasRole%22%2C%22TemplateId%22%3A%22IdaasRole%22%7D%5D%7D%5D%2C%22ReturnUrl%22%3A%22https%3A%2F%2Fvpc.console.aliyun.com%2Fsslvpn%2Fcn-shanghai%2Fvpn-servers%22%7D) .'."\n" + ."\n" + .'* When you create an SSL server in the UAE (Dubai) region, we recommend that you associate the SSL server with an IDaaS EIAM 2.0 instance in Singapore to reduce latency.'."\n" + ."\n" + .'* IDaaS EIAM 1.0 instances are no longer for purchase. If your Alibaba Cloud account has IDaaS EIAM 1.0 instances, the IDaaS EIAM 1.0 instances can be associated after two-factor authentication is enabled. If your Alibaba Cloud account does not have IDaaS EIAM 1.0 instances, only IDaaS EIAM 2.0 instances can be associated after two-factor authentication is enabled.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'title' => '', + ], + ], + [ + 'name' => 'IDaaSInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IDaaS EIAM instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'idaas-cn-hangzhou-p****', + 'title' => '', + ], + ], + [ + 'name' => 'IDaaSRegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IDaaS EIAM instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + 'title' => '', + ], + ], + [ + 'name' => 'IDaaSApplicationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IDaaS application.'."\n" + ."\n" + .'* If an IDaaS EIAM 2.0 instance is associated, you need to specify an IDaaS application ID.'."\n" + .'* If an IDaaS EIAM 1.0 instance is associated, you do not need to specify an IDaaS application ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'app_my6g4qmvnwxzj2f****', + 'title' => '', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values: Valid Values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, `DryRunOperation` is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, the operation is performed.', + 'title' => '', + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'SslVpnServerId' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'vss-bp18q7hzj6largv4v****', + 'title' => '', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E98A9651-7098-40C7-8F85-C818D1EBBA85', + 'title' => '', + ], + 'Name' => [ + 'description' => 'The SSL server name.'."\n", + 'type' => 'string', + 'example' => 'test', + 'title' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'SslVpnServer.AlreadyExist', + 'errorMessage' => 'The SSL VPN server of specified vpn gateway already exists.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'IpConflict', + 'errorMessage' => 'Client IP pool conflict with local IP range.', + ], + [ + 'errorCode' => 'SslVpnServer.AddRouteError', + 'errorMessage' => 'Add route error whose destination is client IP pool, please check vpc route entry and relevant quota.', + ], + [ + 'errorCode' => 'ClientIpPool.NetmaskInvalid', + 'errorMessage' => 'The netmask length of client IP pool must be greater than or equal to 16 and less than or equal to 29.', + ], + [ + 'errorCode' => 'ClientIpPool.SubnetInvalid', + 'errorMessage' => 'The specified client IP pool cannot be used.', + ], + [ + 'errorCode' => 'MissingParameter.IDaaSInstanceId', + 'errorMessage' => 'The input parameter IDaaSInstanceId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'OperationFailed.NoRamPermission', + 'errorMessage' => 'Vpn Service has no permission to operate your IDaaS instances.', + ], + [ + 'errorCode' => 'OperationUnsupported.NotSupportMultiFactorAuth', + 'errorMessage' => 'Current version of the VPN does not support multi-factor authentication.', + ], + [ + 'errorCode' => 'QuotaExceeded.VpnRouteEntry', + 'errorMessage' => 'The number of route entries to the VPN gateway in the VPC routing table has reached the quota limit.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'The system is busy. Please try again later.', + ], + [ + 'errorCode' => 'SslVpnServerPort.Illegal', + 'errorMessage' => 'The server port is not in the range of [1-65535].', + ], + [ + 'errorCode' => 'EnableHaCheck.SslVpnServerClientCidrContainsVpcRouteDest', + 'errorMessage' => 'Ssl vpn client cidr contains vpc route prefix. The vpc route prefix is %s.', + ], + [ + 'errorCode' => 'VpnGateway.SslVpnDisabled', + 'errorMessage' => 'The VPN gateway has not enabled SSL VPN.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.IDaaSApplicationId', + 'errorMessage' => 'The specified IDaaS application Id is not illegal, the application instance needs to be created based on the dedicated SSL VPN template.', + ], + [ + 'errorCode' => 'SslVpnIDaaS2.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support IDaaS2.0.', + ], + [ + 'errorCode' => 'MissingParam.IDaaSApplicationId', + 'errorMessage' => 'The input parameter IDaaSApplicationId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'MissingParam.IDaaSRegionId', + 'errorMessage' => 'The input parameter IDaaSRegionId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidIDaaSInstanceId.NotFound', + 'errorMessage' => 'The specified IDaaS instance ID does not exist.', + ], + [ + 'errorCode' => 'InvalidIDaaSApplicationId.NotFound', + 'errorMessage' => 'The specified IDaaS application Id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 60, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"SslVpnServerId\\": \\"vss-bp18q7hzj6largv4v****\\",\\n \\"RequestId\\": \\"E98A9651-7098-40C7-8F85-C818D1EBBA85\\",\\n \\"Name\\": \\"test\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"E98A9651-7098-40C7-8F85-C818D1EBBA85\\",\\n \\"SslVpnServerId\\": \\"vss-bp18q7hzj6largv4vk2fe\\",\\n \\"Name\\": \\"test\\"\\n}"},{"type":"xml","example":"\\n E98A9651-7098-40C7-8F85-C818D1EBBA85\\n vss-bp18q7hzj6largv4v****\\n test\\n","errorExample":"\\n\\n E98A9651-7098-40C7-8F85-C818D1EBBA85\\n vss-bp18q7hzj6largv4vk2fe\\n test\\n"}]', + 'title' => 'CreateSslVpnServer', + 'description' => '* **CreateSslVpnServer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnGateway](~~2794055~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the SSL server is being created.'."\n" + .' * If the VPN gateway is in the **active** state, the SSL server is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateSslVpnServer** operation within the specified period of time.'."\n" + ."\n" + .'### [](#prerequisite)[](#)Prerequisite'."\n" + ."\n" + .'* A VPN gateway is created, and the SSL-VPN feature is enabled for the VPN gateway. For more information, see [CreateVpnGateway](~~2794049~~) .'."\n" + .'* If you want to enable two-factor authentication for the SSL server, make sure that the VPN gateway supports two-factor authentication. You may need to upgrade the VPN gateway. For more information, see [Two-factor authentication supports IDaaS EIAM 2.0](~~2785320~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteSslVpnServer' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SSL server.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'SslVpnServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vss-bp18q7hzj6largv4v****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '606998F0-B94D-48FE-8316-ACA81BB230DA', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + [ + 'errorCode' => 'InvalidSslVpnServerId.NotFound', + 'errorMessage' => 'The specified SSL VPN server id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"606998F0-B94D-48FE-8316-ACA81BB230DA\\"\\n}"},{"type":"xml","example":"\\n\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n","errorExample":"\\n\\n 606998F0-B94D-48FE-8316-ACA81BB230DA\\n"}]', + 'title' => 'DeleteSslVpnServer', + 'summary' => 'Deletes an SSL server. The system automatically deletes all SSL client certificates that are associated with the SSL server. In this case, the SSL-VPN connections of the clients on which the SSL client certificates are installed are automatically disconnected.', + 'description' => '* **DeleteSslVpnServer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnGateway](~~2794055~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the SSL server is being deleted.'."\n" + .' * If the VPN gateway is in the **active** state, the SSL server is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteSslVpnServer** operation to delete an SSL server from the same VPN gateway within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySslVpnServer' => [ + 'summary' => 'Modifies the configurations of an SSL server.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** is different for each request.', + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the VPN gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SslVpnServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vss-bp18q7hzj6largv4v****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SSL server.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ClientIpPool', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client CIDR block.'."\n" + ."\n" + .'The CIDR block from which an IP address is allocated to the virtual network interface controller (NIC) of the client, rather than the private CIDR block.'."\n" + ."\n" + .'If the client accesses the SSL server over an SSL-VPN connection, the VPN gateway assigns an IP address from the specified client CIDR block for the client to access cloud resources.'."\n" + ."\n" + .'Make sure that the number of IP addresses in the client CIDR block is at least four times the maximum number of SSL-VPN connections supported by the VPN gateway.'."\n" + ."\n" + .'
'."\n" + .'Click to view the reason.'."\n" + ."\n" + .'For example, if you specify 192.168.0.0/24 as the client CIDR block, the system first divides a subnet CIDR block with a subnet mask of 30 from 192.168.0.0/24, such as 192.168.0.4/30. This subnet provides up to four IP addresses. Then, the system allocates an IP address from 192.168.0.4/30 to the client and uses the other three IP addresses to ensure network communication. In this case, one client consumes four IP addresses. Therefore, to ensure that an IP address is assigned to your client, the number of IP addresses in the client CIDR block must be at least four times the maximum number of SSL-VPN connections supported by the VPN gateway with which the SSL server is associated.'."\n" + .'
'."\n" + .'
'."\n" + .'Click to view the CIDR blocks that are not supported.'."\n" + ."\n" + .'* 100.64.0.0~100.127.255.255'."\n" + .'* 127.0.0.0~127.255.255.255'."\n" + .'* 169.254.0.0~169.254.255.255'."\n" + .'* 224.0.0.0~239.255.255.255'."\n" + .'* 255.0.0.0~255.255.255.255'."\n" + .'
'."\n" + .'
'."\n" + .'Click to view the recommended client CIDR blocks for different numbers of SSL-VPN connections.'."\n" + ."\n" + .'* If the number of SSL-VPN connections is 5, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 27 bits in length. Examples: 10.0.0.0/27 and 10.0.0.0/26.'."\n" + .'* If the number of SSL-VPN connections is 10, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 26 bits in length. Examples: 10.0.0.0/26 and 10.0.0.0/25.'."\n" + .'* If the number of SSL-VPN connections is 20, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 25 bits in length. Examples: 10.0.0.0/25 and 10.0.0.0/24.'."\n" + .'* If the number of SSL-VPN connections is 50, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 24 bits in length. Examples: 10.0.0.0/24 and 10.0.0.0/23.'."\n" + .'* If the number of SSL-VPN connections is 100, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 23 bits in length. Examples: 10.0.0.0/23 and 10.0.0.0/22.'."\n" + .'* If the number of SSL-VPN connections is 200, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 22 bits in length. Examples: 10.0.0.0/22 and 10.0.0.0/21.'."\n" + .'* If the number of SSL-VPN connections is 500, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 21 bits in length. Examples: 10.0.0.0/21 and 10.0.0.0/20.'."\n" + .'* If the number of SSL-VPN connections is 1,000, we recommend that you specify a client CIDR block with a subnet mask that is less than or equal to 20 bits in length. Examples: 10.0.0.0/20 and 10.0.0.0/19.'."\n" + .'
'."\n" + ."\n" + .'> - The subnet mask of the client CIDR block must be 16 to 29 bits in length.'."\n" + .'> - Make sure that the client CIDR block does not overlap with the local CIDR block, the VPC CIDR block, or route CIDR blocks associated with the client.'."\n" + .'> - We recommend that you use 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, or one of their subnets as the client CIDR block. If you want to specify a public CIDR block as the client CIDR block, you must specify the public CIDR block as the user CIDR block of the virtual private cloud (VPC). This way, the VPC can access the public CIDR block. For more information, see [VPC FAQs](~~185311~~).'."\n" + .'> - After you create an SSL server, the system automatically adds routes that point to the client CIDR block to the VPC route table. Do not manually add routes that point to the client CIDR block. Otherwise, SSL-VPN connections cannot work as expected.', + 'type' => 'string', + 'required' => false, + 'example' => '10.30.30.0/24', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The local CIDR block.'."\n" + ."\n" + .'The CIDR block that your client needs to access by using the SSL-VPN connection.'."\n" + ."\n" + .'This value can be the CIDR block of a VPC, a vSwitch, a data center that is connected to a VPC by using an Express Connect circuit, or an Alibaba Cloud service such as Object Storage Service (OSS).'."\n" + ."\n" + .'The subnet mask of the specified local CIDR block must be 8 to 32 bits in length. You cannot specify the following CIDR blocks as the local CIDR blocks:'."\n" + ."\n" + .'* 127.0.0.0~127.255.255.255'."\n" + .'* 169.254.0.0~169.254.255.255'."\n" + .'* 224.0.0.0~239.255.255.255'."\n" + .'* 255.0.0.0~255.255.255.255', + 'type' => 'string', + 'required' => false, + 'example' => '10.20.20.0/24', + ], + ], + [ + 'name' => 'Proto', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol that is used by the SSL server. Valid values:'."\n" + ."\n" + .'* **TCP** (default)'."\n" + .'* **UDP**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'UDP', + ], + ], + [ + 'name' => 'Cipher', + 'in' => 'query', + 'schema' => [ + 'description' => 'The encryption algorithm that is used in the SSL-VPN connection. Valid values:'."\n" + ."\n" + .'* **AES-128-CBC** (default)'."\n" + .'* **AES-192-CBC**'."\n" + .'* **AES-256-CBC**'."\n" + .'* **none**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AES-128-CBC', + ], + ], + [ + 'name' => 'Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port that is used by the SSL server. Valid values of port numbers: **1** to **65535**. Default value: **1194**.'."\n" + ."\n" + .'The following ports are not supported: **22**, **2222**, **22222**, **9000**, **9001**, **9002**, **7505**, **80**, **443**, **53**, **68**, **123**, **4510**, **4560**, **500**, and **4500**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1194', + ], + ], + [ + 'name' => 'Compress', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable data compression. Valid values:'."\n" + ."\n" + .'* **true** (default)'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableMultiFactorAuth', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable two-factor authentication. To enable two-factor authentication, you need to specify **IDaaSInstanceId**, **IDaaSRegionId**, and **IDaaSApplicationId**. Valid values:'."\n" + ."\n" + .'* **true**: enables the feature.'."\n" + .'* **false**: disables the feature.'."\n" + ."\n" + .'> - If you use two-factor authentication for the first time, you must first complete [authorization](https://ram.console.aliyun.com/role/authorization?request=%7B%22Services%22%3A%5B%7B%22Service%22%3A%22VPN%22%2C%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunVpnAccessingIdaasRole%22%2C%22TemplateId%22%3A%22IdaasRole%22%7D%5D%7D%5D%2C%22ReturnUrl%22%3A%22https%3A%2F%2Fvpc.console.aliyun.com%2Fsslvpn%2Fcn-shanghai%2Fvpn-servers%22%7D).'."\n" + .'> - When you create an SSL server in the UAE (Dubai) region, we recommend that you associate the SSL server with an IDaaS EIAM 2.0 instance in Singapore to reduce latency.'."\n" + .'> - IDaaS EIAM 1.0 instances are no longer available for purchase. If your Alibaba Cloud account has IDaaS EIAM 1.0 instances, the IDaaS EIAM 1.0 instances can be associated after two-factor authentication is enabled. If your Alibaba Cloud account does not have IDaaS EIAM 1.0 instances, only IDaaS EIAM 2.0 instances can be associated after two-factor authentication is enabled.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IDaaSInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IDaaS EIAM instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'idaas-cn-hangzhou-****', + ], + ], + [ + 'name' => 'IDaaSRegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IDaaS EIAM instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IDaaSApplicationId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IDaaS application.'."\n" + ."\n" + .'* If an IDaaS EIAM 2.0 instance is associated, you need to specify an IDaaS application ID.'."\n" + .'* If an IDaaS EIAM 1.0 instance is associated, you do not need to specify an IDaaS application ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'app_my6g4qmvnwxzj2f****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + 'description' => 'Specifies whether to only precheck the request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without performing the operation. The system prechecks the required parameters, request syntax, and limits. If the request fails to pass the precheck, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. After the request passes the precheck, a 2xx HTTP status code is returned and the operation is performed.', + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The results returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'InternetIp' => [ + 'description' => 'The public IP address.'."\n", + 'type' => 'string', + 'example' => '47.98.XX.XX', + ], + 'IDaaSInstanceId' => [ + 'description' => 'The ID of the IDaaS EIAM instance.'."\n", + 'type' => 'string', + 'example' => 'idaas-cn-hangzhou-****', + ], + 'CreateTime' => [ + 'description' => 'The time when the SSL server was created.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1492753580000', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + 'Compress' => [ + 'description' => 'Indicates whether data compression is enabled.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Port' => [ + 'description' => 'The port that is used by the SSL server.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1194', + ], + 'LocalSubnet' => [ + 'description' => 'The local CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.20.20.0/24', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the SSL server is created.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Cipher' => [ + 'description' => 'The encryption algorithm.'."\n", + 'type' => 'string', + 'example' => 'AES-128-CBC', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DF11D6F6-E35A-41C3-9B20-6FC8A901FE65', + ], + 'Connections' => [ + 'description' => 'The total number of current connections.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'SslVpnServerId' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'vss-bp18q7hzj6largv4v****', + ], + 'MaxConnections' => [ + 'description' => 'The maximum number of connections.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'Name' => [ + 'description' => 'The name of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'EnableMultiFactorAuth' => [ + 'description' => 'Indicates whether two-factor authentication is enabled.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ClientIpPool' => [ + 'description' => 'The client CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.30.30.0/24', + ], + 'Proto' => [ + 'description' => 'The protocol that is used by the SSL server.', + 'type' => 'string', + 'example' => 'UDP', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the SSL server belongs.'."\n" + ."\n" + .'The SSL server and the VPN gateway associated with the SSL server belong to the same resource group. You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + 'IDaaSApplicationId' => [ + 'description' => 'The ID of the IDaaS application.'."\n", + 'type' => 'string', + 'example' => 'app_my6g4qmvnwxzj2f****', + ], + 'IDaaSInstanceVersion' => [ + 'description' => 'The version of the IDaaS EIAM instance.'."\n" + ."\n" + .'* This parameter is returned only if the SSL server is associated with an IDaaS EIAM 2.0 instance. Only **EIAM 2.0** is returned.'."\n" + .'* If the SSL server is associated with an IDaaS EIAM 1.0 instance, no value is returned.'."\n", + 'type' => 'string', + 'example' => 'EIAM 2.0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The name is not valid', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'IpConflict', + 'errorMessage' => 'Client IP pool conflict with local IP range.', + ], + [ + 'errorCode' => 'SslVpnServer.AddRouteError', + 'errorMessage' => 'Add route error whose destination is client IP pool, please check vpc route entry and relevant quota.', + ], + [ + 'errorCode' => 'ClientIpPool.NetmaskInvalid', + 'errorMessage' => 'The netmask length of client IP pool must be greater than or equal to 16 and less than or equal to 29.', + ], + [ + 'errorCode' => 'ClientIpPool.SubnetInvalid', + 'errorMessage' => 'The specified client IP pool cannot be used.', + ], + [ + 'errorCode' => 'MissingParameter.IDaaSInstanceId', + 'errorMessage' => 'The input parameter IDaaSInstanceId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'OperationFailed.GetIDaaSInfo', + 'errorMessage' => 'Failed to get secret key from your IDaaS instance.', + ], + [ + 'errorCode' => 'OperationFailed.NoRamPermission', + 'errorMessage' => 'Vpn Service has no permission to operate your IDaaS instances.', + ], + [ + 'errorCode' => 'OperationUnsupported.NotSupportMultiFactorAuth', + 'errorMessage' => 'Current version of the VPN does not support multi-factor authentication.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'The system is busy. Please try again later.', + ], + [ + 'errorCode' => 'SslVpnServerPort.Illegal', + 'errorMessage' => 'The server port is not in the range of [1-65535].', + ], + [ + 'errorCode' => 'EnableHaCheck.SslVpnServerClientCidrContainsVpcRouteDest', + 'errorMessage' => 'Ssl vpn client cidr contains vpc route prefix. The vpc route prefix is %s.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'InstanceId is not found.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified route entry has conflict.', + ], + [ + 'errorCode' => 'IllegalParam.IDaaSApplicationId', + 'errorMessage' => 'The specified IDaaS application Id is not illegal, the application instance needs to be created based on the dedicated SSL VPN template.', + ], + [ + 'errorCode' => 'MissingParam.IDaaSApplicationId', + 'errorMessage' => 'The input parameter IDaaSApplicationId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'SslVpnIDaaS2.NotSupport', + 'errorMessage' => 'Current version of the VPN does not support IDaaS2.0.', + ], + [ + 'errorCode' => 'MissingParam.IDaaSRegionId', + 'errorMessage' => 'The input parameter IDaaSRegionId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + [ + 'errorCode' => 'InvalidIDaaSInstanceId.NotFound', + 'errorMessage' => 'The specified IDaaS instance ID does not exist.', + ], + [ + 'errorCode' => 'InvalidIDaaSApplicationId.NotFound', + 'errorMessage' => 'The specified IDaaS application Id does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 60, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"InternetIp\\": \\"47.98.XX.XX\\",\\n \\"IDaaSInstanceId\\": \\"idaas-cn-hangzhou-****\\",\\n \\"CreateTime\\": 1492753580000,\\n \\"VpnGatewayId\\": \\"vpn-bp1q8bgx4xnkm2ogj****\\",\\n \\"Compress\\": false,\\n \\"Port\\": 1194,\\n \\"LocalSubnet\\": \\"10.20.20.0/24\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Cipher\\": \\"AES-128-CBC\\",\\n \\"RequestId\\": \\"DF11D6F6-E35A-41C3-9B20-6FC8A901FE65\\",\\n \\"Connections\\": 0,\\n \\"SslVpnServerId\\": \\"vss-bp18q7hzj6largv4v****\\",\\n \\"MaxConnections\\": 5,\\n \\"Name\\": \\"test\\",\\n \\"EnableMultiFactorAuth\\": false,\\n \\"ClientIpPool\\": \\"10.30.30.0/24\\",\\n \\"Proto\\": \\"UDP\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\",\\n \\"IDaaSApplicationId\\": \\"app_my6g4qmvnwxzj2f****\\",\\n \\"IDaaSInstanceVersion\\": \\"EIAM 2.0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 47.98.XX.XX\\n idaas-cn-hangzhou-****\\n 1492753580000\\n vpn-bp1q8bgx4xnkm2ogj****\\n false\\n 1194\\n 10.20.20.0/24\\n cn-hangzhou\\n AES-128-CBC\\n DF11D6F6-E35A-41C3-9B20-6FC8A901FE65\\n 0\\n vss-bp18q7hzj6largv4v****\\n 5\\n test\\n false\\n 10.30.30.0/24\\n UDP\\n","errorExample":""}]', + 'title' => 'ModifySslVpnServer', + 'description' => '* To enable two-factor authentication for an SSL server, make sure that the VPN gateway supports two-factor authentication. You may need to upgrade the VPN gateway. For more information, see [Two-factor authentication supports IDaaS EIAM 2.0](~~2785320~~).'."\n" + ."\n" + .'* If you modify only **Name**, this operation is synchronous. If you modify other parameters besides **Name**, this operation is asynchronous.'."\n" + ."\n" + .'* **ModifySslVpnServer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnGateway](~~2794055~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the SSL server is being modified.'."\n" + .' * If the VPN gateway is in the **active** state, the SSL server is modified.'."\n" + ."\n" + .'* You cannot repeatedly call **ModifySslVpnServer** within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSslVpnServers' => [ + 'summary' => 'Queries one or more SSL-VPN servers.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SSL server.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SslVpnServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vss-bp15j3du13gq1dgey****', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-bp1on0xae9d771ggi****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The SSL server name.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID of the SSL server.'."\n" + ."\n" + .'The SSL server and its associated VPN gateway belong to the same resource group. You can call the [DescribeVpnGateway](~~2794055~~) operation to query the ID of the resource group to which the VPN gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'D350187B-EA41-4577-950B-95434C8302E1', + ], + 'PageNumber' => [ + 'description' => 'The number of the page to return.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'SslVpnServers' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SslVpnServer' => [ + 'description' => 'The detailed information about the SSL-VPN servers.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'InternetIp' => [ + 'description' => 'The public IP address of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => '47.5.XX.XX', + ], + 'IDaaSInstanceId' => [ + 'description' => 'The ID of the IDaaS EIAM instance.'."\n", + 'type' => 'string', + 'example' => 'idaas-cn-hangzhou-****', + ], + 'CreateTime' => [ + 'description' => 'The timestamp generated when the SSL-VPN server was created.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1613800884000', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1on0xae9d771ggi****', + ], + 'IDaaSRegionId' => [ + 'description' => 'The region ID of the IDaaS EIAM instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Compress' => [ + 'description' => 'Indicates whether data compression is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Port' => [ + 'description' => 'The port that is used by the SSL-VPN server.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1194', + ], + 'LocalSubnet' => [ + 'description' => 'The local CIDR block.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/24', + ], + 'RegionId' => [ + 'description' => 'The region ID of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Cipher' => [ + 'description' => 'The encryption algorithm.'."\n", + 'type' => 'string', + 'example' => 'AES-128-CBC', + ], + 'Connections' => [ + 'description' => 'The total number of current connections.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'SslVpnServerId' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'vss-bp15j3du13gq1dgey****', + ], + 'MaxConnections' => [ + 'description' => 'The maximum number of connections.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'Name' => [ + 'description' => 'The name of the SSL server.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'EnableMultiFactorAuth' => [ + 'description' => 'Indicates whether two-factor authentication is enabled.'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ClientIpPool' => [ + 'description' => 'The client CIDR block.'."\n", + 'type' => 'string', + 'example' => '10.10.1.0/24', + ], + 'Proto' => [ + 'description' => 'The protocol that is used by the SSL server.'."\n", + 'type' => 'string', + 'example' => 'UDP', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID of the SSL server.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query resource groups.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + 'IDaaSApplicationId' => [ + 'description' => 'The ID of the IDaaS application.'."\n", + 'type' => 'string', + 'example' => 'app_my6g4qmvnwxzj2f****', + ], + 'IDaaSInstanceVersion' => [ + 'description' => 'The version of the IDaaS EIAM instance.'."\n" + ."\n" + .'* This parameter is returned only if the SSL server is associated with an IDaaS EIAM 2.0 instance. Only **EIAM 2.0** is returned.'."\n" + .'* If the SSL server is associated with an IDaaS EIAM 1.0 instance, no value is returned.'."\n", + 'type' => 'string', + 'example' => 'EIAM 2.0', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not found during access authentication.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"D350187B-EA41-4577-950B-95434C8302E1\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"SslVpnServers\\": {\\n \\"SslVpnServer\\": [\\n {\\n \\"InternetIp\\": \\"47.5.XX.XX\\",\\n \\"IDaaSInstanceId\\": \\"idaas-cn-hangzhou-****\\",\\n \\"CreateTime\\": 1613800884000,\\n \\"VpnGatewayId\\": \\"vpn-bp1on0xae9d771ggi****\\",\\n \\"IDaaSRegionId\\": \\"cn-hangzhou\\",\\n \\"Compress\\": false,\\n \\"Port\\": 1194,\\n \\"LocalSubnet\\": \\"192.168.0.0/24\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Cipher\\": \\"AES-128-CBC\\",\\n \\"Connections\\": 0,\\n \\"SslVpnServerId\\": \\"vss-bp15j3du13gq1dgey****\\",\\n \\"MaxConnections\\": 5,\\n \\"Name\\": \\"test\\",\\n \\"EnableMultiFactorAuth\\": true,\\n \\"ClientIpPool\\": \\"10.10.1.0/24\\",\\n \\"Proto\\": \\"UDP\\",\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\",\\n \\"IDaaSApplicationId\\": \\"app_my6g4qmvnwxzj2f****\\",\\n \\"IDaaSInstanceVersion\\": \\"EIAM 2.0\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n D350187B-EA41-4577-950B-95434C8302E1\\n 1\\n 1\\n \\n 47.5.XX.XX\\n idaas-cn-hangzhou-****\\n 1613800884000\\n vpn-bp1on0xae9d771ggi****\\n cn-hangzhou\\n false\\n 1194\\n 192.168.0.0/24\\n cn-hangzhou\\n AES-128-CBC\\n 0\\n vss-bp15j3du13gq1dgey****\\n 5\\n test\\n true\\n 10.10.1.0/24\\n UDP\\n \\n","errorExample":""}]', + 'title' => 'DescribeSslVpnServers', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeVpnSslServerLogs' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the SSL server is created. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnSslServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL server.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vss-bp155e9yclsg1xgq4****', + ], + ], + [ + 'name' => 'SslVpnClientCertId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SSL client certificate.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsc-m5euof6s5jy8vs5kd****', + ], + ], + [ + 'name' => 'From', + 'in' => 'query', + 'schema' => [ + 'description' => 'The beginning of the time range to query. The value must be a unix timestamp. For example, 1600738962 specifies 09:42:42 (UTC+8) on September 22, 2020.'."\n" + ."\n" + .'> If you specify **From**, you must also specify **To** or **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1600738962', + ], + ], + [ + 'name' => 'To', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end of the time range to query. The value must be a unix timestamp. For example, 1600738962 specifies 09:42:42 (UTC+8) on September 22, 2020.'."\n" + ."\n" + .'> If you specify **To**, you must also specify **From** or **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1600738962', + ], + ], + [ + 'name' => 'MinutePeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The interval at which log data is queried. Unit: minutes.'."\n" + ."\n" + .'> If both **From** and **To** are not specified, you must specify **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'DEDAC5B1-9292-5BF7-BDDF-61BA58CFB2FB', + ], + 'Count' => [ + 'description' => 'The number of log entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'IsCompleted' => [ + 'description' => 'Indicates whether the log is accurate. Valid values:'."\n" + ."\n" + .'* **true**: accurate'."\n" + .'* **false**: inaccurate'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Data' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Logs' => [ + 'description' => 'Log information list.', + 'type' => 'array', + 'items' => [ + 'description' => 'An array of strings.'."\n" + ."\n" + .'Each item in the array is a log entry.', + 'type' => 'string', + 'example' => '"Logs": [ "Mon Feb 28 14:05:51 2022 us=421630 MULTI: multi_create_instance called", "Mon Feb 28 14:05:51 2022 us=421744 112.XX.XX.128:42522 Re-using SSL/TLS context", "Mon Feb 28 14:05:51 2022 us=421834 112.XX.XX.128:42522 Control Channel MTU par****", "Mon Feb 28 14:05:51 2022 us=421850 112.XX.XX.128:42522 Data Channel MTU par****", "Mon Feb 28 14:05:51 2022 us=421901 112.XX.XX.128:42522 Local Option****", "Mon Feb 28 14:05:51 2022 us=421917 112.XX.XX.128:42522 Expected Remote Option****", "Mon Feb 28 14:05:51 2022 us=421951 112.XX.XX.128:42522 TLS: Initial packet from****", "Mon Feb 28 14:05:51 2022 us=581413 112.XX.XX.128:42522 VERIFY OK****", "Mon Feb 28 14:05:51 2022 us=581662 112.XX.XX.128:42522 VERIFY OK****", "Mon Feb 28 14:05:51 2022 us=621071 112.XX.XX.128:42522 peer info****" ]', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSslVpnClientCertId.NotFound', + 'errorMessage' => 'The specified SSL VPN client id does not exist.', + ], + [ + 'errorCode' => 'ParamExclusive.SslVpnServerIdAndSslVpnClientCertId', + 'errorMessage' => 'The specified SSL VPN client does not belong to the specified SSL VPN server.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSslVpnServerId.NotFound', + 'errorMessage' => 'The specified SSL VPN server id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"DEDAC5B1-9292-5BF7-BDDF-61BA58CFB2FB\\",\\n \\"Count\\": 10,\\n \\"IsCompleted\\": true,\\n \\"Data\\": {\\n \\"Logs\\": [\\n \\"\\\\\\"Logs\\\\\\": [ \\\\\\"Mon Feb 28 14:05:51 2022 us=421630 MULTI: multi_create_instance called\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=421744 112.XX.XX.128:42522 Re-using SSL/TLS context\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=421834 112.XX.XX.128:42522 Control Channel MTU par****\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=421850 112.XX.XX.128:42522 Data Channel MTU par****\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=421901 112.XX.XX.128:42522 Local Option****\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=421917 112.XX.XX.128:42522 Expected Remote Option****\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=421951 112.XX.XX.128:42522 TLS: Initial packet from****\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=581413 112.XX.XX.128:42522 VERIFY OK****\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=581662 112.XX.XX.128:42522 VERIFY OK****\\\\\\", \\\\\\"Mon Feb 28 14:05:51 2022 us=621071 112.XX.XX.128:42522 peer info****\\\\\\" ]\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n DEDAC5B1-9292-5BF7-BDDF-61BA58CFB2FB\\n 1\\n true\\n \\n Mon Feb 28 14:05:51 2022 us=421630 MULTI: multi_create_instance called\\n Mon Feb 28 14:05:51 2022 us=421744 112.XX.XX.128:42522 Re-using SSL/TLS context\\n Mon Feb 28 14:05:51 2022 us=421834 112.XX.XX.128:42522 Control Channel MTU par****\\n Mon Feb 28 14:05:51 2022 us=421850 112.XX.XX.128:42522 Data Channel MTU par****\\n Mon Feb 28 14:05:51 2022 us=421901 112.XX.XX.128:42522 Local Option****\\n Mon Feb 28 14:05:51 2022 us=421917 112.XX.XX.128:42522 Expected Remote Option****\\n Mon Feb 28 14:05:51 2022 us=421951 112.XX.XX.128:42522 TLS: Initial packet from****\\n Mon Feb 28 14:05:51 2022 us=581413 112.XX.XX.128:42522 VERIFY OK****\\n Mon Feb 28 14:05:51 2022 us=581662 112.XX.XX.128:42522 VERIFY OK****\\n Mon Feb 28 14:05:51 2022 us=621071 112.XX.XX.128:42522 peer info****\\n \\n 10\\n","errorExample":""}]', + 'title' => 'DescribeVpnSslServerLogs', + 'summary' => 'Queries the log of an SSL server.', + ], + 'CreateIpsecServer' => [ + 'summary' => 'Creates an IPsec server.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPN gateway is deployed.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpn-bp17lofy9fd0dnvzv****', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The local CIDR blocks, which are the CIDR blocks of the virtual private cloud (VPC) for the client to access.'."\n" + ."\n" + .'Multiple CIDR blocks are separated with commas (,). Example: 192.168.1.0/24,192.168.2.0/24.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '192.168.0.0/24', + ], + ], + [ + 'name' => 'ClientIpPool', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client CIDR block from which an IP address is allocated to the virtual network interface controller (NIC) of the client.'."\n" + ."\n" + .'> The client CIDR block must not overlap with the CIDR blocks of the VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'IpSecServerName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPsec server.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + 'maxLength' => 100, + ], + ], + [ + 'name' => 'EffectImmediately', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specify whether to start connection negotiations immediately. Valid values:'."\n" + ."\n" + .'* **true**: immediately initiates negotiations after the configuration is complete.'."\n" + .'* **false** (default): initiates negotiations when inbound traffic is detected. This is the default value.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'IkeConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'The configuration of Phase 1 negotiation. Valid values:'."\n" + ."\n" + .'* **IkeVersion**: the IKE version. Valid values: **ikev1** and **ikev2**. Default value: **ikev2**.'."\n" + .'* **IkeMode**: the IKE negotiation mode. Default value: **main**.'."\n" + .'* **IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiation. Default value: **aes**.'."\n" + .'* **IkeAuthAlg**: the authentication algorithm that is used in Phase 1 negotiation. Default value: **sha1**.'."\n" + .'* **IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiation. Default value: **group2**.'."\n" + .'* **IkeLifetime**: the security association (SA) lifetime determined by Phase 1 negotiation. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.'."\n" + .'* **LocalId**: the identifier of the IPsec server. The value can be a fully qualified domain name (FQDN) or an IP address. The default value is the public IP address of the VPN gateway.'."\n" + .'* **RemoteId**: the peer identifier. The value can be an FQDN or an IP address. The default value is empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IkeVersion":"ikev2","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400}', + ], + ], + [ + 'name' => 'IpsecConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'The configuration of Phase 2 negotiation. Valid values:'."\n" + ."\n" + .'* **IpsecEncAlg**: the encryption algorithm that is used in Phase 2 negotiation. Default value: **aes**.'."\n" + .'* **IpsecAuthAlg**: the authentication algorithm that is used in Phase 2 negotiation. Default value: **sha1**.'."\n" + .'* **IpsecPfs**: forwards packets of all protocols. The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiation. Default value: **group2**.'."\n" + .'* **IpsecLifetime**: the SA lifetime determined by Phase 2 negotiation. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400}', + ], + ], + [ + 'name' => 'PskEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether pre-shared key authentication is enabled. If you set the value to **true**, pre-shared key authentication is enabled.'."\n" + ."\n" + .'> This parameter is required.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Psk', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pre-shared key.'."\n" + ."\n" + .'The pre-shared key that is used for authentication between the IPsec-VPN server and the client. It must be 1 to 100 characters in length.'."\n" + ."\n" + .'If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call [ListIpsecServers](~~2794120~~) to query keys generated by the system.'."\n" + ."\n" + .'> The pre-shared key of the IPsec server key must be the same as that of the client. Otherwise, the connection between the IPsec server and the client cannot be established.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Cfd123****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b38****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck this request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without creating the IPsec server. The system checks the required parameters, request format, and service limits. If the request fails to pass the precheck, an error code is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the request. This is the default value. If the request passes the precheck, the system creates the IPsec server.', + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned results.'."\n", + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the IPsec server was created.'."\n" + ."\n" + .'T is used as a delimiter. Z indicates that the time is in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-02-22T03:24:28Z', + ], + 'IpsecServerId' => [ + 'description' => 'The IPsec server ID.'."\n", + 'type' => 'string', + 'example' => 'iss-bp1jougp8cfsbo8y9****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '690A967E-D4CD-4B69-8C78-94FE828BA10B', + ], + 'IpsecServerName' => [ + 'description' => 'The IPsec server name.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp17lofy9fd0dnvzv****', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the VPN gateway is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationUnsupported.IPsecServer', + 'errorMessage' => 'The current version of the VPN gateway does not support IPsec server.', + ], + [ + 'errorCode' => 'VpnGateway.SslVpnDisabled', + 'errorMessage' => 'The VPN gateway has not enabled SSL VPN.', + ], + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'OperationFailed.IPsecServerExist', + 'errorMessage' => 'An IPsec server already exists in the VPN gateway.', + ], + [ + 'errorCode' => 'OperationUnsupported.IpsecPfs', + 'errorMessage' => 'The specified IPsec Pfs is unsupported.', + ], + [ + 'errorCode' => 'IllegalParam.AuthMethod', + 'errorMessage' => 'One authentication method (Psk or IDaaS) should be specified at least.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.ClientIpPool', + 'errorMessage' => 'The specified ClientIpPool (%s) is invalid.', + ], + [ + 'errorCode' => 'MissingParam.IDaaSInstanceId', + 'errorMessage' => 'The input parameter IDaaSInstanceId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'OperationFailed.NoRamPermission', + 'errorMessage' => 'Vpn Service has no permission to operate your IDaaS instances.', + ], + [ + 'errorCode' => 'ClientIpPool.NetmaskInvalid', + 'errorMessage' => 'The netmask length of client IP pool must be greater than or equal to 16 and less than or equal to 29.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified client IP pool conflicts with VPN connection or SSL server.', + ], + [ + 'errorCode' => 'ClientIpPool.SubnetInvalid', + 'errorMessage' => 'The specified client IP pool cannot be used.', + ], + [ + 'errorCode' => 'InvalidClientIpPool.Conflict', + 'errorMessage' => 'The specified client IP pool conflicts with other resources in the same VPC.', + ], + [ + 'errorCode' => 'OperationFailed.AddVpcRoute', + 'errorMessage' => 'It is failed to add VPC route after this operation.', + ], + [ + 'errorCode' => 'QuotaExceeded.VpnRouteEntry', + 'errorMessage' => 'The number of route entries to the VPN gateway in the VPC routing table has reached the quota limit.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'The system is busy. Please try again later.', + ], + [ + 'errorCode' => 'EnableHaCheck.IpsecServerCidrContainsVpcRouteDest', + 'errorMessage' => 'Ipsec server client cidr contains vpc route prefix. The vpc route prefix is %s.', + ], + [ + 'errorCode' => 'VpnGateway.IPsecServerAndVpnConnectionConflict', + 'errorMessage' => 'The IPSec connection and IPSec server cannot be configured on the same VPN gateway at the same time.', + ], + [ + 'errorCode' => 'EnableHaCheck.SslVpnServerClientCidrContainsVpcRouteDest', + 'errorMessage' => 'Ssl vpn client cidr contains vpc route prefix. The vpc route prefix is %s.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidVpnGatewayInstanceId.NotFound', + 'errorMessage' => 'The specified vpn gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidIDaaSInstanceId.NotFound', + 'errorMessage' => 'The specified IDaaS instance ID does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'The operation against this instance is too frequent, please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"CreationTime\\": \\"2021-02-22T03:24:28Z\\",\\n \\"IpsecServerId\\": \\"iss-bp1jougp8cfsbo8y9****\\",\\n \\"RequestId\\": \\"690A967E-D4CD-4B69-8C78-94FE828BA10B\\",\\n \\"IpsecServerName\\": \\"test\\",\\n \\"VpnGatewayId\\": \\"vpn-bp17lofy9fd0dnvzv****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2021-02-22T03:24:28Z\\n iss-bp1jougp8cfsbo8y9****\\n 690A967E-D4CD-4B69-8C78-94FE828BA10B\\n test\\n vpn-bp17lofy9fd0dnvzv****\\n cn-hangzhou\\n","errorExample":""}]', + 'title' => 'CreateIpsecServer', + 'description' => '* Before you create an IPsec server, you must create a VPN gateway and enable the SSL-VPN feature for the VPN gateway. For more information, see [CreateVpnGateway](~~2794049~~).'."\n" + ."\n" + .'* Before you create an IPsec server, make sure that no IPsec-VPN connection exists on the VPN gateway. For more information, see [DeleteVpnConnection](~~2526948~~).'."\n" + ."\n" + .'* **CreateIpsecServer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~2794055~~) to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the IPsec server is being created.'."\n" + .' * If the VPN gateway is in the **active** state, the IPsec server is created.'."\n" + ."\n" + .'* You cannot repeatedly call **CreateIpsecServer** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteIpsecServer' => [ + 'summary' => 'Deletes an IPsec server.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec server is created.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IpsecServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec server.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'iss-bp1jougp8cfsbo8y9****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-00****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC0', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidIpsecServerId.NotFound', + 'errorMessage' => 'The specified IPsec server ID (%s) does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'The operation against this instance is too frequent, please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\r\\n","errorExample":""}]', + 'title' => 'DeleteIpsecServer', + 'description' => '* **DeleteIpsecServer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [DescribeVpnGateway](~~2794055~~) to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the IPsec server is being deleted.'."\n" + .' * If the VPN gateway is in the **active** state, the IPsec server is deleted.'."\n" + ."\n" + .'* You cannot call **DeleteIpsecServer** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateIpsecServer' => [ + 'summary' => 'Modifies the configuration of an IPsec server.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec server is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'IpsecServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPsec server ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'iss-bp1bo3xuvcxo7ixll****', + ], + ], + [ + 'name' => 'LocalSubnet', + 'in' => 'query', + 'schema' => [ + 'description' => 'The local CIDR blocks, which are the CIDR blocks of the virtual private cloud (VPC) for the client to access.'."\n" + ."\n" + .'Multiple CIDR blocks are separated with commas (,). Example: 192.168.1.0/24,192.168.2.0/24.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.0/24,172.17.0.0/16', + ], + ], + [ + 'name' => 'ClientIpPool', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client CIDR block from which an IP address is allocated to the virtual network interface controller (NIC) of the client.'."\n" + ."\n" + .'> The client CIDR block must not overlap with the CIDR blocks of the VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/24', + ], + ], + [ + 'name' => 'IpsecServerName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPsec server.'."\n" + ."\n" + .'It must be 1 to 100 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + 'maxLength' => 100, + ], + ], + [ + 'name' => 'EffectImmediately', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to delete the negotiated IPsec tunnel and initiate the negotiation again. Valid values:'."\n" + ."\n" + .'* **true**: immediately initiates negotiations after the configuration is complete.'."\n" + .'* **false**: initiates negotiations when inbound traffic is detected.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IkeConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'The configuration of Phase 1 negotiations. Valid values:'."\n" + ."\n" + .'* **IkeVersion**: The IKE version. Valid values: **ikev1** and **ikev2**.'."\n" + .'* **IkeMode**: The IKE negotiation mode. Default value: **main**.'."\n" + .'* **IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiation. Default value: **aes**.'."\n" + .'* **IkeAuthAlg**: the authentication algorithm that is used in Phase 1 negotiation. Default value: **sha1**.'."\n" + .'* **IkePfs**: The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: **group2**.'."\n" + .'* **IkeLifetime**: The SA lifetime determined by Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.'."\n" + .'* **LocalId**: The identifier of the IPsec server. Only FQDN and IP address formats are supported.'."\n" + .'* **RemoteId**: the peer identifier. Only FQDN and IP address formats are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IkeVersion":"ikev2","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400}', + ], + ], + [ + 'name' => 'IpsecConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'The configuration of Phase 2 negotiation. Valid values:'."\n" + ."\n" + .'* **IpsecEncAlg**: the encryption algorithm that is used in Phase 2 negotiation. Default value: **aes**.'."\n" + .'* **IpsecAuthAlg**: the authentication algorithm that is used in Phase 2 negotiation. Default value: **sha1**.'."\n" + .'* **IpsecPfs**: forwards packets of all protocols. The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiation. Default value: **group2**.'."\n" + .'* **IpsecLifetime**: the SA lifetime determined by Phase 2 negotiation. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400}', + ], + ], + [ + 'name' => 'PskEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable pre-shared key authentication. If you set the value to **true**, pre-shared key authentication is enabled.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Psk', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pre-shared key.'."\n" + ."\n" + .'The pre-shared key that is used for authentication between the IPsec server and the client. The key must be 1 to 100 characters in length.'."\n" + ."\n" + .'You can call [ListIpsecServers](~~2794120~~) to query keys generated by the system.'."\n" + ."\n" + .'> The pre-shared key of the IPsec server key must be the same as that of the client. Otherwise, the connection between the IPsec server and the client cannot be established.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Cfd123****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a value, and you must make sure that each request has a unique token value. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'e4567-e89b-12d3-a456-42665544****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to only precheck this request. Valid values:'."\n" + ."\n" + .'* **true**: prechecks the request without modifying the configurations of the IPsec server. The system checks the required parameters, request format, and service limits. If the request fails to pass the precheck, an error code is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the request. This is the default value. If the request passes the precheck, the system modifies the configurations of the IPsec server.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned results.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B61C08E5-403A-46A2-96C1-F7B1216DB10C', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'VpnGateway.Configuring', + 'errorMessage' => 'The specified service is configuring.', + ], + [ + 'errorCode' => 'VpnGateway.FinancialLocked', + 'errorMessage' => 'The specified service is financial locked.', + ], + [ + 'errorCode' => 'OperationUnsupported.IpsecPfs', + 'errorMessage' => 'The specified IPsec Pfs is unsupported.', + ], + [ + 'errorCode' => 'IllegalParam.AuthMethod', + 'errorMessage' => 'One authentication method (Psk or IDaaS) should be specified at least.', + ], + [ + 'errorCode' => 'IllegalParam.LocalSubnet', + 'errorMessage' => 'The specified "LocalSubnet" (%s) is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.ClientIpPool', + 'errorMessage' => 'The specified "ClientIpPool" (%s) is invalid.', + ], + [ + 'errorCode' => 'MissingParam.IDaaSInstanceId', + 'errorMessage' => 'The input parameter IDaaSInstanceId is mandatory when enable multi-factor authentication.', + ], + [ + 'errorCode' => 'OperationFailed.NoRamPermission', + 'errorMessage' => 'Vpn Service has no permission to operate your IDaaS instances.', + ], + [ + 'errorCode' => 'OperationFailed.AddVpcRoute', + 'errorMessage' => 'It\'s failed to add VPC route after this operation.', + ], + [ + 'errorCode' => 'ClientIpPool.NetmaskInvalid', + 'errorMessage' => 'The netmask length of client IP pool must be greater than or equal to 16 and less than or equal to 29.', + ], + [ + 'errorCode' => 'VpnRouteEntry.Conflict', + 'errorMessage' => 'The specified client IP pool conflicts with VPN connection or SSL server.', + ], + [ + 'errorCode' => 'ClientIpPool.SubnetInvalid', + 'errorMessage' => 'The specified client IP pool cannot be used.', + ], + [ + 'errorCode' => 'InvalidClientIpPool.Conflict', + 'errorMessage' => 'The specified client IP pool conflicts with other resources in the same VPC.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'The system is busy. Please try again later.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidIpsecServerId.NotFound', + 'errorMessage' => 'The specified IPsec server ID (%s) does not exist.', + ], + [ + 'errorCode' => 'InvalidIDaaSInstanceId.NotFound', + 'errorMessage' => 'The specified IDaaS instance ID does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'The operation against this instance is too frequent, please try again later.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeVpnGateway', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 60, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B61C08E5-403A-46A2-96C1-F7B1216DB10C\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\nB61C08E5-403A-46A2-96C1-F7B1216DB10C\\r\\n","errorExample":""}]', + 'title' => 'UpdateIpsecServer', + 'description' => '* If you modify only **IpsecServerName** of the IPsec server, this operation is synchronous. If you modify other parameters besides **IpsecServerName**, this operation is asynchronous.'."\n" + ."\n" + .'* If **UpdateIpsecServer** is an asynchronous operation, after a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeVpnGateway](~~2794055~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the VPN gateway is in the **updating** state, the IPsec server is being modified.'."\n" + .' * If the VPN gateway is in the **active** state, the IPsec server is modified.'."\n" + ."\n" + .'* You cannot repeatedly call **UpdateIpsecServer** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListIpsecServers' => [ + 'summary' => 'Queries IPsec servers.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec server is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IpsecServerName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPsec server.'."\n" + ."\n" + .'The name must be 1 to 100 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'VpnGatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If this is your first request and no next requests are to be performed, you do not need to specify this parameter.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **20**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'IpsecServerId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the IPsec server.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the IPsec server. Valid values of N: **1** to **20**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'iss-bp1bo3xuvcxo7ixll****', + ], + 'required' => false, + 'example' => 'iss-bp1bo3xuvcxo7ixll****', + 'maxLength' => 128, + 'minLength' => 0, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IPsec server belongs.'."\n" + ."\n" + .'The IPsec server and its associated VPN gateway belong to the same resource group. You can call [DescribeVpnGateway](~~2794055~~) to query the ID of the resource group to which the VPN gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If a value is returned for **NextToken**, the value can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'MaxResults' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'IpsecServers' => [ + 'description' => 'The list of IPsec servers.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the IPsec server was created.'."\n" + ."\n" + .'T is used as a delimiter. Z indicates that the time is in UTC.'."\n", + 'type' => 'string', + 'example' => '2018-12-03T10:11:55Z', + ], + 'OnlineClientCount' => [ + 'description' => 'The number of clients that are connected to the IPsec server.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'InternetIp' => [ + 'description' => 'The public IP address of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => '47.22.XX.XX', + ], + 'IpsecServerName' => [ + 'description' => 'The name of the IPsec server.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'IDaaSInstanceId' => [ + 'description' => 'The ID of the IDaaS instance.'."\n", + 'type' => 'string', + 'example' => 'idaas-cn-hangzhou-****', + ], + 'EffectImmediately' => [ + 'description' => 'Indicates whether the current IPsec tunnel is deleted and negotiations are reinitiated. Valid values:'."\n" + ."\n" + .'* **true**: immediately initiates negotiations after the configuration is completed.'."\n" + .'* **false**: initiates negotiations when inbound traffic is detected.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'VpnGatewayId' => [ + 'description' => 'The ID of the VPN gateway.'."\n", + 'type' => 'string', + 'example' => 'vpn-bp1q8bgx4xnkm2ogj****', + ], + 'LocalSubnet' => [ + 'description' => 'The local CIDR blocks, which refer to the CIDR blocks on the virtual private cloud (VPC) side.'."\n", + 'type' => 'string', + 'example' => '192.168.0.0/16,172.17.0.0/16', + ], + 'Psk' => [ + 'description' => 'The pre-shared key.'."\n", + 'type' => 'string', + 'example' => 'pgw6dy7d****', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the IPsec server is created.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'PskEnabled' => [ + 'description' => 'Indicates whether pre-shared key authentication is enabled. Only **true** may be returned, which indicates that pre-shared key authentication is enabled.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'IpsecServerId' => [ + 'description' => 'The IPsec server ID.'."\n", + 'type' => 'string', + 'example' => 'iss-bp1bo3xuvcxo7ixll****', + ], + 'MultiFactorAuthEnabled' => [ + 'description' => 'Indicates whether two-factor authentication is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**: The feature is disabled.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'MaxConnections' => [ + 'description' => 'The number of SSL-VPN connections supported by the VPN gateway.'."\n" + ."\n" + .'> The number of SSL-VPN connections specified in this parameter includes both SSL-VPN and IPsec-VPN connections. For example, you have five SSL-VPN connections and three SSL clients occupy three SSL-VPN connections. In this case, two clients can connect to the IPsec server.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'ClientIpPool' => [ + 'description' => 'The client CIDR block. It refers to the CIDR block that is allocated to the virtual interface of the client.'."\n", + 'type' => 'string', + 'example' => '10.0.0.0/24', + ], + 'IkeConfig' => [ + 'description' => 'The configurations of Phase 1 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'RemoteId' => [ + 'description' => 'The identifier of the customer gateway. Both fully qualified domain names (FQDNs) and IP addresses are supported. By default, this parameter is empty.'."\n", + 'type' => 'string', + 'example' => '139.67.XX.XX', + ], + 'IkeLifetime' => [ + 'description' => 'The IKE lifetime. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IkeEncAlg' => [ + 'description' => 'The IKE encryption algorithm.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'LocalId' => [ + 'description' => 'The ID of the IPsec server. The default value is the public IP address of the VPN gateway. Both FQDNs and IP addresses are supported.'."\n", + 'type' => 'string', + 'example' => '116.64.XX.XX', + ], + 'IkeMode' => [ + 'description' => 'The IKE negotiation mode. Valid values:'."\n" + ."\n" + .'**main**: This mode offers higher security during negotiations.'."\n", + 'type' => 'string', + 'example' => 'main', + ], + 'IkeVersion' => [ + 'description' => 'The IKE version.'."\n", + 'type' => 'string', + 'example' => 'ikev2', + ], + 'IkePfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + 'IkeAuthAlg' => [ + 'description' => 'The IKE authentication algorithm.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + ], + ], + 'IpsecConfig' => [ + 'description' => 'The configurations of Phase 2 negotiations.'."\n", + 'type' => 'object', + 'properties' => [ + 'IpsecAuthAlg' => [ + 'description' => 'The IPsec authentication algorithm.'."\n", + 'type' => 'string', + 'example' => 'sha1', + ], + 'IpsecLifetime' => [ + 'description' => 'The IPsec lifetime. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '86400', + ], + 'IpsecEncAlg' => [ + 'description' => 'The IPsec encryption algorithm.'."\n", + 'type' => 'string', + 'example' => 'aes', + ], + 'IpsecPfs' => [ + 'description' => 'The Diffie-Hellman key exchange algorithm.'."\n", + 'type' => 'string', + 'example' => 'group2', + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPsec server belongs.'."\n" + ."\n" + .'You can call the [ListResourceGroups](~~158855~~) operation to query the resource group information.', + 'type' => 'string', + 'example' => 'rg-acfmzs372yg****', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\",\\n \\"TotalCount\\": 10,\\n \\"MaxResults\\": 1,\\n \\"IpsecServers\\": [\\n {\\n \\"CreationTime\\": \\"2018-12-03T10:11:55Z\\",\\n \\"OnlineClientCount\\": 1,\\n \\"InternetIp\\": \\"47.22.XX.XX\\",\\n \\"IpsecServerName\\": \\"test\\",\\n \\"IDaaSInstanceId\\": \\"idaas-cn-hangzhou-****\\",\\n \\"EffectImmediately\\": false,\\n \\"VpnGatewayId\\": \\"vpn-bp1q8bgx4xnkm2ogj****\\",\\n \\"LocalSubnet\\": \\"192.168.0.0/16,172.17.0.0/16\\",\\n \\"Psk\\": \\"pgw6dy7d****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"PskEnabled\\": true,\\n \\"IpsecServerId\\": \\"iss-bp1bo3xuvcxo7ixll****\\",\\n \\"MultiFactorAuthEnabled\\": true,\\n \\"MaxConnections\\": 5,\\n \\"ClientIpPool\\": \\"10.0.0.0/24\\",\\n \\"IkeConfig\\": {\\n \\"RemoteId\\": \\"139.67.XX.XX\\",\\n \\"IkeLifetime\\": 86400,\\n \\"IkeEncAlg\\": \\"aes\\",\\n \\"LocalId\\": \\"116.64.XX.XX\\",\\n \\"IkeMode\\": \\"main\\",\\n \\"IkeVersion\\": \\"ikev2\\",\\n \\"IkePfs\\": \\"group2\\",\\n \\"IkeAuthAlg\\": \\"sha1\\"\\n },\\n \\"IpsecConfig\\": {\\n \\"IpsecAuthAlg\\": \\"sha1\\",\\n \\"IpsecLifetime\\": 86400,\\n \\"IpsecEncAlg\\": \\"aes\\",\\n \\"IpsecPfs\\": \\"group2\\"\\n },\\n \\"ResourceGroupId\\": \\"rg-acfmzs372yg****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n caeba0bbb2be03f84eb48b699f0a****\\n 54B48E3D-DF70-471B-AA93-08E683A1B457\\n 10\\n 1\\n \\n 2018-12-03T10:11:55Z\\n 1\\n 47.22.XX.XX\\n test\\n idaas-cn-hangzhou-****\\n false\\n vpn-bp1q8bgx4xnkm2ogj****\\n 192.168.0.0/16,172.17.0.0/16\\n pgw6dy7d****\\n cn-hangzhou\\n true\\n iss-bp1bo3xuvcxo7ixll****\\n true\\n 5\\n 10.0.0.0/24\\n \\n 139.67.XX.XX\\n 86400\\n aes\\n 116.64.XX.XX\\n main\\n ikev2\\n group2\\n sha1\\n \\n \\n sha1\\n 86400\\n aes\\n group2\\n \\n \\n","errorExample":""}]', + 'title' => 'ListIpsecServers', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListIpsecServerLogs' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPsec server is created.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IpsecServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPsec server.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'iss-2zei2n5q5zhirfh73****', + ], + ], + [ + 'name' => 'From', + 'in' => 'query', + 'schema' => [ + 'description' => 'The beginning of the time range to query. The value must be a UNIX timestamp. For example, 1671003744 specifies 15:42:24 (UTC+8) on December 14, 2022.'."\n" + ."\n" + .'> If you specify **From**, you must also specify **To** or **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1671003744', + ], + ], + [ + 'name' => 'To', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end of the time range to query. The value must be a unix timestamp. For example, 1671004344 specifies 15:52:24 (UTC+8) on December 14, 2022.'."\n" + ."\n" + .'> If you specify **To**, you must also specify **From** or **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1671004344', + ], + ], + [ + 'name' => 'MinutePeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The interval at which log data is queried. Valid values: **1** to **10**. Unit: minutes.'."\n" + ."\n" + .'> If both **From** and **To** are not specified, you must specify **MinutePeriod**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values: **1** to **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'DEDAC5B1-9292-5BF7-BDDF-61BA58CFB2FB', + ], + 'Count' => [ + 'description' => 'The number of entries on the current page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'IsCompleted' => [ + 'description' => 'Indicates whether the log is accurate. Valid values:'."\n" + ."\n" + .'* **true**: accurate'."\n" + .'* **false**: inaccurate'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Data' => [ + 'description' => 'Log information list.', + 'type' => 'array', + 'items' => [ + 'description' => 'An array of strings.'."\n" + ."\n" + .'Each item in the array is a log entry.', + 'type' => 'string', + 'example' => '"2022-12-15 17:00:43 [INFO]: : iss-2zei2n5q5zhirfh73**** del ipsec policy successfully", "2022-12-15 17:00:43 [INFO]: : iss-2zei2n5q5zhirfh73**** add ipsec policy successfully"', + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidIpsecServerId.NotFound', + 'errorMessage' => 'The specified IPsec server ID (%s) does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"DEDAC5B1-9292-5BF7-BDDF-61BA58CFB2FB\\",\\n \\"Count\\": 10,\\n \\"IsCompleted\\": true,\\n \\"Data\\": [\\n \\"\\\\\\"2022-12-15 17:00:43 [INFO]: : iss-2zei2n5q5zhirfh73**** del ipsec policy successfully\\\\\\", \\\\\\"2022-12-15 17:00:43 [INFO]: : iss-2zei2n5q5zhirfh73**** add ipsec policy successfully\\\\\\"\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n B6DB370B-2CDB-5396-BD7C-EDCBA2756553\\n 1\\n true\\n 2022-12-15 17:00:43 [INFO]: : iss-2zei2n5q5zhirfh73**** del ipsec policy successfully\\n 2022-12-15 17:00:43 [INFO]: : iss-2zei2n5q5zhirfh73**** add ipsec policy successfully\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [INFO]: : nat keepalive msg send\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [DEBUG]: sockmisc.c:327:sendfromto(): sockname 192.168.1.70[500]\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [DEBUG]: sockmisc.c:329:sendfromto(): send packet from 192.168.1.70[500]\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [DEBUG]: sockmisc.c:331:sendfromto(): send packet to 223.XX.XX.215[17489]\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [DEBUG]: sockmisc.c:514:sendfromto(): 1 times of 1 bytes message will be sent to 223.XX.XX.215[17489]\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [INFO]: : nat keepalive msg send\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [DEBUG]: sockmisc.c:327:sendfromto(): sockname 192.168.1.70[4500]\\n 2022-12-15 17:04:20 iss-2zei2n5q5zhirfh73**** [DEBUG]: sockmisc.c:329:sendfromto(): send packet from 192.168.1.70[4500]\\n 10\\n","errorExample":""}]', + 'title' => 'ListIpsecServerLogs', + 'summary' => 'Queries the logs of an IPsec server.', + ], + 'AllocateIpv6Address' => [ + 'summary' => 'Assigns an IPv6 address.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '192335', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which the IPv6 address belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-asdfjlnaue4g****', + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address. The IPv6 address must be an idle one that falls within the vSwitch CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => '2408:XXXX:153:3921:851c:c435:7b12:1c5f', + ], + ], + [ + 'name' => 'Ipv6AddressName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 address.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6-name', + ], + ], + [ + 'name' => 'Ipv6AddressDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IPv6 address.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6-description', + ], + ], + [ + 'name' => 'AddressType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the IPv6 address. Valid values:'."\n" + ."\n" + .'* IPv6Address (default): an IPv6 address.'."\n" + .'* IPv6Prefix: an IPv6 CIDR block.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv6Address', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID. For more information about resource groups, see related documentation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + .'* false (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6AddressId' => [ + 'description' => 'The ID of the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + 'Ipv6Address' => [ + 'description' => 'The IPv6 address.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:153:3921:851c:c435:7b12:1c5f', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazdjdhd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.IPv6AddressAlreadyAllocated', + 'errorMessage' => 'The operation is failed because of the ipv6 address specified was allocated.', + ], + [ + 'errorCode' => 'OperationFailed.AddressNotInVSwitchCidr', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'IllegalParam.IpAddress', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.IPv6Disabled', + 'errorMessage' => 'Operation failed because IPv6 is not enabled for the vSwitch.', + ], + [ + 'errorCode' => 'OperationFailed.IpPrefixMustInVSwitchCidrReservation', + 'errorMessage' => 'The specified ip prefix must in reserved segment the VSwitch.', + ], + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'You cannot operate shared resources.', + ], + [ + 'errorCode' => 'QuotaExceeded.IPv6PrefixMask', + 'errorMessage' => 'The quota of specifed ipv6 prefix mask is exceeded.', + ], + [ + 'errorCode' => 'OperationUnsupported.Ipv6Feature', + 'errorMessage' => 'The IPv6 feature is not supported in the region.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6Prefix', + 'errorMessage' => 'The param of Ipv6Prefix is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.ExistIPv6Used', + 'errorMessage' => 'The operation is failed because of some ipv6 in the ipv6 prefix is already in use.', + ], + [ + 'errorCode' => 'OperationUnsupported.UnboundIpv6PrefixFeature', + 'errorMessage' => 'The region does not support creating IPv6 prefix that are not bound to any resources.', + ], + [ + 'errorCode' => 'OperationUnsupported.UnboundIpv6Feature', + 'errorMessage' => 'The region does not support creating IPv6 addresses that are not bound to any resources.', + ], + [ + 'errorCode' => 'OperationUnsupported.FreePrivateIpv6', + 'errorMessage' => 'This operation does not support free private IPv6 addresses.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.VSwitch', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.VSwitchCidrReservation', + 'errorMessage' => 'The dependent vswitch cidr reservation is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeIpv6Addresses', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Ipv6AddressId\\": \\"ipv6-2zen5j4axcp5l5qyy****\\",\\n \\"Ipv6Address\\": \\"2408:XXXX:153:3921:851c:c435:7b12:1c5f\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazdjdhd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + 'title' => 'AllocateIpv6Address', + ], + 'ReleaseIpv6Address' => [ + 'summary' => 'Releases an idle IPv6 address.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '192336', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6AddressId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 address.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must ensure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe63****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C44F62BE-9CE7-4277-B117-69243F3988BF', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DependencyViolation.Ipv6InternetBandwidth', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'OperationFailed.AssociationExist', + 'errorMessage' => 'Operation failed because the existence of an association.', + ], + [ + 'errorCode' => 'OperationFailed.ResourceInBinding', + 'errorMessage' => 'The operation is failed because of the resource is in binding.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6Instance', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.Ipv6InstanceId', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C44F62BE-9CE7-4277-B117-69243F3988BF\\"\\n}","type":"json"}]', + 'title' => 'ReleaseIpv6Address', + ], + 'CreateIpv6Gateway' => [ + 'summary' => 'IPv6 gateways are used to control the IPv6 traffic of virtual private clouds (VPCs). You can call the CreateIpv6Gateway operation to create IPv6 gateways.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC in which you want to create the IPv6 gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-123sedrfswd23****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 gateway.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6GW', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IPv6 gateway.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6gatewayforVPC1', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IPv6 gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'Ipv6GatewayId' => [ + 'description' => 'The ID of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv6gw-hp3y0l3ln89j8cdvf****', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPv6 gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Spec', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.ChargeType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.OnlyOneIpv6GatewayInVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.VpcIpv6Disabled', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationFailed.UnpaidBillsExist', + 'errorMessage' => 'The account has unpaid bills. Please pay your overdue bill first.', + ], + [ + 'errorCode' => 'OperationFailed.InformationIncomplete', + 'errorMessage' => 'Your information is incomplete.', + ], + [ + 'errorCode' => 'OperationFailed.NoPaymentMethod', + 'errorMessage' => 'No payment method is specified for your account.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceGroupId', + 'errorMessage' => 'Invalid ResourceGroupld value.', + ], + [ + 'errorCode' => 'MissingParam.vpcId', + 'errorMessage' => 'The parameter vpcId is mandatory.', + ], + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'You cannot operate shared resources.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Ipv6GatewayId\\": \\"ipv6gw-hp3y0l3ln89j8cdvf****\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ipv6gw-hp3y0l3ln89j8cdvf****\\n rg-acfmxazb4ph6aiy****\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC\\n","errorExample":""}]', + 'title' => 'CreateIpv6Gateway', + 'description' => '* **CreateIpv6Gateway** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeIpv6GatewayAttribute](~~102226~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the IPv6 gateway is in the **Creating** state, the IPv6 gateway is being created.'."\n" + .' * If the IPv6 gateway is in the **Created** state, the IPv6 gateway is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateIpv6Gateway** operation within a specific time period.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateIpv6EgressOnlyRule' => [ + 'summary' => 'You can call CreateIpv6EgressOnlyRule to create egress-only rules to enable ECS instances in VPCs that have IPv6 enabled to access IPv6 clients. However, IPv6 clients cannot access the ECS instances over the Internet.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37981', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IPv6 gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6gw-hp3c2paq0ywauasza****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 address for which you want to create an egress-only rule.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6-hp3nxjkfxn5pnhgl5****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the instance for which you want to create an egress-only rule.'."\n" + ."\n" + .'Default value: **Ipv6Address**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipv6Address', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the egress-only rule.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rulename', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the egress-only rule.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ruledescription', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of RequestId as the client token. The value of RequestId is different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IPv6 gateway is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6EgressRuleId' => [ + 'description' => 'The ID of the egress-only rule.'."\n", + 'type' => 'string', + 'example' => 'ipv6py-hp3w98rmlbqp01245****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIpv6Gateway.NotFound', + 'errorMessage' => 'The specified IPv6 gateway was not found.', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'The param of Name [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'The parameter of Description is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.InstanceType', + 'errorMessage' => 'The parameter of InstanceType is illegal.', + ], + [ + 'errorCode' => 'OperationFailed.FinancialLocked', + 'errorMessage' => 'The operation is forbidden because of financialLocked.', + ], + [ + 'errorCode' => 'OperationUnsupported.EgressRuleVSwitch', + 'errorMessage' => 'The specified VSwitch is not supported to create egress-only rule.', + ], + [ + 'errorCode' => 'InvalidIpv6Instance.NotFound', + 'errorMessage' => 'The specified resource of InvalidIpv6Instance is not found.', + ], + [ + 'errorCode' => 'OperationFailed.NoInternetBandwidth', + 'errorMessage' => 'Operation failed because the ipv6 instance has no internet bandwidth.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6EgressRuleExisted', + 'errorMessage' => 'An egress-only rule already exists for the IPv6 address.', + ], + [ + 'errorCode' => 'OperationFailed.InternetBandwidthUnstable', + 'errorMessage' => 'The operation is forbidden because of InternetBandwidthUnstable.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6InternetBandwidth', + 'errorMessage' => 'The status of the IPv6InternetBandwidth is incorrect.', + ], + [ + 'errorCode' => 'OperationUnsupported.EgressRuleInDefaultSpec', + 'errorMessage' => 'Egress-only rule is not supported. Please update the spec of IPv6 Gateway to Medium or Large.', + ], + [ + 'errorCode' => 'QuotaExceeded.Ipv6EgressRules', + 'errorMessage' => '%s quota exceeded.', + ], + [ + 'errorCode' => 'Mismatch.Ipv6AddressAndIpv6Gateway', + 'errorMessage' => 'The %s and %s are mismatched.', + ], + [ + 'errorCode' => 'OperationUnsupported.EgressOnlyRuleOnFreeIpv6Instance', + 'errorMessage' => 'Creating ipv6 egress only rule on ipv6 instance that not associated with any resource is unsupported.', + ], + [ + 'errorCode' => 'MissingParam.InstanceId', + 'errorMessage' => 'The parameter InstanceId is mandatory.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeIpv6EgressOnlyRules', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Ipv6EgressRuleId\\": \\"ipv6py-hp3w98rmlbqp01245****\\",\\n \\"RequestId\\": \\"9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\t9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75\\r\\n\\tipv6py-hp3w98rmlbqp01245****\\r\\n","errorExample":""}]', + 'title' => 'CreateIpv6EgressOnlyRule', + 'description' => '* **CreateIpv6EgressOnlyRule** is an asynchronous operation. After a request is sent, the system returns a request ID and creates the rule in the background. You can call the [DescribeIpv6EgressOnlyRules](~~102208~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the egress-only rule is in the **Creating** state, the egress-only rule is being created.'."\n" + .' * If the egress-only rule is in the **Created** state, the egress-only rule is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateIpv6EgressOnlyRule** operation to add egress-only rules for an IPv6 address within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteIpv6Gateway' => [ + 'summary' => 'Deletes an IPv6 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37992', + 'abilityTreeNodes' => [ + 'FEATUREvpcGGHSBJ', + ], + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 gateway that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6gw-hp3y0l3ln89j8****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E9A8AABE-A84B-4AF2-A68A-8E2EA190E7AE', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource gatewayRouteTable is not found.', + ], + [ + 'errorCode' => 'DependencyViolation.GatewayRouteTableRelation', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6Gateway', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.EgressRules', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'DependencyViolation.Ipv6InternetBandwidth', + 'errorMessage' => 'The specified resource of %s depends on %s, so the operation cannot be completed.', + ], + [ + 'errorCode' => 'OperationFailed.RouteEntryUnstable', + 'errorMessage' => 'The operation is failed because of route entry related to it is unstable, please try later.', + ], + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'You cannot operate shared resources.', + ], + [ + 'errorCode' => 'DependencyViolation.SharedIpv6InternetBandwidth', + 'errorMessage' => 'The IPv6 gateway [%s] has IPv6 address [%s] that enabled internet from share user [%s], please delete it and try again later.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'Vpc incorrect status.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E9A8AABE-A84B-4AF2-A68A-8E2EA190E7AE\\"\\n}","errorExample":""},{"type":"xml","example":"\\n E9A8AABE-A84B-4AF2-A68A-8E2EA190E7AE\\n","errorExample":""}]', + 'title' => 'DeleteIpv6Gateway', + 'description' => 'Before you delete an IPv6 gateway, you must delete the egress-only rules of the IPv6 gateway. For more information, see [DeleteIpv6EgressOnlyRule](~~102201~~).'."\n" + ."\n" + .'* **DeleteIpv6Gateway** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeIpv6GatewayAttribute](~~102226~~) operation to query the status of the task:'."\n" + ."\n" + .' * If the IPv6 gateway is in the **Deleting** state, the IPv6 gateway is being deleted.'."\n" + .' * If you cannot query the IPv6 gateway, the IPv6 gateway is deleted.'."\n" + ."\n" + .'* You cannot repeatedly call the **DeleteIpv6Gateway** operation to delete an IPv6 gateway within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteIpv6EgressOnlyRule' => [ + 'summary' => 'Deletes an egress-only rule.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37991', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~448570~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6EgressOnlyRuleId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the egress-only rule that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6py-hp3w98rmlbqp0xxxxxxxx', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the value of **RequestId** as the **client token**. The value of **RequestId** is different for each API request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123456', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~448570~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.EgressOnlyRule', + 'errorMessage' => 'The status of the specified IPv6EgressOnlyRule is incorrect.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + 404 => [ + [ + 'errorCode' => 'ResourceNotFound.Ipv6EgressOnlyRule', + 'errorMessage' => 'The specified resource of IPv6 Gateway Rule is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeIpv6EgressOnlyRules', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75\\n","errorExample":""}]', + 'title' => 'DeleteIpv6EgressOnlyRule', + 'description' => '* **DeleteIpv6EgressOnlyRule** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [DescribeIpv6EgressOnlyRules](~~102208~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the egress-only rule is in the **Deleting** state, the egress-only rule is being deleted.'."\n" + .' * If you cannot query the egress-only rule, the egress-only rule is deleted.'."\n" + ."\n" + .'* You cannot call the **DeleteIpv6EgressOnlyRule** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteIpv6InternetBandwidth' => [ + 'summary' => 'Deletes Internet bandwidth.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '37993', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + 'autoTest' => true, + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6AddressId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 address.'."\n" + ."\n" + .'> You must specify one of **Ipv6AddressId** and **Ipv6InternetBandwidthId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + ], + [ + 'name' => 'Ipv6InternetBandwidthId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID of the Internet bandwidth of the IPv6 address.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6bw-uf6hcyzu65v98v3du****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters. If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E07E0FE6-5C21-405F-AF82-7613AA81EF92', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'BothEmptyParam.Ipv6AddressIdAndIpv6InternetBandwidthId', + 'errorMessage' => 'Either Ipv6AddressId or Ipv6InternetBandwidthId should be specified.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6Instance', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + ], + 404 => [ + [ + 'errorCode' => 'OperationFailed.ServiceManaged', + 'errorMessage' => 'Operation is forbidden because this instance belongs to Service manager.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeIpv6Addresses', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E07E0FE6-5C21-405F-AF82-7613AA81EF92\\"\\n}","errorExample":""},{"type":"xml","example":"\\n E07E0FE6-5C21-405F-AF82-7613AA81EF92\\n","errorExample":""}]', + 'title' => 'DeleteIpv6InternetBandwidth', + 'description' => 'You cannot call the **DeleteIpv6InternetBandwidth** operation within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIpv6InternetBandwidth' => [ + 'summary' => 'Modifies the Internet bandwidth of an IPv6 address.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6AddressId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 address.'."\n" + ."\n" + .'> You must specify one of **Ipv6AddressId** and **Ipv6InternetBandwidthId**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + ], + [ + 'name' => 'Ipv6InternetBandwidthId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID of the Internet bandwidth of the IPv6 address.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6bw-uf6hcyzu65v98v3du****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Internet bandwidth value of the IPv6 address. Unit: Mbit/s.'."\n" + ."\n" + .'* If the billing method is pay-by-data-transfer, valid values are **1** to **1000**.'."\n" + .'* If the billing method is pay-by-bandwidth, valid values are **1** to **2000**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '4', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without sending the actual request. Valid values:'."\n" + ."\n" + .'* **true**: pre-checks the request but does not create the IPv4 gateway. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): sends the API request. After the request passes the check, an HTTP 2xx status code is returned and the IPv4 gateway is created.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'D560AF68-4CE8-4A5C-B3FE-469F558094D0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.Ipv6InstanceId', + 'errorMessage' => 'The param of Ipv6InstanceId is missing.', + ], + [ + 'errorCode' => 'InvalidIpv6Instance.NotFound', + 'errorMessage' => 'The specified Ipv6AddressId or Ipv6InternetBandwidthId is not found.', + ], + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of bandwidth is illegal.', + ], + [ + 'errorCode' => 'OperationUnsupported.FinancialLocked', + 'errorMessage' => 'The operation is forbidden because of financialLocked.', + ], + [ + 'errorCode' => 'OperationFailed.InternetBandwidthNonExist', + 'errorMessage' => 'The operation is forbidden because of InternetBandwidthNonExist.', + ], + [ + 'errorCode' => 'OperationFailed.InternetBandwidthUnstable', + 'errorMessage' => 'The operation is forbidden because of InternetBandwidthUnstable.', + ], + [ + 'errorCode' => 'OperationFailed.BandwidthExceedLimit', + 'errorMessage' => 'The operation is forbidden because of BandwidthExceedLimit.', + ], + [ + 'errorCode' => 'ParamExclusive.Ipv6AddressIdAndIpv6InternetBandwidthId', + 'errorMessage' => 'Ipv6AddressId and Ipv6InternetBandwidthId is mutually exclusive.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidIpv6Instance.NotFound', + 'errorMessage' => 'The specified Ipv6AddressId or Ipv6InternetBandwidthId is not found.', + ], + [ + 'errorCode' => 'OperationFailed.SaleValidate', + 'errorMessage' => 'Validate sale condition with subArticle failed.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationFailed.QuerySpInfo', + 'errorMessage' => 'query resource by sp error', + ], + [ + 'errorCode' => 'OperationFailed.QueryAccountInfo', + 'errorMessage' => 'Query account info failed when create order.', + ], + [ + 'errorCode' => 'OperationFailed.SyncTradeResource', + 'errorMessage' => 'Resource transaction information synchronization failed', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D560AF68-4CE8-4A5C-B3FE-469F558094D0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n D560AF68-4CE8-4A5C-B3FE-469F558094D0\\n","errorExample":""}]', + 'title' => 'ModifyIpv6InternetBandwidth', + 'description' => 'You cannot repeatedly call the **ModifyIpv6InternetBandwidth** operation to modify the Internet bandwidth value of an IPv6 CIDR block within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIpv6GatewayAttribute' => [ + 'summary' => 'Modifies the name and description of an IPv6 gateway.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '38017', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 gateway. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 gateway that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6gw-hp39kh1ya51yzp2lu****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 gateway.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6name', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IPv6 gateway.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6description', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the API request. After the request passes the check, a 2XX HTTP status code is returned and the gateway endpoint is associated with the route table. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIpv6GatewayId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9DFEDBEE-E5AB-49E8-A2DC-CC114C67AF75\\n","errorExample":""}]', + 'title' => 'ModifyIpv6GatewayAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIpv6AddressAttribute' => [ + 'summary' => 'Modifies the name and description of an IPv6 address.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '38016', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 address. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 address. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6AddressId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 address.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6-hp32vv2klzw4yerdf****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 address.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IPv6 address.'."\n" + ."\n" + .'The description must be 0 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd7d24a21-f4ba-4454-9173-b3828dae492b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'D560AF68-4CE8-4A5C-B3FE-469F558094D0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIpv6AddressId.NotFound', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => 'The param of Name [%s] is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => 'The param of Description [%s] is illegal.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D560AF68-4CE8-4A5C-B3FE-469F558094D0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n D560AF68-4CE8-4A5C-B3FE-469F558094D0\\n","errorExample":""}]', + 'title' => 'ModifyIpv6AddressAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIpv6Gateways' => [ + 'summary' => 'Queries IPv6 gateways in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6gw-hp3rwmtmfhgis****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the IPv6 gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-123sedrfswd23****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 gateway.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. The name must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6GW', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IPv6 gateway belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag keys of the resources. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag values of the resources. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned message.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E3A06196-3E7C-490D-8F39-CB4B5A0CE8AD', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Ipv6Gateways' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Gateway' => [ + 'description' => 'The information about the IPv6 gateway.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the IPv6 gateway was created.'."\n", + 'type' => 'string', + 'example' => '2020-12-20T14:51:23Z', + ], + 'Status' => [ + 'description' => 'The status of the IPv6 gateway. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the IPv6 gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-123sedrfswd23****', + ], + 'Description' => [ + 'description' => 'The description of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'descriptionforIPv6GW', + ], + 'Ipv6GatewayId' => [ + 'description' => 'The ID of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv6gw-hp3rwmtmfhgisipv6gw-hp3rwmtmfhgis****', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the IPv6 gateway expires.'."\n", + 'type' => 'string', + 'example' => '2021-12-20T14:51:23Z', + ], + 'BusinessStatus' => [ + 'description' => 'The status of the IPv6 gateway. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Name' => [ + 'description' => 'The name of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv6GW', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the IPv6 gateway.'."\n" + ."\n" + .'Only **PostPaid** may be returned, which indicates that the IPv6 gateway uses the pay-as-you-go billing method.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'RegionId' => [ + 'description' => 'The ID of the region in which the IPv6 gateway is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-huhehaote', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + 'OwnerId' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"E3A06196-3E7C-490D-8F39-CB4B5A0CE8AD\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"Ipv6Gateways\\": {\\n \\"Ipv6Gateway\\": [\\n {\\n \\"CreationTime\\": \\"2020-12-20T14:51:23Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"VpcId\\": \\"vpc-123sedrfswd23****\\",\\n \\"Description\\": \\"descriptionforIPv6GW\\",\\n \\"Ipv6GatewayId\\": \\"ipv6gw-hp3rwmtmfhgisipv6gw-hp3rwmtmfhgis****\\",\\n \\"ExpiredTime\\": \\"2021-12-20T14:51:23Z\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Name\\": \\"ipv6GW\\",\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"RegionId\\": \\"cn-huhehaote\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"OwnerId\\": 0\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n E3A06196-3E7C-490D-8F39-CB4B5A0CE8AD\\n 1\\n 2\\n \\n 2020-12-20T14:51:23Z\\n Available\\n vpc-123sedrfswd23****\\n descriptionforIPv6GW\\n ipv6gw-hp3rwmtmfhgisipv6gw-hp3rwmtmfhgis****\\n 2021-12-20T14:51:23Z\\n Normal\\n ipv6GW\\n PostPaid\\n cn-huhehaote\\n rg-bp67acfmxazb4ph****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeIpv6Gateways', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIpv6EgressOnlyRules' => [ + 'summary' => 'Queries egress-only rules.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37999', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 gateway.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6gw-bp1rhhs9zjlxukc5e****', + ], + ], + [ + 'name' => 'Ipv6EgressOnlyRuleId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the egress-only rule that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6py-bp1rr7fq1md8pbb3k****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the rule.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rulename', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the instance to which you want to apply the egress-only rule. Valid values:'."\n" + ."\n" + .'* IPv6Address (default)'."\n" + .'* IPv6Prefix'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Ipv6Address', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance that is associated with the IPv6 address to which the egress-only rule is applied.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6gw-bp1rhhs9zjlxukc5e****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'E16671B7-DEA6-48E0-8E9C-41913DAD44DD', + ], + 'PageNumber' => [ + 'description' => 'The number of the returned page. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Ipv6EgressOnlyRules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6EgressOnlyRule' => [ + 'description' => 'The details about the egress-only rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the egress-only rule.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'Description' => [ + 'description' => 'The description of the egress-only rule.'."\n", + 'type' => 'string', + 'example' => 'ruledescription', + ], + 'Ipv6EgressOnlyRuleId' => [ + 'description' => 'The ID of the egress-only rule.'."\n", + 'type' => 'string', + 'example' => 'ipv6py-bp1rr7fq1md8pbb3k****', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance to which the egress-only rule applies.'."\n", + 'type' => 'string', + 'example' => 'ipv6gw-bp1rhhs9zjlxukc5e****', + ], + 'InstanceType' => [ + 'description' => 'The type of the instance to which the egress-only rule applies.'."\n", + 'type' => 'string', + 'example' => 'Ipv6Address', + ], + 'Name' => [ + 'description' => 'The name of the egress-only rule.'."\n", + 'type' => 'string', + 'example' => 'rulename', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"E16671B7-DEA6-48E0-8E9C-41913DAD44DD\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"Ipv6EgressOnlyRules\\": {\\n \\"Ipv6EgressOnlyRule\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"Description\\": \\"ruledescription\\",\\n \\"Ipv6EgressOnlyRuleId\\": \\"ipv6py-bp1rr7fq1md8pbb3k****\\",\\n \\"InstanceId\\": \\"ipv6gw-bp1rhhs9zjlxukc5e****\\",\\n \\"InstanceType\\": \\"Ipv6Address\\",\\n \\"Name\\": \\"rulename\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n E16671B7-DEA6-48E0-8E9C-41913DAD44DD\\n 1\\n 1\\n \\n Available\\n ruledescription\\n ipv6gwpy-123456xxxxxxxx\\n i-123456xxxxxxxx\\n Ipv6Address\\n rulename\\n \\n","errorExample":""}]', + 'title' => 'DescribeIpv6EgressOnlyRules', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIpv6Addresses' => [ + 'summary' => 'Queries IPv6 addresses in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '37998', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which you want to query IPv6 addresses. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6AddressId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 address that you want to query. You can enter at most 20 IPv6 address IDs in each API request. Separate IPv6 address IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:XXXX:153:3921:851c:c435:7b12:1c5f', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 address that you want to query.'."\n" + ."\n" + .'The name must be 0 to 128 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'AddressType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of IP address. Valid values:'."\n" + ."\n" + .'- IPv6Address (default): indicates an IPv6 instance used to query a single IPv6 address.'."\n" + ."\n" + .'- IPv6Prefix: indicates an IPv6 instance used to query prefix CIDR blocks.', + 'type' => 'string', + 'required' => false, + 'example' => 'IPv6Address', + ], + ], + [ + 'name' => 'AssociatedInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance that is assigned the IPv6 address.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-2ze72wuqj4y3jl4f****', + ], + ], + [ + 'name' => 'AssociatedInstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of instance associated with the IPv6 address. Valid values:'."\n" + ."\n" + .'* **EcsInstance**: Elastic Compute Service (ECS) instance in a virtual private cloud (VPC)'."\n" + .'* **NetworkInterface**: secondary elastic network interface (ENI)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsInstance', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of communication supported by the IPv6 address. Valid values:'."\n" + ."\n" + .'* **Private**'."\n" + .'* **Public**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Private', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which the IPv6 address belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp15zckdt37pq72zv****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which the IPv6 address belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-25navfgbue4g****', + ], + ], + [ + 'name' => 'Ipv6InternetBandwidthId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Internet bandwidth that you purchased for the IPv6 address.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6bw-uf6hcyzu65v98v3du****', + ], + ], + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to return information about pending orders. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the IPv6 gateway belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with aliyun or acs:, and cannot contain http:// or https://.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It can be an empty string. It cannot start with aliyun or acs:, and cannot contain http:// or https://.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values at a time.', + 'type' => 'string', + 'required' => false, + 'example' => 'yunke', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which you want to query IPv6 addresses. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'ServiceManaged', + 'in' => 'query', + 'schema' => [ + 'description' => 'Indicates whether the instance is managed. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'If you do not specify this parameter, all instances are queried.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'AA4486A8-B6AE-469E-AB09-820EF8ECFA2B', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Ipv6Addresses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Address' => [ + 'description' => 'The details of the IPv6 address.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the IPv6 address belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp15zckdt37pq72zv****', + ], + 'Status' => [ + 'description' => 'The status of the IPv6 address.'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'Ipv6AddressId' => [ + 'description' => 'The ID of the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + 'AllocationTime' => [ + 'description' => 'The time when the IPv6 address was created.'."\n", + 'type' => 'string', + 'example' => '2020-12-20T14:56:09Z', + ], + 'Ipv6AddressName' => [ + 'description' => 'The name of the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'Ipv6AddressDescription' => [ + 'description' => 'The description of the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'AssociatedInstanceType' => [ + 'description' => 'The type of instance associated with the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'EcsInstance', + ], + 'AssociatedInstanceId' => [ + 'description' => 'The ID of the instance associated with the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'i-2ze72wuqj4y3jl4f****', + ], + 'NetworkType' => [ + 'description' => 'The type of connection supported by the IPv6 address. Valid values:'."\n" + ."\n" + .'* **Private**'."\n" + .'* **Public**'."\n", + 'type' => 'string', + 'example' => 'Private', + ], + 'Ipv6Address' => [ + 'description' => 'The IPv6 address.'."\n", + 'type' => 'string', + 'example' => '2408:XXXX:153:3921:851c:c435:7b12:1c5f', + ], + 'AddressType' => [ + 'description' => 'The type of IPv6 address. Valid values:'."\n" + ."\n" + .'* IPv6Address (default): indicates a single IPv6 IP.'."\n" + .'* IPv6Prefix: indicates IPv6 CIDR.', + 'type' => 'string', + 'example' => 'IPv6Address', + ], + 'Ipv6Isp' => [ + 'description' => 'The ISP of the IPv6 address. Valid values:'."\n" + ."\n" + .'* **BGP** (default)'."\n" + .'* **ChinaMobile**'."\n" + .'* **ChinaUnicom**'."\n" + .'* **ChinaTelecom**'."\n", + 'type' => 'string', + 'example' => 'BGP', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which the IPv6 address belongs.'."\n", + 'type' => 'string', + 'example' => 'vsw-25navfgbue4g****', + ], + 'Ipv6GatewayId' => [ + 'description' => 'The ID of the IPv6 gateway to which the IPv6 address belongs.'."\n", + 'type' => 'string', + 'example' => 'ipv6gw-2zewg0l66s73b4k2q****', + ], + 'RealBandwidth' => [ + 'description' => 'The peak bandwidth of the IPv6 address.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'Ipv6InternetBandwidth' => [ + 'description' => 'The Internet bandwidth of the IPv6 address.'."\n", + 'type' => 'object', + 'properties' => [ + 'InternetChargeType' => [ + 'description' => 'The billing method of the Internet bandwidth of the IPv6 address. Valid values:'."\n" + ."\n" + .'* **PayByTraffic**'."\n" + .'* **PayByBandwidth**'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'BusinessStatus' => [ + 'description' => 'The status of the Internet bandwidth of the IPv6 address. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Bandwidth' => [ + 'description' => 'The dedicated Internet bandwidth of the IPv6 address. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'Ipv6InternetBandwidthId' => [ + 'description' => 'The Internet bandwidth ID of the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'ipv6bw-hp3b35oq1fj50kbv****', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the Internet bandwidth of the IPv6 address. Valid values:'."\n" + ."\n" + .'Only **PostPaid** may be returned, which indicates the pay-as-you-go billing method.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'HasReservationData' => [ + 'description' => 'Indicates whether renewal data is included. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true** **true** is returned only when **IncludeReservationData** is set to **true** and some orders have not taken effect.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ReservationInternetChargeType' => [ + 'description' => 'The metering method that is used after the renewal takes effect.'."\n" + ."\n" + .'* **PayByTraffic**'."\n" + .'* **PayByBandwidth**'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'ReservationOrderType' => [ + 'description' => 'The type of the renewal order. Only **RENEW** may be returned, which indicates that the order is placed for service renewal.'."\n", + 'type' => 'string', + 'example' => 'RENEW', + ], + 'ReservationActiveTime' => [ + 'description' => 'The time when the renewal takes effect. The time is displayed in the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", + 'type' => 'string', + 'example' => '2021-05-23T16:00:00Z', + ], + 'ReservationBandwidth' => [ + 'description' => 'The maximum bandwidth after the renewal takes effect. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '12', + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the IPv6 gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4ph****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. The tag key cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It can be an empty string. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'Each tag key corresponds to one tag value. You can specify at most 20 tag values at a time.'."\n", + 'type' => 'string', + 'example' => 'yunke', + ], + ], + ], + ], + ], + ], + 'ServiceManaged' => [ + 'description' => 'Indicates whether the instance is managed. Valid values:'."\n" + ."\n" + .'* **1**: yes'."\n" + .'* **0**: no'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Ipv6Address', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.NetworkType', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.AddressType', + 'errorMessage' => 'The specified AddressType is illegal.', + ], + [ + 'errorCode' => 'IllegalParamSize.AssociatedInstanceId', + 'errorMessage' => 'The param size of AssociatedInstanceId is illegal.', + ], + [ + 'errorCode' => 'MissingParam.AssociatedInstanceId', + 'errorMessage' => 'The param of AssociatedInstanceId is missing when AssociatedInstanceType is specified.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"AA4486A8-B6AE-469E-AB09-820EF8ECFA2B\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"Ipv6Addresses\\": {\\n \\"Ipv6Address\\": [\\n {\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\",\\n \\"Status\\": \\"Available\\",\\n \\"Ipv6AddressId\\": \\"ipv6-2zen5j4axcp5l5qyy****\\",\\n \\"AllocationTime\\": \\"2020-12-20T14:56:09Z\\",\\n \\"Ipv6AddressName\\": \\"test\\",\\n \\"Ipv6AddressDescription\\": \\"test\\",\\n \\"AssociatedInstanceType\\": \\"EcsInstance\\",\\n \\"AssociatedInstanceId\\": \\"i-2ze72wuqj4y3jl4f****\\",\\n \\"NetworkType\\": \\"Private\\",\\n \\"Ipv6Address\\": \\"2408:XXXX:153:3921:851c:c435:7b12:1c5f\\",\\n \\"AddressType\\": \\"IPv6Address\\",\\n \\"Ipv6Isp\\": \\"BGP\\",\\n \\"VSwitchId\\": \\"vsw-25navfgbue4g****\\",\\n \\"Ipv6GatewayId\\": \\"ipv6gw-2zewg0l66s73b4k2q****\\",\\n \\"RealBandwidth\\": 5,\\n \\"Ipv6InternetBandwidth\\": {\\n \\"InternetChargeType\\": \\"PayByTraffic\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Bandwidth\\": 5,\\n \\"Ipv6InternetBandwidthId\\": \\"ipv6bw-hp3b35oq1fj50kbv****\\",\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"HasReservationData\\": false,\\n \\"ReservationInternetChargeType\\": \\"PayByTraffic\\",\\n \\"ReservationOrderType\\": \\"RENEW\\",\\n \\"ReservationActiveTime\\": \\"2021-05-23T16:00:00Z\\",\\n \\"ReservationBandwidth\\": 12\\n },\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4ph****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"yunke\\"\\n }\\n ]\\n },\\n \\"ServiceManaged\\": 1\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n AA4486A8-B6AE-469E-AB09-820EF8ECFA2B\\n 1\\n 2\\n \\n vpc-bp15zckdt37pq72zv****\\n Available\\n ipv6-2zen5j4axcp5l5qyy****\\n 2020-12-20T14:56:09Z\\n test\\n EcsInstance\\n i-2ze72wuqj4y3jl4f****\\n Private\\n 2408:XXXX:153:3921:851c:c435:7b12:1c5f\\n BGP\\n vsw-25navfgbue4g****\\n ipv6gw-2zewg0l66s73b4k2q****\\n 5\\n \\n PayByTraffic\\n Normal\\n 5\\n ipv6bw-hp3b35oq1fj50kbv****\\n PostPaid\\n false\\n PayByTraffic\\n RENEW\\n 2021-05-23T16:00:00Z\\n 12\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeIpv6Addresses', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIpv6GatewayAttribute' => [ + 'summary' => 'Queries the information about an IPv6 gateway, including the region, virtual private cloud (VPC), status, and billing method.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 gateway that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6gw-hp3y0l3ln89j8cdvf****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the IPv6 gateway belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-123sedrfswd23****', + ], + 'Status' => [ + 'description' => 'The status of the IPv6 gateway. Valid values:'."\n" + ."\n" + .'* **Pending**'."\n" + .'* **Available**'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'CreationTime' => [ + 'description' => 'The time when the IPv6 gateway was created.'."\n", + 'type' => 'string', + 'example' => '2018-12-05T09:21:35Z', + ], + 'RegionId' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-huhehaote', + ], + 'InstanceChargeType' => [ + 'description' => 'The metering method of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0ED8D006-F706-4D23-88ED-E11ED28DCAC', + ], + 'Ipv6GatewayId' => [ + 'description' => 'The ID of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv6gw-hp3y0l3ln89j8cdvf****', + ], + 'Description' => [ + 'description' => 'The description of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the IPv6 gateway expires.'."\n", + 'type' => 'string', + 'example' => '2019-1-05T09:21:35Z', + ], + 'BusinessStatus' => [ + 'description' => 'The status of the IPv6 gateway. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'Name' => [ + 'description' => 'The name of the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + 'GatewayRouteTableId' => [ + 'description' => 'The ID of the gateway route table associated with the IPv6 gateway.'."\n" + ."\n" + .'> This parameter is available only when the IPv6 gateway is associated with a gateway route table.'."\n", + 'type' => 'string', + 'example' => 'vtb-5ts0ohchwkp3dydt2****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It must start with a letter and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length. It must start with a letter and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + 'OwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the IPv6 gateway belongs.'."\n" + ."\n" + .'> This value is of the Long type. In some languages, the precision may be lost. Use this value with caution.', + 'type' => 'integer', + 'format' => 'int64', + 'example' => '2546073170691****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpcId\\": \\"vpc-123sedrfswd23****\\",\\n \\"Status\\": \\"Available\\",\\n \\"CreationTime\\": \\"2018-12-05T09:21:35Z\\",\\n \\"RegionId\\": \\"cn-huhehaote\\",\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"RequestId\\": \\"0ED8D006-F706-4D23-88ED-E11ED28DCAC\\",\\n \\"Ipv6GatewayId\\": \\"ipv6gw-hp3y0l3ln89j8cdvf****\\",\\n \\"Description\\": \\"test\\",\\n \\"ExpiredTime\\": \\"2019-1-05T09:21:35Z\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Name\\": \\"test\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\",\\n \\"GatewayRouteTableId\\": \\"vtb-5ts0ohchwkp3dydt2****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"OwnerId\\": 0\\n}","errorExample":""},{"type":"xml","example":"\\n vpc-123sedrfswd23****\\n Available\\n 2018-12-05T09:21:35Z\\n cn-huhehaote\\n PostPaid\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC\\n ipv6gw-hp3y0l3ln89j8cdvf****\\n test\\n 2019-1-05T09:21:35Z\\n Normal\\n test\\n rg-acfmxazb4ph6aiy****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n","errorExample":""}]', + 'title' => 'DescribeIpv6GatewayAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AllocateIpv6InternetBandwidth' => [ + 'summary' => 'Default IPv6 gateways support only private communication. You can call the AllocateIpv6InternetBandwidth operation to purchase Internet bandwidth resources for an IPv6 address. This way, ECS instances in a VPC can access the Internet through the IPv6 address. IPv6 clients can also access the ECS instances over the Internet.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '37971', + 'abilityTreeNodes' => [ + 'FEATUREvpc3GHR3P', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + [ + 'name' => 'Ipv6GatewayId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 gateway.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6gw-uf6hcyzu65v98v3du****', + ], + ], + [ + 'name' => 'Ipv6AddressId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 address.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The metering method of the Internet bandwidth for the IPv6 address. Valid values:'."\n" + ."\n" + .'* **PayByTraffic**: pay-by-data-transfer'."\n" + .'* **PayByBandwidth** (default): pay-by-bandwidth'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByBandwidth', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Internet bandwidth of the IPv6 address. Unit: Mbit/s.'."\n" + ."\n" + .'* If you set **InternetChargeType** to **PayByTraffic**, valid values are **1** to **1000**.'."\n" + .'* If you set **InternetChargeType** to **PayByBandwidth**, valid values are **1** to **2000**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '2', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false**: sends the API request. After the request passes the check, a 2XX HTTP status code is returned and the route table is associated. This is the default value.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the IPv6 gateway is deployed. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-huhehaote', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6AddressId' => [ + 'description' => 'The ID of the IPv6 address.'."\n", + 'type' => 'string', + 'example' => 'ipv6-2zen5j4axcp5l5qyy****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6972A26E-99B1-4367-9890-FBDEBB0F5E7D', + ], + 'InternetBandwidthId' => [ + 'description' => 'The ID of the Internet bandwidth that you purchased for the IPv6 gateway.'."\n", + 'type' => 'string', + 'example' => 'ipv6bw-uf6hcyzu65v98v3du****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.Bandwidth', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'MissingParam.Ipv6InstanceId', + 'errorMessage' => 'The param of Ipv6InstanceId is missing.', + ], + [ + 'errorCode' => 'InvalidIpv6Instance.NotFound', + 'errorMessage' => 'The specified Ipv6AddressId or Ipv6InternetBandwidthId is not found.', + ], + [ + 'errorCode' => 'IllegalParam.ChargeType', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.InternetChargeType', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'OperationUnsupported.PrePaid', + 'errorMessage' => '%s is unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6GatewayDisMatchIpv6Address', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'OperationFailed.InternetBandwidthAlreadyExisted', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'OperationFailed.Ipv6GatewayNotExist', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'IncorrectStatus.Ipv6Instance', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'IllegalParam.Ipv6Address', + 'errorMessage' => 'The param of %s is illegal.', + ], + [ + 'errorCode' => 'UnsupportedFeature.InternetChargeTypeOnFreeIpv6Address', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'UnsupportedFeature.InternetChargeTypeOnStaticIsp', + 'errorMessage' => 'The feature of %s is not supported.', + ], + [ + 'errorCode' => 'OperationUnsupported.ULA', + 'errorMessage' => '%s is unsupported.', + ], + [ + 'errorCode' => 'OperationFailed.OpenCdtServiceFirst', + 'errorMessage' => 'The operation is failed because of %s.', + ], + [ + 'errorCode' => 'OperationFailed.UpgradeCdtServiceFirst', + 'errorMessage' => 'The operation is failed because of cdt is not upgraded.', + ], + [ + 'errorCode' => 'OperationUnsupported.PrivateGUA', + 'errorMessage' => 'This operation does not support private GUA addresses.', + ], + [ + 'errorCode' => 'OperationDenied.UnSupportedBindTypeCloudInstance', + 'errorMessage' => 'Internet bandwidth cannot be allocated to the IPv6 address bound to the cloud service instance.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'ResourceNotFound.Ipv6Address', + 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationFailed.QueryAccountInfo', + 'errorMessage' => 'Query account info failed when create order.', + ], + [ + 'errorCode' => 'OperationFailed.SaleValidate', + 'errorMessage' => 'Validate sale condition with subArticle failed.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'The system is busy. Please try again later.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeIpv6Addresses', + 'callbackInterval' => 3, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Ipv6AddressId\\": \\"ipv6-2zen5j4axcp5l5qyy****\\",\\n \\"RequestId\\": \\"6972A26E-99B1-4367-9890-FBDEBB0F5E7D\\",\\n \\"InternetBandwidthId\\": \\"ipv6bw-uf6hcyzu65v98v3du****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ipv6-2zen5j4axcp5l5qyy****\\n 6972A26E-99B1-4367-9890-FBDEBB0F5E7D\\n ipv6bw-uf6hcyzu65v98v3du****\\n","errorExample":""}]', + 'title' => 'AllocateIpv6InternetBandwidth', + 'description' => '* Before you call this operation, make sure that an ECS instance that supports IPv6 is created in a VPC that has an IPv6 CIDR block. For more information, see [Create a VPC with an IPv6 CIDR block](~~100540~~).'."\n" + .'* You cannot repeatedly call **AllocateIpv6InternetBandwidth** within the specified period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateIPv6TranslatorAclList' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the DescribeRegions operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => false, + 'example' => 'sha123456', + ], + ], + [ + 'name' => 'AclName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ACL name.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'test', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'AclId' => [ + 'description' => 'The ACL ID.'."\n", + 'type' => 'string', + 'example' => 'ipv6transacl-bp1de2xxxx', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8B2F5262-6B57-43F2-xxxxx', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified name is not support.', + ], + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full.', + ], + [ + 'errorCode' => 'Nat64Acl.AclNameExist', + 'errorMessage' => 'This ipv6 translator acl name is existed', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'Internal Error', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"AclId\\": \\"ipv6transacl-bp1de2xxxx\\",\\n \\"RequestId\\": \\"8B2F5262-6B57-43F2-xxxxx\\"\\n}","errorExample":"\\n"},{"type":"xml","example":"\\n\\n 0ED8D006-F706-4D23-88ED-E11ED28DCAC0\\n vsw-25naue4gz\\n","errorExample":"\\n\\n"}]', + 'title' => 'CreateIPv6TranslatorAclList', + 'summary' => 'Creates an access control list (ACL).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateIPv6TranslatorEntry' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the **DescribeRegions** operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6TranslatorId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6trans-bp1858ys57xxxxxx', + ], + ], + [ + 'name' => 'EntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 mapping entry. It must be 2 to 100 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'name1', + ], + ], + [ + 'name' => 'EntryDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'description', + ], + ], + [ + 'name' => 'AllocateIpv6Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port that is used by the IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '80', + ], + ], + [ + 'name' => 'BackendIpv4Addr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The public IPv4 address that needs to provide IPv6 services.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '46.22.xx.xx', + ], + ], + [ + 'name' => 'BackendIpv4Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port of the public IPv4 address that needs to provide IPv6 services.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '80', + ], + ], + [ + 'name' => 'TransProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'tcp', + ], + ], + [ + 'name' => 'EntryBandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth specified in the IPv6 mapping entry. Valid values:'."\n" + ."\n" + .'* \\-1 (default): does not limit the maximum bandwidth specified in the IPv6 mapping entry.'."\n" + .'* 1 to 200: the bandwidth value specified in the IPv6 mapping entry. Unit: Mbit/s.'."\n" + ."\n" + .'> The sum of the maximum bandwidth values specified in all IPv6 entries cannot exceed the maximum bandwidth supported by the instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + 'default' => '-1', + ], + ], + [ + 'name' => 'AclStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable access control lists (ACLs). Valid values:'."\n" + ."\n" + .'* **on**'."\n" + .'* **off**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'on', + 'default' => 'off', + ], + ], + [ + 'name' => 'AclType', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable ACLs. Valid values:'."\n" + ."\n" + .'* **white**: a whitelist. IPv6 addresses in the ACL are allowed to access backend services.'."\n" + .'* **black**: a blacklist. IPv6 addresses in the ACL are not allowed to access backend services.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'white', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the associated ACL.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6transacl-bp1g8bhrdexnrxxxx', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'Ipv6TranslatorEntryId' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'ipv6transentry-xxxxxxxx', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DCE5D25-FFC9-492A-8371-12A4E0EE2E05', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIpAddress.AlreadyExist', + 'errorMessage' => 'The specified ip address is already exist.', + ], + [ + 'errorCode' => 'InvalidIpAddress.WrongFormat', + 'errorMessage' => 'The specified ip address is invalid.', + ], + [ + 'errorCode' => 'InvalidIpAddress.PrivateAddress', + 'errorMessage' => 'The specified private ip address is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidPort', + 'errorMessage' => 'The specified port is invalid.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorId.NotFound', + 'errorMessage' => 'The specified ipv6 translator instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified value of name not supported.', + ], + [ + 'errorCode' => 'InvalidDescription', + 'errorMessage' => 'The specified value of description not supported.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidProtocol', + 'errorMessage' => 'The specified transProtocol is invalid.', + ], + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + [ + 'errorCode' => 'IPv6Translator.Configuring', + 'errorMessage' => 'The specified ipv6 translator is configuring.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidBandwidth', + 'errorMessage' => 'The specified entry bandwidth is not valid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.IPv6Conflict', + 'errorMessage' => 'The specified ipv6 port conflict.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.IPv4Conflict', + 'errorMessage' => 'The specified ipv4 port and address conflict.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.AclIdNull', + 'errorMessage' => 'The acl id must not be null.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorAclId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl id does not exist.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidAclStatus', + 'errorMessage' => 'The specified acl status is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidAclType', + 'errorMessage' => 'The specified acl type is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Ipv6TranslatorEntryId\\": \\"ipv6transentry-xxxxxxxx\\",\\n \\"RequestId\\": \\"DCE5D25-FFC9-492A-8371-12A4E0EE2E05\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ipv6transentry-xxxxxxxx\\n DCE5D25-FFC9-492A-8371-12A4E0EE2E05\\n","errorExample":""}]', + 'title' => 'CreateIPv6TranslatorEntry', + 'summary' => 'Adds an IPv6 mapping entry to an IPv6 Translation Service instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AddIPv6TranslatorAclListEntry' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL to which you want to add the IP entry.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6transacl-bp1dcdvfe2****', + ], + ], + [ + 'name' => 'AclEntryIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address or IPv6 CIDR block that you want to add to the ACL entry, for example, 12XX:0:0:XXXX::0102 or 12XX:0:0:XXXX::/60.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '12XX:0:0:XXXX::0102', + ], + ], + [ + 'name' => 'AclEntryComment', + 'in' => 'query', + 'schema' => [ + 'description' => 'The remarks of the ACL entry.'."\n" + ."\n" + .'It must be 2 to 100 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'clientIP1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'AclEntryId' => [ + 'description' => 'The ID of the ACL entry.'."\n", + 'type' => 'string', + 'example' => 'ipv6transaclentry-bp105jrs****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8B2F5262-6B57-43F2-defr345', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIpAddress.WrongFormat', + 'errorMessage' => 'The specified entry ip address is invalid.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorAclId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidEntryComment', + 'errorMessage' => 'The specified value of comment not supported.', + ], + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'noSubstitutionReason' => '无替代API,历史原因导致该API被标记为弃用。', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"AclEntryId\\": \\"ipv6transaclentry-bp105jrs****\\",\\n \\"RequestId\\": \\"8B2F5262-6B57-43F2-defr345\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ipv6transaclentry-bp105jrs****\\n 8B2F5262-6B57-43F2-defr345\\n","errorExample":""}]', + 'title' => 'AddIPv6TranslatorAclListEntry', + 'summary' => 'Adds an IP entry to an access control list (ACL).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateIPv6Translator' => [ + 'summary' => 'Creates an IPv6 Translation Service instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'autoTest' => false, + 'notSupportAutoTestReason' => '产品在2022年已经发布下线公告', + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cm-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the value, but you must ensure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sha111', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 Translation Service instance. The default name is the instance ID. It must be 2 to 100 characters in length and must start with a letter. It can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6_1', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The specification of the IPv6 Translation Service instance. Set the value to **small**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'small', + 'default' => 'small', + ], + ], + [ + 'name' => 'PayType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the IPv6 Translation Service instance. Valid values:'."\n" + ."\n" + .'* **PREPAY**: subscription'."\n" + .'* **POSTPAY**: pay-as-you-go'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PREPAY', + 'default' => 'PREPAY', + ], + ], + [ + 'name' => 'PricingCycle', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing cycle of the subscription. Valid values:'."\n" + ."\n" + .'* **Month** (default)'."\n" + .'* **Year**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + 'default' => '', + ], + ], + [ + 'name' => 'Duration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription duration.'."\n" + ."\n" + .'* If the billing cycle is **Month**, valid values are **1** to **9**.'."\n" + .'* If the billing cycle is **Year**, set the value to **3**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payment. Valid values: **true and false**.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth of the IPv6 Translation Service instance. Unit: Mbit/s. Valid values: **1** to **200**. If you do not specify the bandwidth for the mapping entry, the bandwidth is shared with the mapping entry.'."\n" + ."\n" + .'> If you do not specify this parameter, the default bandwidth is 10 Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6TranslatorId' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'ipv6trans-bp1i8ahxut1xxxx', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '1AE05898-06E5-4782-xxxxx', + ], + 'Spec' => [ + 'description' => 'The specification of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'small', + ], + 'Name' => [ + 'description' => 'The name of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'test_nat64gw', + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '202303300940739', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified name is not support.', + ], + [ + 'errorCode' => 'Spec.NotSupport', + 'errorMessage' => 'The specified spec does not exist in our records.', + ], + [ + 'errorCode' => 'Duration.NotSupport', + 'errorMessage' => 'The specified duration is not support.', + ], + [ + 'errorCode' => 'PricingCycle.NotSupport', + 'errorMessage' => 'The specified pricing cycle is not support.', + ], + [ + 'errorCode' => 'PayType.NotSupport', + 'errorMessage' => 'The specified pay type is not support.', + ], + [ + 'errorCode' => 'InventoryNotEnough', + 'errorMessage' => 'The inventory is not enough.', + ], + [ + 'errorCode' => 'Resource.QuotaFull', + 'errorMessage' => 'The quota of resource is full.', + ], + [ + 'errorCode' => 'Bandwidth.NotSupport', + 'errorMessage' => 'The specified bandwidth is not support.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'Internal Error', + ], + ], + ], + 'staticInfo' => [ + 'noSubstitutionReason' => '无替代API,历史原因导致该API被标记为弃用。', + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::DescribeIPv6Translators', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 50, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Ipv6TranslatorId\\": \\"ipv6trans-bp1i8ahxut1xxxx\\",\\n \\"RequestId\\": \\"1AE05898-06E5-4782-xxxxx\\",\\n \\"Spec\\": \\"small\\",\\n \\"Name\\": \\"test_nat64gw\\",\\n \\"OrderId\\": 202303300940739\\n}","errorExample":"{\\n \\"Ipv6TranslatorId\\": \\"ipv6trans-bp1i8ahxut1iedrqqgbco\\", \\n \\"Name\\": \\"test_nat64gw_autopay_0725\\", \\n \\"OrderId\\": 202303300940739, \\n \\"RequestId\\": \\"1AE05898-06E5-4782-B4D0-6714DD94C4E6\\", \\n \\"Spec\\": \\"small\\"\\n}"},{"type":"xml","example":"\\n\\n\\tipv6trans-bp1i8ahxut1iexxxx\\n\\ttest_nat64gw\\n\\t202303300940739\\n\\t1AE05898-06E5-4782-B4D0-xxxxx\\n\\tsmall\\n","errorExample":"\\n\\n\\tipv6trans-bp1i8ahxut1iedrqqgbco\\n\\ttest_nat64gw_autopay_0725\\n\\t202303300940739\\n\\t1AE05898-06E5-4782-B4D0-6714DD94C4E6\\n\\tsmall\\n"}]', + 'title' => 'CreateIPv6Translator', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteIPv6TranslatorAclList' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among all requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 translation service instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6transacl-bp1de2****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIPv6TranslatorACLId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorACL.Used', + 'errorMessage' => 'The specified ipv6 translator acl is be used.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DeleteIPv6TranslatorAclList', + 'summary' => 'Deletes an access control list (ACL). You can delete an ACL only when the ACL is not associated with IPv6 translation mappings.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteIPv6TranslatorEntry' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the **DescribeRegions** operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6TranslatorEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 mapping entry to be deleted.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6transentry-bp1g8bhrde****', + ], + ], + [ + 'name' => 'Ipv6TranslatorId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n" + ."\n" + .'> If you do not specify **Ipv6TranslatorEntryId**, all mapping entries in the specified instance are deleted.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6trans-bp1858ys****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8B2F5262-6B57-43F2-xxxxx', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIPv6TranslatorId.NotFound', + 'errorMessage' => 'The specified ipv6 translator gateway instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorEntryId.NotFound', + 'errorMessage' => 'The specified ipv6 translator entry id does not exist.', + ], + [ + 'errorCode' => 'IPv6Translator.Configuring', + 'errorMessage' => 'The specified ipv6 translator is configuring.', + ], + [ + 'errorCode' => 'IPv6Translator.FinancialLocked', + 'errorMessage' => 'The specified ipv6 translator is financial locked.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorId.CoexistWithEntryId', + 'errorMessage' => 'The entry id and instance id can not be specified together', + ], + [ + 'errorCode' => 'MissingEntryOrInstanceId', + 'errorMessage' => 'The entry or instance id is not supplied', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8B2F5262-6B57-43F2-xxxxx\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 8B2F5262-6B57-43F2-xxxxx\\n","errorExample":""}]', + 'title' => 'DeleteIPv6TranslatorEntry', + 'summary' => 'Deletes an IPv6 mapping entry.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteIPv6Translator' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ClientToken', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6TranslatorId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6trans-bp1i8ahxut1ie****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IPv6Translator.Configuring', + 'errorMessage' => 'The specified ipv6 translator is configuring.', + ], + [ + 'errorCode' => 'Nat64Gateway.Configuring', + 'errorMessage' => 'The specified IPv6 translator is configuring.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'ForbiddenRelease', + 'errorMessage' => 'Forbidden to release a prepaid instance within validity period', + ], + ], + [ + [ + 'errorCode' => 'InvalidIPv6TranslatorId.NotFound', + 'errorMessage' => 'The specified ipv6 translator instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DeleteIPv6Translator', + 'summary' => 'Deletes an IPv6 Translation Service instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIPv6TranslatorAclListEntry' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL to which the IP entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6transacl-bp1b4z3tleyhq1s50****', + ], + ], + [ + 'name' => 'AclEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL rule to which the IP entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6transaclentry-bp1jzyn7ra8pyxehd****', + ], + ], + [ + 'name' => 'AclEntryComment', + 'in' => 'query', + 'schema' => [ + 'description' => 'The remarks of the ACL rule.'."\n" + ."\n" + .'It must be 2 to 100 characters in length, and can contain digits, underscores (\\_), and hyphens (-). It must start with a letter.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'client IP', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIPv6TranslatorAclId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorAclEntryId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl entry id does not exist.', + ], + [ + 'errorCode' => 'InvalidEntryComment', + 'errorMessage' => 'The specified value of comment not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'ModifyIPv6TranslatorAclListEntry', + 'summary' => 'Modifies an IP entry in an access control list (ACL).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIPv6TranslatorAclAttribute' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the DescribeRegions operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6transacl-bp1de2****', + ], + ], + [ + 'name' => 'AclName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'acl1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified name is not valid', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidIPv6TranslatorACLId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'ModifyIPv6TranslatorAclAttribute', + 'summary' => 'Modifies the name of an access control list (ACL).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIPv6TranslatorBandwidth' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the **DescribeRegions** operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'Ipv6TranslatorId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6trans-bp1858ys****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the IPv6 Translation Service instance. Valid values: **1** to **200**. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '2', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-payment for the instance. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '202304500950739', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'EF8198EE-8FC9-49C2-A22E-xxxx', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIPv6TranslatorId.NotFound', + 'errorMessage' => 'The specified ipv6 translator instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidBandwidth.NotSupport', + 'errorMessage' => 'The specified bandwidth is not support.', + ], + [ + 'errorCode' => 'IPv6Translator.Configuring', + 'errorMessage' => 'The specified ipv6 translator is configuring.', + ], + [ + 'errorCode' => 'InvalidBandwidth.DowngradeForbidden', + 'errorMessage' => 'The bandwidth downgrade is forbidden.', + ], + [ + 'errorCode' => 'InvalidBandwidth.NotEnough', + 'errorMessage' => 'The specified bandwidth is not enough.', + ], + [ + 'errorCode' => 'InvalidBandwidth.NotChange', + 'errorMessage' => 'The specified bandwidth does not change.', + ], + [ + 'errorCode' => 'IPv6Translator.FinancialLocked', + 'errorMessage' => 'The specified ipv6 translator is financial locked.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'Internal Error', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"202304500950739\\",\\n \\"RequestId\\": \\"EF8198EE-8FC9-49C2-A22E-xxxx\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 202304500950739\\n EF8198EE-8FC9-49C2-A22E-xxxx\\n","errorExample":""}]', + 'title' => 'ModifyIPv6TranslatorBandwidth', + 'summary' => 'Modifies the maximum bandwidth of an IPv6 Translation Service instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIPv6TranslatorAttribute' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the **DescribeRegions** operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sha1111', + ], + ], + [ + 'name' => 'Ipv6TranslatorId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6trans-bp1858ys****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 Translation Service instance. The default name is the instance ID. It must be 2 to 100 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with http:// or [https://](https://。).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'instancename', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of IPv6 Translation Service. This parameter is empty by default. It must be 2 to 100 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with http:// or [https://](https://。).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'instancedescription', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8B2F5262-6B57-43F2-xxxxx', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified name is not valid', + ], + [ + 'errorCode' => 'InvalidDescription', + 'errorMessage' => 'The specified description is not valid', + ], + [ + 'errorCode' => ' IPv6Translator.Configuring', + 'errorMessage' => 'The specified ipv6 translator is configuring.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidIPv6TranslatorId.NotFound', + 'errorMessage' => 'The specified ipv6 translator instance id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8B2F5262-6B57-43F2-xxxxx\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 8B2F5262-6B57-43F2-xxxxx\\n","errorExample":""}]', + 'title' => 'ModifyIPv6TranslatorAttribute', + 'summary' => 'Modifies the name and description of an IPv6 Translation Service instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyIPv6TranslatorEntry' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the DescribeRegions operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6TranslatorEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ipv6trans-bp1858ys****', + ], + ], + [ + 'name' => 'EntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 mapping entry. It must be 2 to 100 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. It cannot start with http:// or [https://](https://。).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'entry1', + ], + ], + [ + 'name' => 'EntryDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the IPv6 mapping entry. It must be 2 to 100 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter. It cannot start with http:// or [https://](https://。).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'entrydescription', + ], + ], + [ + 'name' => 'AllocateIpv6Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port that is used by the IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'BackendIpv4Addr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The public IPv4 address that needs to provide IPv6 services.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.11.XX.XX', + ], + ], + [ + 'name' => 'BackendIpv4Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port of the public IPv4 address that needs to provide IPv6 services.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'TransProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol. Valid values:'."\n" + ."\n" + .'* **tcp**'."\n" + .'* **udp**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tcp', + ], + ], + [ + 'name' => 'EntryBandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth specified in the IPv6 mapping entry. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* **-1** (default): does not limit the maximum bandwidth specified in the IPv6 mapping entry.'."\n" + .'* **1** to **200**: changes the maximum bandwidth specified in the IPv6 mapping entry.'."\n" + ."\n" + .'> The sum of maximum bandwidth values specified in all IPv6 entries cannot exceed the maximum bandwidth supported by the instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'AclStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable access control lists (ACLs). Valid values:'."\n" + ."\n" + .'* **on**'."\n" + .'* **off**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'off', + ], + ], + [ + 'name' => 'AclType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ACL type. Valid values:'."\n" + ."\n" + .'* **white**: a whitelist. IPv6 addresses in the ACL are allowed to access backend services.'."\n" + .'* **black**: a blacklist. IPv6 addresses in the ACL are not allowed to access backend services.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'white', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the associated ACL.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6transacl-bp1de27sou71g0lf****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified value of name not supported.', + ], + [ + 'errorCode' => 'InvalidDescription', + 'errorMessage' => 'The specified value of description not supported.', + ], + [ + 'errorCode' => 'InvalidIpAddress.AlreadyExist', + 'errorMessage' => 'The specified ip address is already exist.', + ], + [ + 'errorCode' => 'InvalidIpAddress.WrongFormat', + 'errorMessage' => 'The specified ip address is invalid.', + ], + [ + 'errorCode' => 'InvalidIpAddress.PrivateAddress', + 'errorMessage' => 'The specified private ip address is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidPort', + 'errorMessage' => 'The specified port is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidProtocol', + 'errorMessage' => 'The specified transProtocol is invalid.', + ], + [ + 'errorCode' => 'IPv6Translator.Configuring', + 'errorMessage' => 'The specified ipv6 translator is configuring.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.IPv6Conflict', + 'errorMessage' => 'The specified ipv6 port conflict.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.IPv4Conflict', + 'errorMessage' => 'The specified ipv4 port and address conflict.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidParameter', + 'errorMessage' => 'The specified parameter is not valid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.AclIdNull', + 'errorMessage' => 'The acl id must not be null.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorAclId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl id does not exist.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidAclType', + 'errorMessage' => 'The specified acl type is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidAclStatus', + 'errorMessage' => 'The specified acl status is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidBandwidth', + 'errorMessage' => 'The specified bandwidth is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + [ + [ + 'errorCode' => 'InvalidIPv6TranslatorEntryId.NotFound', + 'errorMessage' => 'The specified ipv6 translator entry id does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'ModifyIPv6TranslatorEntry', + 'summary' => 'Modifies an IPv6 mapping entry.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIPv6TranslatorAclLists' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6transacl-bp1de2****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'AclName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ACL.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acl1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'Ipv6TranslatorAcls' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IPv6TranslatorAcl' => [ + 'description' => 'The list of network ACLs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'AclName' => [ + 'description' => 'The ACL name.'."\n", + 'type' => 'string', + 'example' => 'acl1', + ], + 'AclId' => [ + 'description' => 'The ACL ID.'."\n", + 'type' => 'string', + 'example' => 'ipv6transacl-bp1de2****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified value of name is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 20,\\n \\"Ipv6TranslatorAcls\\": {\\n \\"IPv6TranslatorAcl\\": [\\n {\\n \\"AclName\\": \\"acl1\\",\\n \\"AclId\\": \\"ipv6transacl-bp1de2****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n 1\\n 20\\n \\n acl1\\n ipv6transacl-bp1de2****\\n \\n","errorExample":""}]', + 'title' => 'DescribeIPv6TranslatorAclLists', + 'summary' => 'Queries access control lists (ACLs).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIPv6TranslatorAclListAttributes' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ACL ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6transacl-bp1de2****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'AclId' => [ + 'description' => 'The ACL ID.'."\n", + 'type' => 'string', + 'example' => 'ipv6transacl-bp1de2****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'AclName' => [ + 'description' => 'The name of the ACL.'."\n", + 'type' => 'string', + 'example' => 'acl1', + ], + 'AclEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AclEntry' => [ + 'description' => 'The ACLs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the ACL.'."\n", + 'type' => 'object', + 'properties' => [ + 'AclEntryComment' => [ + 'description' => 'The remarks of the ACL entry.'."\n", + 'type' => 'string', + 'example' => 'client IP', + ], + 'AclEntryId' => [ + 'description' => 'The ID of the ACL entry.'."\n", + 'type' => 'string', + 'example' => 'ipv6transaclentry-bp105jrs****', + ], + 'AclEntryIp' => [ + 'description' => 'The IP address specified in the ACL entry.'."\n", + 'type' => 'string', + 'example' => '12ab:0:0:XXXX::0102/128', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIPv6TranslatorAclId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl instance id does not exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"AclId\\": \\"ipv6transacl-bp1de2****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 20,\\n \\"AclName\\": \\"acl1\\",\\n \\"AclEntries\\": {\\n \\"AclEntry\\": [\\n {\\n \\"AclEntryComment\\": \\"client IP\\",\\n \\"AclEntryId\\": \\"ipv6transaclentry-bp105jrs****\\",\\n \\"AclEntryIp\\": \\"12ab:0:0:XXXX::0102/128\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n ipv6transacl-bp1de2****\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n 1\\n 10\\n 20\\n acl1\\n \\n client IP\\n ipv6transaclentry-bp105jrs****\\n 12ab:0:0:XXXX::0102/128\\n \\n","errorExample":""}]', + 'title' => 'DescribeIPv6TranslatorAclListAttributes', + 'summary' => 'Queries the details of an access control list (ACL), including the specified IP addresses and associated IPv6 mapping entries.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIPv6Translators' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6TranslatorId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6trans-bp1858ys****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6_1', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The specification of the IPv6 Translation Service instance. Set the value to **small**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'small', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the IPv6 Translation Service instance. Valid values:'."\n" + ."\n" + .'* **init**'."\n" + .'* **provisioning**'."\n" + .'* **active**'."\n" + .'* **updating**'."\n" + .'* **upgrading**'."\n" + .'* **deleting**'."\n" + .'* **deleted**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'active', + ], + ], + [ + 'name' => 'AllocateIpv6Addr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2400:3200:1600::XXXX', + ], + ], + [ + 'name' => 'AllocateIpv4Addr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv4 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.99.XX.XX', + ], + ], + [ + 'name' => 'PayType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the IPv6 Translation Service instance. Valid values:'."\n" + ."\n" + .'* **Prepay**: subscription'."\n" + .'* **Postpay**: pay-as-you-go'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Prepay', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'BusinessStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The business status of the IPv6 Translation Service instance. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Normal', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of returned entries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Ipv6Translators' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Translator' => [ + 'description' => 'The list of IPv6 Translation Service instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the IPv6 Translation Service instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'Spec' => [ + 'description' => 'The specification of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'small', + ], + 'CreateTime' => [ + 'description' => 'The timestamp when the IPv6 Translation Service instance was created.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1537151540000', + ], + 'PayType' => [ + 'description' => 'The billing method of the IPv6 Translation Service instance.'."\n" + ."\n" + .'* **Prepay**: subscription'."\n" + .'* **Postpay**: pay-as-you-go'."\n", + 'type' => 'string', + 'example' => 'Prepay', + ], + 'Ipv6TranslatorId' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'ipv6trans-bp1858ys*****', + ], + 'AllocateIpv4Addr' => [ + 'description' => 'The IPv4 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => '47.99.XX.XX', + ], + 'AvailableBandwidth' => [ + 'description' => 'The bandwidth of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'RegionId' => [ + 'description' => 'The region of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'EndTime' => [ + 'description' => 'The timestamp when IPv6 Translation Service instance expires.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1539792000000', + ], + 'Description' => [ + 'description' => 'The description of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'descriptionforinstance', + ], + 'Bandwidth' => [ + 'description' => 'The bandwidth of the IPv6 Translation Service instance. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'BusinessStatus' => [ + 'description' => 'The business status of the IPv6 Translation Service instance. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'AllocateIpv6Addr' => [ + 'description' => 'The IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => '2400:3200:1600::XXXX', + ], + 'Name' => [ + 'description' => 'The name of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'Ipv6TranslatorEntryIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6TranslatorEntryId' => [ + 'description' => 'The IDs of IPv6 mapping entries of the IPv6 Translation Service instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'example' => '["ipv6transentry-bp1kp5ixtm3001vmn****", "ipv6transentry-bp16dg87v006zwrd6****"]', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'PayType.NotSupport', + 'errorMessage' => 'The specified pay type is not support.', + ], + [ + 'errorCode' => 'BusinessStatus.NotSupport', + 'errorMessage' => 'The specified business status is not supported.', + ], + [ + 'errorCode' => 'InvalidIpAddress.WrongFormat', + 'errorMessage' => 'The specified ip address is invalid.', + ], + [ + 'errorCode' => 'Status.NotSupport', + 'errorMessage' => 'The specified value of status is not supported.', + ], + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified value of name is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"Ipv6Translators\\": {\\n \\"Ipv6Translator\\": [\\n {\\n \\"Status\\": \\"active\\",\\n \\"Spec\\": \\"small\\",\\n \\"CreateTime\\": 1537151540000,\\n \\"PayType\\": \\"Prepay\\",\\n \\"Ipv6TranslatorId\\": \\"ipv6trans-bp1858ys*****\\",\\n \\"AllocateIpv4Addr\\": \\"47.99.XX.XX\\",\\n \\"AvailableBandwidth\\": \\"1\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"EndTime\\": 1539792000000,\\n \\"Description\\": \\"descriptionforinstance\\",\\n \\"Bandwidth\\": 1,\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"AllocateIpv6Addr\\": \\"2400:3200:1600::XXXX\\",\\n \\"Name\\": \\"test\\",\\n \\"Ipv6TranslatorEntryIds\\": {\\n \\"Ipv6TranslatorEntryId\\": [\\n \\"[\\\\\\"ipv6transentry-bp1kp5ixtm3001vmn****\\\\\\", \\\\\\"ipv6transentry-bp16dg87v006zwrd6****\\\\\\"]\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n 1\\n 1\\n \\n active\\n small\\n 1537151540000\\n Prepay\\n ipv6trans-bp1858ys*****\\n 47.99.XX.XX\\n 1\\n cn-hangzhou\\n 1539792000000\\n descriptionforinstance\\n 1\\n Normal\\n 2400:3200:1600::XXXX\\n test\\n [\\"ipv6transentry-bp1kp5ixtm3001vmn****\\", \\"ipv6transentry-bp16dg87v006zwrd6****\\"]\\n \\n","errorExample":""}]', + 'title' => 'DescribeIPv6Translators', + 'summary' => 'Queries IPv6 Translation Service instances.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeIPv6TranslatorEntries' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the IPv6 Translation Service instance. You can call the **DescribeRegions** operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Ipv6TranslatorId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'ipv6trans-bp1858ysxx****', + ], + ], + [ + 'name' => 'Ipv6TranslatorEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the IPv6 mapping entry.'."\n" + ."\n" + .'> If **Ipv6TranslatorId** and **Ipv6TranslatorEntryId** are empty, information about all IPv6 mapping entries is returned. If only **Ipv6TranslatorEntryId** is empty, information about the IPv6 mapping entries of the current IPv6 Translation Service instance is returned.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6transentry-bp1g8bhrde****', + ], + ], + [ + 'name' => 'EntryName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'entryname', + ], + ], + [ + 'name' => 'AllocateIpv6Addr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2400:3200:1600::XX', + ], + ], + [ + 'name' => 'AllocateIpv6Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port used by the IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'BackendIpv4Addr', + 'in' => 'query', + 'schema' => [ + 'description' => 'The public IPv4 address that needs to provide IPv6 services.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '47.99.XX.XX', + ], + ], + [ + 'name' => 'BackendIpv4Port', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port used by the public IPv4 address that needs to provide IPv6 services.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'TransProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protocol used by the data to be forwarded.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'tcp', + ], + ], + [ + 'name' => 'AclStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable access control lists (ACLs). Valid values:'."\n" + ."\n" + .'* **on**'."\n" + .'* **off**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'off', + ], + ], + [ + 'name' => 'AclType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ACL type. Valid values:'."\n" + ."\n" + .'* **white**: a whitelist. IPv6 addresses in the ACL are allowed to access backend services.'."\n" + .'* **black**: a blacklist. IPv6 addresses in the ACL are not allowed to access backend services.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'white', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network ACL.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ipv6transacl-bp1de2****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Ipv6TranslatorEntries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6TranslatorEntry' => [ + 'description' => 'The IPv6 mapping entries that are queried.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the IPv6 mapping entry.'."\n", + 'type' => 'object', + 'properties' => [ + 'AclType' => [ + 'description' => 'The ACL type.'."\n" + ."\n" + .'* **white**: a whitelist. IPv6 addresses in the ACL are allowed to access backend services.'."\n" + .'* **black**: a blacklist. IPv6 addresses in the ACL are not allowed to access backend services.'."\n", + 'type' => 'string', + 'example' => 'white', + ], + 'EntryStatus' => [ + 'description' => 'The status of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'TransProtocol' => [ + 'description' => 'The protocol.'."\n", + 'type' => 'string', + 'example' => 'tcp', + ], + 'Ipv6TranslatorId' => [ + 'description' => 'The ID of the IPv6 Translation Service instance to which the IPv6 mapping entry belongs.'."\n", + 'type' => 'string', + 'example' => 'ipv6trans-bp1858ys****', + ], + 'EntryDescription' => [ + 'description' => 'The description of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'example' => 'description', + ], + 'Ipv6TranslatorEntryId' => [ + 'description' => 'The ID of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'example' => 'ipv6transentry-bp1g8bhrde****', + ], + 'AllocateIpv6Port' => [ + 'description' => 'The port used by the IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '80', + ], + 'BackendIpv4Addr' => [ + 'description' => 'The public IP address of the backend IPv4 server.'."\n", + 'type' => 'string', + 'example' => '47.99.XX.XX', + ], + 'BackendIpv4Port' => [ + 'description' => 'The public IPv4 port used by the IPv4 server that needs to provide IPv6 access.'."\n", + 'type' => 'string', + 'example' => '80', + ], + 'RegionId' => [ + 'description' => 'The region of the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'EntryBandwidth' => [ + 'description' => 'The bandwidth specified in the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'AclId' => [ + 'description' => 'The ID of the associated ACL.'."\n", + 'type' => 'string', + 'example' => 'ipv6transacl-bp1de2****', + ], + 'EntryName' => [ + 'description' => 'The name of the IPv6 mapping entry.'."\n", + 'type' => 'string', + 'example' => 'name', + ], + 'AclStatus' => [ + 'description' => 'Indicates whether ACLs are enabled.'."\n", + 'type' => 'string', + 'example' => 'on', + ], + 'AllocateIpv6Addr' => [ + 'description' => 'The IPv6 address allocated to the IPv6 Translation Service instance.'."\n", + 'type' => 'string', + 'example' => '2400:3200:1600::XX', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidName', + 'errorMessage' => 'The specified value of name not supported.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidPort', + 'errorMessage' => 'The specified port is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidProtocol', + 'errorMessage' => 'The specified transProtocol is invalid.', + ], + [ + 'errorCode' => 'InvalidIpAddress.WrongFormat', + 'errorMessage' => 'The specified ip address is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidAclStatus', + 'errorMessage' => 'The specified acl status is invalid.', + ], + [ + 'errorCode' => 'IPv6TranslatorEntry.InvalidAclType', + 'errorMessage' => 'The specified acl type is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"Ipv6TranslatorEntries\\": {\\n \\"Ipv6TranslatorEntry\\": [\\n {\\n \\"AclType\\": \\"white\\",\\n \\"EntryStatus\\": \\"active\\",\\n \\"TransProtocol\\": \\"tcp\\",\\n \\"Ipv6TranslatorId\\": \\"ipv6trans-bp1858ys****\\",\\n \\"EntryDescription\\": \\"description\\",\\n \\"Ipv6TranslatorEntryId\\": \\"ipv6transentry-bp1g8bhrde****\\",\\n \\"AllocateIpv6Port\\": 80,\\n \\"BackendIpv4Addr\\": \\"47.99.XX.XX\\",\\n \\"BackendIpv4Port\\": \\"80\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"EntryBandwidth\\": \\"1\\",\\n \\"AclId\\": \\"ipv6transacl-bp1de2****\\",\\n \\"EntryName\\": \\"name\\",\\n \\"AclStatus\\": \\"on\\",\\n \\"AllocateIpv6Addr\\": \\"2400:3200:1600::XX\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n 1\\n 1\\n \\n white\\n active\\n tcp\\n ipv6trans-bp1858ys****\\n description\\n ipv6transentry-bp1g8bhrde****\\n 80\\n 47.99.XX.XX\\n 80\\n cn-hangzhou\\n 1\\n ipv6transacl-bp1de2****\\n name\\n on\\n 2400:3200:1600::XX\\n \\n","errorExample":""}]', + 'title' => 'DescribeIPv6TranslatorEntries', + 'summary' => 'Queries IPv6 mapping entries.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RemoveIPv6TranslatorAclListEntry' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the ACL.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AclId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL to which the ACL entry belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6transacl-bp1de2****', + ], + ], + [ + 'name' => 'AclEntryId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ACL entry to be deleted.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ipv6transaclentry-bp105jrs****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIPv6TranslatorAclId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidIPv6TranslatorAclEntryId.NotFound', + 'errorMessage' => 'The specified ipv6 translator acl entry id does not exist.', + ], + [ + 'errorCode' => 'IPv6TranslatorAcl.DeleteLastEntry', + 'errorMessage' => 'The last acl entry can not be deleted when ipv6 translator acl is be used.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource as your account is created by another user.', + ], + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'RemoveIPv6TranslatorAclListEntry', + 'summary' => 'Deletes an IP entry from an ACL.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeRegions' => [ + 'summary' => 'Queries the most recent region list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'ProductType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The service type. Default value: **VPC**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The language of the response. Valid values:'."\n" + ."\n" + .'* **zh-CN** (default): Chinese'."\n" + .'* **en-US**: English'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'zh-CN', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F', + ], + 'Regions' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Region' => [ + 'description' => 'The list of regions.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RegionEndpoint' => [ + 'description' => 'The endpoint of the region service.'."\n", + 'type' => 'string', + 'example' => 'vpc.aliyuncs.com', + ], + 'LocalName' => [ + 'description' => 'The name of the region.'."\n", + 'type' => 'string', + 'example' => 'China (Qingdao)', + ], + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'cn-qingdao', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\",\\n \\"Regions\\": {\\n \\"Region\\": [\\n {\\n \\"RegionEndpoint\\": \\"vpc.aliyuncs.com\\",\\n \\"LocalName\\": \\"华北 1\\",\\n \\"RegionId\\": \\"cn-qingdao\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\n \\n vpc.aliyuncs.com\\n 华北 1\\n cn-qingdao\\n \\n","errorExample":""}]', + 'title' => 'DescribeRegions', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeZones' => [ + 'summary' => 'Queries zones in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the zone. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone type. Default value: **AvailabilityZone**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AvailabilityZone', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The language used in the **LocalName** parameter. Valid values:'."\n" + ."\n" + .'* **zh-cn**: Chinese'."\n" + .'* **en-us**: English'."\n" + .'* **ja**: Japanese'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'zh-cn', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6FEA0CF3-D3B9-43E5-A304-D217037876A8', + ], + 'Zones' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Zone' => [ + 'description' => 'The zone list.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-b', + ], + 'LocalName' => [ + 'description' => 'The zone name.'."\n", + 'type' => 'string', + 'example' => 'Hangzhou Zone B', + ], + 'ZoneType' => [ + 'description' => 'The zone type. Default value: **AvailabilityZone**.'."\n", + 'type' => 'string', + 'example' => 'AvailabilityZone', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6FEA0CF3-D3B9-43E5-A304-D217037876A8\\",\\n \\"Zones\\": {\\n \\"Zone\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-b\\",\\n \\"LocalName\\": \\"华东 1 可用区 B\\",\\n \\"ZoneType\\": \\"AvailabilityZone\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 6FEA0CF3-D3B9-43E5-A304-D217037876A8\\n \\n cn-hangzhou-b\\n 华东 1 可用区 B\\n AvailabilityZone\\n \\n","errorExample":""}]', + 'title' => 'DescribeZones', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'TagResources' => [ + 'summary' => 'Creates and adds tags to resources.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'* **VPC**: a VPC'."\n" + .'* **VSWITCH**: a vSwitch'."\n" + .'* **ROUTETABLE**: a route table'."\n" + .'* **EIP**: an EIP'."\n" + .'* **VpnGateway**: a VPN gateway'."\n" + .'* **NATGATEWAY**: a NAT gateway'."\n" + .'* **COMMONBANDWIDTHPACKAGE**: an EIP bandwidth plan'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The resource ID. You can specify at most 20 IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n" + ."\n" + .'> When you call this operation, **ResourceId.N** is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp16qjewdsunr41m1****', + ], + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp16qjewdsunr41m1****', + 'maxItems' => 51, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag information.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag that is added to the resource. You can specify at most 20 tag keys.'."\n" + ."\n" + .'The key cannot exceed 128 characters in length. The key cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'> When you call this operation, the **Tag.N.Key** parameter is required and cannot be an empty string.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag that is added to the resource. You can specify at most 20 tag values.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length. The value cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n" + ."\n" + .'> When you call this operation, the **Tag.N.Value** parameter is required and can be an empty string.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => true, + 'docRequired' => true, + 'example' => 'TagResources', + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C46FF5A8-C5F0-4024-8262-B16B639225A0', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'MissingParam', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'InvalidTagScope.NotFound', + 'errorMessage' => 'The tag scope is not found', + ], + [ + 'errorCode' => 'Forbidden.NotAllowedCategary', + 'errorMessage' => 'The System tag is not valid', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + [ + 'errorCode' => 'MissingParameter.TagValue', + 'errorMessage' => 'The input parameter TagValue that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'MissingParameter.TagKey', + 'errorMessage' => 'The input parameter TagKey that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'MissingParam.Tags', + 'errorMessage' => 'You must specify the Tags parameter.', + ], + [ + 'errorCode' => 'DuplicatedParam.ResourceIds', + 'errorMessage' => 'The parameter of ResourceIds contains duplicate values.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C46FF5A8-C5F0-4024-8262-B16B639225A0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C46FF5A8-C5F0-4024-8262-B16B639225A0\\n","errorExample":""}]', + 'title' => 'TagResources', + 'description' => 'Tags are used to classify instances. Each tag consists of a key-value pair. Before you use tags, take note of the following limits:'."\n" + ."\n" + .'* The keys of tags that are added to the same instance must be unique.'."\n" + ."\n" + .'* You cannot create tags without adding them to instances. All tags must be added to instances.'."\n" + ."\n" + .'* Tag information is not shared across regions.'."\n" + ."\n" + .' For example, you cannot view the tags that are created in the China (Hangzhou) region from the China (Shanghai) region.'."\n" + ."\n" + .'* Virtual private clouds (VPCs), route tables, vSwitches, and elastic IP addresses (EIPs) that belong to the same Alibaba Cloud account and are deployed in the same region share tag information with each other.'."\n" + ."\n" + .' For example, if you added a tag to a VPC, the tag is available to vSwitches, route tables, and EIPs that belong to the same account and are deployed in the same region in which the VPC is created. You can select this tag from the editing page without the need to enter the tag again. You can modify the key and the value of a tag or remove a tag from an instance. After you delete an instance, all tags that are added to the instance are deleted.'."\n" + ."\n" + .'* You can add up to 20 tags to each instance. Before you add a tag to an instance, the system automatically checks the number of existing tags. An error message is returned if the maximum number of tags is reached.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'TagResourcesForExpressConnect' => [ + 'summary' => 'Creates tags and adds the tags to an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource. Valid values:'."\n" + ."\n" + .'* **PHYSICALCONNECTION**: Express Connect circuit.'."\n" + .'* **VIRTUALBORDERROUTER**: virtual border router (VBR).'."\n" + .'* **ROUTERINTERFACE**: router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'PHYSICALCONNECTION', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the resource is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The resource IDs. You can specify up to 20 resource IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp16qjewdsunr41m1****', + ], + 'required' => true, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => true, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'InvalidTagScope.NotFound', + 'errorMessage' => 'The tag scope is not found', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + [ + 'errorCode' => 'MissingParameter.TagValue', + 'errorMessage' => 'The input parameter TagValue that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'MissingParameter.TagKey', + 'errorMessage' => 'The input parameter TagKey that is mandatory for processing this request is not supplied.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'TagResourcesForExpressConnect', + 'description' => '## [](#)'."\n" + ."\n" + .'Tags are used to classify instances. Each tag consists of a key-value pair. Before you use tags, take note of the following items:'."\n" + ."\n" + .'* Each tag key that is added to an instance must be unique.'."\n" + ."\n" + .'* You cannot create tags without adding them to instances. All tags must be added to instances.'."\n" + ."\n" + .'* Tag information is not shared across regions.'."\n" + ."\n" + .' For example, you cannot view the tags that are created in the China (Hangzhou) region from the China (Shanghai) region.'."\n" + ."\n" + .'* You can add up to 20 tags to each instance. Before you add a tag to an instance, the system automatically checks the number of existing tags. An error message is returned if the maximum number of tags is reached.'."\n", + ], + 'UnTagResources' => [ + 'summary' => 'Removes tags from resources.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'* **VPC**'."\n" + .'* **VSWITCH**'."\n" + .'* **ROUTETABLE**'."\n" + .'* **EIP**'."\n" + .'* **VpnGateway**'."\n" + .'* **NATGATEWAY**'."\n" + .'* **COMMONBANDWIDTHPACKAGE**: EIP bandwidth plan'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'All', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to remove all tags from the specified resource. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp16qjewdsunr41m1****', + ], + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp16qjewdsunr41m1****', + 'maxItems' => 51, + ], + ], + [ + 'name' => 'TagKey', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The key of the tag that you want to remove. You can specify at most 20 tag keys. It can be an empty string.'."\n" + ."\n" + .'The key cannot exceed 64 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The key of the tag that you want to remove. You can specify at most 20 tag keys. It can be an empty string.'."\n" + ."\n" + .'The key cannot exceed 64 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'required' => false, + 'example' => 'FinanceDept', + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou ', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C46FF5A8-C5F0-4024-8262-B16B639225A0 ', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'MissingParam', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'Forbidden.NotAllowedCategary', + 'errorMessage' => 'The System tag is not valid', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + [ + 'errorCode' => 'DuplicatedParam.ResourceIds', + 'errorMessage' => 'The parameter of ResourceIds contains duplicate values.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C46FF5A8-C5F0-4024-8262-B16B639225A0\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C46FF5A8-C5F0-4024-8262-B16B639225A0\\t\\n","errorExample":""}]', + 'title' => 'UnTagResources', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UntagResourcesForExpressConnect' => [ + 'summary' => 'Removes tags from an Express Connect circuit at a time.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource. Valid values:'."\n" + ."\n" + .'* **PHYSICALCONNECTION**: Express Connect circuit.'."\n" + .'* **VIRTUALBORDERROUTER**: virtual border router (VBR).'."\n" + .'* **ROUTERINTERFACE**: router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'PHYSICALCONNECTION', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the resource is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'All', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to remove all tags from the specified resource. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the resources from which you want to remove tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp16qjewdsunr41m1****', + ], + 'required' => true, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'TagKey', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to remove from the specified resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The key of the tag to remove from the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key must be 1 to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DE65F6B7-7566-4802-9007-96F2494AC512', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DE65F6B7-7566-4802-9007-96F2494AC512\\"\\n}","errorExample":""},{"type":"xml","example":"\\n DE65F6B7-7566-4802-9007-96F2494AC512\\n","errorExample":""}]', + 'title' => 'UntagResourcesForExpressConnect', + ], + 'ListTagResources' => [ + 'summary' => 'Queries the tags that are added to resources.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'* **VPC**'."\n" + .'* **VSWITCH**'."\n" + .'* **ROUTETABLE**'."\n" + .'* **EIP**'."\n" + .'* **VpnGateway**'."\n" + .'* **NATGATEWAY**'."\n" + .'* **COMMONBANDWIDTHPACKAGE**: EIP bandwidth plan'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Valid values:**1** to **50**. Default value: **50**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'example' => '50', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n" + ."\n" + .'> You must specify at least one of **ResourceId.N** and **Tag.N** (**Tag.N.Key** and **Tag.N.Value**).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp16qjewdsunr41m1****', + ], + 'required' => false, + 'example' => 'vpc-bp16qjewdsunr41m1****', + 'maxItems' => 51, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag value. You can specify up to 20 tag values. It can be an empty string.'."\n" + ."\n" + .'The value can be up to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The value must start with a letter but cannot start with `aliyun` or `acs:`. The value cannot contain `http://` or `https://`.'."\n" + ."\n" + .'> You must specify at least one of **ResourceId.N** and **Tag.N** (**Tag.N.Key** and **Tag.N.Value**).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag that is added to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The key can be up to 64 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n" + ."\n" + .'> Specify at least one of the **ResourceId.N** and **Tag.N** parameters (**Tag.N.Key** and **Tag.N.Value**).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag that is added to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The value can be up to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The value must start with a letter but cannot start with `aliyun` or `acs:`. The value cannot contain `http://` or `https://`.'."\n" + ."\n" + .'> Specify at least one of the **ResourceId.N** and **Tag.N** parameters (**Tag.N.Key** and **Tag.N.Value**).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'example' => 'ListTagResources', + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DE65F6B7-7566-4802-9007-96F2494AC512', + ], + 'TagResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TagResource' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ResourceType' => [ + 'description' => 'The type of the resource. Valid values:'."\n" + ."\n" + .'* **VPC**: virtual private cloud (VPC)'."\n" + .'* **VSWITCH**: vSwitch'."\n" + .'* **ROUTETABLE**: route table'."\n" + .'* **EIP**: EIP'."\n" + .'* **VpnGateWay**: VPN gateway'."\n" + .'* **NATGATEWAY**: NAT gateway'."\n" + .'* **COMMONBANDWIDTHPACKAGE**: EIP bandwidth plan'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'TagValue' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + 'ResourceId' => [ + 'description' => 'The ID of the resource.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp16qjewdsunr41m1****', + ], + 'TagKey' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'MissingParam', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'Forbidden.NotAllowedCategary', + 'errorMessage' => 'The System tag is not valid', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + [ + 'errorCode' => 'BothEmpty.TagsAndResources', + 'errorMessage' => 'The specified Tags and ResourcesIds are not allow to both empty.', + ], + [ + 'errorCode' => 'MissingParam.ResourceType', + 'errorMessage' => 'The param of ResourceType is missing.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'BothEmpty.TagsAndResources', + 'errorMessage' => 'The specified Tags and ResourcesIds are not allow to both empty.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"DE65F6B7-7566-4802-9007-96F2494AC512\\",\\n \\"TagResources\\": {\\n \\"TagResource\\": [\\n {\\n \\"ResourceType\\": \\"VPC\\",\\n \\"TagValue\\": \\"FinanceJoshua\\",\\n \\"ResourceId\\": \\"vpc-bp16qjewdsunr41m1****\\",\\n \\"TagKey\\": \\"FinanceDept\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n DE65F6B7-7566-4802-9007-96F2494AC512\\n \\n VPC\\n FinanceJoshua\\n vpc-bp16qjewdsunr41m1****\\n FinanceDept\\n \\n","errorExample":""}]', + 'title' => 'ListTagResources', + 'description' => '## Usage notes'."\n" + ."\n" + .'* You must specify **ResourceId.N** or **Tag.N** that consists of **Tag.N.Key** and **Tag.N.Value** in the request to specify the object that you want to query.'."\n" + .'* **Tag.N** is a resource tag that consists of a key-value pair. If you specify only **Tag.N.Key**, all tag values that are associated with the specified key are returned. If you specify only **Tag.N.Value**, an error message is returned.'."\n" + .'* If you specify **Tag.N** and **ResourceId.N** to filter tags, **ResourceId.N** must match all specified key-value pairs.'."\n" + .'* If you specify multiple key-value pairs, resources that contain these key-value pairs are returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeTags' => [ + 'summary' => 'Queries tags that meet the specified filter conditions.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'* **VPC**: virtual private cloud (VPC)'."\n" + .'* **VSWITCH**: vSwitch'."\n" + .'* **ROUTETABLE**: route table'."\n" + .'* **EIP**: elastic IP address (EIP)'."\n" + .'* **VpnGateway**: VPN gateway'."\n" + .'* **NATGATEWAY**: NAT gateway'."\n" + .'* **COMMONBANDWIDTHPACKAGE**: EIP bandwidth plan'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the resource belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If this is your first query or no next query is to be sent, ignore this parameter.'."\n" + .'* If a subsequent query is to be sent, set the parameter to the value of NextToken that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResult', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to 50. Default value: 50.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'example' => '50', + 'default' => '100', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The resource IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the resource. You can enter at most 50 IDs.'."\n" + ."\n" + .'> If you set this parameter, you must set **ResourceType**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp16qjewdsunr41m1****', + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag that is added to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The key cannot exceed 64 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag that is added to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => 'object', + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If the value of **NextToken** is not returned, it indicates that no next query is to be sent.'."\n" + .'* If a value of **NextToken** is returned, the value is the token that is used for the subsequent query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'C46FF5A8-C5F0-4024-8262-B16B639225A0', + ], + 'TagResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TagResource' => [ + 'description' => 'The list of tags that meet the filter conditions.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + 'TagKey' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'BothEmpty.TagsAndResources', + 'errorMessage' => 'The specified Tags and ResourcesIds are not allow to both empty.', + ], + [ + 'errorCode' => 'MissingParameter.TagKey', + 'errorMessage' => 'The input parameter TagKey that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'MissingParameter.TagValue', + 'errorMessage' => 'The input parameter TagValue that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'MissingParam', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'Forbidden.NotAllowedCategary', + 'errorMessage' => 'The System tag is not valid', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"C46FF5A8-C5F0-4024-8262-B16B639225A0\\",\\n \\"TagResources\\": {\\n \\"TagResource\\": [\\n {\\n \\"TagValue\\": \\"FinanceJoshua\\",\\n \\"TagKey\\": \\"FinanceDept\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n C46FF5A8-C5F0-4024-8262-B16B639225A0\\n \\n FinanceJoshua\\n FinanceDept\\n \\n","errorExample":""}]', + 'title' => 'DescribeTags', + 'description' => '* You must specify **ResourceId.N** or **Tag.N** that consists of **Tag.N.Key** and **Tag.N.Value** in the request to specify the object that you want to query.'."\n" + .'* **Tag.N** is a resource tag that consists of a key-value pair. If you specify only **Tag.N.Key**, all tag values that are associated with the specified tag key are returned. If you specify only **Tag.N.Value**, an error message is returned.'."\n" + .'* If you specify **Tag.N** and **ResourceId.N** to filter tags, **ResourceId.N** must match all specified key-value pairs.'."\n" + .'* If you specify multiple key-value pairs, all tags that match the key-value pairs are returned.', + ], + 'DescribeTagKeys' => [ + 'summary' => 'Queries tag keys.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'* **VPC**: virtual private cloud (VPC)'."\n" + .'* **VSWITCH**: vSwitch'."\n" + .'* **ROUTETABLE**: route table'."\n" + .'* **EIP**: elastic IP address (EIP)'."\n" + .'* **VpnGateway**: VPN gateway'."\n" + .'* **NATGATEWAY**: NAT gateway'."\n" + .'* **COMMONBANDWIDTHPACKAGE**: EIP bandwidth plan'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VPC', + ], + ], + [ + 'name' => 'Keyword', + 'in' => 'query', + 'schema' => [ + 'description' => 'The tag keys.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'keyword', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the resource.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If this is your first query or no next query is to be sent, ignore this parameter.'."\n" + .'* If a subsequent query is to be sent, set the parameter to the value of NextToken that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResult', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to 50. Default value: 50.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'example' => '50', + 'default' => '100', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The resource IDs. You can specify up to 20 resource IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the resource. You can enter at most 50 IDs.'."\n" + ."\n" + .'> If you set this parameter, you must set **ResourceType**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp16qjewdsunr41m1****', + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'headers' => [], + 'schema' => [ + 'description' => ' object', + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If the value of **NextToken** is not returned, it indicates that no next query is to be sent.'."\n" + .'* If a value of **NextToken** is returned, the value is the token that is used for the subsequent query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'DE65F6B7-7566-4802-9007-96F2494AC512', + ], + 'TagKeys' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TagKey' => [ + 'description' => 'The list of tag keys.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The type of the tag key. Valid values:'."\n" + ."\n" + .'* **Custom**: custom'."\n" + .'* **System**: system'."\n", + 'type' => 'string', + 'example' => 'Custom', + ], + 'TagKey' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'BothEmpty.TagsAndResources', + 'errorMessage' => 'The specified Tags and ResourcesIds are not allow to both empty.', + ], + [ + 'errorCode' => 'MissingParameter.TagKey', + 'errorMessage' => 'The input parameter TagKey that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'MissingParameter.TagValue', + 'errorMessage' => 'The input parameter TagValue that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'MissingParam', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'Forbidden.NotAllowedCategary', + 'errorMessage' => 'The System tag is not valid', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"DE65F6B7-7566-4802-9007-96F2494AC512\\",\\n \\"TagKeys\\": {\\n \\"TagKey\\": [\\n {\\n \\"Type\\": \\"Custom\\",\\n \\"TagKey\\": \\"FinanceDept\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n DE65F6B7-7566-4802-9007-96F2494AC512\\n \\n Custom\\n FinanceDept\\n \\n","errorExample":""}]', + 'title' => 'DescribeTagKeys', + ], + 'ListTagResourcesForExpressConnect' => [ + 'summary' => 'Queries the tags that are added to an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource. Valid values:'."\n" + ."\n" + .'* **PHYSICALCONNECTION**: Express Connect circuit.'."\n" + .'* **VIRTUALBORDERROUTER**: virtual border router (VBR).'."\n" + .'* **ROUTERINTERFACE**: router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'PHYSICALCONNECTION', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the resource resides.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'example' => '20', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The resource IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp16qjewdsunr41m1****', + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag to add to the resource. You can specify up to 20 tag values The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'TagResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TagResource' => [ + 'description' => 'The tags that are added to the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ResourceType' => [ + 'description' => 'The type of the resource. Valid values:'."\n" + ."\n" + .'* **PHYSICALCONNECTION**: Express Connect circuit.'."\n" + .'* **VIRTUALBORDERROUTER**: VBR.'."\n" + .'* **ROUTERINTERFACE**: router interface.'."\n", + 'type' => 'string', + 'example' => 'PHYSICALCONNECTION', + ], + 'TagValue' => [ + 'description' => 'The value of the tag that is added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + 'ResourceId' => [ + 'description' => 'The resource ID.'."\n", + 'type' => 'string', + 'example' => 'pc-bp16qjewdsunr41m1****', + ], + 'TagKey' => [ + 'description' => 'The key of the tag that is added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.TagNum', + 'errorMessage' => 'The maximum number of tags is exceeded.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'BothEmpty.TagsAndResources', + 'errorMessage' => 'The specified Tags and ResourcesIds are not allow to both empty.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"TagResources\\": {\\n \\"TagResource\\": [\\n {\\n \\"ResourceType\\": \\"PHYSICALCONNECTION\\",\\n \\"TagValue\\": \\"FinanceJoshua\\",\\n \\"ResourceId\\": \\"pc-bp16qjewdsunr41m1****\\",\\n \\"TagKey\\": \\"FinanceDept\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n \\n PHYSICALCONNECTION\\n FinanceJoshua\\n pc-bp16qjewdsunr41m1****\\n FinanceDept\\n \\n","errorExample":""}]', + 'title' => 'ListTagResourcesForExpressConnect', + 'description' => '## [](#)'."\n" + ."\n" + .'* If you want to query a specific object, you must specify **ResourceId.N** or **Tag.N** that consists of **Tag.N.Key** and **Tag.N.Value** in the request.'."\n" + .'* **Tag.N** is a resource tag that consists of a key-value pair. If you specify only **Tag.N.Key**, all tag values that are associated with the specified key are returned. If you specify only **Tag.N.Value**, an error message is returned.'."\n" + .'* If you specify **Tag.N** and **ResourceId.N** to filter tags, **ResourceId.N** must match all specified key-value pairs.'."\n" + .'* If you specify multiple key-value pairs, resources that contain these key-value pairs are returned.'."\n", + ], + 'DescribeTagKeysForExpressConnect' => [ + 'summary' => 'Queries the tags of an Express Connect circuit.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource. Set the value to **PHYSICALCONNECTION**, which specifies an Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PHYSICALCONNECTION', + ], + ], + [ + 'name' => 'Keyword', + 'in' => 'query', + 'schema' => [ + 'description' => 'The keyword of the tag. Fuzzy match is supported. You can specify a keyword to query all tags that contain the keyword.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'keyword', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the resource resides.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResult', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'example' => '20', + 'default' => '100', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the resources. You can specify up to 20 resource IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource ID. You can specify up to 20 resource IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pc-bp16qjewdsunr41m1****', + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.'."\n" + ."\n" + .'* If **NextToken** is empty, no next page exists.'."\n" + .'* If a value is returned for **NextToken**, the value can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + 'TagKeys' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TagKey' => [ + 'description' => 'The tag keys.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The type of the resource. The value is set to **PHYSICALCONNECTION**, which indicates an Express Connect circuit.'."\n", + 'type' => 'string', + 'example' => 'PHYSICALCONNECTION', + ], + 'TagKey' => [ + 'description' => 'The key of the tag.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'BothEmpty.TagsAndResources', + 'errorMessage' => 'The specified Tags and ResourcesIds are not allow to both empty.', + ], + [ + 'errorCode' => 'MissingParameter.TagKey', + 'errorMessage' => 'The input parameter TagKey that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'MissingParameter.TagValue', + 'errorMessage' => 'The input parameter TagValue that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidTagKey', + 'errorMessage' => 'The tag keys are not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue', + 'errorMessage' => 'The tag values are not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The instance type is not found', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The instanceIds are not found', + ], + [ + 'errorCode' => 'Forbidden.TagKeys', + 'errorMessage' => 'The request do not allow to operate the tag keys', + ], + [ + 'errorCode' => 'QuotaExceeded.TagNum', + 'errorMessage' => 'Custom Tags quota exceeded', + ], + [ + 'errorCode' => 'Forbidden.TagKey.Duplicated', + 'errorMessage' => 'The specified tag key already exists.', + ], + [ + 'errorCode' => 'SizeLimitExceeded.ResourceId', + 'errorMessage' => 'The maximum number of resource IDs is exceeded.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"TagKeys\\": {\\n \\"TagKey\\": [\\n {\\n \\"Type\\": \\"System\\",\\n \\"TagKey\\": \\"FinanceDept\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n \\n PHYSICALCONNECTION\\n FinanceDept\\n \\n","errorExample":""}]', + 'title' => 'DescribeTagKeysForExpressConnect', + ], + 'CreateRouterInterface' => [ + 'summary' => 'Creates a router interface.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the router interface belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Role', + 'in' => 'query', + 'schema' => [ + 'description' => 'The role of the router interface. Valid values:'."\n" + ."\n" + .'* **InitiatingSide**: requester'."\n" + .'* **AcceptingSide**: acceptor'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'InitiatingSide', + ], + ], + [ + 'name' => 'OppositeRegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which the acceptor is deployed.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The specification of the router interface and the corresponding bandwidth. Valid values:'."\n" + ."\n" + .'* **Mini.2**: 2 Mbit/s'."\n" + .'* **Mini.5**: 5 Mbit/s'."\n" + .'* **Small.1**: 10 Mbit/s'."\n" + .'* **Small.2**: 20 Mbit/s'."\n" + .'* **Small.5**: 50 Mbit/s'."\n" + .'* **Middle.1**: 100 Mbit/s'."\n" + .'* **Middle.2**: 200 Mbit/s'."\n" + .'* **Middle.5**: 500 Mbit/s'."\n" + .'* **Large.1**: 1,000 Mbit/s'."\n" + .'* **Large.2**: 2,000 Mbit/s'."\n" + .'* **Large.5**: 5,000 Mbit/s'."\n" + .'* **Xlarge.1**: 10,000 Mbit/s'."\n" + ."\n" + .'> If **Role** is set to **AcceptingSide**, set **Spec** to **Negative**. This indicates that you do not need to specify the specification when you create an acceptor router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'Mini.2', + ], + ], + [ + 'name' => 'RouterType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of router that is associated with the router interface. Valid values:'."\n" + ."\n" + .'* **VRouter**'."\n" + .'* **VBR**'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'VRouter', + ], + ], + [ + 'name' => 'RouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router that is associated with the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vbr-m5ebm6g9ptc9mly1c****', + ], + ], + [ + 'name' => 'OppositeInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the peer router interface.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ri-2zeo3xzyf38r4urzd****', + ], + ], + [ + 'name' => 'OppositeRouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the peer router.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vrt-bp1lhl0taikrteen8****', + ], + ], + [ + 'name' => 'OppositeRouterType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of router that is associated with the peer router interface. Valid values:'."\n" + ."\n" + .'* **VRouter**'."\n" + .'* **VBR**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VRouter', + 'default' => 'VRouter', + ], + ], + [ + 'name' => 'OppositeInterfaceOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the peer router interface belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '253460731706911258', + ], + ], + [ + 'name' => 'HealthCheckSourceIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IP address that is used to perform health checks. The source IP address must be an idle IP address of the local virtual private cloud (VPC).'."\n" + ."\n" + .'> You can set this parameter when an Express Connect circuit is used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.6', + ], + ], + [ + 'name' => 'HealthCheckTargetIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IP address that is used to perform health checks.'."\n" + ."\n" + .'> This parameter is required if you specify **HealthCheckSourceIp**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.0.8', + ], + ], + [ + 'name' => 'AccessPointId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the access point to which the VBR belongs.'."\n" + ."\n" + .'You can call the [DescribeAccessPoints](~~36062~~) operation to obtain the IDs of access points.'."\n" + ."\n" + .'> This parameter is required if the VBR is connected to an Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ap-cn-hangzhou-yh-ts-A', + ], + ], + [ + 'name' => 'OppositeAccessPointId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the access point to which the peer belongs.'."\n" + ."\n" + .'> This parameter is required if the peer router interface is associated with a VBR. The specified value cannot be changed after the router interface is created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ap-cn-shanghai-nt-aligroup-C', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the router interface.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abcabc', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the router interface.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'abc', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription duration. Valid values:'."\n" + ."\n" + .'* Valid values when PricingCycle is set to Month: **1 to 9**.'."\n" + .'* Valid values when PricingCycle is set to Year: **1 to 3**.'."\n" + ."\n" + .'> This parameter is required if **InstanceChargeType** is set to **PrePaid**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the router interface. Valid values:'."\n" + ."\n" + .'* **PrePaid**: subscription'."\n" + .'* **PostPaid**: pay-as-you-go'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payment. Valid values:'."\n" + ."\n" + .'* **false** (default): The automatic payment is disabled. If you select this option, you must go to the Order Center to complete the payment after an order is generated.'."\n" + .'* **true**: The automatic payment is enabled. Payments are automatically complete after an order is generated.'."\n" + ."\n" + .'> This parameter is required if **InstanceChargeType** is set to **PrePaid**.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PricingCycle', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing cycle of the subscription. Valid values:'."\n" + ."\n" + .'* **Month** (default)'."\n" + .'* **Year**'."\n" + ."\n" + .'> This parameter is required if **InstanceChargeType** is set to **PrePaid**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'FastLinkMode', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'Specifies whether the VBR that is created in the Fast Link mode is uplinked to the router interface. The Fast Link mode helps automatically connect router interfaces that are created for the VBR and its peer VPC. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* This parameter takes effect only if **RouterType** is set to **VBR** and **OppositeRouterType** is set to **VRouter**.'."\n" + ."\n" + .'* If **FastLinkMode** is set to **true**, **Role** must be set to **InitiatingSide**. In this case, **AccessPointId**, **OppositeRouterType**, **OpppsiteRouterId**, and **OppositeInterfaceOwnerId** are required.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n" + ."\n" + .'For more information about resource group, see [What is Resource Management?](~~94475~~)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag to add to the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key to add to the resource. You must enter at least one tag key. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be at most 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The tag value to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '079874CD-AEC1-43E6-AC03-ADD96B6E4907', + ], + 'OrderId' => [ + 'description' => 'The order number. This parameter is returned if InstanceChargeType is set to PrePaid.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '202008594930117', + ], + 'RouterInterfaceId' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'example' => 'ri-2ze7fbuohm****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPrice.NotFound', + 'errorMessage' => 'Pricing plan result not found.', + ], + [ + 'errorCode' => 'InvalidAliuid', + 'errorMessage' => 'Invalid Aliuid.', + ], + [ + 'errorCode' => 'InvalidRole.ValueNotSupported', + 'errorMessage' => 'The specified Role is not valid.', + ], + [ + 'errorCode' => 'InvalidSpec.ValudNotSupported', + 'errorMessage' => 'The specified Spec is not supported.', + ], + [ + 'errorCode' => 'InvalidRouterType.ValueNotSupported', + 'errorMessage' => 'The specified RouterType is not valid.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified "Name" is not valid.', + ], + [ + 'errorCode' => 'Forbidden.BillsOutstanding', + 'errorMessage' => 'You cannot create more RouterInterface because you have bills outstanding.', + ], + [ + 'errorCode' => 'LimitationExceed.InterfaceNumberOnRouter', + 'errorMessage' => 'Total number of RouterInterfaces on a Router exceeded.', + ], + [ + 'errorCode' => 'Forbidden.NotInRouterInterfaceCreateWhitelist', + 'errorMessage' => 'Not in router interface create whitelist.', + ], + [ + 'errorCode' => 'RI_CREATE_ONE_LIMIT_BY_SYNC', + 'errorMessage' => 'Create ri only one limit by sync.', + ], + [ + 'errorCode' => 'InvalidAccessPoint.ValueNotAllowed', + 'errorMessage' => 'The non-vbr router interface cannot have access point configured.', + ], + [ + 'errorCode' => 'InvalidParam.NotFound', + 'errorMessage' => 'Parameter must not be null,uid, bid,regionNo, remoteRegionNo, routerId or accessPointId', + ], + [ + 'errorCode' => 'InvalidAccessPoint.NotMatch', + 'errorMessage' => 'The accessPoint id is not matched', + ], + [ + 'errorCode' => 'InvalidAccessPoint.NotExist', + 'errorMessage' => 'The accessPoint not exit', + ], + [ + 'errorCode' => 'INVAID_VBR_STATUS', + 'errorMessage' => 'VBR status must be active', + ], + [ + 'errorCode' => 'IncorrectStatus.CenStatus', + 'errorMessage' => 'Cen status must not be middle status.', + ], + [ + 'errorCode' => 'Forbidden.AcceptRoleNotSupportPrePay', + 'errorMessage' => 'Acception side ri not support chargetype for prepaid.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceSpec.Malformed', + 'errorMessage' => 'Specified RouterInterface spec is not valid.', + ], + [ + 'errorCode' => 'VpcSubnet.NotFound', + 'errorMessage' => 'Vpc subnet not exist.', + ], + [ + 'errorCode' => 'IllegalParam.HealthcheckIp', + 'errorMessage' => 'Healthcheck ip cannot equal with instance ip.', + ], + [ + 'errorCode' => 'OperationFailed.HcForInvalidRiType', + 'errorMessage' => 'Healthchecksourceip and healthchecktargetip is only valid for vr ri that is connected to vbr.', + ], + [ + 'errorCode' => 'OperationFailed.SyncOrderToSub', + 'errorMessage' => 'SyncOrderToSub error.', + ], + [ + 'errorCode' => 'IllegalParam.CrossBorderBandwidth', + 'errorMessage' => 'CrossBorder bandwidth error.', + ], + [ + 'errorCode' => 'IllegalParam.VRouterType', + 'errorMessage' => 'The VRouterType is not supported.', + ], + [ + 'errorCode' => 'IllegalParam.Spec', + 'errorMessage' => 'The spec is illegal.', + ], + [ + 'errorCode' => 'Forbidden.CrossBorder', + 'errorMessage' => 'User not authorized to create cross border routerInterface.', + ], + [ + 'errorCode' => 'InvalidRouterId.NotFound', + 'errorMessage' => 'Param is not valid,this user does not have this router or aliuid bid regionNo and routerId must have something wrong.', + ], + [ + 'errorCode' => 'InvalidCommodity.NotFound', + 'errorMessage' => 'Commodity is not exist.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceChargeType.Malformed', + 'errorMessage' => 'Specified RouterInterface ChargeType is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.RegionId', + 'errorMessage' => 'The specified regionId is illegal.', + ], + [ + 'errorCode' => 'PAY.MAYI_WITHHOLDING_AGREEMENT_ILLEGAL', + 'errorMessage' => 'User withhoding argeement is illegal.', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'RiPerUser quota exceeded', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The regionId provided does not exist in ec region list.', + ], + [ + 'errorCode' => 'ResourceNotInResourceGroup', + 'errorMessage' => 'The specified resource is not in the specified ResourceGroup.', + ], + [ + 'errorCode' => 'HaveConnectionBetweenRouters', + 'errorMessage' => 'Have connection between routers', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified "Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidBandwidth.NotEnough', + 'errorMessage' => 'Bandwidth not enough.', + ], + [ + 'errorCode' => 'ForbiddenAction', + 'errorMessage' => 'The user does not support this action.', + ], + [ + 'errorCode' => 'OperationFailed.NotSupportIPv6', + 'errorMessage' => 'Router interface not support IPv6.', + ], + [ + 'errorCode' => 'InvalidParam.AvailableZoneId', + 'errorMessage' => 'The specified AvailableZoneId did not retrieve the corresponding cluster IP address.', + ], + [ + 'errorCode' => 'OperationFailed.NoAvailableAmount', + 'errorMessage' => 'The available amount of your account is less than 0, please recharge before attempting to purchase.', + ], + [ + 'errorCode' => 'OperationFailed.OperationLocked', + 'errorMessage' => 'Operation failed because OperationLocked.', + ], + [ + 'errorCode' => 'OperationFailed.InvalidEcGrant', + 'errorMessage' => 'The VBR have no grant to create EC.', + ], + [ + 'errorCode' => 'OperationFailed.CannotConnectOtherOwnerInstance', + 'errorMessage' => 'Can not connect with other owner VPC or CEN.', + ], + [ + 'errorCode' => 'InvalidParams.NotNull', + 'errorMessage' => 'params must not null.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The regionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRouterId.NotFound', + 'errorMessage' => 'The specified RouterId does not exist in our recored.', + ], + [ + 'errorCode' => 'InvalidRouterId.AttacedToCEN', + 'errorMessage' => 'Can not create ri when attaced to CEN.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"079874CD-AEC1-43E6-AC03-ADD96B6E4907\\",\\n \\"OrderId\\": 20210101123456,\\n \\"RouterInterfaceId\\": \\"ri-2ze7fbuohm****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 079874CD-AEC1-43E6-AC03-ADD96B6E4907\\n 20210101123456\\n ri-2ze7fbuohm****\\n","errorExample":""}]', + 'title' => 'CreateRouterInterface', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* You can create only one pair of interfaces to be connected between two routers.'."\n" + .'* You can create a maximum of five router interfaces for a router.'."\n" + .'* If your Alibaba Cloud account has a router interface with overdue payments, you cannot create new router interfaces.'."\n" + .'* Each destination CIDR block of route entries in the same route table must be unique.'."\n" + .'* A virtual border router (VBR) can serve only as a requester. The VBR must be in the Activated state.'."\n" + .'* You can call this operation to create subscription and pay-as-you-go router interfaces.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteRouterInterface' => [ + 'summary' => 'Deletes a router interface.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'high', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the router interface is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'RouterInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ri-2zeo3xzyf38r4urz****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstance.StatusError', + 'errorMessage' => 'The router instance status error.', + ], + [ + 'errorCode' => 'OperationFailed.OperationLocked', + 'errorMessage' => 'Operation failed because OperationLocked.', + ], + [ + 'errorCode' => 'RouterInterfaceReferredByRouteEntry', + 'errorMessage' => 'Router interface referred by route entry.', + ], + [ + 'errorCode' => 'ReferredByRouteEntry.RouterInterface', + 'errorMessage' => 'Router interface referred by route entry.', + ], + [ + 'errorCode' => 'InvalidRouteTable.NotFound', + 'errorMessage' => 'The specified routetable does not exist.', + ], + [ + 'errorCode' => 'Forbbiden.InvaildOwner', + 'errorMessage' => 'Incorrect RouterInterface owner.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'DeleteRouterInterface', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* You can delete only a router interface that is in the **Idle** or **Inactive** state.'."\n" + .'* Before you delete a router interface, you must delete all custom route entries destined for the router interface.'."\n", + ], + 'DeleteExpressConnect' => [ + 'summary' => 'Deletes a Express Connect instance, including the initiator and acceptor.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the Express Connect instance is deployed. Call the [DescribeRegion](https://www.alibabacloud.com/help/vpc/developer-reference/api-vpc-2016-04-28-describeregions?spm=a2c63.p38356.0.i2) operation to query the region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'RouterInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Express Connect instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ri-119mfjz****', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to delete the route entries associated with the Express Connect instance.'."\n" + ."\n" + .'* **true**: forcefully deletes the snapshot'."\n" + .'* **false**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'Use the client to generate the value, but you must ensure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-00****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '980960B0-2969-40BF-8542-EBB34FD358AB', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectStatus.RouterInterface', + 'errorMessage' => 'This openeration would not be allowed because the status of this RouterInterface is not correct.', + ], + [ + 'errorCode' => 'DependencyViolation.RouterInterfaceReferedByRouteEntry', + 'errorMessage' => 'RouterInterface cannot be deleted when it is refered by a route table entry as next hop.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceChargeType.Malformed', + 'errorMessage' => 'The prepaid routerinterface can not delete.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceOppositeChargeType.Malformed', + 'errorMessage' => 'Opposite routerinterface is prepaid and can not delete.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'Vpc incorrect status.', + ], + [ + 'errorCode' => 'OperationFailed.OperationLocked', + 'errorMessage' => 'Operation failed because OperationLocked.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The routerInterface is not exist.', + ], + [ + 'errorCode' => 'IncorrectStatus.VSwitchOrRouteEntry', + 'errorMessage' => 'vpc has no stable subnet or route entry.', + ], + [ + 'errorCode' => 'DependencyViolation.ClassicLinkEcsRouteEntry', + 'errorMessage' => 'RouterInterface cannot be deleted when it is used by cross account classicLink.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'Internal system error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"980960B0-2969-40BF-8542-EBB34FD358AB\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n980960B0-2969-40BF-8542-EBB34FD358AB\\r\\n","errorExample":""}]', + 'title' => 'DeleteExpressConnect', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyRouterInterfaceAttribute' => [ + 'summary' => 'Modifies the configuration of a router interface.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the router interface.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'RouterInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ri-2zeo3xzyf38r4urz****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the router interface.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TEST', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the router interface.'."\n" + ."\n" + .'The value must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'The description of the router interface.', + ], + ], + [ + 'name' => 'OppositeInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the peer router interface.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ri-2zeo3xzyf38r4urz****', + ], + ], + [ + 'name' => 'OppositeRouterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the peer router.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vrt-bp1jcg5cmxjbl9xgc****', + ], + ], + [ + 'name' => 'OppositeRouterType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of router to which the peer router interface belongs. Valid values:'."\n" + ."\n" + .'* **VRouter**'."\n" + .'* **VBR** (default)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VBR', + ], + ], + [ + 'name' => 'OppositeInterfaceOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the peer router interface belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '28768383240243****', + ], + ], + [ + 'name' => 'HealthCheckSourceIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IP address that is used to perform health checks. The source IP address must be an idle IP address of the local virtual private cloud (VPC).'."\n" + ."\n" + .'> You can set this parameter when an Express Connect circuit is used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.62.XX.XX', + ], + ], + [ + 'name' => 'HealthCheckTargetIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IP address that is used to perform health checks.'."\n" + ."\n" + .'> This parameter is required when **HealthCheckSourceIp** is specified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '116.62.XX.XX', + ], + ], + [ + 'name' => 'HcThreshold', + 'in' => 'query', + 'schema' => [ + 'description' => 'The healthy threshold. Unit: packets. We recommend that you set the value to **8**. This value specifies the number of probe packets that are sent during a health check.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + ], + [ + 'name' => 'HcRate', + 'in' => 'query', + 'schema' => [ + 'description' => 'The rate of health checks. Unit: milliseconds. The recommended value is **2000**. This value specifies the interval at which probe packets are sent during a health check.'."\n" + ."\n" + .'In this example, **HcThreshold** is set to **8** and **HcRate** is set to **2000**. In this example, probe packets are sent from **HealthCheckSourceIp** (source address) to **HealthCheckTargetIp** (destination address) every 2,000 seconds. If no response is returned for eight consecutive times, the health check fails.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + ], + [ + 'name' => 'DeleteHealthCheckIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to delete the health check IP addresses configured on the router interface. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'This RouterInterface is financiel locked because of bills outstanding.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The attribute name is illegal.', + ], + [ + 'errorCode' => 'InvalidOppositeRouterType.ValueNotSupported', + 'errorMessage' => 'The specified OppositeRouterType is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The Description is illegal.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'The Router instance owner error', + ], + [ + 'errorCode' => 'LinkRole.NotSupport', + 'errorMessage' => 'This linkrole is not supported', + ], + [ + 'errorCode' => 'Forbbiden.ModifyIdAndType', + 'errorMessage' => 'Opposite is VBR, cannot modify the ID and type', + ], + [ + 'errorCode' => 'InvalidParam.ModifyRouterInterface', + 'errorMessage' => 'Modify routerinterface param invalid', + ], + [ + 'errorCode' => 'INSTANCE_IN_PROCESSIONG', + 'errorMessage' => 'Instance is in processing,please wait and try again', + ], + [ + 'errorCode' => 'IllegalParam.HcThreshold', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.HcRate', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidHealthCheckIP.Malformd', + 'errorMessage' => 'Healthcheck sourceip or targetip is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.HcSourceIp', + 'errorMessage' => 'The specified healthCheck Ip is not valid.', + ], + [ + 'errorCode' => 'OperationFailed.OperationLocked', + 'errorMessage' => 'Operation failed because OperationLocked.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouterInterface', + 'errorMessage' => 'This openeration would not be allowed because status of this RouterInterface is not correct.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The specified RouterInterfaceId does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'ModifyRouterInterfaceAttribute', + ], + 'ModifyRouterInterfaceSpec' => [ + 'summary' => 'Modifies the specification of a router interface.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the router interface is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouterInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ri-2zeo3xzyf38r4urzd****', + ], + ], + [ + 'name' => 'Spec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The specification of the router interface. Valid specifications and bandwidth values:'."\n" + ."\n" + .'* **Mini.2**: 2 Mbit/s'."\n" + .'* **Mini.5**: 5 Mbit/s'."\n" + .'* **Small.1**: 10 Mbit/s'."\n" + .'* **Small.2**: 20 Mbit/s'."\n" + .'* **Small.5**: 50 Mbit/s'."\n" + .'* **Middle.1**: 100 Mbit/s'."\n" + .'* **Middle.2**: 200 Mbit/s'."\n" + .'* **Middle.5**: 500 Mbit/s'."\n" + .'* **Large.1**: 1,000 Mbit/s'."\n" + .'* **Large.2**: 2,000 Mbit/s'."\n" + .'* **Large.5**: 5,000 Mbit/s'."\n" + .'* **Xlarge.1**: 10,000 Mbit/s'."\n" + ."\n" + .'> When **Role** is set to **AcceptingSide**, set **Spec** to **Negative**.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'Small.1', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The specification of the router interface.'."\n", + 'type' => 'object', + 'properties' => [ + 'Spec' => [ + 'description' => 'The specification of the router interface. Valid values:'."\n" + ."\n" + .'* **Mini.2**: 2 Mbit/s'."\n" + .'* **Mini.5**: 5 Mbit/s'."\n" + .'* **Small.1**: 10 Mbit/s'."\n" + .'* **Small.2**: 20 Mbit/s'."\n" + .'* **Small.5**: 50 Mbit/s'."\n" + .'* **Middle.1**: 100 Mbit/s'."\n" + .'* **Middle.2**: 200 Mbit/s'."\n" + .'* **Middle.5**: 500 Mbit/s'."\n" + .'* **Large.1**: 1,000 Mbit/s'."\n" + .'* **Large.2**: 2,000 Mbit/s'."\n" + .'* **Large.5**: 5,000 Mbit/s'."\n" + .'* **Xlarge.1**: 10,000 Mbit/s'."\n", + 'type' => 'string', + 'example' => 'Small.1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'RouterInterface can not be operated by this action when it?s FinancialLocked.', + ], + [ + 'errorCode' => 'InvalidParam.NotFound', + 'errorMessage' => 'Parameter must not be null,uid, bid,regionNo, remoteRegionNo or routerId', + ], + [ + 'errorCode' => 'InvalidOppositeRegionId.NotFound', + 'errorMessage' => 'The OppositeRegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceOwner.Error', + 'errorMessage' => 'The router instance owner error.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceSpec.Malformed', + 'errorMessage' => 'Specified RouterInterface spec is not valid.', + ], + [ + 'errorCode' => 'IllegalParam.chargeType', + 'errorMessage' => 'RouterInterface chargeType different.', + ], + [ + 'errorCode' => 'ResourceQueryError', + 'errorMessage' => 'The specified resource is queried error.', + ], + [ + 'errorCode' => ' InvalidSpec.ValueNotSupported', + 'errorMessage' => 'The specified Spec is not supported.', + ], + [ + 'errorCode' => 'InvalidSpec.ValueNotSupported', + 'errorMessage' => 'The specified Spec is not supported.', + ], + [ + 'errorCode' => 'InvalidInstance.StatusError', + 'errorMessage' => 'The router instance status error.', + ], + [ + 'errorCode' => 'InvalidOpposite.NotFound', + 'errorMessage' => 'The opposite does not exist.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The specified RouterInterfaceId does not exist in our record.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Spec\\": \\"Small.1\\",\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n Small.1\\n 4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":""}]', + 'title' => 'ModifyRouterInterfaceSpec', + 'description' => 'After you call this operation, the router interface enters the **Activating** state. After the router interface is activated, the router interface enters the **Active** state.'."\n" + ."\n" + .'> You cannot modify the specification of a router interface that has overdue payments.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeRouterInterfaces' => [ + 'summary' => 'Queries router interfaces in a specified region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the router interface.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => ' cn-hangzhou', + ], + ], + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether renewal data is included. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The filter information.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The filter conditions. You can specify up to five filter conditions. The following filter conditions are supported:'."\n" + ."\n" + .'* **RouterInterfaceId**: the ID of the router interface.'."\n" + .'* **RouterId**: the ID of the router.'."\n" + .'* **RouterType**: the router type. Valid values: **VRouter** and **VBR**.'."\n" + .'* **RouterInterfaceOwnerId**: the ID of the Alibaba Cloud account to which the router interface belongs.'."\n" + .'* **OppositeInterfaceId**: the ID of the peer router interface.'."\n" + .'* **OppositeRouterType**: the type of the peer router interface. Valid values: **VRouter** and **VBR**.'."\n" + .'* **OppositeRouterId**: the ID of the peer router.'."\n" + .'* **OppositeInterfaceOwnerId**: the ID of the Alibaba Cloud account to which the peer router interface belongs.'."\n" + .'* **Status**: the status of the router interface.'."\n" + .'* **Name**: the name of the router interface.'."\n" + ."\n" + .'> The logical operator among multiple values in a filter condition is OR. In this case, the filter condition is met if one of the values is matched. The logical operator among filter conditions is AND. Only routers that meet all the filter conditions are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Filter.1.Status', + ], + 'Value' => [ + 'description' => 'Specifies the value in the filter condition based on the key. You can specify multiple filter values for one key. The logical operator among filter values is OR. If one filter value is matched, the filter condition is matched.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Specifies the value in the filter condition based on the key. You can specify multiple filter values for one key. The logical operator among filter values is OR. If one filter value is matched, the filter condition is matched.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + 'required' => false, + 'example' => 'Filter.1.Active 1', + 'maxItems' => 5, + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 5, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'Resource Group ID.'."\n" + ."\n" + .'For more information about resource groups, please refer to [What is a Resource Group?](~~94475~~)', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the resource tag. At least one tag key must be entered, and a maximum of 20 tag keys are supported. If this value needs to be passed in, it cannot be an empty string.'."\n" + ."\n" + .'A tag key can support up to 128 characters, cannot start with \'aliyun\' or \'acs:\', and cannot contain \'http://\' or \'https://\'.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the resource tag. A maximum of 20 tag values can be entered. If this value needs to be passed in, an empty string can be entered.'."\n" + ."\n" + .'A maximum of 128 characters are supported, it cannot start with \'aliyun\' or \'acs:\', and it cannot contain \'http://\' or \'https://\'.', + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C7F6FCBD-F9CC-4501-8EF3-CDC9577CAE45', + ], + 'PageNumber' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RouterInterfaceSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RouterInterfaceType' => [ + 'description' => 'The details of the router interface.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ReservationActiveTime' => [ + 'description' => 'The time when the renewal takes effect.'."\n" + ."\n" + .'The time follows the ISO8601 standard in the `YYYY-MM-DDThh:mmZ` format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-03-11T16:00:00Z', + ], + 'HealthCheckTargetIp' => [ + 'description' => 'The destination IP address that is used for the health check.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'Status' => [ + 'description' => 'The status of the router interface.'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'CreationTime' => [ + 'description' => 'The time when the route table was created.'."\n" + ."\n" + .'The time follows the ISO8601 standard in the `YYYY-MM-DDThh:mmZ` format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'ReservationOrderType' => [ + 'description' => 'The type of the renewal order. Valid values:'."\n", + 'type' => 'string', + 'example' => 'RENEWCHANGE', + ], + 'OppositeInterfaceId' => [ + 'description' => 'The ID of the peer router interface.'."\n", + 'type' => 'string', + 'example' => 'ri-bp1itx13bwe6f2wfh****', + ], + 'Spec' => [ + 'description' => 'The specification of the router interface.'."\n", + 'type' => 'string', + 'example' => 'Large', + ], + 'ChargeType' => [ + 'description' => 'The billing method.'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'RouterInterfaceId' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'example' => 'ri-2zenfgfpyu3v93koa****', + ], + 'HcThreshold' => [ + 'description' => 'The health check threshold.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'OppositeRouterType' => [ + 'description' => 'The type of the router to which the peer router interface belongs.'."\n", + 'type' => 'string', + 'example' => 'VRouter', + ], + 'VpcInstanceId' => [ + 'description' => 'The ID of the local virtual private cloud (VPC) in the peering connection.'."\n", + 'type' => 'string', + 'example' => 'vpc-2ze3tq4uxhysg717x****', + ], + 'OppositeInterfaceOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the peer router interface belongs.'."\n", + 'type' => 'string', + 'example' => '271598332402530847', + ], + 'OppositeVpcInstanceId' => [ + 'description' => 'The ID of the peer VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1qpo0kug3a20qqe****', + ], + 'ReservationInternetChargeType' => [ + 'description' => 'The metering method that is used after the renewal takes effect. Valid values:'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'CrossBorder' => [ + 'description' => 'Indicates whether the connection is a cross-border connection.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Bandwidth' => [ + 'description' => 'The bandwidth of the router interface. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'Description' => [ + 'description' => 'The description of the router interface.'."\n", + 'type' => 'string', + 'example' => 'The description of the router interface.', + ], + 'HcRate' => [ + 'description' => 'The rate of heath checks.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'ReservationBandwidth' => [ + 'description' => 'The maximum bandwidth after the renewal takes effect. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'Name' => [ + 'description' => 'The custom name.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'OppositeRouterId' => [ + 'description' => 'The ID of the router to which the peer router interface belongs.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1d3bxtdv68tfd7g****', + ], + 'OppositeInterfaceSpec' => [ + 'description' => 'The specification of the peer router interface.'."\n", + 'type' => 'string', + 'example' => 'Large', + ], + 'RouterId' => [ + 'description' => 'The ID of the router to which the route entry belongs.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1d3bxtdv68tfd7g****', + ], + 'OppositeInterfaceBusinessStatus' => [ + 'description' => 'The service status of the peer router interface.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'ConnectedTime' => [ + 'description' => 'The time when the connection was established.'."\n" + ."\n" + .'The time follows the ISO8601 standard in the `YYYY-MM-DDThh:mmZ` format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'HealthCheckSourceIp' => [ + 'description' => 'The source IP address that is used for the health check.'."\n", + 'type' => 'string', + 'example' => '116.62.XX.XX', + ], + 'OppositeInterfaceStatus' => [ + 'description' => 'The status of the peer router interface.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'EndTime' => [ + 'description' => 'The end of the time range during which data was queried.'."\n" + ."\n" + .'The time follows the ISO8601 standard in the `YYYY-MM-DDThh:mmZ` format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-06-08T12:20:55', + ], + 'OppositeRegionId' => [ + 'description' => 'The region ID of the peer router interface.'."\n", + 'type' => 'string', + 'example' => 'cn-shanghai', + ], + 'OppositeAccessPointId' => [ + 'description' => 'The ID of the peer access point.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-shanghaiSZ-****', + ], + 'BusinessStatus' => [ + 'description' => 'The service status of the router interface. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'OppositeBandwidth' => [ + 'description' => 'The maximum bandwidth of the peer router interface. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '12', + ], + 'RouterType' => [ + 'description' => 'The type of the router to which the route table belongs. Valid values:'."\n" + ."\n" + .'* **VRouter**'."\n" + .'* **VBR**'."\n", + 'type' => 'string', + 'example' => 'VRouter', + ], + 'Role' => [ + 'description' => 'Indicates whether the router interface is the initiator or acceptor of the peering connection.'."\n", + 'type' => 'string', + 'example' => 'InitiatingSide', + ], + 'HasReservationData' => [ + 'description' => 'Indicates whether renewal data is included.'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'AccessPointId' => [ + 'description' => 'The ID of the access point.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-shanghaiSZ-****', + ], + 'Ipv6Status' => [ + 'description' => 'Indicates whether protection against malicious IPv6 traffic is enabled. Valid values:'."\n" + ."\n" + .'* **on**'."\n" + .'* **off**'."\n" + .'* **unsupport**'."\n", + 'type' => 'string', + 'example' => 'on', + ], + 'FastLinkMode' => [ + 'description' => 'Indicates whether the VBR that is created in the Fast Link mode is uplinked to the router interface. The Fast Link mode helps automatically connect router interfaces that are created for the VBR and its peer VPC. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ResourceGroupId' => [ + 'description' => 'Resource Group ID.'."\n" + ."\n" + .'For more information about resource groups, please refer to [What is a Resource Group?](~~94475~~)', + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tags' => [ + 'description' => 'The tags of the resource.', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the resource tag. At least one tag key must be entered, and a maximum of 20 tag keys are supported. If this value needs to be passed in, it cannot be an empty string.'."\n" + ."\n" + .'A tag key can support up to 128 characters, cannot start with \'aliyun\' or \'acs:\', and cannot contain \'http://\' or \'https://\'.', + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the resource tag. A maximum of 20 tag values can be entered. If this value needs to be passed in, an empty string can be entered.'."\n" + ."\n" + .'A maximum of 128 characters are supported, it cannot start with \'aliyun\' or \'acs:\', and it cannot contain \'http://\' or \'https://\'.', + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParam.NotNull', + 'errorMessage' => 'The parameter must not be null.', + ], + [ + 'errorCode' => 'EndPoint.Empty', + 'errorMessage' => 'the rc endpoint is empty.', + ], + [ + 'errorCode' => 'InvalidConnectionType.MalFormed', + 'errorMessage' => 'Connection type must be vpc2vpc or vbr2vpc.', + ], + [ + 'errorCode' => 'InvalidProductForm.MalFormed', + 'errorMessage' => 'Product form must be routerinterface or expressconnect.', + ], + [ + 'errorCode' => 'InvalidRole.Malformed', + 'errorMessage' => 'role must be InitiatingSide or AcceptingSide.', + ], + [ + 'errorCode' => 'IllegalParam.AliUid', + 'errorMessage' => 'Specified value of aliuid invalid.', + ], + [ + 'errorCode' => 'Parameter.Illegal', + 'errorMessage' => 'The parameter is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidFilterKey.ValueNotSupported', + 'errorMessage' => 'Specified filter key is not supported: Filter.X.key', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C7F6FCBD-F9CC-4501-8EF3-CDC9577CAE45\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 1,\\n \\"RouterInterfaceSet\\": {\\n \\"RouterInterfaceType\\": [\\n {\\n \\"ReservationActiveTime\\": \\"2021-03-11T16:00:00Z\\",\\n \\"HealthCheckTargetIp\\": \\"116.62.XX.XX\\",\\n \\"Status\\": \\"active\\",\\n \\"CreationTime\\": \\"2021-06-08T12:20:55\\",\\n \\"ReservationOrderType\\": \\"RENEWCHANGE\\",\\n \\"OppositeInterfaceId\\": \\"ri-bp1itx13bwe6f2wfh****\\",\\n \\"Spec\\": \\"Large\\",\\n \\"ChargeType\\": \\"PayByTraffic\\",\\n \\"RouterInterfaceId\\": \\"ri-2zenfgfpyu3v93koa****\\",\\n \\"HcThreshold\\": 2,\\n \\"OppositeRouterType\\": \\"VRouter\\",\\n \\"VpcInstanceId\\": \\"vpc-2ze3tq4uxhysg717x****\\",\\n \\"OppositeInterfaceOwnerId\\": \\"271598332402530847\\",\\n \\"OppositeVpcInstanceId\\": \\"vpc-bp1qpo0kug3a20qqe****\\",\\n \\"ReservationInternetChargeType\\": \\"PayByBandwidth\\",\\n \\"CrossBorder\\": false,\\n \\"Bandwidth\\": 10,\\n \\"Description\\": \\"路由表接口描述\\",\\n \\"HcRate\\": 1,\\n \\"ReservationBandwidth\\": \\"10\\",\\n \\"Name\\": \\"test\\",\\n \\"OppositeRouterId\\": \\"vrt-bp1d3bxtdv68tfd7g****\\",\\n \\"OppositeInterfaceSpec\\": \\"Large\\",\\n \\"RouterId\\": \\"vrt-bp1d3bxtdv68tfd7g****\\",\\n \\"OppositeInterfaceBusinessStatus\\": \\"Normal\\",\\n \\"ConnectedTime\\": \\"2021-06-08T12:20:55\\",\\n \\"HealthCheckSourceIp\\": \\"116.62.XX.XX\\",\\n \\"OppositeInterfaceStatus\\": \\"Normal\\",\\n \\"EndTime\\": \\"2021-06-08T12:20:55\\",\\n \\"OppositeRegionId\\": \\"cn-shanghai\\",\\n \\"OppositeAccessPointId\\": \\"ap-cn-shanghaiSZ-****\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"OppositeBandwidth\\": 12,\\n \\"RouterType\\": \\"VRouter\\",\\n \\"Role\\": \\"InitiatingSide\\",\\n \\"HasReservationData\\": \\"false\\",\\n \\"AccessPointId\\": \\"ap-cn-shanghaiSZ-****\\",\\n \\"Ipv6Status\\": \\"on\\",\\n \\"FastLinkMode\\": false,\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\",\\n \\"Tags\\": {\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n C7F6FCBD-F9CC-4501-8EF3-CDC9577CAE45\\n 1\\n 10\\n 1\\n \\n 2021-03-11T16:00:00Z\\n 116.62.XX.XX\\n active\\n 2021-06-08T12:20:55\\n RENEWCHANGE\\n ri-bp1itx13bwe6f2wfh****\\n Large\\n PayByTraffic\\n ri-2zenfgfpyu3v93koa****\\n 2\\n VRouter\\n vpc-2ze3tq4uxhysg717x****\\n 271598332402530847\\n vpc-bp1qpo0kug3a20qqe****\\n PayByBandwidth\\n false\\n 10\\n 路由表接口描述\\n 1\\n 10\\n test\\n vrt-bp1d3bxtdv68tfd7g****\\n Large\\n vrt-bp1d3bxtdv68tfd7g****\\n Normal\\n 2021-06-08T12:20:55\\n 116.62.XX.XX\\n Normal\\n 2021-06-08T12:20:55\\n cn-shanghai\\n ap-cn-shanghaiSZ-****\\n Normal\\n 12\\n VRouter\\n InitiatingSide\\n false\\n ap-cn-shanghaiSZ-****\\n on\\n false\\n rg-acfmxazb4ph6aiy****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeRouterInterfaces', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeEcGrantRelation' => [ + 'summary' => 'Queries whether permissions on a virtual private cloud (VPC) are granted to a virtual border router (VBR).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of instance. Valid values:'."\n" + ."\n" + .'* **VBR**: queries the permissions that are granted to a VBR.'."\n" + .'* **VPC**: queries the permissions that are granted from a VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'VBR', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n" + ."\n" + .'* If you set **InstanceType** to **VBR**, specify a VBR ID.'."\n" + .'* If you set **InstanceType** to **VPC**, specify a VPC ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vbr-bp12mw1f8k3jgygk9****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: **50**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'VbrRegionNo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the instance is deployed.'."\n" + ."\n" + .'* If **InstanceType** is set to **VBR**, this parameter is required.'."\n" + .'* If **InstanceType** is set to **VPC**, you can ignore this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E6E90F6B-2B41-5AAF-ABEB-236ADBAAD91D', + ], + 'EcGrantRelations' => [ + 'description' => 'The query results.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'VbrOwnerUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1210123456123456', + ], + 'VbrInstanceId' => [ + 'description' => 'The ID of the VBR.'."\n", + 'type' => 'string', + 'example' => 'vbr-m5ex0xf63xk8s5bob****', + ], + 'InstanceId' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1brjuegjc88v3u9****', + ], + 'AliUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VPC belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1250123456123456', + ], + 'RegionNo' => [ + 'description' => 'The ID of the region where the VPC is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Status' => [ + 'description' => 'The query result. Valid values:'."\n" + ."\n" + .'* **Created**: The VBR has permissions on the VPC.'."\n" + .'* **Deleted**: The VBR does not have permissions on the VPC.'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'InstanceName' => [ + 'description' => 'The name of the VPC.'."\n", + 'type' => 'string', + 'example' => 'VPCname', + ], + 'InstanceRouterId' => [ + 'description' => 'The ID of the vRouter.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp1i0yzgjd8ra05ec****', + ], + 'VbrRegionNo' => [ + 'description' => 'The ID of the region where the VBR is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'GmtCreate' => [ + 'description' => 'The time when permissions on the VPC were granted to the VBR.'."\n", + 'type' => 'string', + 'example' => '2022-09-02T11:46Z', + ], + 'GrantType' => [ + 'description' => 'The VBRs that have permissions on the VPC. Valid values:'."\n" + ."\n" + .'* **All**: VBRs that reside in the specified region and belong to the specified Alibaba Cloud account all have permissions on the VPC.'."\n" + .'* **Specify**: Only the specified VBR has permissions on the VPC.'."\n", + 'type' => 'string', + 'example' => 'All', + ], + ], + ], + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'Count' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Page' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParam.NotNull', + 'errorMessage' => 'The parameter must not be null.', + ], + [ + 'errorCode' => 'Parameter.Illegal', + 'errorMessage' => 'The parameter is illegal.', + ], + [ + 'errorCode' => 'Instance.StatusError', + 'errorMessage' => 'The status of instance error. ', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The regionId provided does not exist in ec region list.', + ], + ], + 404 => [ + [ + 'errorCode' => 'VRouterId.NotFound', + 'errorMessage' => 'The VRouter not found.', + ], + [ + 'errorCode' => 'Instance.NotExist', + 'errorMessage' => 'The instance not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E6E90F6B-2B41-5AAF-ABEB-236ADBAAD91D\\",\\n \\"EcGrantRelations\\": [\\n {\\n \\"VbrOwnerUid\\": 1210123456123456,\\n \\"VbrInstanceId\\": \\"vbr-m5ex0xf63xk8s5bob****\\",\\n \\"InstanceId\\": \\"vpc-bp1brjuegjc88v3u9****\\",\\n \\"AliUid\\": 1250123456123456,\\n \\"RegionNo\\": \\"cn-hangzhou\\",\\n \\"Status\\": \\"Created\\",\\n \\"InstanceName\\": \\"VPCname\\",\\n \\"InstanceRouterId\\": \\"vrt-bp1i0yzgjd8ra05ec****\\",\\n \\"VbrRegionNo\\": \\"cn-hangzhou\\",\\n \\"GmtCreate\\": \\"2022-09-02T11:46Z\\",\\n \\"GrantType\\": \\"All\\"\\n }\\n ],\\n \\"TotalCount\\": 10,\\n \\"Count\\": 1,\\n \\"Page\\": 1,\\n \\"PageSize\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n E6E90F6B-2B41-5AAF-ABEB-236ADBAAD91D\\n \\n 1210123456123456\\n vbr-m5ex0xf63xk8s5bob****\\n vpc-bp1brjuegjc88v3u9****\\n 1250123456123456\\n cn-hangzhou\\n Created\\n VPCname\\n vrt-bp1i0yzgjd8ra05ec****\\n cn-hangzhou\\n 2022-09-02T11:46Z\\n All\\n \\n 10\\n 1\\n 1\\n 10\\n","errorExample":""}]', + 'title' => 'DescribeEcGrantRelation', + ], + 'DescribeRouterInterfaceAttribute' => [ + 'summary' => 'Queries the configuration of a router interface.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the router interface belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-qingdao', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ri-m5egfc10sednwk2yt****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'ReservationActiveTime' => [ + 'description' => 'The time when the renewal takes effect.'."\n", + 'type' => 'string', + 'example' => '2022-06-11T16:00:00Z', + ], + 'HealthCheckTargetIp' => [ + 'description' => 'The destination IP address that is used for the health check.'."\n", + 'type' => 'string', + 'example' => '2.2.XX.XX', + ], + 'Status' => [ + 'description' => 'The status of the router interface. Valid values:'."\n" + ."\n" + .'* **Idle**'."\n" + .'* **AcceptingConnecting**'."\n" + .'* **Connecting**'."\n" + .'* **Activating**'."\n" + .'* **Active**'."\n" + .'* **Modifying**'."\n" + .'* **Deactivating**'."\n" + .'* **Inactive**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'CreationTime' => [ + 'description' => 'The time when the router interface was created.'."\n", + 'type' => 'string', + 'example' => '2022-04-14T08:57:24Z', + ], + 'ReservationOrderType' => [ + 'description' => 'The type of the renewal order. Only **RENEW** may be returned, which indicates that the order is placed for service renewal.'."\n", + 'type' => 'string', + 'example' => 'RENEW', + ], + 'OppositeInterfaceId' => [ + 'description' => 'The ID of the peer router interface.'."\n", + 'type' => 'string', + 'example' => 'ri-bp1xkrzttximaoxbl****', + ], + 'Spec' => [ + 'description' => 'The specification of the router interface. Valid values:'."\n" + ."\n" + .'* **Mini.2**: 2 Mbit/s'."\n" + .'* **Mini.5**: 5 Mbit/s'."\n" + .'* **Small.1**: 10 Mbit/s'."\n" + .'* **Small.2**: 20 Mbit/s'."\n" + .'* **Small.5**: 50 Mbit/s'."\n" + .'* **Middle.1**: 100 Mbit/s'."\n" + .'* **Middle.2**: 200 Mbit/s'."\n" + .'* **Middle.5**: 500 Mbit/s'."\n" + .'* **Large.1**: 1,000 Mbit/s'."\n" + .'* **Large.2**: 2,000 Mbit/s'."\n" + .'* **Large.5**: 5,000 Mbit/s'."\n" + .'* **Xlarge.1**: 10,000 Mbit/s'."\n", + 'type' => 'string', + 'example' => 'Mini.2', + ], + 'ChargeType' => [ + 'description' => 'The billing method. Valid values:'."\n" + ."\n" + .'* **AfterPay**: pay-as-you-go'."\n" + .'* **PrePaid**: subscription'."\n", + 'type' => 'string', + 'example' => 'AfterPay', + ], + 'RouterInterfaceId' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'example' => 'ri-m5egfc10sednwk2yt****', + ], + 'Message' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + 'HcThreshold' => [ + 'description' => 'The healthy threshold. This value indicates the number of probe packets that are sent during a health check. Unit: packets.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + 'OppositeRouterType' => [ + 'description' => 'The type of the router to which the peer router interface belongs. Valid values:'."\n" + ."\n" + .'* **VRouter**'."\n" + .'* **VBR**'."\n", + 'type' => 'string', + 'example' => 'VRouter', + ], + 'GmtModified' => [ + 'description' => 'The time when the router interface was modified.'."\n", + 'type' => 'string', + 'example' => '2022-04-28T10:02:12Z', + ], + 'VpcInstanceId' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the router interface belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1b49rqrybk45nio****', + ], + 'OppositeInterfaceOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the peer router interface belongs.'."\n", + 'type' => 'string', + 'example' => '1321932713****', + ], + 'OppositeVpcInstanceId' => [ + 'description' => 'The ID of the peer VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1b49rqrybk45nio****', + ], + 'ReservationInternetChargeType' => [ + 'description' => 'The metering method that is used after the renewal takes effect. Valid values: If **PayByBandwidth** is returned, it indicates that the Express Connect circuit is billed on a pay-by-bandwidth basis.'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'CrossBorder' => [ + 'description' => 'Indicates whether the connection is a cross-border connection. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '01818199-04F6-47F4-9ADF-7CC824CF57A4', + ], + 'Bandwidth' => [ + 'description' => 'The bandwidth of the router interface. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Description' => [ + 'description' => 'The description of the router interface.'."\n", + 'type' => 'string', + 'example' => 'Peer interface.', + ], + 'HcRate' => [ + 'description' => 'The rate of health checks. Unit: seconds. The value indicates the interval at which probe packets are sent during a health check.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'ReservationBandwidth' => [ + 'description' => 'The maximum bandwidth after the renewal takes effect. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'example' => '100', + ], + 'Code' => [ + 'description' => 'The HTTP status code.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Name' => [ + 'description' => 'The name of the router interface.'."\n", + 'type' => 'string', + 'example' => 'RouterInterface1', + ], + 'OppositeRouterId' => [ + 'description' => 'The ID of the router to which the peer router interface belongs.'."\n", + 'type' => 'string', + 'example' => 'vrt-bp11xvy6lb9photuu****', + ], + 'OppositeInterfaceSpec' => [ + 'description' => 'The specification of the peer router interface. Valid values:'."\n" + ."\n" + .'* **Mini.2**: 2 Mbit/s'."\n" + .'* **Mini.5**: 5 Mbit/s'."\n" + .'* **Small.1**: 10 Mbit/s'."\n" + .'* **Small.2**: 20 Mbit/s'."\n" + .'* **Small.5**: 50 Mbit/s'."\n" + .'* **Middle.1**: 100 Mbit/s'."\n" + .'* **Middle.2**: 200 Mbit/s'."\n" + .'* **Middle.5**: 500 Mbit/s'."\n" + .'* **Large.1**: 1,000 Mbit/s'."\n" + .'* **Large.2**: 2,000 Mbit/s'."\n" + .'* **Large.5**: 5,000 Mbit/s'."\n" + .'* **Xlarge.1**: 10,000 Mbit/s'."\n" + .'* **Negative**: not applicable'."\n", + 'type' => 'string', + 'example' => 'Negative', + ], + 'RouterId' => [ + 'description' => 'The ID of the router to which the router interface belongs.'."\n", + 'type' => 'string', + 'example' => 'vbr-m5ex0xf63xk8s5bob****', + ], + 'Success' => [ + 'description' => 'Indicates whether the request is successful. Valid values: true and false.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'OppositeInterfaceBusinessStatus' => [ + 'description' => 'The service status of the peer router interface. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'ConnectedTime' => [ + 'description' => 'The time when the connection was established.'."\n", + 'type' => 'string', + 'example' => '2022-04-14T08:58:04Z', + ], + 'HealthCheckSourceIp' => [ + 'description' => 'The source IP address that is used for the health check.'."\n", + 'type' => 'string', + 'example' => '1.1.XX.XX', + ], + 'OppositeInterfaceStatus' => [ + 'description' => 'The status of the peer router interface. Valid values:'."\n" + ."\n" + .'* **Idle**'."\n" + .'* **AcceptingConnecting**'."\n" + .'* **Connecting**'."\n" + .'* **Activating**'."\n" + .'* **Active**'."\n" + .'* **Modifying**'."\n" + .'* **Deactivating**'."\n" + .'* **Inactive**'."\n" + .'* **Deleting**'."\n" + .'* **Deleted**'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'EndTime' => [ + 'description' => 'The end of the time range during which data was queried.'."\n", + 'type' => 'string', + 'example' => '2999-09-08T16:00:00Z', + ], + 'OppositeRegionId' => [ + 'description' => 'The region ID of the peer router interface.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'OppositeAccessPointId' => [ + 'description' => 'The ID of the peer access point.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-qingdao-ls-B', + ], + 'BusinessStatus' => [ + 'description' => 'The status of the router interface. Valid values:'."\n" + ."\n" + .'* **Normal**'."\n" + .'* **FinancialLocked**'."\n" + .'* **SecurityLocked**'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'HealthCheckStatus' => [ + 'description' => 'The status of the health check. Valid values:'."\n" + ."\n" + .'* **Abnormal**'."\n" + .'* **Normal**'."\n" + .'* **NoRedundantRoute**'."\n" + .'* **NoHealthCheckConfig**'."\n", + 'type' => 'string', + 'example' => 'normal', + ], + 'OppositeBandwidth' => [ + 'description' => 'The maximum bandwidth of the peer router interface. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'RouterType' => [ + 'description' => 'The type of the router to which the route table belongs. Valid values:'."\n" + ."\n" + .'* **VRouter**'."\n" + .'* **VBR**'."\n", + 'type' => 'string', + 'example' => 'VRouter', + ], + 'Role' => [ + 'description' => 'The role of the router interface in the peering connection.'."\n", + 'type' => 'string', + 'example' => 'InitiatingSide', + ], + 'HasReservationData' => [ + 'description' => 'Indicates whether renewal data is included. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'AccessPointId' => [ + 'description' => 'The ID of the access point.'."\n", + 'type' => 'string', + 'example' => 'ap-cn-qingdao-ls-A', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID.'."\n" + ."\n" + .'For more information about resource groups, see [What is a resource group?](~~94475~~)'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tags' => [ + 'description' => 'The tag of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource. You must enter at least one tag key and at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 64 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'It can be up to 128 characters in length and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + 'FastLinkMode' => [ + 'description' => 'Indicates whether the VBR that is created in the Fast Link mode is uplinked to the router interface. The Fast Link mode helps automatically connect router interfaces that are created for the VBR and its peer VPC. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false** (default)'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* This parameter takes effect only when **RouterType** is set to **VBR** and **OppositeRouterType** is set to **VRouter**.'."\n" + ."\n" + .'* When **FastLinkMode** is set to **true**, **Role** must be set to **InitiatingSide**. **AccessPointId**, **OppositeRouterType**, **OpppsiteRouterId**, and **OppositeInterfaceOwnerId** are required.'."\n", + 'type' => 'string', + 'example' => 'false', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParam.NotNull', + 'errorMessage' => 'The parameter must not be null.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"ReservationActiveTime\\": \\"2022-06-11T16:00:00Z\\",\\n \\"HealthCheckTargetIp\\": \\"2.2.XX.XX\\",\\n \\"Status\\": \\"Active\\",\\n \\"CreationTime\\": \\"2022-04-14T08:57:24Z\\",\\n \\"ReservationOrderType\\": \\"RENEW\\",\\n \\"OppositeInterfaceId\\": \\"ri-bp1xkrzttximaoxbl****\\",\\n \\"Spec\\": \\"Mini.2\\",\\n \\"ChargeType\\": \\"AfterPay\\",\\n \\"RouterInterfaceId\\": \\"ri-m5egfc10sednwk2yt****\\",\\n \\"Message\\": \\"successful\\",\\n \\"HcThreshold\\": 8,\\n \\"OppositeRouterType\\": \\"VRouter\\",\\n \\"GmtModified\\": \\"2022-04-28T10:02:12Z\\",\\n \\"VpcInstanceId\\": \\"vpc-bp1b49rqrybk45nio****\\",\\n \\"OppositeInterfaceOwnerId\\": \\"1321932713****\\",\\n \\"OppositeVpcInstanceId\\": \\"vpc-bp1b49rqrybk45nio****\\",\\n \\"ReservationInternetChargeType\\": \\"PayByBandwidth\\",\\n \\"CrossBorder\\": false,\\n \\"RequestId\\": \\"01818199-04F6-47F4-9ADF-7CC824CF57A4\\",\\n \\"Bandwidth\\": 2,\\n \\"Description\\": \\"对端接口\\",\\n \\"HcRate\\": 2,\\n \\"ReservationBandwidth\\": \\"100\\",\\n \\"Code\\": \\"200\\",\\n \\"Name\\": \\"路由器接口1\\",\\n \\"OppositeRouterId\\": \\"vrt-bp11xvy6lb9photuu****\\",\\n \\"OppositeInterfaceSpec\\": \\"Negative\\",\\n \\"RouterId\\": \\"vbr-m5ex0xf63xk8s5bob****\\",\\n \\"Success\\": true,\\n \\"OppositeInterfaceBusinessStatus\\": \\"Normal\\",\\n \\"ConnectedTime\\": \\"2022-04-14T08:58:04Z\\",\\n \\"HealthCheckSourceIp\\": \\"1.1.XX.XX\\",\\n \\"OppositeInterfaceStatus\\": \\"Active\\",\\n \\"EndTime\\": \\"2999-09-08T16:00:00Z\\",\\n \\"OppositeRegionId\\": \\"cn-hangzhou\\",\\n \\"OppositeAccessPointId\\": \\"ap-cn-qingdao-ls-B\\",\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"HealthCheckStatus\\": \\"normal\\",\\n \\"OppositeBandwidth\\": 0,\\n \\"RouterType\\": \\"VRouter\\",\\n \\"Role\\": \\"InitiatingSide\\",\\n \\"HasReservationData\\": \\"false\\",\\n \\"AccessPointId\\": \\"ap-cn-qingdao-ls-A\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph6aiy****\\",\\n \\"Tags\\": {\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n },\\n \\"FastLinkMode\\": \\"false\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2022-06-11T16:00:00Z\\n 2.2.XX.XX\\n Active\\n 2022-04-14T08:57:24Z\\n RENEW\\n ri-bp1xkrzttximaoxbl****\\n Mini.2\\n AfterPay\\n ri-m5egfc10sednwk2yt****\\n successful\\n 8\\n VRouter\\n 2022-04-28T10:02:12Z\\n vpc-bp1b49rqrybk45nio****\\n 1321932713****\\n vpc-bp1b49rqrybk45nio****\\n PayByBandwidth\\n false\\n 01818199-04F6-47F4-9ADF-7CC824CF57A4\\n 2\\n 对端接口\\n 2\\n 100\\n 200\\n 路由器接口1\\n vrt-bp11xvy6lb9photuu****\\n Negative\\n vbr-m5ex0xf63xk8s5bob****\\n true\\n Normal\\n 2022-04-14T08:58:04Z\\n 1.1.XX.XX\\n Active\\n 2999-09-08T16:00:00Z\\n cn-hangzhou\\n ap-cn-qingdao-ls-B\\n Normal\\n normal\\n 0\\n VRouter\\n InitiatingSide\\n false\\n ap-cn-qingdao-ls-A\\n rg-acfmxazb4ph6aiy****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n","errorExample":""}]', + 'title' => 'DescribeRouterInterfaceAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeactivateRouterInterface' => [ + 'summary' => 'Deactivates a router interface.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the router interface is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouterInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ri-2zeo3xzyf38r4urz****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'BE7EB53A-99AB-4DA8-AEDE-75FA90D046A6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectRIStatus', + 'errorMessage' => 'RouterInterface can be operated by this action only when it\'s status is Active.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'This RouterInterface is financiel locked because of bills outstanding.', + ], + [ + 'errorCode' => 'Forbbiden.InvaildOwner', + 'errorMessage' => 'The RouterInterface owener error', + ], + [ + 'errorCode' => 'OperationFailed.OperationLocked', + 'errorMessage' => 'Operation failed because OperationLocked.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The specified RouterInterfaceId does not exist in our record.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BE7EB53A-99AB-4DA8-AEDE-75FA90D046A6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n BE7EB53A-99AB-4DA8-AEDE-75FA90D046A6\\n","errorExample":""}]', + 'title' => 'DeactivateRouterInterface', + ], + 'GrantInstanceToVbr' => [ + 'summary' => 'Grants a virtual border router (VBR) the permissions to connect to a virtual private cloud (VPC) that belongs to another Alibaba Cloud account.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPC is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VbrOwnerUid', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '1210123456123456', + ], + ], + [ + 'name' => 'VbrInstanceIds', + 'in' => 'query', + 'style' => 'simple', + 'schema' => [ + 'description' => 'The information about the VBRs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The VBR that needs to acquire permissions on the VPC. You can specify multiple VBRs and separate them with commas (,).'."\n" + ."\n" + .'* When **GrantType** is set to **All**, permissions on the VPC are granted to all VBRs that belong to the specified region and Alibaba Cloud account. In this case, you can leave this parameter empty.'."\n" + .'* If you set **GrantType** to **Specify**, you must set VbrInstanceIds to specify the VBRs to which the permissions are granted.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vbr-m5ex0xf63xk8s5bob****,vbr-bp1h6efd7a5g66xxd****', + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp1lqhq93q8evjpky****', + ], + ], + [ + 'name' => 'GrantType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VBRs that need to acquire permissions on the VPC. Valid values:'."\n" + ."\n" + .'* **All**: Permissions on the VPC are granted to all VBRs that belong to the specified region and Alibaba Cloud account. In this case, you can leave **VbrInstanceIds** empty.'."\n" + .'* **Specify**: Permissions on the VPC are granted to the specified VBRs. **VbrInstanceIds** must be assigned a value.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'All', + ], + ], + [ + 'name' => 'VbrRegionNo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VBR is deployed.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F99F13AE-D733-5856-AB97-80CC88B1D5A8', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParam.NotNull', + 'errorMessage' => 'The parameter must not be null.', + ], + [ + 'errorCode' => 'Parameter.Illegal', + 'errorMessage' => 'The parameter is illegal.', + ], + [ + 'errorCode' => 'Instance.StatusError', + 'errorMessage' => 'The status of instance error.', + ], + ], + 404 => [ + [ + 'errorCode' => 'Instance.NotExist', + 'errorMessage' => 'The instance not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F99F13AE-D733-5856-AB97-80CC88B1D5A8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F99F13AE-D733-5856-AB97-80CC88B1D5A8\\n","errorExample":""}]', + 'title' => 'GrantInstanceToVbr', + 'description' => '## Usage notes'."\n" + ."\n" + .'When you connect a VBR to a VPC that belongs to another Alibaba Cloud account, the VBR must acquire the required permissions from the VPC.'."\n", + ], + 'ActivateRouterInterface' => [ + 'summary' => 'Activates a router interface that is in the Inactive state.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the router interface.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouterInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ri-2zeo3xzyf38r4urz****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '079874CD-AEC1-43E6-AC03-ADD96B6E4907', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectRIStatus', + 'errorMessage' => 'RouterInterface can be operated by this action only when it\'s status is Inactive.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'This RouterInterface is financiel locked because of bills outstanding.', + ], + [ + 'errorCode' => 'OperationFailed.PconnTrafficNotEnable', + 'errorMessage' => 'The operation is failed because of PconnTrafficNotEnable.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'The router does not belong to your account.', + ], + [ + 'errorCode' => 'NotSupportLinkrole', + 'errorMessage' => 'This RouterInterface is not a vlan interface for connection.', + ], + [ + 'errorCode' => 'OppositeRouterInterfaceIsDeleted', + 'errorMessage' => 'The opposite router interface is already deleted.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The specified RouterInterfaceId does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"079874CD-AEC1-43E6-AC03-ADD96B6E4907\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 079874CD-AEC1-43E6-AC03-ADD96B6E4907\\n","errorExample":""}]', + 'title' => 'ActivateRouterInterface', + 'description' => 'After you call this operation, the router interface enters the **Activating** state. After the router interface is activated, it enters the **Active** state.'."\n" + ."\n" + .'> You cannot activate a router interface that has overdue payments.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RevokeInstanceFromVbr' => [ + 'summary' => 'Revokes the permissions granted to a virtual border router (VBR) on a virtual private cloud (VPC).', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VPC is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VbrOwnerUid', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '1210123456123456', + ], + ], + [ + 'name' => 'VbrInstanceIds', + 'in' => 'query', + 'style' => 'simple', + 'schema' => [ + 'description' => 'The IDs of the VBRs for which you want to revoke the permissions.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The VBR ID. You can specify multiple VBRs and separate them with commas (,).'."\n" + ."\n" + .'* If you set **GrantType** to **ALL**, this parameter is optional. Permissions on the VPC are revoked for all VBRs in the specified region.'."\n" + .'* If you set **GrantType** to **Specify**, this parameter is required. Permissions on the VPC are revoked for the specified VBRs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vbr-m5ex0xf63xk8s5bob****,vbr-bp1h6efd7a5g66xxd****', + ], + 'required' => false, + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VPC ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp1brjuegjc88v3u9****', + ], + ], + [ + 'name' => 'GrantType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VBRs for which you want to revoke permissions on the VPC. Valid values:'."\n" + ."\n" + .'* **ALL**: Permissions on the VPC are revoked for all VBRs in the specified region. **VbrInstanceIds** can be left empty.'."\n" + .'* **Specify**: Permissions on the VPC are revoked for the specified VBRs. **VbrInstanceIds** must be assigned a value.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ALL', + ], + ], + [ + 'name' => 'VbrRegionNo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the VBR is deployed.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The returned data.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '45B7AA4A-4658-5FFC-90DD-9B8729F301BB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Instance.StatusError', + 'errorMessage' => 'The status of instance error. ', + ], + [ + 'errorCode' => 'InvalidParam.NotNull', + 'errorMessage' => 'The parameter must not be null.', + ], + [ + 'errorCode' => 'Parameter.Illegal', + 'errorMessage' => 'The parameter is illegal.', + ], + ], + 404 => [ + [ + 'errorCode' => 'Instance.NotExist', + 'errorMessage' => 'The instance not exist.', + ], + [ + 'errorCode' => 'EcGrantRelation.NotExist', + 'errorMessage' => 'The ec grant relation not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"45B7AA4A-4658-5FFC-90DD-9B8729F301BB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 45B7AA4A-4658-5FFC-90DD-9B8729F301BB\\n","errorExample":""}]', + 'title' => 'RevokeInstanceFromVbr', + ], + 'ConnectRouterInterface' => [ + 'summary' => 'Initiates a connection from the router interface of an initiator to the router interface of an accepter.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the router interface is deployed.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RouterInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the initiator router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ri-2zeo3xzyf38r4urzd****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectRole.NotInitiatingSide', + 'errorMessage' => 'The specified RouterInterface is not InitiatingSide.', + ], + [ + 'errorCode' => 'IncorrectRIStatus', + 'errorMessage' => 'RouterInterface can be operated by this action only when it\'s status is Idle.', + ], + [ + 'errorCode' => 'IncorrectOppositeInterfaceInfo.NotSet', + 'errorMessage' => 'OppositeInterfaceId/OppositeRouterId/OppositeRouterType/OppositeInterfaceOwnerId must be all set.', + ], + [ + 'errorCode' => 'IncorrectOppositeInterfaceInfo', + 'errorMessage' => 'Cannot connect on the same router', + ], + [ + 'errorCode' => 'Forbidden.OnlyOneConnection', + 'errorMessage' => 'The Specified routers have a connection already', + ], + [ + 'errorCode' => 'Forbidden.BillsOutstanding', + 'errorMessage' => 'You cannot use this action because you have bills outstanding.', + ], + [ + 'errorCode' => 'InvalidAccount.NotFound', + 'errorMessage' => 'The specified account is not exists.', + ], + [ + 'errorCode' => 'ErrCode.Invalid', + 'errorMessage' => 'got error', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideRole', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideInstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideRegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideRouterId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideRouterType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideAliUid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideOppositeInterfaceOwnerId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideOppositeRegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideOppositeInterfaceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideOppositeRouterId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AttrMismatching.AcceptingSideOppositeRouterType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.InstanceOwner', + 'errorMessage' => 'The router instance owener error.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRouterInterfaceId.NotFound', + 'errorMessage' => 'The specified RouterInterfaceId does not exist in our record.', + ], + [ + 'errorCode' => 'CROSS_BID.FORBIDDEN', + 'errorMessage' => 'Connect RouterInterface across bid is illegal', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n DE77A7F3-3B74-41C0-A5BC-CAFD188C28B6\\n","errorExample":""}]', + 'title' => 'ConnectRouterInterface', + 'description' => 'After you call this operation, the router interface enters the **Connecting** state. When the connection is established, it enters the **Active** state.'."\n" + ."\n" + .'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* Only an initiator router interface in the **Idle** state can initiate a connection.'."\n" + .'* You can create only one pair of connected router interfaces between two routers.'."\n" + .'* You cannot initiate a connection if your Alibaba Cloud account has a router interface with overdue payments.', + ], + 'CreateExpressCloudConnection' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ECC instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ECC instance.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'doctest', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of ECC.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ECC'."\n", + ], + ], + [ + 'name' => 'PeerCity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The city where the data center is located.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Hangzhou'."\n", + 'default' => 'blank', + ], + ], + [ + 'name' => 'PeerLocation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The geographical location of the data center.'."\n" + ."\n" + .'> It must be accurate to house number-floor-room number-server rack number.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '\\*\\*city\\*\\*district/county\\*\\*road\\*\\*number\\*\\*property or building name\\*\\*building\\*\\*floor\\*\\*room number\\*\\*server rack number\\*\\*server rack name\\*\\*device\\*\\*port'."\n", + ], + ], + [ + 'name' => 'IdcSP', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Internet service provider (ISP) for the data center.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'CU', + ], + ], + [ + 'name' => 'PortType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The port of the Express Connect circuit. Valid values:'."\n" + ."\n" + .'* 100Base-T'."\n" + .'* 1000Base-T'."\n" + .'* 1000Base-LX'."\n" + .'* 10GBase-T'."\n" + .'* 10GBase-LR'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '100Base-T', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth for ECC, which corresponds to the bandwidth for the underlying circuit.'."\n" + ."\n" + .'Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '2', + ], + ], + [ + 'name' => 'ContactTel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The phone number of the contact who applies for ECC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '132*********', + ], + ], + [ + 'name' => 'ContactMail', + 'in' => 'query', + 'schema' => [ + 'description' => 'The email address of the contact who applies for ECC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'XX@example.com', + ], + ], + [ + 'name' => 'IDCardNo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID card number of the contact who applies for ECC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '32*****************', + 'default' => 'blank', + ], + ], + [ + 'name' => 'RedundantEccId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the standby Express Connect circuit.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecc-d****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'EccId' => [ + 'description' => 'The ID of the ECC instance.'."\n", + 'type' => 'string', + 'example' => 'ecc-jg************', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C004F022-1CC2-4958-9937-675513A2CD7E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.AliUid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.Bid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.RegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Bandwith', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.ContactTel', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.ContactMail', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.IDCardNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PortType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PeerCity', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PeerLocation', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.ServiceProvider', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.RedundantEccId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.IdcSP', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"EccId\\": \\"ecc-jg************\\",\\n \\"RequestId\\": \\"C004F022-1CC2-4958-9937-675513A2CD7E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ecc-bp1t9osmuln1*******\\n C004F022-1CC2-4958-9937-675513A2CD7E\\n","errorExample":""}]', + 'title' => 'CreateExpressCloudConnection', + 'summary' => 'Creates an Express Cloud Connect (ECC) instance.', + ], + 'ModifyExpressCloudConnectionAttribute' => [ + 'summary' => 'Modifies the configuration of an Express Cloud Connect (ECC) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'Descriptions of ECC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ECC', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ECC instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ECC instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'doctest', + ], + ], + [ + 'name' => 'EccId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECC instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecc-bp1t9osmuln*******', + ], + ], + [ + 'name' => 'BgpAs', + 'in' => 'query', + 'schema' => [ + 'description' => 'The BGP autonomous system number (ASN) to be configured for the Smart Access Gateway (SAG) device.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sag-ejfge***', + ], + ], + [ + 'name' => 'PeIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The on-premises IP address when the SAG device is connected to the cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.10.**.**', + ], + ], + [ + 'name' => 'CeIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The peer IP address when the SAG device is connected to the cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.16.**.**', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E6385514-B0CC-48E3-B9F9-F7BFF64460A2', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidEccId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.AliUid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.RegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.EccId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEccApplication.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Description', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Name', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidServiceProvider.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.PortType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Distance', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.CircuitCode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IllegalParam.Type', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.Type', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAccessPoint.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E6385514-B0CC-48E3-B9F9-F7BFF64460A2\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n E6385514-B0CC-48E3-B9F9-F7BFF64460A2\\r\\n","errorExample":""}]', + 'title' => 'ModifyExpressCloudConnectionAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyExpressCloudConnectionBandwidth' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth of the ECC instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'EccId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECC instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecc-xxxxxxxxx', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E6385514-B0CC-48E3-B9F9-F7BFF64460A2', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParam.EccId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.AliUid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.RegionNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParam.Bandwidth', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEccApplication.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEccId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectStatus.EccApplication', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationUnsupported.type', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E6385514-B0CC-48E3-B9F9-F7BFF64460A2\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n \\r\\n\\tE6385514-B0CC-48E3-B9F9-F7BFF64460A2\\r\\n ","errorExample":""}]', + 'title' => 'ModifyExpressCloudConnectionBandwidth', + 'summary' => 'Modifies the bandwidth of an Express Cloud Connect (ECC) instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateGlobalAccelerationInstance' => [ + 'summary' => 'Creates a Global Accelerator (GA) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the GA instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + 'docRequired' => true, + ], + ], + [ + 'name' => 'ServiceLocation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The acceleration area. Valid values:'."\n" + ."\n" + .'* **china-mainland**'."\n" + .'* **north-america**'."\n" + .'* **asia-pacific**'."\n" + .'* **europe**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'china-mainland', + 'docRequired' => true, + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the GA instance. Set the value to **10**. Unit: Mbit/s.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10', + 'docRequired' => true, + ], + ], + [ + 'name' => 'BandwidthType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth type. Valid values:'."\n" + ."\n" + .'* **Sharing**'."\n" + .'* **Exclusive**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Exclusive', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the GA instance.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'GA-1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the GA instance.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'My GA', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the value, but you must make sure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '02fb3da4-130e-11e9-8e44-0016e04115b', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '4EC47282-1B74-4534-BD0E-403F3EE64CAF', + ], + 'GlobalAccelerationInstanceId' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'ga-bp1fi6sq7npnicmjj****', + ], + 'IpAddress' => [ + 'description' => 'The public IP address of the GA instance.'."\n" + ."\n" + .'If **BandwidthType** is set to **Sharing**, this parameter is not returned.'."\n", + 'type' => 'string', + 'example' => '12.xx.xx.78', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidBandwidth.ValueNotSupported', + 'errorMessage' => 'The specified Bandwidth is not supported.', + ], + [ + 'errorCode' => 'InvalidServiceLocation.ValueNotSupported', + 'errorMessage' => 'The specified ServiceLocation is not supported.', + ], + [ + 'errorCode' => 'QuotaExceeded.GlobalAccelerationInstance', + 'errorMessage' => 'GlobalAccelerationInstance quota exceeded.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceDescription.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'OperationFailed.UnpaidBillsExist', + 'errorMessage' => 'The account has unpaid bills. Please pay your overdue bill first.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not supported.', + ], + ], + ], + 'staticInfo' => [ + 'noSubstitutionReason' => '无替代API,历史原因导致该API被标记为弃用。', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\",\\n \\"GlobalAccelerationInstanceId\\": \\"ga-bp1fi6sq7npnicmjj****\\",\\n \\"IpAddress\\": \\"12.xx.xx.78\\"\\n}","errorExample":"\\n\\n\\tga-t4nluhu6\\n\\t12.34.56.78\\n\\t21AAFD16-F784-4BFB-XXXX-XXXXXXXX\\n"},{"type":"xml","example":"\\n\\tga-t4nluhu****\\n\\t12.34.56.78\\n\\t4EC47282-1B74-4534-BD0E-403F3EE64CAF\\n","errorExample":"{\\n \\"GlobalAccelerationInstanceId\\": \\"ga-t4nluhu6\\",\\n \\"IpAddress\\": \\"12.34.56.78\\",\\n \\"RequestId\\": \\"21AAFD16-F784-4BFB-XXXX-XXXXXXXX\\"\\n }"}]', + 'title' => 'CreateGlobalAccelerationInstance', + 'description' => '## Usage notes'."\n" + ."\n" + .'You can call this operation to create only pay-as-you-go GA instances.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AddGlobalAccelerationInstanceIp' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'create', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the shared-bandwidth GA instance.'."\n" + ."\n" + .'You can call the **DescribeRegions** operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'GlobalAccelerationInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the shared-bandwidth GA instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ga-Ldefrgbttnyyf****', + ], + ], + [ + 'name' => 'IpInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The EIP ID. You can call the [DescribeEipAddresses](~~36018~~) operation to query EIP IDs.'."\n" + ."\n" + .'> Make sure that the billing method of the EIP is pay-as-you-go, and the EIP and the shared-bandwidth GA instance belong to the same region.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eip-rw434rwfdeaf****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '01FDDD49-C4B7-4D2A-A8E5-A93915C450A6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IpInstanceId.AlreadyInBandwidthPackage', + 'errorMessage' => 'The specified Eip InstanceId already in bandwidthPackage.', + ], + [ + 'errorCode' => 'IpInstanceId.BizStatusInvalid', + 'errorMessage' => 'The specified Eip BizStatus is Disable, Cannot add to bandwidthPackage.', + ], + [ + 'errorCode' => 'IpInstanceId.ChargeType.NotSupport', + 'errorMessage' => 'The specified Eip instance is PrePaid type, Cannot add to BandwidthPackage.', + ], + [ + 'errorCode' => 'BandwidthPackageId.InvalidBizStatus', + 'errorMessage' => 'The specified BandwidthPackageId has been FinancialLocked, Cannot add Ip.', + ], + [ + 'errorCode' => 'IpInstanceId.QuotaExceeded', + 'errorMessage' => 'The specified BandwidthPackageId has too many ip in it. exceed the quota , Cannot add more.', + ], + [ + 'errorCode' => 'EipOperation.TooFrequently', + 'errorMessage' => 'The specified Eip add into bandwidthPackage too frequently. please add later.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified bandwidthPackageId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidIpInstanceId.NotFound', + 'errorMessage' => 'The specified Eip InstanceId does not exist in our records.', + ], + [ + 'errorCode' => 'IpInstanceId.InvalidIpInternetChargeType', + 'errorMessage' => 'The hybrid type eip not support add into bandwidthPackage of PayBytraffic type.', + ], + [ + 'errorCode' => 'IpInstanceId.StatusNotAvailable', + 'errorMessage' => 'The specified Eip Status is not Available, Cannot add to GlobalAcceleration.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\"\\n}","errorExample":"\\n\\n 01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\n"},{"type":"xml","example":"\\n 01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\n","errorExample":"{\\n \\"RequestId\\": \\"01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\"\\n}"}]', + 'title' => 'AddGlobalAccelerationInstanceIp', + 'summary' => 'Associates an elastic IP address (EIP) with a shared-bandwidth Global Accelerator (GA) instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteGlobalAccelerationInstance' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the GA instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'GlobalAccelerationInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ga-asdfsl22s****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E6E63B2A-9820-44A8-A359-9BB2DAEE6424', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectGlobalAccelerationInstanceIdStatus', + 'errorMessage' => 'Current GlobalAccelerationInstance status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceId.NotFound', + 'errorMessage' => 'The specified GlobalAccelerationInstanceId is not found.', + ], + [ + 'errorCode' => 'Forbidden.GlobalAccelerationInstanceChargeTypeIsPrepaid', + 'errorMessage' => 'It\'s forbidden to release a prepaid GlobalAccelerationInstance', + ], + [ + 'errorCode' => 'DependencyViolation.Ips', + 'errorMessage' => 'The specified BandwidthPackageId has dependent resource ips.', + ], + [ + 'errorCode' => 'IncorrectStatus', + 'errorMessage' => 'This openeration would be allowed only when status of this RouterInterface is Idle/Inactive.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not supported.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E6E63B2A-9820-44A8-A359-9BB2DAEE6424\\"\\n}","errorExample":"\\n\\n BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\n"},{"type":"xml","example":"\\n\\n E6E63B2A-9820-44A8-A359-9BB2DAEE6424\\n","errorExample":"{\\n \\"RequestId\\": \\"E6E63B2A-9820-44A8-A359-9BB2DAEE6424\\"\\n}"}]', + 'title' => 'DeleteGlobalAccelerationInstance', + 'summary' => 'Deletes a GA instance.', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* You can delete only pay-as-you-go instances.'."\n" + .'* Before you can delete a dedicated instance, disassociate the backend server from the instance first.'."\n" + .'* Before you can delete a shared instance, disassociate the elastic IP address (EIP) from the instance first.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassociateGlobalAccelerationInstance' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the GA instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'GlobalAccelerationInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ga-1sxeedefrr33****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The backend server type. Valid values:'."\n" + ."\n" + .'* **RemoteEcsInstance**: Elastic Compute Service (ECS) instance'."\n" + .'* **RemoteSlbInstance**: Server Load Balancer (SLB) instance'."\n" + .'* **RemoteEniInstance**: elastic network interface (ENI)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RemoteEcsInstance', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectGlobalAccelerationInstanceIdStatus', + 'errorMessage' => 'Current GlobalAccelerationInstance status does not support this operation.', + ], + [ + 'errorCode' => 'Forbidden.FinancialLocked', + 'errorMessage' => 'The ip business status is invalid.', + ], + [ + 'errorCode' => 'Forbbiden.InvaildOwner', + 'errorMessage' => 'The GlobalAccelerationInstance owener error', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not supported.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceId.NotFound', + 'errorMessage' => 'The specified GlobalAccelerationInstanceId is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\"\\n}","errorExample":"\\n\\n BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\n"},{"type":"xml","example":"\\n BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\n","errorExample":"{\\n \\"RequestId\\": \\"BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\"\\n}"}]', + 'title' => 'UnassociateGlobalAccelerationInstance', + 'summary' => 'Disassociates a Global Accelerator (GA) instance from a backend server.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyGlobalAccelerationInstanceAttributes' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the GA instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'GlobalAccelerationInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ga-14fdsf3****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the GA instance.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'GA-1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the GA instance.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It must start with a letter but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'My GA', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidBandwidth.ValueNotSupported', + 'errorMessage' => 'The specified Bandwidth is not supported.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceId.NotFound', + 'errorMessage' => 'The specified GlobalAccelerationInstanceId is not found.', + ], + [ + 'errorCode' => 'Forbidden.ChargeTypeIsPrepaid', + 'errorMessage' => 'It?s forbidden to change prepaid EIP?s bandwidth by API. It can be changed on Aliyun web console.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceDescription.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The parameter is invalid.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstance.NotFound', + 'errorMessage' => 'The specified global acceleration instance is not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not supported.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\"\\n}","errorExample":"\\n\\n 185E81B1-3916-4667-B48F-C52409B33F2B\\n"},{"type":"xml","example":"\\n\\n BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\n","errorExample":"{\\n \\"RequestId\\": \\"BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\"\\n}"}]', + 'title' => 'ModifyGlobalAccelerationInstanceAttributes', + 'summary' => 'Modifies the name and description of a Global Accelerator (GA) instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyGlobalAccelerationInstanceSpec' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the GA instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'GlobalAccelerationInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ga-32s33s****', + ], + ], + [ + 'name' => 'Bandwidth', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum bandwidth of the GA instance. Unit: Mbit/s. Set the value to **10**.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidBandwidth.ValueNotSupported', + 'errorMessage' => 'The specified Bandwidth is not supported.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceId.NotFound', + 'errorMessage' => 'The specified GlobalAccelerationInstanceId is not found.', + ], + [ + 'errorCode' => 'Forbidden.ChargeTypeIsPrepaid', + 'errorMessage' => 'It?s forbidden to change prepaid GlobalAcceleration?s bandwidth by API. It can be changed on Aliyun web console.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceName.Malformed', + 'errorMessage' => 'The specified Name is not valid.', + ], + [ + 'errorCode' => 'InvalidGlobalAccelerationInstanceDescription.Malformed', + 'errorMessage' => 'The specified Description is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The parameter is invalid.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'Specified GA allocation ID is not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not supported.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\"\\n}","errorExample":"\\n\\n BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\n"},{"type":"xml","example":"\\n BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\n","errorExample":"{\\n \\"RequestId\\": \\"BD5BCEE8-F62C-40C2-9AC3-89XXXXXXXXX\\"\\n}"}]', + 'title' => 'ModifyGlobalAccelerationInstanceSpec', + 'summary' => 'Modifies the maximum bandwidth of a Global Accelerator (GA) instance.', + 'description' => '## Usage notes'."\n" + ."\n" + .'You cannot call this operation to modify the maximum bandwidth of a subscription GA instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeGlobalAccelerationInstances' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the GA instance. You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'IncludeReservationData', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to return information about pending orders. Valid values:'."\n" + ."\n" + .'* **false** (default)'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'GlobalAccelerationInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ga-234sljmxaz****', + ], + ], + [ + 'name' => 'IpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The public IP address of the GA instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '12.xx.xx.78', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the GA instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'GA-1', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the GA instance. Valid values:'."\n" + ."\n" + .'* **Available**'."\n" + .'* **Inuse**'."\n" + .'* **Associating**'."\n" + .'* **Unassociating**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Available', + ], + ], + [ + 'name' => 'BandwidthType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth type of the GA instance. Valid values:'."\n" + ."\n" + .'* **Sharing**'."\n" + .'* **Exclusive** (default)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Exclusive', + ], + ], + [ + 'name' => 'ServiceLocation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region of the backend service. Valid values:'."\n" + ."\n" + .'* **china-mainland**'."\n" + .'* **north-america**'."\n" + .'* **asia-pacific**'."\n" + .'* **europe**'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'china-mainland', + ], + ], + [ + 'name' => 'ServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the backend service instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-sxjblddejj9x****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Default value: **1**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '10', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6B4EE38D-C75B-4E1F-844E-863A94430676', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'GlobalAccelerationInstances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'GlobalAccelerationInstance' => [ + 'description' => 'The details of the GA instances.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the GA instance was created. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2018-07-05T03:39:31Z', + ], + 'Status' => [ + 'description' => 'The status of the GA instance.'."\n" + ."\n" + .'* **Available**'."\n" + .'* **Inuse**'."\n" + .'* **Associating**'."\n" + .'* **Unassociating**'."\n", + 'type' => 'string', + 'example' => 'InUse', + ], + 'BandwidthType' => [ + 'description' => 'The bandwidth type of the GA instance.'."\n" + ."\n" + .'* **Sharing**'."\n" + .'* **Exclusive** (default)'."\n", + 'type' => 'string', + 'example' => 'Exclusive', + ], + 'ChargeType' => [ + 'description' => 'The billing method of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'PrePaid', + ], + 'GlobalAccelerationInstanceId' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'ga-bp1x99kj7kl1ziw5x****', + ], + 'ServiceLocation' => [ + 'description' => 'The service area of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'china-mainland', + ], + 'RegionId' => [ + 'description' => 'The region ID of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'AccelerationLocation' => [ + 'description' => 'The acceleration area of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'china-mainland', + ], + 'IpAddress' => [ + 'description' => 'The public IP address of the dedicated GA instance.'."\n", + 'type' => 'string', + 'example' => '47.xx.xx.99', + ], + 'Description' => [ + 'description' => 'The description of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'apiDescription', + ], + 'Bandwidth' => [ + 'description' => 'The maximum bandwidth of the GA instance.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the instance expires.'."\n", + 'type' => 'string', + 'example' => '2018-08-05T16:00Z', + ], + 'InternetChargeType' => [ + 'description' => 'The billing method of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'PayByBandwidth', + ], + 'Name' => [ + 'description' => 'The name of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'instanceName', + ], + 'BackendServers' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'BackendServer' => [ + 'description' => 'The details about the backend servers of the GA instance.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ServerIpAddress' => [ + 'description' => 'The IP address of the backend server.'."\n", + 'type' => 'string', + 'example' => '172.xx.xx.109', + ], + 'ServerId' => [ + 'description' => 'The ID of the backend server.'."\n", + 'type' => 'string', + 'example' => 'i-2zeg83zvn5d4ed4y****', + ], + 'ServerType' => [ + 'description' => 'The type of the backend server.'."\n" + ."\n" + .'* **EcsInstance**: Elastic Compute Service (ECS) instance'."\n" + .'* **SlbInstance**: Server Load Balancer (SLB) instance'."\n", + 'type' => 'string', + 'example' => 'EcsInstance', + ], + 'RegionId' => [ + 'description' => 'The region where the backend servers are deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-beijing', + ], + ], + ], + ], + ], + ], + 'PublicIpAddresses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PublicIpAddress' => [ + 'description' => 'The public IP address.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The public IP address of the GA instance.'."\n", + 'type' => 'string', + 'example' => '12.xx.xx.78', + ], + 'AllocationId' => [ + 'description' => 'The ID of the public IP address of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'eip-bp19yqraac4w3y0jd****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not supported.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"6B4EE38D-C75B-4E1F-844E-863A94430676\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"GlobalAccelerationInstances\\": {\\n \\"GlobalAccelerationInstance\\": [\\n {\\n \\"CreationTime\\": \\"2018-07-05T03:39:31Z\\",\\n \\"Status\\": \\"InUse\\",\\n \\"BandwidthType\\": \\"Exclusive\\",\\n \\"ChargeType\\": \\"PrePaid\\",\\n \\"GlobalAccelerationInstanceId\\": \\"ga-bp1x99kj7kl1ziw5x****\\",\\n \\"ServiceLocation\\": \\"china-mainland\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"AccelerationLocation\\": \\"china-mainland\\",\\n \\"IpAddress\\": \\"47.xx.xx.99\\",\\n \\"Bandwidth\\": \\"10\\",\\n \\"Description\\": \\"apiDescription\\",\\n \\"ExpiredTime\\": \\"2018-08-05T16:00Z\\",\\n \\"InternetChargeType\\": \\"PayByBandwidth\\",\\n \\"Name\\": \\"instanceName\\",\\n \\"BackendServers\\": {\\n \\"BackendServer\\": [\\n {\\n \\"ServerIpAddress\\": \\"172.xx.xx.109\\",\\n \\"ServerId\\": \\"i-2zeg83zvn5d4ed4y****\\",\\n \\"ServerType\\": \\"EcsInstance\\",\\n \\"RegionId\\": \\"cn-beijing\\"\\n }\\n ]\\n },\\n \\"PublicIpAddresses\\": {\\n \\"PublicIpAddress\\": [\\n {\\n \\"IpAddress\\": \\"12.xx.xx.78\\",\\n \\"AllocationId\\": \\"eip-bp19yqraac4w3y0jd****\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":"\\n\\n\\t\\n\\t\\t\\n\\t\\t\\tchina-mainland\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tcn-beijing\\n\\t\\t\\t\\t\\tlb-2222222333333333\\n\\t\\t\\t\\t\\t192.168.0.180\\n\\t\\t\\t\\t\\tSlbInstance\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t10\\n\\t\\t\\tPrePaid\\n\\t\\t\\t2017-07-26T03:34:30Z\\n\\t\\t\\t\\n\\t\\t\\t2017-08-26T16:00Z\\n\\t\\t\\tga-aabbccddaabb\\n\\t\\t\\tPayByBandwidth\\n\\t\\t\\t12.34.56.78\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\tcn-shanghai\\n\\t\\t\\tasia-pacific\\n\\t\\t\\tInUse\\n\\t\\t\\n\\t\\n\\t1\\n\\t10\\n\\t0487FCA3-E152-4726-8A17-25F69E03ADB0\\n\\t1\\n"},{"type":"xml","example":"\\r\\n\\r\\n 1\\r\\n 1\\r\\n 10\\r\\n 6B4EE38D-C75B-4E1F-844E-863A94430676\\r\\n \\r\\n \\r\\n PrePaid\\r\\n ga-bp1x99kj7kl1ziw5x****\\r\\n false\\r\\n \\r\\n \\r\\n \\r\\n i-2zeg83zvn5d4ed4y****\\r\\n cn-beijing\\r\\n EcsInstance\\r\\n 172.17.109.xxx\\r\\n \\r\\n \\r\\n 47.98.99.xxx\\r\\n PayByBandwidth\\r\\n \\r\\n Exclusive\\r\\n 2018-07-05T03:39:31Z\\r\\n InUse\\r\\n china-mainland\\r\\n cn-hangzhou\\r\\n china-mainland\\r\\n \\r\\n 2018-08-05T16:00Z\\r\\n \\r\\n 10\\r\\n \\r\\n\\t\\r\\n","errorExample":"{\\n \\"GlobalAccelerationInstances\\": {\\n \\"GlobalAccelerationInstance\\": [\\n {\\n \\"AccelerationLocation\\": \\"china-mainland\\",\\n \\"BackendServers\\": {\\n \\"BackendServer\\": [\\n {\\n \\"RegionId\\": \\"cn-beijing\\",\\n \\"ServerId\\": \\"lb-2222222333333333\\",\\n \\"ServerIpAddress\\": \\"192.168.0.180\\",\\n \\"ServerType\\": \\"SlbInstance\\"\\n }\\n ]\\n },\\n \\"Bandwidth\\": \\"10\\",\\n \\"ChargeType\\": \\"PrePaid\\",\\n \\"CreationTime\\": \\"2017-07-26T03:34:30Z\\",\\n \\"Description\\": \\"\\",\\n \\"ExpiredTime\\": \\"2017-08-26T16:00Z\\",\\n \\"GlobalAccelerationInstanceId\\": \\"ga-aabbccddaabb\\",\\n \\"InternetChargeType\\": \\"PayByBandwidth\\",\\n \\"IpAddress\\": \\"12.34.56.78\\",\\n \\"Name\\": \\"\\",\\n \\"OperationLocks\\": {\\n \\"LockReason\\": []\\n },\\n \\"RegionId\\": \\"cn-shanghai\\",\\n \\"ServiceLocation\\": \\"asia-pacific\\",\\n \\"Status\\": \\"InUse\\"\\n }\\n ]\\n },\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"0487FCA3-E152-4726-8A17-25F69E03ADB0\\",\\n \\"TotalCount\\": 1\\n}"}]', + 'title' => 'DescribeGlobalAccelerationInstances', + 'summary' => 'Queries created GA instances.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeServerRelatedGlobalAccelerationInstances' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the GA instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ServerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the backend service instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-12s3sdf****', + ], + ], + [ + 'name' => 'ServerType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the backend service instance. Valid values:'."\n" + ."\n" + .'* **EcsInstance** (default): Elastic Compute Service (ECS)'."\n" + .'* **SlbInstance**: Server Load Balancer (SLB)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsInstance', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A8252014-D8DE-4D85-AF35-AFEXXXXXXX', + ], + 'GlobalAccelerationInstances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'GlobalAccelerationInstance' => [ + 'description' => 'The list of GA instances.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ServerIpAddress' => [ + 'description' => 'The IP address of the backend service.'."\n", + 'type' => 'string', + 'example' => '172.24.52.234', + ], + 'GlobalAccelerationInstanceId' => [ + 'description' => 'The ID of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'ga-t4nku6vv9****', + ], + 'IpAddress' => [ + 'description' => 'The public IP address of the GA instance.'."\n", + 'type' => 'string', + 'example' => '12.34.56.78', + ], + 'RegionId' => [ + 'description' => 'The region ID of the GA instance.'."\n", + 'type' => 'string', + 'example' => 'ap-southeast-1', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidBackendServerId.NotInVPC', + 'errorMessage' => 'The specified BackendServerId is not in VPC.', + ], + [ + 'errorCode' => 'InvalidBackendServerType.NotFound', + 'errorMessage' => 'The specified BackendServerType is not supported.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region is not supported.', + ], + [ + 'errorCode' => 'InvalidBackendServerId.NotFound', + 'errorMessage' => 'The specified BackendServerId is not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A8252014-D8DE-4D85-AF35-AFEXXXXXXX\\",\\n \\"GlobalAccelerationInstances\\": {\\n \\"GlobalAccelerationInstance\\": [\\n {\\n \\"ServerIpAddress\\": \\"172.24.52.234\\",\\n \\"GlobalAccelerationInstanceId\\": \\"ga-t4nku6vv9****\\",\\n \\"IpAddress\\": \\"12.34.56.78\\",\\n \\"RegionId\\": \\"ap-southeast-1\\"\\n }\\n ]\\n }\\n}","errorExample":"\\n\\n\\t\\n\\t\\t\\n\\t\\t\\tga-t4nku6vv9xxxxxxxxx\\n\\t\\t\\t12.34.56.78\\n\\t\\t\\tap-southeast-1\\n\\t\\t\\t172.24.52.234\\n\\t\\t\\n\\t\\n\\tA8252014-D8DE-4D85-AF35-AFEXXXXXXX\\n"},{"type":"xml","example":"\\n\\n\\t\\n\\t\\t\\n\\t\\t\\tga-t4nku6vv9****\\n\\t\\t\\t12.34.56.78\\n\\t\\t\\tap-southeast-1\\n\\t\\t\\t172.24.52.234\\n\\t\\t\\n\\t\\n\\tA8252014-D8DE-4D85-AF35-AFEXXXXXXX\\n","errorExample":"{\\n \\"GlobalAccelerationInstances\\": {\\n \\"GlobalAccelerationInstance\\": [\\n {\\n \\"GlobalAccelerationInstanceId\\": \\"ga-t4nku6vv9xxxxxxxxx\\",\\n \\"IpAddress\\": \\"12.34.56.78\\",\\n \\"RegionId\\": \\"ap-southeast-1\\",\\n \\"ServerIpAddress\\": \\"172.24.52.234\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"A8252014-D8DE-4D85-AF35-AFEXXXXXXX\\"\\n}"}]', + 'title' => 'DescribeServerRelatedGlobalAccelerationInstances', + 'summary' => 'Queries the GA instances that are associated with a specified backend server.', + 'description' => '> You can call this operation to query only dedicated-bandwidth GA instances.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RemoveGlobalAccelerationInstanceIp' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region where the shared-bandwidth instance is located.'."\n" + ."\n" + .'To query the region ID, call DescribeRegions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'GlobalAccelerationInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the shared-bandwidth instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ga-m5ex47zwya1sejyni****', + ], + ], + [ + 'name' => 'IpInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the EIP.'."\n" + ."\n" + .'To query the EIP ID, call DescribeEipAddresses.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eip-bp13e9i2qst4g6jzi****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '5BE01CD7-5A50-472D-AC14-CA181C5C03BE', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IpInstanceId.NotBandwidthPackage', + 'errorMessage' => 'The specified IpInstanceId does not in bandwidthPackage.', + ], + [ + 'errorCode' => 'DependencyViolation.ip', + 'errorMessage' => 'The specified BandwidthPackageId has eip in it.', + ], + [ + 'errorCode' => 'EIP_BIND_NATGATEWAY', + 'errorMessage' => 'The eip have bind natgateway.', + ], + [ + 'errorCode' => 'IpInstanceId.StatusNotAvailable', + 'errorMessage' => 'The specified Eip Status is not Available, Cannot remove from GlobalAcceleration.', + ], + [ + 'errorCode' => 'OperationUnsupported.IpNotInCbwp', + 'errorMessage' => 'The specified eip is not in commonbandwidthPackage.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified bandwidthPackageId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5BE01CD7-5A50-472D-AC14-CA181C5C03BE\\"\\n}","errorExample":"\\n\\n 01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\n"},{"type":"xml","example":"\\r\\n 01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\r\\n","errorExample":"{\\n \\"RequestId\\": \\"01FDDD49-C4B7-4D2A-A8E5-A93915C450A6\\"\\n}"}]', + 'title' => 'RemoveGlobalAccelerationInstanceIp', + 'summary' => 'Disassociates an EIP from a shared-bandwidth GA instance.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateVpcGatewayEndpoint' => [ + 'summary' => 'Creates a gateway endpoint.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'title' => '专有网络实例ID', + 'description' => 'The ID of the virtual private cloud (VPC) where you want to create the gateway endpoint.'."\n" + ."\n" + .'The VPC and gateway endpoint must be deployed in the same region.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp1gsk7h12ew7oegk****', + ], + ], + [ + 'name' => 'ServiceName', + 'in' => 'query', + 'schema' => [ + 'title' => '网关节点服务的名称', + 'description' => 'The name of the endpoint service.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'com.aliyun.cn-hangzhou.oss', + ], + ], + [ + 'name' => 'PolicyDocument', + 'in' => 'query', + 'schema' => [ + 'title' => '访问云服务的权限控制策略', + 'description' => 'The access policy for the cloud service.'."\n" + ."\n" + .'For more information about the syntax and structure of the access policy, see [Policy syntax and structure](~~93739~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{ "Version" : "1", "Statement" : [ { "Effect" : "Allow", "Resource" : [ "*" ], "Action" : [ "*" ], "Principal" : [ "*" ] } ] }', + ], + ], + [ + 'name' => 'EndpointName', + 'in' => 'query', + 'schema' => [ + 'title' => '网关节点名称', + 'description' => 'The name of the gateway endpoint.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'EndpointDescription', + 'in' => 'query', + 'schema' => [ + 'title' => '网关节点描述', + 'description' => 'The description of the gateway endpoint.'."\n" + ."\n" + .'The description must be 1 to 255 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the gateway endpoint belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the resource.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the resource. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the resource. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '62CFC815-E08A-5CF4-92D1-54273EC9E406', + ], + 'EndpointId' => [ + 'description' => 'The ID of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'vpce-bp1w1dmdqjpwul0v3****', + ], + 'ServiceName' => [ + 'description' => 'The name of the endpoint service.'."\n", + 'type' => 'string', + 'example' => 'com.aliyun.cn-hangzhou.oss', + ], + 'EndpointName' => [ + 'description' => 'The name of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'CreationTime' => [ + 'description' => 'The time when the gateway endpoint was created. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-08-27T01:58:37Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the gateway endpoint belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4ph****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ConcurrentOperation', + 'errorMessage' => 'The operation is failed because of concurrent operation.', + ], + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', + ], + [ + 'errorCode' => 'IllegalParam.PolicyDocument', + 'errorMessage' => 'The param of PolicyDocument is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.GatewayEndpointName', + 'errorMessage' => 'The param of GatewayEndpointName is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.GatewayEndpointDescription', + 'errorMessage' => 'The param of GatewayEndpointDescription is illegal.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.GatewayEndpoint', + 'errorMessage' => 'The specified resource gateway endpoint is already exist.', + ], + [ + 'errorCode' => 'ResourceNotFound.ServiceName', + 'errorMessage' => 'The specified resource service name is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.VpcId', + 'errorMessage' => 'The specified resource vpc is not found.', + ], + [ + 'errorCode' => 'Forbidden.OperateShareResource', + 'errorMessage' => 'The operation is failed because of shared vpc.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'The status of vpc [%s] is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.CenStatus', + 'errorMessage' => 'The status of vpc cenStatus [%s] is incorrect.', + ], + [ + 'errorCode' => 'OperationFailed.VpcIpv6Disabled', + 'errorMessage' => 'The operation is failed because of VpcIpv6Disabled.', + ], + [ + 'errorCode' => 'UnsupportedFeature.GatewayEndpoint', + 'errorMessage' => 'The feature of gatewayEndpoint is not supported for %s.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'System is busy, please try again later.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'OperationDenied.PolicyDocument', + 'errorMessage' => 'The gatewayEndpoint does not support policy.', + ], + [ + 'errorCode' => 'MissingParam.PolicyDocument', + 'errorMessage' => 'The param of PolicyDocument is missing.', + ], + [ + 'errorCode' => 'OperationDenied.NotAuthorized', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidPolicy.WrongFormat', + 'errorMessage' => 'Invalid input policy format.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListVpcGatewayEndpoints', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"62CFC815-E08A-5CF4-92D1-54273EC9E406\\",\\n \\"EndpointId\\": \\"vpce-bp1w1dmdqjpwul0v3****\\",\\n \\"ServiceName\\": \\"com.aliyun.cn-hangzhou.oss\\",\\n \\"EndpointName\\": \\"test\\",\\n \\"CreationTime\\": \\"2021-08-27T01:58:37Z\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4ph****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 62CFC815-E08A-5CF4-92D1-54273EC9E406\\n vpce-bp1w1dmdqjpwul0v3****\\n com.aliyun.cn-hangzhou.oss\\n test\\n 2021-08-27T01:58:37Z\\n rg-acfmxazb4ph****\\n","errorExample":""}]', + 'title' => 'CreateVpcGatewayEndpoint', + 'description' => '* **CreateVpcGatewayEndpoint** is an asynchronous operation. After a request is sent, the system returns an **EndpointId** and runs the task in the background. You can call the [ListVpcGatewayEndpoints](~~448682~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the gateway endpoint is in the **Creating** state, the gateway endpoint is being created.'."\n" + .' * If the gateway endpoint is in the **Created** state, the gateway endpoint is created.'."\n" + ."\n" + .'* You cannot repeatedly call the **CreateVpcGatewayEndpoint** operation for the same endpoint service within the specified period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteVpcGatewayEndpoint' => [ + 'summary' => 'Deletes a gateway endpoint.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + ], + 'parameters' => [ + [ + 'name' => 'EndpointId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VPC网关实例ID', + 'description' => 'The ID of the gateway endpoint.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpce-bp1w1dmdqjpwul0v3****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The **token** can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks the request for potential issues, including the AccessKey pair, the permissions of the RAM user, and the required parameters. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A1122D0F-7B3B-5445-BB19-17F27F97FE1C', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ConcurrentOperation', + 'errorMessage' => 'The operation is failed because of concurrent operation.', + ], + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayEndpoint', + 'errorMessage' => 'The specified resource gateway endpoint is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.GatewayEndpoint', + 'errorMessage' => 'The status of GatewayEndpoint [%s] is incorrect.', + ], + [ + 'errorCode' => 'DependencyViolation.Association', + 'errorMessage' => 'The specified resource of [%s] depends on [%s], so the operation cannot be completed.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The regionId provided does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListVpcGatewayEndpoints', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A1122D0F-7B3B-5445-BB19-17F27F97FE1C\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\nA1122D0F-7B3B-5445-BB19-17F27F97FE1C\\r\\n","errorExample":""}]', + 'title' => 'DeleteVpcGatewayEndpoint', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UpdateVpcGatewayEndpointAttribute' => [ + 'summary' => 'Modifies the configuration of a gateway endpoint.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'EndpointId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VPC网关实例ID', + 'description' => 'The ID of the gateway endpoint that you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpce-bp1w1dmdqjpwul0v3****', + ], + ], + [ + 'name' => 'EndpointName', + 'in' => 'query', + 'schema' => [ + 'title' => '网关节点名称', + 'description' => 'The new name of the gateway endpoint.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'update', + ], + ], + [ + 'name' => 'EndpointDescription', + 'in' => 'query', + 'schema' => [ + 'title' => '网关节点描述', + 'description' => 'The new description of the gateway endpoint.'."\n" + ."\n" + .'The description must be 1 to 255 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'updateendpoint', + ], + ], + [ + 'name' => 'PolicyDocument', + 'in' => 'query', + 'schema' => [ + 'title' => '访问云服务的权限控制策略', + 'description' => 'The access policy for the cloud service.'."\n" + ."\n" + .'For more information about the syntax and structure of the access policy, see [Policy syntax and structure](~~93739~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{ "Version" : "1", "Statement" : [ { "Effect" : "Allow", "Resource" : [ "*" ], "Action" : [ "*" ], "Principal" : [ "*" ] } ] }', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate the token, but you must make sure that the token is unique among all requests. The token can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. The value of **RequestId** of each API request may be different.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求', + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* **true**: performs a dry run. The system checks your AccessKey pair, the RAM user permissions, and the required parameters If the request fails the dry run, the corresponding error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The returned information.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'E9654534-5A38-5545-813F-0403D49042FB', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ConcurrentOperation', + 'errorMessage' => 'The operation is failed because of concurrent operation.', + ], + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayEndpoint', + 'errorMessage' => 'The specified resource gateway endpoint is not found.', + ], + [ + 'errorCode' => 'IllegalParam.PolicyDocument', + 'errorMessage' => 'The param of PolicyDocument is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.GatewayEndpointName', + 'errorMessage' => 'The param of GatewayEndpointName is illegal.', + ], + [ + 'errorCode' => 'IllegalParam.GatewayEndpointDescription', + 'errorMessage' => 'The param of GatewayEndpointDescription is illegal.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'System is busy, please try again later.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The regionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'OperationDenied.PolicyDocument', + 'errorMessage' => 'The gatewayEndpoint does not support policy.', + ], + [ + 'errorCode' => 'IncorrectStatus.GatewayEndpoint', + 'errorMessage' => 'The status of GatewayEndpoint [%s] is incorrect.', + ], + [ + 'errorCode' => 'InvalidPolicy.WrongFormat', + 'errorMessage' => 'Invalid input policy format.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E9654534-5A38-5545-813F-0403D49042FB\\"\\n}","errorExample":""},{"type":"xml","example":"\\n E9654534-5A38-5545-813F-0403D49042FB\\n","errorExample":""}]', + 'title' => 'UpdateVpcGatewayEndpointAttribute', + 'description' => '* **UpdateVpcGatewayEndpointAttribute** is an asynchronous operation. After a request is sent, the system returns a **request ID** and runs the task in the background. You can call the [GetVpcGatewayEndpointAttribute](~~311017~~) operation to query the status of the task.'."\n" + ."\n" + .' * If the gateway endpoint is in the **Updating** state, it is being modified.'."\n" + .' * If the gateway endpoint is in the **Created** state, it is modified.'."\n" + ."\n" + .'* You cannot call the **UpdateVpcGatewayEndpointAttribute** operation within a specific period of time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListVpcEndpointServicesByEndUser' => [ + 'summary' => 'Queries available endpoint services.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + ], + 'parameters' => [ + [ + 'name' => 'ServiceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the endpoint service that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'com.aliyun.cn-hangzhou.oss', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If this is your first query and no next queries are to be sent, ignore this parameter.'."\n" + .'* If a next query is to be performed, set the value to the NextToken value returned in the last call to the ListListenerCertificates operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '20', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0AB1129F-32C1-5E4D-9E22-E4A859CA46EB', + ], + 'NextToken' => [ + 'description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If **NextToken** is returned, the value is the token that is used for the next query.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'MaxResults' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '20', + ], + 'Services' => [ + 'description' => 'The list of entries returned.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ServiceId' => [ + 'description' => 'The ID of the endpoint service.'."\n", + 'type' => 'string', + 'example' => 'vpces-m5enwdmilo210aibo9****', + ], + 'ServiceName' => [ + 'description' => 'The name of the endpoint service.'."\n", + 'type' => 'string', + 'example' => 'com.aliyun.cn-hangzhou.oss', + ], + 'DefaultPolicyDocument' => [ + 'description' => 'The default access policy.'."\n", + 'type' => 'string', + 'example' => '{ \\"Version\\" : \\"1\\", \\"Statement\\" : [ { \\"Effect\\" : \\"Allow\\", \\"Action\\" : \\"*\\", \\"Principal\\" : \\"*\\", \\"Resource\\" : \\"*\\" } ] }', + ], + 'SupportPolicy' => [ + 'description' => 'Indicate whether the endpoint service supports the access policy. Valid values:'."\n" + ."\n" + .'* **false**'."\n" + .'* **true**'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ServiceDomain' => [ + 'description' => 'The domain name of the cloud service to which the endpoint service belongs.'."\n", + 'type' => 'string', + 'example' => 'oss-admin.aliyuncs.com', + ], + ], + ], + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'string', + 'example' => '2', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.EndpointServiceId', + 'errorMessage' => 'The specified resource gateway endpoint service is not found.', + ], + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0AB1129F-32C1-5E4D-9E22-E4A859CA46EB\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"MaxResults\\": 20,\\n \\"Services\\": [\\n {\\n \\"ServiceId\\": \\"vpces-m5enwdmilo210aibo9****\\",\\n \\"ServiceName\\": \\"com.aliyun.cn-hangzhou.oss\\",\\n \\"DefaultPolicyDocument\\": \\"{ \\\\\\\\\\\\\\"Version\\\\\\\\\\\\\\" : \\\\\\\\\\\\\\"1\\\\\\\\\\\\\\", \\\\\\\\\\\\\\"Statement\\\\\\\\\\\\\\" : [ { \\\\\\\\\\\\\\"Effect\\\\\\\\\\\\\\" : \\\\\\\\\\\\\\"Allow\\\\\\\\\\\\\\", \\\\\\\\\\\\\\"Action\\\\\\\\\\\\\\" : \\\\\\\\\\\\\\"*\\\\\\\\\\\\\\", \\\\\\\\\\\\\\"Principal\\\\\\\\\\\\\\" : \\\\\\\\\\\\\\"*\\\\\\\\\\\\\\", \\\\\\\\\\\\\\"Resource\\\\\\\\\\\\\\" : \\\\\\\\\\\\\\"*\\\\\\\\\\\\\\" } ] }\\",\\n \\"SupportPolicy\\": true,\\n \\"ServiceDomain\\": \\"oss-admin.aliyuncs.com\\"\\n }\\n ],\\n \\"TotalCount\\": \\"2\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0AB1129F-32C1-5E4D-9E22-E4A859CA46EB\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 20\\n \\n vpces-m5enwdmilo210aibo9****\\n com.aliyun.cn-hangzhou.oss\\n { \\\\\\"Version\\\\\\" : \\\\\\"1\\\\\\", \\\\\\"Statement\\\\\\" : [ { \\\\\\"Effect\\\\\\" : \\\\\\"Allow\\\\\\", \\\\\\"Action\\\\\\" : \\\\\\"*\\\\\\", \\\\\\"Principal\\\\\\" : \\\\\\"*\\\\\\", \\\\\\"Resource\\\\\\" : \\\\\\"*\\\\\\" } ] }\\n true\\n oss-admin.aliyuncs.com\\n \\n","errorExample":""}]', + 'title' => 'ListVpcEndpointServicesByEndUser', + ], + 'GetVpcGatewayEndpointAttribute' => [ + 'summary' => 'Queries the attributes of a gateway endpoint.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'EndpointId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VPC网关实例ID', + 'description' => 'The ID of the gateway endpoint.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpce-bp1w1dmdqjpwul0v3****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A1122D0F-7B3B-5445-BB19-17F27F97FE1C', + ], + 'EndpointId' => [ + 'description' => 'The ID of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'vpce-bp1w1dmdqjpwul0v3****', + ], + 'EndpointName' => [ + 'description' => 'The name of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'EndpointDescription' => [ + 'description' => 'The description of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'ServiceName' => [ + 'description' => 'The name of the endpoint service.'."\n", + 'type' => 'string', + 'example' => 'com.aliyun.cn-hangzhou.oss', + ], + 'VpcId' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the gateway endpoint belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1nh86rugg01zol0****', + ], + 'PolicyDocument' => [ + 'description' => 'The access policy for the cloud service.'."\n", + 'type' => 'string', + 'example' => '{"Version" : "1", "Statement" : [ { "Effect" : "Allow", "Resource" : [ "*" ], "Action" : [ "*" ], "Principal" : [ "*" ] } ] }', + ], + 'CreationTime' => [ + 'description' => 'The time when the endpoint was created. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-08-27T01:58:37Z', + ], + 'EndpointStatus' => [ + 'description' => 'The status of the gateway endpoint. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Associating**'."\n" + .'* **Dissociating**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'RouteTables' => [ + 'description' => 'The ID of the route table associated with the gateway endpoint.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the route table associated with the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => '["vtb-bp1s6g17997knk6a3****", "vtb-bp12qsdjwm37kv679****"]', + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the gateway endpoint belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxvfvazb4p****', + ], + 'Tags' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceNotFound.GatewayEndpoint', + 'errorMessage' => 'The specified resource gateway endpoint is not found.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A1122D0F-7B3B-5445-BB19-17F27F97FE1C\\",\\n \\"EndpointId\\": \\"vpce-bp1w1dmdqjpwul0v3****\\",\\n \\"EndpointName\\": \\"test\\",\\n \\"EndpointDescription\\": \\"test\\",\\n \\"ServiceName\\": \\"com.aliyun.cn-hangzhou.oss\\",\\n \\"VpcId\\": \\"vpc-bp1nh86rugg01zol0****\\",\\n \\"PolicyDocument\\": \\"{\\\\\\"Version\\\\\\" : \\\\\\"1\\\\\\", \\\\\\"Statement\\\\\\" : [ { \\\\\\"Effect\\\\\\" : \\\\\\"Allow\\\\\\", \\\\\\"Resource\\\\\\" : [ \\\\\\"*\\\\\\" ], \\\\\\"Action\\\\\\" : [ \\\\\\"*\\\\\\" ], \\\\\\"Principal\\\\\\" : [ \\\\\\"*\\\\\\" ] } ] }\\",\\n \\"CreationTime\\": \\"2021-08-27T01:58:37Z\\",\\n \\"EndpointStatus\\": \\"Created\\",\\n \\"RouteTables\\": [\\n \\"[\\\\\\"vtb-bp1s6g17997knk6a3****\\\\\\", \\\\\\"vtb-bp12qsdjwm37kv679****\\\\\\"]\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-acfmxvfvazb4p****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n A1122D0F-7B3B-5445-BB19-17F27F97FE1C\\n vpce-bp1w1dmdqjpwul0v3****\\n test\\n test\\n com.aliyun.cn-hangzhou.oss\\n vpc-bp1nh86rugg01zol0****\\n {\\"Version\\" : \\"1\\", \\"Statement\\" : [ { \\"Effect\\" : \\"Allow\\", \\"Resource\\" : [ \\"*\\" ], \\"Action\\" : [ \\"*\\" ], \\"Principal\\" : [ \\"*\\" ] } ] }\\n 2021-08-27T01:58:37Z\\n Created\\n [\\"vtb-bp1s6g17997knk6a3****\\", \\"vtb-bp12qsdjwm37kv679****\\"]\\n rg-acfmxvfvazb4p****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n","errorExample":""}]', + 'title' => 'GetVpcGatewayEndpointAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ListVpcGatewayEndpoints' => [ + 'summary' => 'Queries gateway endpoints.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'EndpointId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VPC网关实例ID', + 'description' => 'The ID of the gateway endpoint.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpce-bp1i1212ss2whuwyw****', + ], + ], + [ + 'name' => 'EndpointName', + 'in' => 'query', + 'schema' => [ + 'title' => 'VPC网关实例名称', + 'description' => 'The name of the gateway endpoint.'."\n" + ."\n" + .'The name must be 1 to 128 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test', + ], + ], + [ + 'name' => 'ServiceName', + 'in' => 'query', + 'schema' => [ + 'title' => '后端的服务名称', + 'description' => 'The name of the endpoint service.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'com.aliyun.cn-hangzhou.oss', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* If a value is returned for NextToken, specify the value in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return per page. Valid values: **1** to **100**. Default value: **20**.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '20', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the gateway endpoint belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxvfvazb4p****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag list', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource. You can specify at most 20 tag keys. It cannot be an empty string.'."\n" + ."\n" + .'The key cannot exceed 64 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource. You can specify at most 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value cannot exceed 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The key must start with a letter but cannot start with `aliyun` or `acs:`. The key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the gateway endpoint belongs.', + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1gsk7h12ew7oegk****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0AB1129F-32C1-5E4D-9E22-E4A859CA46EB', + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If no value is returned for **NextToken**, no next queries are sent.'."\n" + .'* If a value is returned for **NextToken**, the value can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'TotalCount' => [ + 'description' => 'The number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '10', + ], + 'Endpoints' => [ + 'description' => 'The list of gateway endpoints.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'EndpointId' => [ + 'description' => 'The ID of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'vpce-bp1i1212ss2whuwyw****', + ], + 'EndpointName' => [ + 'description' => 'The name of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'EndpointDescription' => [ + 'description' => 'The description of the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'test_description', + ], + 'ServiceName' => [ + 'description' => 'The name of the endpoint service.'."\n", + 'type' => 'string', + 'example' => 'com.aliyun.cn-hangzhou.oss', + ], + 'VpcId' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the gateway endpoint belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1gsk7h12ew7oegk****', + ], + 'PolicyDocument' => [ + 'description' => 'The access policy for the cloud service.'."\n" + ."\n" + .'For more information about the syntax and structure of the access policy, see [Policy syntax and structure](~~93739~~).'."\n", + 'type' => 'string', + 'example' => '{\\n \\"Version\\": \\"1\\",\\n \\"Statement\\": [\\n {\\n \\"Effect\\": \\"Allow\\",\\n \\"Action\\": \\"*\\",\\n \\"Principal\\": \\"*\\",\\n \\"Resource\\": \\"*\\"\\n }\\n ]\\n}', + ], + 'CreationTime' => [ + 'description' => 'The time when the endpoint was created. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-09-08T08:43:04Z', + ], + 'EndpointStatus' => [ + 'description' => 'The status of the gateway endpoint. Valid values:'."\n" + ."\n" + .'* **Creating**'."\n" + .'* **Created**'."\n" + .'* **Modifying**'."\n" + .'* **Associating**'."\n" + .'* **Dissociating**'."\n" + .'* **Deleting**'."\n", + 'type' => 'string', + 'example' => 'Created', + ], + 'AssociatedRouteTables' => [ + 'description' => 'The ID of the route table associated with the gateway endpoint.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the route table associated with the gateway endpoint.'."\n", + 'type' => 'string', + 'example' => 'vtb-bp1sme72jnuodvyx7****', + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the gateway endpoint belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxvfvazb4p****', + ], + 'Tags' => [ + 'description' => 'The tag list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of tag N added to the resource.'."\n", + 'type' => 'string', + 'example' => 'FinanceJoshua', + ], + ], + ], + ], + ], + ], + ], + 'MaxResults' => [ + 'title' => '本次请求最大数量', + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '20', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IllegalParam.NextToken', + 'errorMessage' => 'The specified NextToken is invalid.', + ], + [ + 'errorCode' => 'IllegalParam.MaxResults', + 'errorMessage' => 'The param of MaxResults is illegal.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified value of VpcId is not found in our record.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0AB1129F-32C1-5E4D-9E22-E4A859CA46EB\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TotalCount\\": 10,\\n \\"Endpoints\\": [\\n {\\n \\"EndpointId\\": \\"vpce-bp1i1212ss2whuwyw****\\",\\n \\"EndpointName\\": \\"test\\",\\n \\"EndpointDescription\\": \\"test_description\\",\\n \\"ServiceName\\": \\"com.aliyun.cn-hangzhou.oss\\",\\n \\"VpcId\\": \\"vpc-bp1gsk7h12ew7oegk****\\",\\n \\"PolicyDocument\\": \\"{\\\\\\\\n \\\\\\\\\\\\\\"Version\\\\\\\\\\\\\\": \\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\"Statement\\\\\\\\\\\\\\": [\\\\\\\\n {\\\\\\\\n \\\\\\\\\\\\\\"Effect\\\\\\\\\\\\\\": \\\\\\\\\\\\\\"Allow\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\"Action\\\\\\\\\\\\\\": \\\\\\\\\\\\\\"*\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\"Principal\\\\\\\\\\\\\\": \\\\\\\\\\\\\\"*\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\"Resource\\\\\\\\\\\\\\": \\\\\\\\\\\\\\"*\\\\\\\\\\\\\\"\\\\\\\\n }\\\\\\\\n ]\\\\\\\\n}\\",\\n \\"CreationTime\\": \\"2021-09-08T08:43:04Z\\",\\n \\"EndpointStatus\\": \\"Created\\",\\n \\"AssociatedRouteTables\\": [\\n \\"vtb-bp1sme72jnuodvyx7****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-acfmxvfvazb4p****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20\\n}","errorExample":""},{"type":"xml","example":"\\n 0AB1129F-32C1-5E4D-9E22-E4A859CA46EB\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 10\\n \\n vpce-bp1i1212ss2whuwyw****\\n test\\n test_description\\n com.aliyun.cn-hangzhou.oss\\n vpc-bp1gsk7h12ew7oegk****\\n {\\\\n \\\\\\"Version\\\\\\": \\\\\\"1\\\\\\",\\\\n \\\\\\"Statement\\\\\\": [\\\\n {\\\\n \\\\\\"Effect\\\\\\": \\\\\\"Allow\\\\\\",\\\\n \\\\\\"Action\\\\\\": \\\\\\"*\\\\\\",\\\\n \\\\\\"Principal\\\\\\": \\\\\\"*\\\\\\",\\\\n \\\\\\"Resource\\\\\\": \\\\\\"*\\\\\\"\\\\n }\\\\n ]\\\\n}\\n 2021-09-08T08:43:04Z\\n Created\\n vtb-bp1sme72jnuodvyx7****\\n rg-acfmxvfvazb4p****\\n \\n FinanceDept\\n FinanceJoshua\\n \\n \\n 20\\n","errorExample":""}]', + 'title' => 'ListVpcGatewayEndpoints', + 'translator' => 'machine', + ], + 'AssociateRouteTablesWithVpcGatewayEndpoint' => [ + 'summary' => 'Associates a route table with a gateway endpoint.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'EndpointId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VPC网关实例ID', + 'description' => 'The ID of the gateway endpoint to be associated with the route table.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpce-m5e371h5clm3uadih****', + ], + ], + [ + 'name' => 'RouteTableIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '路由表列表', + 'description' => 'The ID of the route table. Valid values of **N** are **1** to **20**, which specifies that you can associate a gateway endpoint with at most 20 route tables at a time.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the route table. Valid values of **N** are **1** to **20**, which specifies that you can associate a gateway endpoint with at most 20 route tables at a time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-m5elgtm3aj586iitr****', + ], + 'required' => true, + 'example' => 'vtb-m5elgtm3aj586iitr****', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate a client token. Make sure that a unique client token is used for each request. The **token** can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks your AccessKey pair, the RAM user permissions, and the required parameters. If the request fails the dry run, the DryRunOperation error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '59BDDA2D-FB52-59F9-9DC5-5EA7D6808B8E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ConcurrentOperation', + 'errorMessage' => 'The operation is failed because of concurrent operation.', + ], + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayEndpoint', + 'errorMessage' => 'The specified resource gateway endpoint is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.GatewayEndpoint', + 'errorMessage' => 'The status of GatewayEndpoint [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.ServiceName', + 'errorMessage' => 'The specified resource service name is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.PrefixList', + 'errorMessage' => 'The specified resource prefixList is not found.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource routetable is not found.', + ], + [ + 'errorCode' => 'Mismatch.VpcAndRouteTable', + 'errorMessage' => 'The vpc and routetable are mismatched.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTable', + 'errorMessage' => 'The status of route table [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceAlreadyExist.Association', + 'errorMessage' => 'The specified resource of [%s] is already exist.', + ], + [ + 'errorCode' => 'VPC_ROUTE_ENTRY_CIDR_BLOCK_DUPLICATE', + 'errorMessage' => 'Specified CIDR block is already exists.', + ], + [ + 'errorCode' => 'VPC_SWITCH_STATUS_ERROR', + 'errorMessage' => 'vSwitch status error, %s', + ], + [ + 'errorCode' => 'QuotaExceeded.VpcRouteEntryNum', + 'errorMessage' => 'The quota of vpc route entry num is exceeded, usage %s/%s.', + ], + [ + 'errorCode' => 'OperationUnsupported.DestinationCidrBlockOverlapWithVSwitch', + 'errorMessage' => 'The operation is failed because of destination CIDR block is in the CIDR of the VSwitch.', + ], + [ + 'errorCode' => 'SystemBusy', + 'errorMessage' => 'System is busy, please try again later.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The regionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'The status of vpc [%s] is incorrect.', + ], + [ + 'errorCode' => 'IncorrectStatus.CenStatus', + 'errorMessage' => 'The status of vpc cenStatus [%s] is incorrect.', + ], + [ + 'errorCode' => 'UnsupportedFeature.RouterTableType', + 'errorMessage' => 'The type of router table is not supported.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListVpcGatewayEndpoints', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"59BDDA2D-FB52-59F9-9DC5-5EA7D6808B8E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 59BDDA2D-FB52-59F9-9DC5-5EA7D6808B8E\\n","errorExample":""}]', + 'title' => 'AssociateRouteTablesWithVpcGatewayEndpoint', + 'description' => 'When you call this operation, take note of the following limits:'."\n" + ."\n" + .'* The gateway endpoint to be associated with the route table cannot be in one of the following states: **Creating**, **Modifying**, **Associating**, **Dissociating**, or **Deleting**.'."\n" + ."\n" + .'* The route table cannot be in one of the following states: **Creating**, **Modifying**, **Associating**, **Dissociating**, or **Deleting**.'."\n" + ."\n" + .'* The gateway endpoint and route table must belong to the same virtual private cloud (VPC).'."\n" + ."\n" + .'* The route table cannot be shared.'."\n" + ."\n" + .'* You cannot associate a gateway endpoint with a virtual border router (VBR) route table.'."\n" + ."\n" + .'* You can associate a gateway endpoint with at most 20 route tables at a time.'."\n" + ."\n" + .'* **AssociateRouteTablesWithVpcGatewayEndpoint** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetVpcGatewayEndpointAttribute](~~311017~~) operation to query whether a route table is associated with a gateway endpoint.'."\n" + ."\n" + .' * If the **Associating** status is returned, the route table is being associated with the gateway endpoint.'."\n" + .' * If the **Created** status is returned, the route table is associated with the gateway endpoint.'."\n" + ."\n" + .'* You cannot repeatedly call the **AssociateRouteTablesWithVpcGatewayEndpoint** operation within a specific period of time.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DissociateRouteTablesFromVpcGatewayEndpoint' => [ + 'summary' => 'Disassociates a gateway endpoint from a route table.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'EndpointId', + 'in' => 'query', + 'schema' => [ + 'title' => 'VPC网关实例ID', + 'description' => 'The ID of the gateway endpoint to be disassociated from the route table.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpce-m5e371h5clm3uadih****', + ], + ], + [ + 'name' => 'RouteTableIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '路由表列表', + 'description' => 'The ID of the route table. Valid values of **N** are **1** to **20**, which specifies that you can disassociate a gateway endpoint from at most 20 route tables at a time.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the route table.', + 'type' => 'string', + 'required' => false, + 'example' => 'vtb-m5elgtm3aj586iitr****', + ], + 'required' => true, + 'maxItems' => 20, + 'example' => 'vtb-m5elgtm3aj586iitr****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The **token** can contain only ASCII characters and cannot exceed 64 characters in length.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求', + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域', + 'description' => 'The region ID of the gateway endpoint.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The returned information.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '59BDDA2D-FB52-59F9-9DC5-5EA7D6808B8E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationFailed.ConcurrentOperation', + 'errorMessage' => 'The operation is failed because of concurrent operation.', + ], + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', + ], + [ + 'errorCode' => 'ResourceNotFound.GatewayEndpoint', + 'errorMessage' => 'The specified resource gateway endpoint is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.GatewayEndpoint', + 'errorMessage' => 'The status of GatewayEndpoint [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteTable', + 'errorMessage' => 'The specified resource routetable is not found.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteTable', + 'errorMessage' => 'The status of route table [%s] is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.Association', + 'errorMessage' => 'The specified resource gateway endpoint is not associated.', + ], + [ + 'errorCode' => 'IncorrectStatus.RouteEntry', + 'errorMessage' => 'Some route entry status blocked this operation.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The regionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'IncorrectStatus.CenStatus', + 'errorMessage' => 'The CenStatus of Vpc is incorrect.', + ], + [ + 'errorCode' => 'ResourceNotFound.RouteEntry', + 'errorMessage' => 'The specified resource is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Vpc::2016-04-28::ListVpcGatewayEndpoints', + 'callbackInterval' => 3000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"30F711D5-E7E2-5D42-A247-0FA7288BEAAA\\"\\n}","type":"json"}]', + 'title' => 'DissociateRouteTablesFromVpcGatewayEndpoint', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + ], + 'MoveResourceGroup' => [ + 'summary' => 'Moves a resource to another resource group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-hp31psbg8ec3023s6****', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource for which you want to modify the resource group. Valid values:'."\n" + ."\n" + .'* **Vpc**'."\n" + .'* **Eip**'."\n" + .'* **BandwidthPackage**'."\n" + .'* **PrefixList**'."\n" + .'* **PublicIpAddressPool**'."\n" + .'* **FlowLog**'."\n" + .'* **HaVip**'."\n" + .'* **TrafficMirrorFilter**'."\n" + .'* **TrafficMirrorSession**'."\n" + .'* **IPv4Gateway**'."\n" + .'* **IPv6Gateway**'."\n" + .'* **DhcpOptionsSet**'."\n" + .'* **GatewayEndpoint**'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'NewResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which you want to move the resource.'."\n" + ."\n" + .'> You can use resource groups to facilitate resource grouping and permission management for an Alibaba Cloud. For more information, see [What is resource management?](~~94475~~)'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'rg-acfm3peow3k****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the cloud resource belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidResourceGroupId', + 'errorMessage' => 'The specified ResourceGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'The specified ResourceId does not exist.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceType', + 'errorMessage' => 'Invalid Resource Type value.', + ], + [ + 'errorCode' => 'OperationFailed.InstanceStatusNotAllowed', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectStatus.Vpc', + 'errorMessage' => 'The status of %s [%s] is incorrect.', + ], + [ + 'errorCode' => 'Forbidden.OperateManagedFlowLog', + 'errorMessage' => 'Authentication is failed for operate managed flowlog.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidBandwidthPackageId.NotFound', + 'errorMessage' => 'The specified bandwidthPackage resourceId does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F\\n","errorExample":""}]', + 'title' => 'MoveResourceGroup', + ], + 'ChangeResourceGroup' => [ + 'summary' => 'Moves an Express Connect circuit to a new resource group.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'NewResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'title' => '', + 'description' => 'The ID of the new resource group.'."\n" + ."\n" + .'> You can use resource groups to manage resources within your Alibaba Cloud account by group. This helps you resolve issues such as resource grouping and permission management for your Alibaba Cloud account. For more information, see [What is Resource Management?](~~94475~~)'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'rg-bp1drpcfz9srr393h****', + 'enum' => [], + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource. Valid values:'."\n" + ."\n" + .'* **PHYSICALCONNECTION**: Express Connect circuit.'."\n" + .'* **VIRTUALBORDERROUTER**: virtual border router (VBR).'."\n" + .'* **ROUTERINTERFACE**: router interface.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'PHYSICALCONNECTION', + 'enum' => [], + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'title' => '', + 'description' => 'The ID of the Express Connect circuit whose resource group you want to modify.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pc-bp16qjewdsunr41m1****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the new resource group belongs.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~36063~~) operation to obtain the region ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ResourceType.Unknown', + 'errorMessage' => 'Unknown ResourceType.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instance id does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'This resourceId already has flowlog instance existed.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceType', + 'errorMessage' => 'Invalid Resource Type value.', + ], + [ + 'errorCode' => 'IllegalParam.ResourceGroupId', + 'errorMessage' => 'Invalid ResourceGroupld value.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 54B48E3D-DF70-471B-AA93-08E683A1B45\\n","errorExample":""}]', + 'title' => 'ChangeResourceGroup', + 'description' => '## [](#)'."\n" + ."\n" + .'You cannot repeatedly call the **ChangeResourceGroup** operation to modify the resource group of the same Express Connect circuit.'."\n", + ], + 'DescribeVpcGrantRulesToEcr' => [ + 'summary' => 'Queries the cross-account authorization information of an ECR for a specified network instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + ], + 'parameters' => [ + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return per page. Valid values: **1** to **100**. Default value: **10**.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '50', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* You do not need to specify this parameter for the first request.'."\n" + .'* If a value is returned for NextToken, you must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the network instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-wz9ek66wd7tl5xqpy****', + ], + ], + [ + 'name' => 'EcrInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECR that you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecr-ncxadcujadncsa****', + ], + ], + [ + 'name' => 'EcrOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the ECR belongs.'."\n" + ."\n" + .'> If you want to connect to a network instance that belongs to a different account, this parameter is required.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '192732132151****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the network instance that you want to query.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the network instance belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4ph6aiy****', + ], + ], + [ + 'name' => 'Tags', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details of the tag.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag. You must specify at least one tag key and at most 20 tag keys. The tag key cannot be an empty string.'."\n" + ."\n" + .'A tag key can be up to 128 characters in length. It cannot start with `acs:` or `aliyun`, and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceDept', + ], + 'Value' => [ + 'description' => 'The value of the tag. You can enter a maximum of 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length, and cannot start with `aliyun` or `acs:`. The tag key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FinanceJoshua', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of instance. Valid values:'."\n" + ."\n" + .'* **VBR**: queries the permissions that are granted to a VBR.'."\n" + .'* **VPC**: queries the permissions that are granted from a VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'VPC', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n" + ."\n" + .'* If **NextToken** is empty, there is no next page.'."\n" + .'* ****'."\n", + 'type' => 'string', + 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', + ], + 'RequestId' => [ + 'description' => 'The unique ID that Alibaba Cloud generates for the request.'."\n", + 'type' => 'string', + 'example' => '66342E8E-5E87-5FF9-80C7-C3E3571A****', + ], + 'TotalCount' => [ + 'description' => 'The total number of instances queried. If you specify the MaxResults and NextToken request parameters to perform a paged query, the value of the TotalCount response parameter is invalid.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'GrantRuleModels' => [ + 'description' => 'The authorization information.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The authorization information.'."\n", + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the network instance.'."\n", + 'type' => 'string', + 'example' => 'vpc-wz9ek66wd7tl5xqpy****', + ], + 'Type' => [ + 'description' => 'The type of instance. Valid values:'."\n" + ."\n" + .'* **VBR**: queries the permissions that are granted to a VBR.'."\n" + .'* **VPC**: queries the permissions that are granted from a VPC.'."\n", + 'type' => 'string', + 'example' => 'VPC', + ], + 'InstanceUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the instance belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '192745367151****', + ], + 'RegionNo' => [ + 'description' => 'The ID of the region where the instance is deployed.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'EcrId' => [ + 'description' => 'The ECR ID.'."\n", + 'type' => 'string', + 'example' => 'ecr-tz7w3chlaptxr2****', + ], + 'EcrOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the ECR belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '192732132151****', + ], + 'CreationTime' => [ + 'description' => 'The creation time in milliseconds.'."\n", + 'type' => 'string', + 'example' => '2024-09-09T02:14:51Z', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"66342E8E-5E87-5FF9-80C7-C3E3571A****\\",\\n \\"TotalCount\\": \\"10\\",\\n \\"GrantRuleModels\\": [\\n {\\n \\"InstanceId\\": \\"vpc-wz9ek66wd7tl5xqpy****\\",\\n \\"Type\\": \\"VPC\\",\\n \\"InstanceUid\\": 0,\\n \\"RegionNo\\": \\"cn-hangzhou\\",\\n \\"EcrId\\": \\"ecr-tz7w3chlaptxr2****\\",\\n \\"EcrOwnerId\\": 0,\\n \\"CreationTime\\": \\"2024-09-09T02:14:51Z\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribeVpcGrantRulesToEcr', + ], + ], + 'endpoints' => [ + [ + 'regionId' => 'cn-qingdao', + 'endpoint' => 'vpc.cn-qingdao.aliyuncs.com', + ], + [ + 'regionId' => 'cn-beijing', + 'endpoint' => 'vpc.cn-beijing.aliyuncs.com', + ], + [ + 'regionId' => 'cn-zhangjiakou', + 'endpoint' => 'vpc.cn-zhangjiakou.aliyuncs.com', + ], + [ + 'regionId' => 'cn-zhengzhou-jva', + 'endpoint' => 'vpc.cn-zhengzhou-jva.aliyuncs.com', + ], + [ + 'regionId' => 'cn-huhehaote', + 'endpoint' => 'vpc.cn-huhehaote.aliyuncs.com', + ], + [ + 'regionId' => 'cn-wulanchabu', + 'endpoint' => 'vpc.cn-wulanchabu.aliyuncs.com', + ], + [ + 'regionId' => 'cn-hangzhou', + 'endpoint' => 'vpc.cn-hangzhou.aliyuncs.com', + ], + [ + 'regionId' => 'cn-shanghai', + 'endpoint' => 'vpc.cn-shanghai.aliyuncs.com', + ], + [ + 'regionId' => 'cn-nanjing', + 'endpoint' => 'vpc.cn-nanjing.aliyuncs.com', + ], + [ + 'regionId' => 'cn-fuzhou', + 'endpoint' => 'vpc.cn-fuzhou.aliyuncs.com', + ], + [ + 'regionId' => 'cn-shenzhen', + 'endpoint' => 'vpc.cn-shenzhen.aliyuncs.com', + ], + [ + 'regionId' => 'cn-heyuan', + 'endpoint' => 'vpc.cn-heyuan.aliyuncs.com', + ], + [ + 'regionId' => 'cn-guangzhou', + 'endpoint' => 'vpc.cn-guangzhou.aliyuncs.com', + ], + [ + 'regionId' => 'cn-chengdu', + 'endpoint' => 'vpc.cn-chengdu.aliyuncs.com', + ], + [ + 'regionId' => 'cn-wuhan-lr', + 'endpoint' => 'vpc.cn-wuhan-lr.aliyuncs.com', + ], + [ + 'regionId' => 'cn-hongkong', + 'endpoint' => 'vpc.cn-hongkong.aliyuncs.com', + ], + [ + 'regionId' => 'ap-northeast-1', + 'endpoint' => 'vpc.ap-northeast-1.aliyuncs.com', + ], + [ + 'regionId' => 'ap-northeast-2', + 'endpoint' => 'vpc.ap-northeast-2.aliyuncs.com', + ], + [ + 'regionId' => 'ap-southeast-1', + 'endpoint' => 'vpc.ap-southeast-1.aliyuncs.com', + ], + [ + 'regionId' => 'ap-southeast-2', + 'endpoint' => 'vpc.ap-southeast-2.aliyuncs.com', + ], + [ + 'regionId' => 'ap-southeast-3', + 'endpoint' => 'vpc.ap-southeast-3.aliyuncs.com', + ], + [ + 'regionId' => 'ap-southeast-5', + 'endpoint' => 'vpc.ap-southeast-5.aliyuncs.com', + ], + [ + 'regionId' => 'ap-southeast-6', + 'endpoint' => 'vpc.ap-southeast-6.aliyuncs.com', + ], + [ + 'regionId' => 'us-east-1', + 'endpoint' => 'vpc.us-east-1.aliyuncs.com', + ], + [ + 'regionId' => 'us-west-1', + 'endpoint' => 'vpc.us-west-1.aliyuncs.com', + ], + [ + 'regionId' => 'eu-west-1', + 'endpoint' => 'vpc.eu-west-1.aliyuncs.com', + ], + [ + 'regionId' => 'eu-central-1', + 'endpoint' => 'vpc.eu-central-1.aliyuncs.com', + ], + [ + 'regionId' => 'ap-south-1', + 'endpoint' => 'vpc.ap-south-1.aliyuncs.com', + ], + [ + 'regionId' => 'me-east-1', + 'endpoint' => 'vpc.me-east-1.aliyuncs.com', + ], + [ + 'regionId' => 'cn-shanghai-finance-1', + 'endpoint' => 'vpc.cn-shanghai-finance-1.aliyuncs.com', + ], + [ + 'regionId' => 'cn-shenzhen-finance-1', + 'endpoint' => 'vpc.cn-shenzhen-finance-1.aliyuncs.com', + ], + [ + 'regionId' => 'ap-southeast-7', + 'endpoint' => 'vpc.ap-southeast-7.aliyuncs.com', + ], + [ + 'regionId' => 'cn-beijing-finance-1', + 'endpoint' => 'vpc.cn-beijing-finance-1.aliyuncs.com', + ], + [ + 'regionId' => 'me-central-1', + 'endpoint' => 'vpc.me-central-1.aliyuncs.com', + ], + [ + 'regionId' => 'cn-heyuan-acdr-1', + 'endpoint' => 'vpc.cn-heyuan-acdr-1.aliyuncs.com', + ], + [ + 'regionId' => 'na-south-1', + 'endpoint' => 'vpc.na-south-1.aliyuncs.com', + ], + ], +]; -- cgit v1.2.3