summaryrefslogtreecommitdiff
path: root/data/en_us/cbn/2017-09-12
diff options
context:
space:
mode:
authorZhineng Li <[email protected]>2026-02-13 10:54:11 +0800
committerZhineng Li <[email protected]>2026-02-13 10:54:11 +0800
commit7347bac4ab7e136157fc94777e6cf87ef9e08599 (patch)
tree0dec367dac6e152161a6f7cc0dba6ebbef1f34a2 /data/en_us/cbn/2017-09-12
downloadacs-metadata-full-7347bac4ab7e136157fc94777e6cf87ef9e08599.tar.gz
acs-metadata-full-7347bac4ab7e136157fc94777e6cf87ef9e08599.zip
Diffstat (limited to 'data/en_us/cbn/2017-09-12')
-rw-r--r--data/en_us/cbn/2017-09-12/api-docs.php34576
1 files changed, 34576 insertions, 0 deletions
diff --git a/data/en_us/cbn/2017-09-12/api-docs.php b/data/en_us/cbn/2017-09-12/api-docs.php
new file mode 100644
index 0000000..9cde407
--- /dev/null
+++ b/data/en_us/cbn/2017-09-12/api-docs.php
@@ -0,0 +1,34576 @@
+<?php return [
+ 'version' => '1.0',
+ 'info' => [
+ 'style' => 'RPC',
+ 'product' => 'Cbn',
+ 'version' => '2017-09-12',
+ ],
+ 'directories' => [
+ [
+ 'id' => 58521,
+ 'title' => 'CEN instances',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateCen',
+ 'DeleteCen',
+ 'ModifyCenAttribute',
+ 'DescribeCens',
+ 'DescribeGrantRulesToResource',
+ 'MoveResourceGroup',
+ ],
+ ],
+ [
+ 'id' => 174108,
+ 'title' => 'Transit routers',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouter',
+ 'DeleteTransitRouter',
+ 'UpdateTransitRouter',
+ 'ListTransitRouters',
+ 'ListTransitRouterAvailableResource',
+ 'OpenTransitRouterService',
+ 'CheckTransitRouterService',
+ 'GrantInstanceToTransitRouter',
+ 'RevokeInstanceFromTransitRouter',
+ ],
+ ],
+ [
+ 'id' => 175780,
+ 'title' => 'Transit router CIDR blocks',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterCidr',
+ 'DeleteTransitRouterCidr',
+ 'ModifyTransitRouterCidr',
+ 'ListTransitRouterCidr',
+ 'ListTransitRouterCidrAllocation',
+ ],
+ ],
+ [
+ 'id' => 174109,
+ 'title' => 'Network instance connections',
+ 'type' => 'directory',
+ 'children' => [
+ [
+ 'id' => 174110,
+ 'title' => 'VPC connections',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterVpcAttachment',
+ 'DeleteTransitRouterVpcAttachment',
+ 'UpdateTransitRouterVpcAttachmentAttribute',
+ 'UpdateTransitRouterVpcAttachmentZones',
+ 'ListTransitRouterVpcAttachments',
+ ],
+ ],
+ [
+ 'id' => 190414,
+ 'title' => 'ECR connections',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterEcrAttachment',
+ 'DeleteTransitRouterEcrAttachment',
+ 'UpdateTransitRouterEcrAttachmentAttribute',
+ 'ListTransitRouterEcrAttachments',
+ ],
+ ],
+ [
+ 'id' => 174112,
+ 'title' => 'VPN connections',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterVpnAttachment',
+ 'DeleteTransitRouterVpnAttachment',
+ 'UpdateTransitRouterVpnAttachmentAttribute',
+ 'ListTransitRouterVpnAttachments',
+ ],
+ ],
+ [
+ 'id' => 174111,
+ 'title' => 'VBR connections',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterVbrAttachment',
+ 'DeleteTransitRouterVbrAttachment',
+ 'UpdateTransitRouterVbrAttachmentAttribute',
+ 'ListTransitRouterVbrAttachments',
+ ],
+ ],
+ 'AttachCenChildInstance',
+ 'DetachCenChildInstance',
+ 'DescribeCenAttachedChildInstanceAttribute',
+ 'DescribeCenAttachedChildInstances',
+ 'DescribeChildInstanceRegions',
+ 'DescribeGrantRulesToCen',
+ 'ListGrantVSwitchesToCen',
+ ],
+ ],
+ [
+ 'id' => 58532,
+ 'title' => 'Bandwidth plans',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateCenBandwidthPackage',
+ 'DeleteCenBandwidthPackage',
+ 'ModifyCenBandwidthPackageAttribute',
+ 'ModifyCenBandwidthPackageSpec',
+ 'DescribeCenGeographicSpanRemainingBandwidth',
+ 'DescribeCenBandwidthPackages',
+ 'DescribeCenGeographicSpans',
+ 'DescribeGeographicRegionMembership',
+ 'TempUpgradeCenBandwidthPackageSpec',
+ 'UnassociateCenBandwidthPackage',
+ 'AssociateCenBandwidthPackage',
+ ],
+ ],
+ [
+ 'id' => 175781,
+ 'title' => 'Cross-region connections',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterPeerAttachment',
+ 'DeleteTransitRouterPeerAttachment',
+ 'SetCenInterRegionBandwidthLimit',
+ 'UpdateTransitRouterPeerAttachmentAttribute',
+ 'ListTransitRouterPeerAttachments',
+ 'DescribeCenInterRegionBandwidthLimits',
+ ],
+ ],
+ [
+ 'id' => 174005,
+ 'title' => 'Route management',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateCenChildInstanceRouteEntryToAttachment',
+ 'CreateCenChildInstanceRouteEntryToCen',
+ 'DeleteCenChildInstanceRouteEntryToAttachment',
+ 'DeleteCenChildInstanceRouteEntryToCen',
+ 'ListCenChildInstanceRouteEntriesToAttachment',
+ 'DescribeCenRegionDomainRouteEntries',
+ 'DescribeCenChildInstanceRouteEntries',
+ 'DescribePublishedRouteEntries',
+ 'DescribeRouteConflict',
+ 'PublishRouteEntries',
+ 'WithdrawPublishedRouteEntries',
+ ],
+ ],
+ [
+ 'id' => 58547,
+ 'title' => 'Route tables of transit routers',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterRouteTable',
+ 'DeleteTransitRouterRouteTable',
+ 'UpdateTransitRouterRouteTable',
+ 'ListTransitRouterRouteTables',
+ ],
+ ],
+ [
+ 'id' => 174010,
+ 'title' => 'Routes of transit routers',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterRouteEntry',
+ 'DeleteTransitRouterRouteEntry',
+ 'UpdateTransitRouterRouteEntry',
+ 'ListTransitRouterRouteEntries',
+ ],
+ ],
+ [
+ 'id' => 174015,
+ 'title' => 'Associated forwarding correlations',
+ 'type' => 'directory',
+ 'children' => [
+ 'ListTransitRouterRouteTableAssociations',
+ 'AssociateTransitRouterAttachmentWithRouteTable',
+ 'ReplaceTransitRouterRouteTableAssociation',
+ 'DissociateTransitRouterAttachmentFromRouteTable',
+ ],
+ ],
+ [
+ 'id' => 174020,
+ 'title' => 'Route learning correlations',
+ 'type' => 'directory',
+ 'children' => [
+ 'EnableTransitRouterRouteTablePropagation',
+ 'DisableTransitRouterRouteTablePropagation',
+ 'ListTransitRouterRouteTablePropagations',
+ ],
+ ],
+ [
+ 'id' => 174025,
+ 'title' => 'Route maps',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateCenRouteMap',
+ 'DeleteCenRouteMap',
+ 'ModifyCenRouteMap',
+ 'DescribeCenRouteMaps',
+ ],
+ ],
+ [
+ 'id' => 178435,
+ 'title' => 'Aggregate Route',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouteTableAggregation',
+ 'ModifyTransitRouteTableAggregation',
+ 'DeleteTransitRouteTableAggregation',
+ 'RefreshTransitRouteTableAggregation',
+ 'DescribeTransitRouteTableAggregationDetail',
+ 'DescribeTransitRouteTableAggregation',
+ ],
+ ],
+ [
+ 'id' => 58567,
+ 'title' => 'Prefix lists',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterPrefixListAssociation',
+ 'DeleteTransitRouterPrefixListAssociation',
+ 'ListTransitRouterPrefixListAssociation',
+ ],
+ ],
+ [
+ 'id' => 174029,
+ 'title' => 'Traffic scheduling',
+ 'type' => 'directory',
+ 'children' => [
+ [
+ 'id' => 174034,
+ 'title' => 'Traffic marking policy',
+ 'type' => 'directory',
+ 'children' => [
+ 'AddTraficMatchRuleToTrafficMarkingPolicy',
+ 'AddTrafficMatchRuleToTrafficMarkingPolicy',
+ 'ModifyTrafficMatchRuleToTrafficMarkingPolicy',
+ 'CreateTrafficMarkingPolicy',
+ 'DeleteTrafficMarkingPolicy',
+ 'UpdateTrafficMarkingPolicyAttribute',
+ 'ListTrafficMarkingPolicies',
+ 'RemoveTraficMatchRuleFromTrafficMarkingPolicy',
+ 'RemoveTrafficMatchRuleFromTrafficMarkingPolicy',
+ ],
+ ],
+ [
+ 'id' => 174043,
+ 'title' => 'QoS policies',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateCenInterRegionTrafficQosQueue',
+ 'CreateCenInterRegionTrafficQosPolicy',
+ 'DeleteCenInterRegionTrafficQosQueue',
+ 'DeleteCenInterRegionTrafficQosPolicy',
+ 'UpdateCenInterRegionTrafficQosQueueAttribute',
+ 'UpdateCenInterRegionTrafficQosPolicyAttribute',
+ 'ListCenInterRegionTrafficQosPolicies',
+ 'ListCenInterRegionTrafficQosQueues',
+ ],
+ ],
+ ],
+ ],
+ [
+ 'id' => 174033,
+ 'title' => 'Cloud services',
+ 'type' => 'directory',
+ 'children' => [
+ 'DeleteRouteServiceInCen',
+ 'DescribeRouteServicesInCen',
+ 'ResolveAndRouteServiceInCen',
+ ],
+ ],
+ [
+ 'id' => 58572,
+ 'title' => 'PrivateZone',
+ 'type' => 'directory',
+ 'children' => [
+ 'DescribeCenPrivateZoneRoutes',
+ 'UnroutePrivateZoneInCenToVpc',
+ 'RoutePrivateZoneInCenToVpc',
+ ],
+ ],
+ [
+ 'id' => 58576,
+ 'title' => 'Multicast',
+ 'type' => 'directory',
+ 'children' => [
+ [
+ 'id' => 175782,
+ 'title' => 'Multicast domains',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateTransitRouterMulticastDomain',
+ 'DeleteTransitRouterMulticastDomain',
+ 'ModifyTransitRouterMulticastDomain',
+ 'ListTransitRouterMulticastDomains',
+ 'ListTransitRouterMulticastDomainAssociations',
+ 'ListTransitRouterMulticastDomainVSwitches',
+ 'AssociateTransitRouterMulticastDomain',
+ 'DisassociateTransitRouterMulticastDomain',
+ ],
+ ],
+ [
+ 'id' => 175783,
+ 'title' => 'Multicast sources and members',
+ 'type' => 'directory',
+ 'children' => [
+ 'ListTransitRouterMulticastGroups',
+ 'ListGrantVSwitchEnis',
+ 'DeregisterTransitRouterMulticastGroupMembers',
+ 'RegisterTransitRouterMulticastGroupSources',
+ 'DeregisterTransitRouterMulticastGroupSources',
+ 'RegisterTransitRouterMulticastGroupMembers',
+ ],
+ ],
+ ],
+ ],
+ [
+ 'id' => 174051,
+ 'title' => 'Health check',
+ 'type' => 'directory',
+ 'children' => [
+ 'DisableCenVbrHealthCheck',
+ 'EnableCenVbrHealthCheck',
+ 'DescribeCenVbrHealthCheck',
+ ],
+ ],
+ [
+ 'id' => 58556,
+ 'title' => 'Flow logs',
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateFlowlog',
+ 'DeleteFlowlog',
+ 'ModifyFlowLogAttribute',
+ 'DescribeFlowlogs',
+ 'ActiveFlowLog',
+ 'DeactiveFlowLog',
+ ],
+ ],
+ [
+ 'id' => 58560,
+ 'title' => 'Tag API',
+ 'type' => 'directory',
+ 'children' => [
+ 'ListTagResources',
+ 'TagResources',
+ 'UntagResources',
+ ],
+ ],
+ ],
+ 'components' => [
+ 'schemas' => [],
+ ],
+ 'apis' => [
+ 'CreateCen' => [
+ 'summary' => 'Cloud Enterprise Network (CEN) instances are basic network resources that are used to manage interconnected networks. You can use a CEN instance to manage a network that covers one or multiple regions. Before you can connect network instances, you must first call the CreateCen operation to create a CEN instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72295',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ 'FEATUREcbnQOCCBE',
+ ],
+ '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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'Name',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the CEN instance.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the CEN instance.'."\n"
+ ."\n"
+ .'The description can be empty or 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'ProtectionLevel',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The level of CIDR block overlapping.'."\n"
+ ."\n"
+ .'Set the value to **REDUCED** (default). This value specifies that CIDR blocks can overlap but cannot be the same.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'REDUCED',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify up to 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify up to 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify up to 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The returned results.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CenId' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-dc4vwznpwbobrl****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.ResourceGroupId',
+ 'errorMessage' => 'ResourceGroupId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidTagValue',
+ 'errorMessage' => 'The tag values are not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"CenId\\": \\"cen-dc4vwznpwbobrl****\\",\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateCenResponse>\\n <CenId>cen-dc4vwznpwbobrl****</CenId>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</CreateCenResponse>","errorExample":""}]',
+ 'title' => 'CreateCen',
+ 'description' => '**CreateCen** is an asynchronous operation. After you a request is sent, the system returns a request ID and runs the task in the background. You can call **DescribeCens** to query the status of the task.'."\n"
+ ."\n"
+ .'* If a CEN instance is in the **Creating** state, the CEN instance is being created. You can query the CEN instance but cannot perform other operations.'."\n"
+ .'* If a CEN instance is in the **Active** state, the CEN instance is created.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteCen' => [
+ 'summary' => 'Deletes a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72315',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'headers' => [],
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '5903EE99-D542-4E14-BC65-AAC1CB2D3D03',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.DeleteCenWithCustomRouteTable',
+ 'errorMessage' => 'Operation failed because you are not allowed to delete the CEN with the custom transit router route table.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.DeleteCenWithRouteEntry',
+ 'errorMessage' => 'Operation failed because you are not allowed to delete the CEN with the transit router route entry.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.MulticastDomainExist',
+ 'errorMessage' => 'Operation is invalid because multicast domain exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PrefixListAssociationExist',
+ 'errorMessage' => 'Operation is invalid because prefixList association exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.AggregationRouteExist',
+ 'errorMessage' => 'Operation is invalid because transit router aggregation route exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TrafficMarkingPolicyExist',
+ 'errorMessage' => 'Operation is invalid because transit router traffic marking policy exists.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.action',
+ 'errorMessage' => 'This action is not support.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TrafficQosPolicyExist',
+ 'errorMessage' => 'Operation is invalid because traffic qos policy exists.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeCens',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5903EE99-D542-4E14-BC65-AAC1CB2D3D03\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteCenResponse>\\n <RequestId>5903EE99-D542-4E14-BC65-AAC1CB2D3D03</RequestId>\\n</DeleteCenResponse>","errorExample":""}]',
+ 'title' => 'DeleteCen',
+ 'description' => '**DeleteCen** 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 **DescribeCens** to query the status of a CEN instance.'."\n"
+ ."\n"
+ .'* If the CEN instance is in the **Deleting** state, the CEN instance is being deleted. In this case, you can query the CEN instance but cannot perform other operations.'."\n"
+ .'* If the CEN instance cannot be found, the CEN instance is deleted.'."\n"
+ ."\n"
+ .'### [](#)Prerequisites'."\n"
+ ."\n"
+ .'The CEN instance that you want to delete is not associated with a bandwidth plan, and the transit router associated with the CEN instance does not have a network instance connection or a custom route table.'."\n"
+ ."\n"
+ .'* For more information about how to detach a network instance, see the following topics:'."\n"
+ ."\n"
+ .' * [DeleteTransitRouterVpcAttachment](~~261220~~)'."\n"
+ .' * [DeleteTransitRouterVbrAttachment](~~261223~~)'."\n"
+ .' * [DeleteTransitRouterVpnAttachment](~~443992~~)'."\n"
+ .' * [DeleteTransitRouterPeerAttachment](~~261227~~)'."\n"
+ .' > For more information about how to detach network instances from a Basic Edition transit router, see [DetachCenChildInstance](~~65915~~).'."\n"
+ ."\n"
+ .'* For more information about how to delete custom route tables from an Enterprise Edition transit router, see [DeleteTransitRouterRouteTable](~~261235~~).'."\n"
+ ."\n"
+ .'* For more information about how to disassociate a bandwidth plan from a CEN instance, see [UnassociateCenBandwidthPackage](~~65935~~).',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ModifyCenAttribute' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'Name',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the CEN instance.'."\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 and cannot start with `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the CEN instance.'."\n"
+ ."\n"
+ .'The description must be 2 to 256 characters in length. It must start with a letter or Chinese character and cannot start with `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen',
+ ],
+ ],
+ [
+ 'name' => 'ProtectionLevel',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The level of CIDR block overlapping.'."\n"
+ ."\n"
+ .'Set the value to **REDUCED** (default). This value specifies that CIDR blocks can overlap but cannot be the same.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'REDUCED',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '13526224-5780-4426-8BDF-BC8B08700F22',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidOperation.EnhanceProtectionLevel',
+ 'errorMessage' => 'Your request to enhance CBN protection level cannot be processed. Please contact customer support to continue this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"13526224-5780-4426-8BDF-BC8B08700F22\\"\\n}","errorExample":""},{"type":"xml","example":"<ModifyCenAttributeResponse>\\n <RequestId>13526224-5780-4426-8BDF-BC8B08700F22</RequestId>\\n</ModifyCenAttributeResponse>","errorExample":""}]',
+ 'title' => 'ModifyCenAttribute',
+ 'summary' => 'Modifies the name and description of a Cloud Enterprise Network (CEN) instance.',
+ 'description' => '**ModifyCenAttribute** is an asynchronous operation. After you send a request, the system returns the **request ID** but the operation is still being performed in the system background. You can call **DescribeCens** to query the status of a CEN instance.'."\n"
+ ."\n"
+ .'* If a CEN instance is in the **Modifying** state, the CEN instance is being modified. You can query the CEN instance but cannot perform other operations.'."\n"
+ .'* If a CEN instance is in the **Active** state, the CEN instance is modified.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCens' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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. Valid values: **1** to **50**. Default value: **10**.'."\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 CEN instance belongs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-acfm3unpnuw****',
+ ],
+ ],
+ [
+ 'name' => 'Filter',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The filter conditions.'."\n"
+ ."\n"
+ .'You can specify at most five filter conditions in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The key of the filter. Valid values:'."\n"
+ ."\n"
+ .'* **CenId**: the ID of a CEN instance.'."\n"
+ .'* **Name**: the name of a CEN instance.'."\n"
+ ."\n"
+ .'By default, the logical operator among filter conditions is **AND**. Information about a CEN instance is returned only if the CEN instance matches all filter conditions.'."\n"
+ ."\n"
+ .'You can specify at most five filter conditions in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'CenId',
+ ],
+ 'Value' => [
+ 'description' => 'The value of the filter condition.'."\n"
+ ."\n"
+ .'Specify a filter value based on the **Key** parameter. You can specify multiple values for a filter **key**. The logical operator among multiple filter values is **OR**. If a CEN instance matches one or more of the values that you specify, the CEN instance matches the filter condition.'."\n"
+ ."\n"
+ .'You can specify at most five values in each filter condition.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value of the filter condition.'."\n"
+ ."\n"
+ .'Specify a filter value based on the **Key** parameter. You can specify multiple values for a filter **key**. The logical operator among multiple filter values is **OR**. If a CEN instance matches one or more of the values that you specify, the CEN instance matches the filter condition.'."\n"
+ ."\n"
+ .'You can specify at most five values in each filter condition.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-44m0p68spvlrqq****',
+ ],
+ 'required' => false,
+ 'example' => 'cen-0xyeagctz5sfg9****',
+ 'maxItems' => 5,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 5,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag keys.'."\n"
+ ."\n"
+ .'The tag keys cannot be an empty string. The tag keys can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag values.'."\n"
+ ."\n"
+ .'The tag values can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'headers' => [],
+ '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' => '2BFA6822-240E-4E27-B4C8-AA400EF7474D',
+ ],
+ 'PageNumber' => [
+ 'description' => 'The number of the page returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'Cens' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Cen' => [
+ 'description' => 'The information about the CEN instance.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The status of the CEN instance.'."\n"
+ ."\n"
+ .'* **Creating**'."\n"
+ .'* **Active**'."\n"
+ .'* **Deleting**'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'CreationTime' => [
+ 'description' => 'The time when the CEN instance 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' => '2019-10-22T07:44Z',
+ ],
+ 'Ipv6Level' => [
+ 'description' => 'Indicates whether IPv6 is enabled for the CEN instance.'."\n"
+ ."\n"
+ .'* **ENABLE**'."\n"
+ .'* **DISABLED**'."\n",
+ 'type' => 'string',
+ 'example' => 'DISABLED',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'ResourceGroupId' => [
+ 'description' => 'The ID of the resource group to which the CEN instance belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-acfm3unpnuw****',
+ ],
+ 'CenId' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-0xyeagctz5sfg9****',
+ ],
+ 'ProtectionLevel' => [
+ 'description' => 'The level of CIDR block overlapping.'."\n"
+ ."\n"
+ .'**REDUCED**: Overlapped CIDR blocks are allowed. This value specifies that CIDR blocks can overlap but CIDR blocks cannot be duplicates.'."\n",
+ 'type' => 'string',
+ 'example' => 'REDUCED',
+ ],
+ 'Name' => [
+ 'description' => 'The CEN instance name.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'Tags' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Tag' => [
+ 'description' => 'The IDs of the tags that are added to the CEN instance.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'tagtest',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'CenBandwidthPackageIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenBandwidthPackageId' => [
+ 'description' => 'The IDs of the bandwidth plans that are associated with the CEN instance.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the bandwidth plans that are associated with the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenbwp-4c2zaavbvh5f42****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTagKey',
+ 'errorMessage' => 'The tag keys are not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidTagValue',
+ 'errorMessage' => 'The tag values are not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"2BFA6822-240E-4E27-B4C8-AA400EF7474D\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"Cens\\": {\\n \\"Cen\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"CreationTime\\": \\"2019-10-22T07:44Z\\",\\n \\"Ipv6Level\\": \\"DISABLED\\",\\n \\"Description\\": \\"desctest\\",\\n \\"ResourceGroupId\\": \\"rg-acfm3unpnuw****\\",\\n \\"CenId\\": \\"cen-0xyeagctz5sfg9****\\",\\n \\"ProtectionLevel\\": \\"REDUCED\\",\\n \\"Name\\": \\"nametest\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"tagtest\\",\\n \\"Value\\": \\"tagtest\\"\\n }\\n ]\\n },\\n \\"CenBandwidthPackageIds\\": {\\n \\"CenBandwidthPackageId\\": [\\n \\"cenbwp-4c2zaavbvh5f42****\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCensResponse>\\n <TotalCount>1</TotalCount>\\n <RequestId>2BFA6822-240E-4E27-B4C8-AA400EF7474D</RequestId>\\n <PageSize>10</PageSize>\\n <PageNumber>1</PageNumber>\\n <Cens>\\n <Cen>\\n <Status>Active</Status>\\n <ProtectionLevel>REDUCED</ProtectionLevel>\\n <ResourceGroupId>rg-acfm3unpnuw****</ResourceGroupId>\\n <Ipv6Level>DISABLED</Ipv6Level>\\n <CenId>cen-0xyeagctz5sfg9****</CenId>\\n <CreationTime>2019-10-22T07:44Z</CreationTime>\\n <CenBandwidthPackageIds>\\n </CenBandwidthPackageIds>\\n <Name>nametest</Name>\\n </Cen>\\n </Cens>\\n</DescribeCensResponse>","errorExample":""}]',
+ 'title' => 'DescribeCens',
+ 'summary' => 'Queries the information about your Cloud Enterprise Network (CEN) instances.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeGrantRulesToResource' => [
+ 'summary' => 'Queries the information about the permissions that the Alibaba Cloud account of a network instance granted to a Cloud Enterprise Network (CEN) instance in a different Alibaba Cloud account, the ID of the CEN instance, and the Alibaba Cloud account that pays the fees of the network instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '154918',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnOQ547T',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the network instance.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The network instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vpc-p0wfut1iqauelpdpb****',
+ ],
+ ],
+ [
+ 'name' => 'ProductType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **ExpressConnect**: virtual border router (VBR)'."\n"
+ .'* **VPN**: IPsec-VPN connection'."\n"
+ .'* **ECR**: Express Connect Router (ECR)'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'VPC',
+ 'enum' => [
+ 'ExpressConnect',
+ 'VPC',
+ 'VPN',
+ 'ECR',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '* If you do not specify a value for **MaxResults**, entries are returned in one response. After you send the request, the value of **MaxResults** includes all entries.'."\n"
+ .'* If you specify a value for **MaxResults**, entries are returned in batches. The value of **MaxResults** indicates the total number of entries returned per batch. Valid values: **1** to **100**. After you send the request, the value of **MaxResults** indicates the number of entries returned in the current response. We recommend that you set **MaxResults** to **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '0',
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ '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' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ ],
+ '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 the **NextToken** parameter 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****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'C6E5992C-A57B-5A6C-9B26-568074DC68BA',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => '* If no value is specified for **MaxResults**, query results are returned in one batch. The value of **MaxResults** indicates the total number of entries.'."\n"
+ .'* If a value is specified for **MaxResults**, query results are returned in batches. The value of **MaxResults** in the response indicates the number of entries in the current batch.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'GrantRules' => [
+ 'description' => 'The permissions that are granted to the CEN instance.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'CenOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the CEN instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1250123456123456',
+ ],
+ 'OrderType' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values: Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: The fees of the connections and data forwarding on the transit router are paid by the Alibaba Cloud account to which the CEN instance belongs.'."\n"
+ .'* **PayByResourceOwner**: The fees of the connections and data forwarding on the transit router are paid by the Alibaba Cloud account to which the network instance belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'PayByCenOwner',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-44m0p68spvlrqq****',
+ ],
+ 'CreateTime' => [
+ 'description' => 'The timestamp when the permissions were granted. 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' => '2024-01-24T16:46Z',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter. ',
+ ],
+ [
+ 'errorCode' => 'MissingParameter ',
+ 'errorMessage' => 'Missing parameter.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.RegionId',
+ 'errorMessage' => 'The specified Region Id is invalid.',
+ ],
+ [
+ 'errorCode' => 'MissingParameter.RegionId',
+ 'errorMessage' => 'Missing RegionId parameter.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'NextToken is illegal',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"C6E5992C-A57B-5A6C-9B26-568074DC68BA\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 1,\\n \\"GrantRules\\": [\\n {\\n \\"CenOwnerId\\": 1250123456123456,\\n \\"OrderType\\": \\"PayByCenOwner\\",\\n \\"CenId\\": \\"cen-44m0p68spvlrqq****\\",\\n \\"CreateTime\\": \\"2024-01-24T16:46Z\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<DescribeGrantRulesToResourceResponse>\\n <RequestId>C6E5992C-A57B-5A6C-9B26-568074DC68BA</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>1</MaxResults>\\n <GrantRules>\\n <CenOwnerId>1250123456123456</CenOwnerId>\\n <OrderType>PayByCenOwner</OrderType>\\n <CenId>cen-44m0p68spvlrqq****</CenId>\\n </GrantRules>\\n</DescribeGrantRulesToResourceResponse>","errorExample":""}]',
+ 'title' => 'DescribeGrantRulesToResource',
+ ],
+ 'MoveResourceGroup' => [
+ 'summary' => 'Moves a Cloud Enterprise Network (CEN) instance or a bandwidth plan to another resource group.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72414',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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. 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' => '123e456****',
+ ],
+ ],
+ [
+ '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.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'NewResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the resource group to which you want to move the CEN instance or bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'rg-aekzqqurtfg****',
+ ],
+ ],
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **CEN**: CEN instance'."\n"
+ .'* **bandwidthpackage**: bandwidth plan'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the resource.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-nye53d7p3hzyu4****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '1D169236-7C76-57CF-B6C8-B4CACE0BA1BB',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ResourceGroup',
+ 'errorMessage' => 'The operation cannot be performed on the specified ResourceGroup.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1D169236-7C76-57CF-B6C8-B4CACE0BA1BB\\"\\n}","errorExample":""},{"type":"xml","example":"<MoveResourceGroupResponse>\\n <RequestId>1D169236-7C76-57CF-B6C8-B4CACE0BA1BB</RequestId>\\n</MoveResourceGroupResponse>","errorExample":""}]',
+ 'title' => 'MoveResourceGroup',
+ 'description' => 'By default, CEN instances and bandwidth plans are in the default resource group. You can call the `MoveResourceGroup` operation to move CEN instances or bandwidth plans to another resource group.'."\n",
+ ],
+ 'CreateTransitRouter' => [
+ 'summary' => 'Creates an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72305',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\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 **RequestId** as **ClientToken**. The value of **RequestId** of each API request is different.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the Enterprise Edition transit router is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-zhangjiakou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the Enterprise Edition transit router.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the Enterprise Edition transit router instance.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to check the request without performing the operation. Check items include permissions and the status of the specified cloud resources. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): sends the request. If the request passes the check, an Enterprise Edition transit router is created.'."\n"
+ .'* **true**: checks the request but does not create the Enterprise Edition transit router. If you use this value, the system checks whether the required parameters are set, and whether the request syntax is valid. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'SupportMulticast',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable the multicast feature for the Enterprise Edition transit router. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): no'."\n"
+ .'* **true**: yes'."\n"
+ ."\n"
+ .'The multicast feature is supported only in specific regions. You can call [ListTransitRouterAvailableResource](~~261356~~) to query the regions that support multicast.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterCidrList',
+ 'in' => 'query',
+ 'style' => 'json',
+ 'schema' => [
+ 'description' => 'The CIDR blocks to be added to the transit router.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The CIDR blocks to be added to the transit router.'."\n"
+ ."\n"
+ .'You can specify at most five CIDR blocks in each call. For more information about CIDR blocks of transit routers, see [CIDR blocks of transit routers](~~462635~~).'."\n"
+ ."\n"
+ .'> Only Enterprise Edition transit routers support CIDR blocks.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Cidr' => [
+ 'description' => 'The CIDR block of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/24',
+ ],
+ 'Name' => [
+ 'description' => 'The name of the transit router CIDR block.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the transit router CIDR block.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ 'PublishCidrRoute' => [
+ 'description' => 'Specifies whether to allow the system to automatically add a route that points to the CIDR block to the route table of the transit router.'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ ."\n"
+ .' If you set the value to true, after you create a VPN attachment on a private VPN gateway and enable route learning for the VPN attachment, the system automatically adds the following route to the route table of the transit router that is in route learning relationship with the VPN attachment:'."\n"
+ ."\n"
+ .' A blackhole route whose destination CIDR block is the transit router CIDR block, which refers to the CIDR block from which gateway IP addresses are allocated to the IPsec-VPN connection.'."\n"
+ ."\n"
+ .' The blackhole route is advertised only to the route tables of virtual border routers (VBRs) connected to the transit router.'."\n"
+ ."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ 'default' => 'True',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag keys cannot be an empty string. The tag key can be up to 64 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be an empty string or up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each key-value must be unique. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagValue',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-uf6llz2286805i44g****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '404DA7EC-F495-44B5-B543-6EDCDF90F3D1',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationUnsupported.RegionId',
+ 'errorMessage' => 'The specified Region is not supported.',
+ ],
+ [
+ 'errorCode' => 'InstanceExist.TransitRouterInstance',
+ 'errorMessage' => 'The instance already exists.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.TransitRouterServiceNotOpen',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.SupportMulticast',
+ 'errorMessage' => 'The multicast is not supported in the specified region.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CenFullLevel',
+ 'errorMessage' => 'CEN full level does not support TransitRouter.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Cidr',
+ 'errorMessage' => 'Cidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'Illegal.TrType',
+ 'errorMessage' => 'The TransitRouter type is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterCidrList',
+ 'errorMessage' => 'The TransitRouterCidrList is not support in the specified Region.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CidrConflict',
+ 'errorMessage' => 'Operation is invalid because the cidr conflict.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified region is invalid.',
+ ],
+ [
+ 'errorCode' => 'OverLappingExist.Cidr',
+ 'errorMessage' => 'The cidr overlapping exist.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ServiceMode',
+ 'errorMessage' => 'The specified ServiceMode is invalid.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.ServiceModeAndSupportMulticast',
+ 'errorMessage' => 'ServiceMode and SupportMulticast is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.ServiceModeAndTransitRouterCidrList',
+ 'errorMessage' => 'ServiceMode and TransitRouterCidrList is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.Tag',
+ 'errorMessage' => 'The Tag is not supported in the specified region.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SupportMulticast',
+ 'errorMessage' => 'Basic Transit router is not support multicast.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.BasicAndPrimaryStandby',
+ 'errorMessage' => 'Basic and PrimaryStandby is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.BasicAndMultiPrimary',
+ 'errorMessage' => 'Basic and MultiPrimary is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'The Specified Parameter RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PostPay95BwpNotAllowEnterpriseTr',
+ 'errorMessage' => 'Cbn with post pay 95 bandwidth package does not allow enterprise tr.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouters',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterId\\": \\"tr-uf6llz2286805i44g****\\",\\n \\"RequestId\\": \\"404DA7EC-F495-44B5-B543-6EDCDF90F3D1\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterResponse>\\n <TransitRouterId>tr-uf6llz2286805i44g****</TransitRouterId>\\n <RequestId>404DA7EC-F495-44B5-B543-6EDCDF90F3D1</RequestId>\\n</CreateTransitRouterResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouter',
+ 'description' => '* You can call **CreateTransitRouter** to create an Enterprise Edition transit router. For more information about the regions that support Enterprise Edition transit routers, see [What is CEN?](~~181681~~)'."\n"
+ ."\n"
+ .'* **CreateTransitRouter** is an asynchronous operation. After you send a request, the transit router ID is returned but the operation is still being performed in the system background. You can call [ListTransitRouters](~~261219~~) to query the status of an Enterprise Edition transit router.'."\n"
+ ."\n"
+ .' * If an Enterprise Edition transit router is in the **Creating** state, the Enterprise Edition transit router is being created. In this case, you can query the Enterprise Edition transit router but cannot perform other operations.'."\n"
+ .' * If an Enterprise Edition transit router is in the **Active** state, the Enterprise Edition transit router is created.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteTransitRouter' => [
+ 'summary' => 'Deletes a transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72326',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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. 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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether only to precheck the request. Check items include permissions and the status of the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): sends the request. If the request passes the precheck, the transit router is deleted.'."\n"
+ .'* **true**: prechecks the request but does not delete the transit router. If you use this value, the system checks the required parameters and the request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-uf654ttymmljlvh2x****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'headers' => [],
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '6DE3EE92-39C8-4BBD-A3AD-F568D74741BB',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.DeleteTransitRouter',
+ 'errorMessage' => 'Operation failed because TransitRouterRouteTable or TransitRouterRouteEntry or BandwidthTransitRegion exists.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CCNAttached',
+ 'errorMessage' => 'Can not delete transit router because CCN still attached.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.BandwidthLimitExist',
+ 'errorMessage' => 'Operation is invalid because a bandwidth limit exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.CenInstance',
+ 'errorMessage' => 'The status of CenInstance is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TrafficMarkingPolicyExist',
+ 'errorMessage' => 'Operation is invalid because traffic marking policy exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.MulticastDomainExist',
+ 'errorMessage' => 'Operation is invalid because multicast domain exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PrefixListExist',
+ 'errorMessage' => 'Operation is invalid because prefix list exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TrafficQosPolicyExist',
+ 'errorMessage' => 'Operation is invalid because traffic qos policy exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CloudRouteExist',
+ 'errorMessage' => 'Operation is invalid because cloud route exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.FlowLogExistOrNisOpened',
+ 'errorMessage' => 'Operation failed because FlowLog exists or Nis opened.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.AggregationRouteExist',
+ 'errorMessage' => 'Operation failed because TransitRouterRouteAggregation exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.BondVbrExist',
+ 'errorMessage' => 'The operation failed due to BondVbr exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterInstance.NotFound',
+ 'errorMessage' => 'The Transit Router instance is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.FlowLogExist',
+ 'errorMessage' => 'Flow log configurations exist. Delete the flow log configurations and retry the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.RelatedEcrExists',
+ 'errorMessage' => 'Operation is invalid due to related ECR exists.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouters',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6DE3EE92-39C8-4BBD-A3AD-F568D74741BB\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterResponse>\\n <RequestId>6DE3EE92-39C8-4BBD-A3AD-F568D74741BB</RequestId>\\n</DeleteTransitRouterResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouter',
+ 'description' => '**DeleteTransitRouter** is an asynchronous operation. After you send a request, the **request ID** is returned but the operation is still being performed in the system background. You can call **ListTransitRouters** to query the status of a transit router.'."\n"
+ ."\n"
+ .'* If a transit router is in the **Deleting** state, the transit router is being deleted. In this case, you can query the transit router but cannot perform other operations.'."\n"
+ .'* If a transit router cannot be found, the transit router is deleted.'."\n"
+ ."\n"
+ .'#### Prerequisites'."\n"
+ ."\n"
+ .'Before you delete a transit router, make sure that the following prerequisites are met:'."\n"
+ ."\n"
+ .'- No network instance connections are created on the transit router. '."\n"
+ .' '."\n"
+ .' - For more information about how to delete a virtual private cloud (VPC) connection, see [DeleteTransitRouterVpcAttachment](~~261220~~). '."\n"
+ .' - For more information about how to delete a virtual border router (VBR) connection, see [DeleteTransitRouterVbrAttachment](~~261223~~). '."\n"
+ .' - For more information about how to delete a Cloud Connect Network (CCN) connection, see [DetachCenChildInstance](~~65915~~). '."\n"
+ .' - For more information about how to delete a VPN connection, see [DeleteTransitRouterVpnAttachment](~~443992~~).'."\n"
+ .' - For more information about how to delete an inter-region connection, see [DeleteTransitRouterPeerAttachment](~~261227~~). '."\n"
+ ."\n"
+ .'- No custom route tables are created on the transit router. For more information about how to delete a custom route table, see [DeleteTransitRouterRouteTable](~~261235~~).',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UpdateTransitRouter' => [
+ '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 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' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\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"
+ .'* **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 system returns the ID of the request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\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' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The transit router ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-uf654ttymmljlvh2x****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The transit router name.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the transit router.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'E9963DD7-998B-4F92-892D-8293CB49EE81',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationUnsupported.RegionId',
+ 'errorMessage' => 'The specified region ID is not supported.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E9963DD7-998B-4F92-892D-8293CB49EE81\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTransitRouterResponse>\\n <RequestId>E9963DD7-998B-4F92-892D-8293CB49EE81</RequestId>\\n</UpdateTransitRouterResponse>","errorExample":""}]',
+ 'title' => 'UpdateTransitRouter',
+ 'summary' => 'Modifies the name and description of a transit router.',
+ 'description' => '**UpdateTransitRouter** 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 **ListTransitRouters** operation to query the status of a transit router.'."\n"
+ ."\n"
+ .'* If a transit router is in the **Modifying** state, the configuration of the transit router is being modified. You can query the transit router but cannot perform other operations.'."\n"
+ .'* If a transit router is in the **Active** state, the configuration of the transit router is modified.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouters' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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. Valid values: **1** to **50**. Default value: **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => true,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-uf654ttymmljlvh2x****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the transit router 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' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique 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' => 20,
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**: The transit router is being created.'."\n"
+ .'* **Active**: The transit router is available.'."\n"
+ .'* **Modifying**: The transit router is being modified'."\n"
+ .'* **Deleting**: The transit router is being deleted.'."\n"
+ .'* **Upgrading**: The transit router is being upgraded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ [
+ 'name' => 'Type',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The edition of the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **Enterprise**: Enhance Edition'."\n"
+ .'* **Basic**: Basic Edition'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Enterprise',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the Enterprise Edition transit router.'."\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 but cannot start with `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'FeatureFilter',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The field that is used to enable or disable a feature of the transit router.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The field that is used to enable or disable a feature of the transit router.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The value of the field that is used to enable or disable a feature of the transit router. Supported fields:'."\n"
+ ."\n"
+ .'* **Multicast**: the multicast feature.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Multicast',
+ ],
+ 'Value' => [
+ 'description' => 'The fields that are used to enable or disable the features of the transit router. The **Multicast** field supports only one value. Valid values:'."\n"
+ ."\n"
+ .'* **Enabled**: enables multicast.'."\n"
+ .'* **Disabled**: disables multicast.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The field that is used to enable or disable a feature of the transit router. Valid values of the **Multicast** field:'."\n"
+ ."\n"
+ .'* **Enabled**: enables multicast.'."\n"
+ .'* **Disabled**: disables multicast.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Enabled',
+ ],
+ 'required' => false,
+ 'maxItems' => 1,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\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' => '68521297-5FA6-46CB-B4EB-658F1C68C8CC',
+ ],
+ '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',
+ ],
+ 'TransitRouters' => [
+ 'description' => 'A list of transit routers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the transfer router.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CreationTime' => [
+ 'description' => 'The time when the transit router 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-03-15T09:39Z',
+ ],
+ 'Type' => [
+ 'description' => 'The edition of the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **Enterprise**: Enhance Edition'."\n"
+ .'* **Basic**: Basic Edition'."\n",
+ 'type' => 'string',
+ 'example' => 'Enterprise',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**: The transit router is being created.'."\n"
+ .'* **Active**: The transit router is available.'."\n"
+ .'* **Modifying**: The transit router is being modified'."\n"
+ .'* **Deleting**: The transit router is being deleted.'."\n"
+ .'* **Upgrading**: The transit router is being upgraded.'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ 'TransitRouterDescription' => [
+ 'description' => 'The description of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'testdesc',
+ ],
+ 'TransitRouterName' => [
+ 'description' => 'The name of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'testname',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ 'AliUid' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the CEN instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1210123456123456',
+ ],
+ 'RegionId' => [
+ 'description' => 'The ID of the region where the transit router is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'SupportMulticast' => [
+ 'description' => 'Indicates whether multicast is enabled for the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **true**: enabled'."\n"
+ .'* **false**: disabled'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'TransitRouterCidrList' => [
+ 'description' => 'The CIDR blocks of the transit router.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The CIDR block of the transit router.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Cidr' => [
+ 'description' => 'The CIDR block of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.1.0/24',
+ ],
+ 'Name' => [
+ 'description' => 'The name of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'CIDRname',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'CIDRdesc',
+ ],
+ 'TransitRouterCidrId' => [
+ 'description' => 'The ID of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'cidr-46p5ceg21e8152****',
+ ],
+ 'PublishCidrRoute' => [
+ 'description' => 'Indicates whether the system is allowed to automatically add a route to the route table of the transit router. Valid values:'."\n"
+ ."\n"
+ .'- **true**: yes'."\n"
+ ."\n"
+ .' A value of **true** indicates that after you create a private VPN connection and create a route learning correlation for the private VPC connection, the system automatically adds the following route to the route table of the transit router that is in route learning correlation with the private VPN connection: A blackhole route whose destination CIDR block is the CIDR block of the transit router. The CIDR block of the transit router refers to the CIDR block from which gateway IP addresses are allocated to IPsec-VPN connections. '."\n"
+ .' '."\n"
+ .' The blackhole route is advertised only to the route tables of virtual border routers (VBRs) that are connected to the transit router. '."\n"
+ ."\n"
+ .'- **false**: no',
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ ],
+ 'Tags' => [
+ 'description' => 'A list of tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'TagValue',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameterCombination.TransitRouter',
+ 'errorMessage' => 'Region ID is required if no TransitRouterId or CenId specified.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UnsupportFilterValue',
+ 'errorMessage' => 'The specified FeatureFilter Value is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UnsupportFilter',
+ 'errorMessage' => 'The specified FeatureFilter is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagValue',
+ 'errorMessage' => 'The tag values are not valid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagKey',
+ 'errorMessage' => 'The tag keys are not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"68521297-5FA6-46CB-B4EB-658F1C68C8CC\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"TransitRouters\\": [\\n {\\n \\"CreationTime\\": \\"2021-03-15T09:39Z\\",\\n \\"Type\\": \\"Enterprise\\",\\n \\"Status\\": \\"Active\\",\\n \\"TransitRouterId\\": \\"tr-bp1su1ytdxtataupl****\\",\\n \\"TransitRouterDescription\\": \\"testdesc\\",\\n \\"TransitRouterName\\": \\"testname\\",\\n \\"CenId\\": \\"cen-j3jzhw1zpau2km****\\",\\n \\"AliUid\\": 1210123456123456,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"SupportMulticast\\": false,\\n \\"TransitRouterCidrList\\": [\\n {\\n \\"Cidr\\": \\"192.168.1.0/24\\",\\n \\"Name\\": \\"CIDRname\\",\\n \\"Description\\": \\"CIDRdesc\\",\\n \\"TransitRouterCidrId\\": \\"cidr-46p5ceg21e8152****\\",\\n \\"PublishCidrRoute\\": true\\n }\\n ],\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRoutersResponse>\\n <PageSize>10</PageSize>\\n <RequestId>68521297-5FA6-46CB-B4EB-658F1C68C8CC</RequestId>\\n <PageNumber>1</PageNumber>\\n <TotalCount>1</TotalCount>\\n <TransitRouters>\\n <CreationTime>2021-03-15T09:39Z</CreationTime>\\n <Type>Enterprise</Type>\\n <Status>Active</Status>\\n <TransitRouterId>tr-bp1su1ytdxtataupl****</TransitRouterId>\\n <TransitRouterDescription>testdesc</TransitRouterDescription>\\n <TransitRouterName>testname</TransitRouterName>\\n <CenId>cen-j3jzhw1zpau2km****</CenId>\\n <AliUid>1210123456123456</AliUid>\\n <RegionId>ap-southeast-2</RegionId>\\n <SupportMulticast>false</SupportMulticast>\\n <TransitRouterCidrList>\\n <Cidr>192.168.1.0/24</Cidr>\\n <Name>CIDRname</Name>\\n <Description>CIDRdesc</Description>\\n <TransitRouterCidrId>cidr-46p5ceg21e8152****</TransitRouterCidrId>\\n <PublishCidrRoute>true</PublishCidrRoute>\\n </TransitRouterCidrList>\\n </TransitRouters>\\n</ListTransitRoutersResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouters',
+ 'summary' => 'Queries the information about transit routers that are connected to a Cloud Enterprise Network (CEN) instance.',
+ 'description' => 'You can set the **RegionId** and **TransitRouterId** parameters based on your requirements.'."\n"
+ ."\n"
+ .'* If you do not set **RegionId** or **TransitRouterId**, the system queries all transit routers that are connected to the specified CEN instance.'."\n"
+ .'* If you set only **RegionId**, the system queries transit routers that are deployed in the specified region.'."\n"
+ .'* If you set only **TransitRouterId**, the system queries the specified transit router.'."\n"
+ .'* If you set both **RegionId** and **TransitRouterId**, the system queries the specified transit router in the specified region.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouterAvailableResource' => [
+ 'summary' => 'Queries the zones that support Enterprise Edition transit routers 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 Enterprise Edition transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'SupportMulticast',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to query only the zones in which the multicast feature is supported. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ ."\n"
+ .' After you call **ListTransitRouterAvailableResource**, if no zone is returned, it indicates that the Enterprise Edition transit router does not support the multicast feature.'."\n"
+ ."\n"
+ .'* **false** (default)'."\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' => 'B4F480E0-4E76-5E43-9966-8322C28A158A',
+ ],
+ 'SlaveZones' => [
+ 'description' => 'A list of secondary zone IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'A list of secondary zone IDs.'."\n"
+ ."\n"
+ .'You can call [DescribeZones](~~36064~~) to query zones by ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-h',
+ ],
+ ],
+ 'MasterZones' => [
+ 'description' => 'A list of primary zones.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the primary zone.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-h',
+ ],
+ ],
+ 'AvailableZones' => [
+ 'description' => 'A list of zone IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The zone ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-i',
+ ],
+ ],
+ 'SupportMulticast' => [
+ 'description' => 'Indicates whether the zone supports the multicast feature.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B4F480E0-4E76-5E43-9966-8322C28A158A\\",\\n \\"SlaveZones\\": [\\n \\"cn-hangzhou\\"\\n ],\\n \\"MasterZones\\": [\\n \\"cn-hangzhou-h\\"\\n ],\\n \\"AvailableZones\\": [\\n \\"cn-hangzhou-i\\"\\n ],\\n \\"SupportMulticast\\": false\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterAvailableResourceResponse>\\n <SlaveZones>ap-southeast-2b</SlaveZones>\\n <SlaveZones>ap-southeast-2a</SlaveZones>\\n <RequestId>B4F480E0-4E76-5E43-9966-8322C28A158A</RequestId>\\n <MasterZones>ap-southeast-2b</MasterZones>\\n <AvailableZones>ap-southeast-2b</AvailableZones>\\n <AvailableZones>ap-southeast-2a</AvailableZones>\\n</ListTransitRouterAvailableResourceResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterAvailableResource',
+ 'description' => '* You can call the **ListTransitRouterAvailableResource** operation to query the zones that support Enterprise Edition transit routers in a specified region.'."\n"
+ ."\n"
+ .' * If you do not set **SupportMulticast** to **true**, general-purpose zones that support Enterprise Edition transit routers are queried.'."\n"
+ .' * If you set **SupportMulticast** to **true**, zones in which Enterprise Edition transit routers support multicast are queried.'."\n"
+ ."\n"
+ .'* On May 31, 2022, VPC-connected Enterprise Edition transit routers were optimized. Optimized Enterprise Edition transit routers do not require you to specify the primary and secondary zones when you connect VPCs to the Enterprise Edition transit routers. You can specify one or more zones.'."\n"
+ ."\n"
+ .' * If your Enterprise Edition transit router has not been optimized, you must specify the primary and secondary zones when you connect a VPC to your Enterprise Edition transit router. After you call **ListTransitRouterAvailableResource**, you can call **MasterZones** and **SlaveZones** to query the primary and secondary zones.'."\n"
+ .' * If your Enterprise Edition transit router has been optimized, you can specify a zone as needed when you connect a VPC to your Enterprise Edition transit router. After you call **ListTransitRouterAvailableResource**, you can call **AvailableZones** to query the zones.'."\n"
+ ."\n"
+ .'For more information about the optimization, see [Announcement: Optimization on VPC-connected Enterprise Edition transit routers](~~434191~~).'."\n",
+ ],
+ 'OpenTransitRouterService' => [
+ 'summary' => 'Activates the transit router feature.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'none',
+ 'abilityTreeCode' => '85448',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ '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 value, but you must make sure that it is unique among different requests. The client token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'OrderId' => [
+ 'description' => 'The ID of the order.'."\n",
+ 'type' => 'string',
+ 'example' => '21370700730****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '866DEBE1-6411-51EC-80D8-975349B9FB4A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Risk.RiskControlRejection',
+ 'errorMessage' => '为保护您的账户安全,下单被中止,详情请联系客服。',
+ ],
+ [
+ 'errorCode' => 'Order.Opened',
+ 'errorMessage' => '您已开通本服务,请前往控制台使用。',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.NoAvailablePaymentMethod',
+ 'errorMessage' => 'No payment method is specified for your account. We recommend that you add a payment method.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.BasicInfoUncompleted',
+ 'errorMessage' => 'Your information is incomplete. Complete your information before the operation.',
+ ],
+ [
+ 'errorCode' => 'PayFor.CreditPayInsufficientBalance',
+ 'errorMessage' => '额度不足,请联系您的渠道合作伙伴提升额度。',
+ ],
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRoleForCEN',
+ 'errorMessage' => 'No permission to open AliyunServiceRole for CEN.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PurchaseQuantityLimit',
+ 'errorMessage' => 'You have exceeded the maximum quantity you can purchase.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.QuotaNotEnough',
+ 'errorMessage' => 'The quota is not enough.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.ConcurrentOperation',
+ 'errorMessage' => 'The operation failed caused by concurrent operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.Risk',
+ 'errorMessage' => '系统检测到您的支付方式存在风险,请通过邮件或站内信中的链接完成验证。验证完成后重新下单。',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.UseStoredCardFailed',
+ 'errorMessage' => 'Operation failed because use stored card failed.',
+ ],
+ [
+ 'errorCode' => 'PayFor.AccountMoneyValidateError',
+ 'errorMessage' => '账号可用金额不足.',
+ ],
+ [
+ 'errorCode' => 'EntityNotExist.Account',
+ 'errorMessage' => 'The role not exists: AliyunServiceRoleForCEN.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InsufficientAvailableQuota',
+ 'errorMessage' => 'Operation failed due to the account quota is insufficient.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.NoRealNameAuthentication',
+ 'errorMessage' => 'No real-name authentication was applied.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.ContainsForbiddenLabel',
+ 'errorMessage' => 'You cannot place the order because orders are prohibited by a label.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"OrderId\\": \\"21370700730****\\",\\n \\"RequestId\\": \\"866DEBE1-6411-51EC-80D8-975349B9FB4A\\"\\n}","type":"json"}]',
+ 'title' => 'OpenTransitRouterService',
+ 'description' => 'You can call the `OpenTransitRouterService` operation to activate the transit router feature free of charge. After the `OpenTransitRouterService` operation succeeds, an order is automatically generated. You can use the returned order ID to query the order information in [Alibaba Cloud User Center](https://usercenter2-intl.aliyun.com/billing/#/account/overview).',
+ ],
+ 'CheckTransitRouterService' => [
+ 'summary' => 'Queries whether your Alibaba Cloud account has the transit router feature activated.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'none',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '85449',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ '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 a token, 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-001****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'description' => 'Indicates whether the transit router feature is activated.'."\n"
+ ."\n"
+ .'* **true**: activated'."\n"
+ .'* If this value is not returned, the system prompts that the current account does not have the transit router feature activated.'."\n",
+ 'type' => 'string',
+ 'example' => 'true',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '5D93C8B9-C354-5C3E-BEFB-BA8A2C314D68',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'USER_NOT_OPEN_TR_SERVICE',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Enabled\\": \\"true\\",\\n \\"RequestId\\": \\"5D93C8B9-C354-5C3E-BEFB-BA8A2C314D68\\"\\n}","errorExample":""},{"type":"xml","example":"<CheckTransitRouterServiceResponse>\\n <Enabled>true</Enabled>\\n <RequestId>5D93C8B9-C354-5C3E-BEFB-BA8A2C314D68</RequestId>\\n</CheckTransitRouterServiceResponse>","errorExample":""}]',
+ 'title' => 'CheckTransitRouterService',
+ ],
+ 'GrantInstanceToTransitRouter' => [
+ 'summary' => 'Grants a transit router permissions on network instances that belong to another Alibaba Cloud account. To connect a transit router of Account B to a network instance of Account A, you must use Account A to grant permissions to the transit router of Account B.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72444',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnOQ547T',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Enter the ID of the Cloud Enterprise Network (CEN) instance to which the transit router belongs.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-44m0p68spvlrqq****',
+ ],
+ ],
+ [
+ 'name' => 'InstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ ],
+ [
+ 'name' => 'InstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **ExpressConnect**: VBR'."\n"
+ .'* **VPN**: IPsec-VPN connection'."\n"
+ .'* **ECR**: ECR'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the network instance is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'CenOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the CEN instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '1250123456123456',
+ ],
+ ],
+ [
+ 'name' => 'OrderType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: the Alibaba Cloud account that owns the CEN instance.'."\n"
+ .'* **PayByResourceOwner**: the Alibaba Cloud account that owns the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PayByCenOwner',
+ 'default' => 'PayByCenOwner',
+ 'enum' => [
+ 'PayByCenOwner',
+ 'PayByResourceOwner',
+ ],
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'C6E5992C-A57B-5A6C-9B26-568074DC68BA',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Forbbiden.TransitRouterServiceNotOpen',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRoleForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRoleForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TaskConflict',
+ 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.',
+ ],
+ [
+ 'errorCode' => 'InvalidVbr.NotFound',
+ 'errorMessage' => 'vbr is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.GrantCrossAccountExist',
+ 'errorMessage' => 'Cross-account authorization already exists.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.OperateShareResource',
+ 'errorMessage' => 'You cannot operate shared resources.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidInstanceId.NotFound ',
+ 'errorMessage' => 'InstanceId is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C6E5992C-A57B-5A6C-9B26-568074DC68BA\\"\\n}","type":"json"}]',
+ 'title' => 'GrantInstanceToTransitRouter',
+ 'description' => '* The `GrantInstanceToTransitRouter` operation can be used to grant transit routers permissions on network instances that belong to other Alibaba Cloud accounts, including virtual private clouds (VPCs), virtual border routers (VBRs), IPsec-VPN connections, and Express Connect Router (ECRs).'."\n"
+ ."\n"
+ .' To grant transit routers permissions on Cloud Connect Network (CCN) instances, call the [GrantInstanceToCbn](~~126141~~) operation.'."\n"
+ ."\n"
+ .'* Before you call `GrantInstanceToTransitRouter`, take note of the billing rules, permission limits, and prerequisites on permission management of transit routers. For more information, see [Acquire permissions to connect to a network instance that belongs to another account](~~181553~~).'."\n"
+ ."\n"
+ .'* Before you grant a transit router permissions on a network instance, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' The account to which the network instance belongs and the account to which the transit router belongs are of the same type.'."\n"
+ ."\n"
+ .' The ID of the Alibaba Cloud account to which the transit router belongs is obtained.'."\n"
+ ."\n"
+ .' The ID of the Cloud Enterprise Network (CEN) instance to which the Enterprise Edition transit router belongs is obtained.'."\n"
+ ."\n"
+ .' Before you grant a transit router permissions on a VBR, contact your account manager to acquire permissions on the VBR.'."\n"
+ ."\n"
+ .' Before you grant a transit router permissions on an IPsec-VPN connection, make sure that the IPsec-VPN connection is not associated with a resource.'."\n"
+ ."\n"
+ .' If the IPsec-VPN connection is attached to a VPN gateway, the IPsec-VPN connection cannot be attached to transit routers within the same account or different accounts.'."\n"
+ ."\n"
+ .' If the IPsec-VPN connection is attached to a transit router, detach the IPsec-VPN connection from the transit router. For more information, see [Delete a network instance connection](~~181554~~).'."\n",
+ ],
+ 'RevokeInstanceFromTransitRouter' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance to which the transit router belongs.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-44m0p68spvlrqq****',
+ ],
+ ],
+ [
+ 'name' => 'InstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The network instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ ],
+ [
+ 'name' => 'InstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **ExpressConnect**: VBR'."\n"
+ .'* **VPN**: IPsec-VPN connection'."\n"
+ .'* **ECR**: ECR'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the network instance.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'CenOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the CEN instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '1250123456123456',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'AA4BFFD1-5090-5896-935F-4B353557F1A8',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Cen',
+ 'errorMessage' => 'The status of Cen is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.AttachmentExist',
+ 'errorMessage' => 'Operation is not allowed because the specified instance has already been attached to CEN.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AA4BFFD1-5090-5896-935F-4B353557F1A8\\"\\n}","errorExample":""},{"type":"xml","example":"<RevokeInstanceFromTransitRouterResponse>\\n <RequestId>AA4BFFD1-5090-5896-935F-4B353557F1A8</RequestId>\\n</RevokeInstanceFromTransitRouterResponse>","errorExample":""}]',
+ 'title' => 'RevokeInstanceFromTransitRouter',
+ 'summary' => 'Revokes the permissions that a transit router has on network instances that belong to another Alibaba Cloud account.',
+ 'description' => '`RevokeInstanceFromTransitRouter` can be used to revoke permissions on virtual private clouds (VPCs), virtual border routers (VBRs), IPsec-VPN connections, and Express Connect Router (ECRs) that belong to another Alibaba Cloud account.'."\n"
+ ."\n"
+ .'To revoke permissions on Cloud Connect Network (CCN) instances that belong to another Alibaba Cloud account, call the [RevokeInstanceFromCbn](~~126142~~) operation.'."\n"
+ ."\n"
+ .'### [](#)Prerequisites'."\n"
+ ."\n"
+ .'Before you call `RevokeInstanceFromTransitRouter`, you must detach the network instances from the transit router.'."\n"
+ ."\n"
+ .'* For more information about how to detach VPCs from Enterprise Edition transit routers, see [DeleteTransitRouterVpcAttachment](~~261220~~).'."\n"
+ .'* For more information about how to detach VBRs from Enterprise Edition transit routers, see [DeleteTransitRouterVbrAttachment](~~261223~~).'."\n"
+ .'* For more information about how to detach IPsec-VPN connections from Enterprise Edition transit routers, see [DeleteTransitRouterVpnAttachment](~~443992~~).'."\n"
+ .'* For more information about how to detach ECRs from Enterprise Edition transit routers, see [DeleteTransitRouterEcrAttachment](~~443992~~).'."\n"
+ .'* For more information about how to detach network instances from Basic Edition transit routers, see [DetachCenChildInstance](~~65915~~).'."\n",
+ ],
+ 'CreateTransitRouterCidr' => [
+ 'summary' => 'Creates a custom CIDR block for a transit router. Custom CIDR blocks of a transit router are similar to the CIDR blocks of the loopback interface of a router.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '146054',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnT33W0H',
+ ],
+ ],
+ '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-426****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-p0w3x8c9em72a40nw****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region to which the transfer router belongs.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) 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 transit router CIDR block.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the transit router CIDR block.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Cidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CIDR block of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '192.168.10.0/24',
+ ],
+ ],
+ [
+ 'name' => 'PublishCidrRoute',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'description' => 'Specifies whether to allow the system to automatically add a route that points to the CIDR block to the route table of the transit router.'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ ."\n"
+ .' If you set the value to true, after you create a VPN attachment on a private VPN gateway and enable route learning for the VPN attachment, the system automatically adds the following route to the route table of the transit router that is in route learning relationship with the VPN attachment:'."\n"
+ ."\n"
+ .' A blackhole route whose destination CIDR block is the transit router CIDR block, which refers to the CIDR block from which gateway IP addresses are allocated to the IPsec-VPN connection. The blackhole route is advertised only to the route tables of virtual border routers (VBRs) connected to the transit router.'."\n"
+ ."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ 'default' => 'True',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterCidrId' => [
+ 'description' => 'The ID of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'cidr-0zv0q9crqpntzz****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OverLappingExist.Cidr',
+ 'errorMessage' => 'The cidr overlapping exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterCidr',
+ 'errorMessage' => 'Transit region does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Cidr',
+ 'errorMessage' => 'The specified cidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'The specified RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterCidrId\\": \\"cidr-0zv0q9crqpntzz****\\",\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterCidrResponse>\\n <TransitRouterCidrId>cidr-0zv0q9crqpntzz****</TransitRouterCidrId>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n</CreateTransitRouterCidrResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterCidr',
+ 'description' => 'You can specify a CIDR block for a transit router. The CIDR block works in a similar way as the CIDR block of the loopback interface on a router. IP addresses within the CIDR block can be assigned to IPsec-VPN connections. For more information, see [Transit router CIDR blocks](~~462635~~).'."\n"
+ ."\n"
+ .'The **CreateTransitRouterCidr** operation can be used to create a CIDR block only after you create a transit router.'."\n"
+ ."\n"
+ .'The CIDR block must meet the following requirements:'."\n"
+ ."\n"
+ .'* Only Enterprise Edition transit routers support custom CIDR blocks.'."\n"
+ ."\n"
+ .'* For more information, see [Limits in transit router CIDR blocks](~~462635~~).'."\n"
+ ."\n"
+ .'* Each transit router supports at most five CIDR blocks. The subnet mask of a CIDR block must be 16 bits to 24 bits in length.'."\n"
+ ."\n"
+ .'* The following CIDR blocks and their subnets are not supported: 100.64.0.0/10, 224.0.0.0/4, 127.0.0.0/8, and 169.254.0.0/16.'."\n"
+ ."\n"
+ .'* The CIDR block cannot overlap with the CIDR blocks of the network instances that communicate with each other by using the CEN instance.'."\n"
+ ."\n"
+ .'* On the same CEN instance, each transit router CIDR block must be unique.'."\n"
+ ."\n"
+ .'* When you create the first VPN connection after you add a CIDR block for a transit router, three CIDR blocks within the CIDR block are reserved. An IP address is allocated from the remaining CIDR blocks to the IPsec-VPN connection.'."\n"
+ ."\n"
+ .' You can call the [ListTransitRouterCidrAllocation](~~464173~~) operation to query reserved CIDR blocks and IP addresses allocated to network connections.'."\n",
+ ],
+ 'DeleteTransitRouterCidr' => [
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ '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 the value is unique among different requests. The client 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' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-p0w3x8c9em72a40nw****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterCidrId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CIDR block.'."\n"
+ ."\n"
+ .'You can call the [ListTransitRouterCidr](~~462772~~) operation to query the ID of a CIDR block.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cidr-0zv0q9crqpntzz****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => 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 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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.CidrBlockAllocated',
+ 'errorMessage' => 'Cidr blocks are allocated from the cidr, which should be released first.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CidrNotExist',
+ 'errorMessage' => 'cidr is not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterCidrResponse>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n</DeleteTransitRouterCidrResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterCidr',
+ 'summary' => 'Deletes a CIDR block from a transit router.',
+ 'description' => 'If IP addresses within the CIDR block have been allocated to network instances, the CIDR block cannot be deleted.'."\n",
+ ],
+ 'ModifyTransitRouterCidr' => [
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ '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 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-426****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-gw8ergozrv77rtbjd****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterCidrId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CIDR block.'."\n"
+ ."\n"
+ .'You can call the [ListTransitRouterCidr](~~462772~~) operation to query the ID of a CIDR block.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cidr-0zv0q9crqpntzz****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the transit router is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'Name',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the transit router CIDR block.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the transit router CIDR block.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'Cidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new CIDR block of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/24',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'PublishCidrRoute',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to allow the system to automatically add a route that points to the CIDR block to the route table of the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ ."\n"
+ .' If you specify true, create a private VPN connection, and enable route learning for the VPN connection, the system automatically adds the following route to the transit router route table that is in route learning relationship with the VPN connection: a blackhole route whose destination CIDR block is the CIDR block of the transit router. The CIDR block of the transit router refers to the CIDR block from which IP addresses of IPsec-VPN connections are allocated. The blackhole route is advertised only to the route tables of virtual border routers (VBRs) connected to the transit router.'."\n"
+ ."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.Cidr',
+ 'errorMessage' => 'Cidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CidrBlockAllocated',
+ 'errorMessage' => 'Cidr blocks are allocated from the cidr, which should be released first.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CidrNotExist',
+ 'errorMessage' => 'cidr is not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\"\\n}","errorExample":""},{"type":"xml","example":"<ModifyTransitRouterCidrResponse>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n</ModifyTransitRouterCidrResponse>","errorExample":""}]',
+ 'title' => 'ModifyTransitRouterCidr',
+ 'summary' => 'Modifies the CIDR block of a transit router.',
+ 'description' => '* Before you modify the CIDR block of a transit router, we recommend that you read the [limits on transit router CIDR blocks](~~462635~~).'."\n"
+ ."\n"
+ .'* If IP addresses within the CIDR block have been allocated to network instances, you cannot modify the CIDR block.'."\n"
+ ."\n"
+ .'* When you call **ModifyTransitRouterCidr**, if no parameter of the **PublishCidrRoute** operation is modified, ModifyTransitRouterCidr is a synchronous operation. After you call the operation, the new settings are immediately applied.'."\n"
+ ."\n"
+ .'* If a parameter of the **PublishCidrRoute** operation is modified, **ModifyTransitRouterCidr** is an asynchronous operation. After you call the operation, the request ID (**RequestId**) is returned but the operation is still being performed in the system background. You can call **ListTransitRouterCidr** to query the status of the CIDR block of the transit router.'."\n"
+ ."\n"
+ .' * If the CIDR block of the transit router remains unchanged, the CIDR block is still being modified.'."\n"
+ .' * If the CIDR block of the transit router is changed to the one that you specify in the request, the CIDR block has been modified.'."\n",
+ ],
+ 'ListTransitRouterCidr' => [
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ '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' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-p0w3x8c9em72a40nw****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterCidrId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cidr-0zv0q9crqpntzz****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether only to precheck the API request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: prechecks the request but does not query the CIDR block. The system checks the required parameters, the request format, and the service 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',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'headers' => [],
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ 'CidrLists' => [
+ 'description' => 'The information about the CIDR block.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the CIDR block.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterCidrId' => [
+ 'description' => 'The ID of the transit router CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'cidr-0zv0q9crqpntzz****',
+ ],
+ 'Family' => [
+ 'description' => 'The type of the CIDR block.'."\n"
+ ."\n"
+ .'The value is **IPv4**, which indicates that the CIDR block is of the IPv4 type.'."\n",
+ 'type' => 'string',
+ 'example' => 'IPv4',
+ ],
+ 'Name' => [
+ 'description' => 'The name of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'Cidr' => [
+ 'description' => 'The CIDR block of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.10.0/24',
+ ],
+ 'PublishCidrRoute' => [
+ 'description' => 'Indicates whether the system is allowed to automatically add a route to the route table of the transit router. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ ."\n"
+ .' A value of **true** indicates that after you create a private VPN connection and enable route learning for the connection, the system automatically adds a blackhole route to the route table of the transit router to which the VPN connection is attached.'."\n"
+ ."\n"
+ .' The destination CIDR block of the blackhole route is the CIDR block of the transit router. The CIDR block of the transit router refers to the CIDR block from which gateway IP addresses are allocated to IPsec-VPN connections.'."\n"
+ ."\n"
+ .' The blackhole route is advertised only to the route table of the virtual border router (VBR) that is connected to the transit router.'."\n"
+ ."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The transit router ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-p0w3x8c9em72a40nw****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\",\\n \\"CidrLists\\": [\\n {\\n \\"TransitRouterCidrId\\": \\"cidr-0zv0q9crqpntzz****\\",\\n \\"Family\\": \\"IPv4\\",\\n \\"Name\\": \\"nametest\\",\\n \\"Description\\": \\"desctest\\",\\n \\"Cidr\\": \\"192.168.10.0/24\\",\\n \\"PublishCidrRoute\\": true,\\n \\"TransitRouterId\\": \\"tr-p0w3x8c9em72a40nw****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterCidrResponse>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n <CidrLists>\\n <TransitRouterCidrId>cidr-0zv0q9crqpntzz****</TransitRouterCidrId>\\n <Family>IPv4</Family>\\n <Name>nametest</Name>\\n <Description>desctest</Description>\\n <Cidr>192.168.10.0/24</Cidr>\\n <PublishCidrRoute>true</PublishCidrRoute>\\n <TransitRouterId>tr-p0w3x8c9em72a40nw****</TransitRouterId>\\n </CidrLists>\\n</ListTransitRouterCidrResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterCidr',
+ 'summary' => 'Queries the CIDR blocks of a transit router.',
+ ],
+ 'ListTransitRouterCidrAllocation' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ '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' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-p0w3x8c9em72a40nw****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterCidrId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CIDR block.'."\n"
+ ."\n"
+ .'You can call the [ListTransitRouterCidr](~~462772~~) operation to query the ID of a CIDR block.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cidr-0zv0q9crqpntzz****',
+ ],
+ ],
+ [
+ 'name' => 'CidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CIDR blocks that have IP addresses allocated to network instances.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/28',
+ ],
+ ],
+ [
+ 'name' => 'Cidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CIDR block of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/24',
+ ],
+ ],
+ [
+ 'name' => 'DedicatedOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CIDR block that is for exclusive use.'."\n"
+ ."\n"
+ .'Set the value to **VPN**, which specifies the CIDR block that is reserved for VPN connections.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPN',
+ ],
+ ],
+ [
+ 'name' => 'AttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-2nalp6yksc805w****',
+ ],
+ ],
+ [
+ 'name' => 'AttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries per page.'."\n"
+ ."\n"
+ .'* If you do not specify a value for **MaxResults**, entries are returned in one response. After you send the request, the value of **MaxResults** includes all entries.'."\n"
+ ."\n"
+ .'* If you specify a value for **MaxResults**, entries are returned in batches. Valid values: **1** to **100**. We recommend that you set **MaxResults** to **20**.'."\n"
+ ."\n"
+ .' The value of **MaxResults** in the response indicates that number of entries in the current batch.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '5',
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no subsequent query is to be sent, ignore this parameter.'."\n"
+ .'* If a subsequent 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****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the next query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** was not returned, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n"
+ ."\n"
+ .'* If no value is specified for **MaxResults**, query results are returned in one batch. The value of **MaxResults** indicates the total number of entries.'."\n"
+ .'* If a value is specified for **MaxResults**, query results are returned in batches. The value of **MaxResults** in the response indicates the number of entries in the current batch.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'TransitRouterCidrAllocations' => [
+ 'description' => 'The information about the CIDR blocks that have IP addresses allocated to network instances.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the CIDR blocks that have IP addresses allocated to network instances.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterCidrId' => [
+ 'description' => 'The ID of the CIDR block.'."\n",
+ 'type' => 'string',
+ 'example' => 'cidr-0zv0q9crqpntzz****',
+ ],
+ 'AllocatedCidrBlock' => [
+ 'description' => 'The CIDR blocks that have IP addresses allocated to network instances.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.10.0/28',
+ ],
+ 'AttachmentId' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-2nalp6yksc805w****',
+ ],
+ 'Cidr' => [
+ 'description' => 'The CIDR block of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.10.0/24',
+ ],
+ 'AttachmentName' => [
+ 'description' => 'The name of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The parameter NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterId',
+ 'errorMessage' => 'The parameter TransitRouterId or RegionId is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 1,\\n \\"TransitRouterCidrAllocations\\": [\\n {\\n \\"TransitRouterCidrId\\": \\"cidr-0zv0q9crqpntzz****\\",\\n \\"AllocatedCidrBlock\\": \\"192.168.10.0/28\\",\\n \\"AttachmentId\\": \\"tr-attach-2nalp6yksc805w****\\",\\n \\"Cidr\\": \\"192.168.10.0/24\\",\\n \\"AttachmentName\\": \\"nametest\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterCidrAllocationResponse>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>1</MaxResults>\\n <TransitRouterCidrAllocations>\\n <TransitRouterCidrId>cidr-0zv0q9crqpntzz****</TransitRouterCidrId>\\n <AllocatedCidrBlock>192.168.10.0/28</AllocatedCidrBlock>\\n <AttachmentId>tr-attach-2nalp6yksc805w****</AttachmentId>\\n <Cidr>192.168.10.0/24</Cidr>\\n <AttachmentName>nametest</AttachmentName>\\n </TransitRouterCidrAllocations>\\n</ListTransitRouterCidrAllocationResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterCidrAllocation',
+ 'summary' => 'Queries how a CIDR block is allocated.',
+ ],
+ 'CreateTransitRouterVpcAttachment' => [
+ 'summary' => 'Attaches virtual private clouds (VPCs) that you want to connect to a transit router. After you attach the VPCs to the same transit router, the VPCs can communicate with each other.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '72311',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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-001****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the VPC is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the VPC connection.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the VPC connection.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The VPC ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp1kbjcre9vtsebo1****',
+ ],
+ ],
+ [
+ 'name' => 'VpcOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the VPC belongs. The default value is the ID of the current Alibaba Cloud account.'."\n"
+ ."\n"
+ .'> If the network instance and CEN instance belong to different Alibaba Cloud accounts, this parameter is required.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1250123456123456',
+ ],
+ ],
+ [
+ 'name' => 'ChargeType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The billing method. The default value is **POSTPAY**, which specifies the pay-as-you-go billing method.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'POSTPAY',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ZoneMappings',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'A zone that supports Enterprise Edition transit routers.'."\n"
+ ."\n"
+ .'You can specify at most 10 zones.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The zone that supports Enterprise Edition transit routers and the information about the vSwitch in the zone.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'description' => 'A vSwitch that is deployed in the zone that supports Enterprise Edition transit routers.'."\n"
+ ."\n"
+ .'You can specify vSwitches for at most 10 zones in each call.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vsw-bp1a214sbus8z3b54****',
+ ],
+ 'ZoneId' => [
+ 'description' => 'The ID of the zone that supports Enterprise Edition transit routers.'."\n"
+ ."\n"
+ .'You can call the [DescribeZones](~~36064~~) operation to query the most recent zone list.'."\n"
+ ."\n"
+ .'You can specify at most 10 zones in each call.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou-h',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable the Enterprise Edition transit router to automatically advertise routes to VPCs. Valid values:'."\n"
+ ."\n"
+ .'* **false:** (default)'."\n"
+ .'* **true**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterVPCAttachmentOptions',
+ 'in' => 'query',
+ 'style' => 'json',
+ 'schema' => [
+ 'description' => 'Feature configurations of the VPC connection.',
+ 'type' => 'object',
+ 'required' => false,
+ 'additionalProperties' => [
+ 'type' => 'string',
+ 'description' => 'The feature of the VPC connection.'."\n"
+ ."\n"
+ .'**ipv6Support**: specifies whether to enable IPv6.'."\n"
+ ."\n"
+ .'* **enable**: enables IPv6.'."\n"
+ .'* **disable** (default): disables IPv6.'."\n"
+ ."\n"
+ .'> Before you enable IPv6 for a VPC connection, make sure that IPv6 is enabled for the VPC and the vSwitches of the VPC. For more information, see [AllocateVpcIpv6Cidr](~~448916~~) and [CreateVSwitchCidrReservation](~~2593020~~).',
+ 'example' => 'disable',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-ia340z7xis7t5s****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'C087A369-82B9-43EF-91F4-4B63A9C6E6B6',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterRegionId',
+ 'errorMessage' => 'The specified TransitRouterRegion does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRoleForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRoleForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'The Specified Parameter RegionId is illegal',
+ ],
+ [
+ 'errorCode' => 'MissingParam.CenIdOrRegionId',
+ 'errorMessage' => 'Either CenId or RegionId must be specified.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ZoneId',
+ 'errorMessage' => 'The specified ZoneId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ChargeType',
+ 'errorMessage' => 'The specified ChargeType is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'The specified TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcResource',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Vpc',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcOrVswitch',
+ 'errorMessage' => 'The Vpc Or Vswith is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'OperationNotSupport.VpcAutoRoutesPublish',
+ 'errorMessage' => 'Auto publish vpc routes is not supported in this region.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VpnAssociated',
+ 'errorMessage' => 'The operation is not supported because the VPC is associated with VPN.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.TransitRouterServiceNotOpen',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ZoneMappings',
+ 'errorMessage' => 'The Specified Parameter ZoneMappings is illegal',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.VSwitchId',
+ 'errorMessage' => 'VSwitchId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CenFullLevel',
+ 'errorMessage' => 'CEN full level does not support TransitRouter',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ServiceMode',
+ 'errorMessage' => 'ServiceMode is illegal.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.ChildInstanceRelatedCen',
+ 'errorMessage' => 'The childinstance has exceed the quota of the times that a childinstance can be attached as an attachment.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CloudBoxVswNotSupport',
+ 'errorMessage' => 'Cloud Box vsw does not support.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.ZoneMapping',
+ 'errorMessage' => 'The parameter ZoneMapping is duplicated.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.CenQuotaVpcAttachPerTransitRouter',
+ 'errorMessage' => 'The maximum number of VPC attachment per Transit Router is exceeded.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteTable',
+ 'errorMessage' => 'The VPC route table is not in a desired state.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.VpcAttachedFullModeCen',
+ 'errorMessage' => 'The VPC has been attached to another CEN instance whose protection level is FULL.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.AttachChildInstanceAcrossBid',
+ 'errorMessage' => 'VPCs that belong to another BID cannot be associated. You need to apply for cross-BID attaching.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VpcAutoRoutesPublishInOtherCEN',
+ 'errorMessage' => 'The specified VPC already has its routes synchronized with another CEN instance.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.VpcAutoRoutesPublishPerTransitRouter',
+ 'errorMessage' => 'The number of VPCs that have route synchronization enabled has reached the upper limit.',
+ ],
+ [
+ 'errorCode' => 'InsufficientIpAddr.vsw',
+ 'errorMessage' => 'Insufficient available IP addresses in the vSwitch.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceNotOpen',
+ 'errorMessage' => 'The resource owner user has not opened transit router service.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRegionId',
+ 'errorMessage' => 'TransitRouterRegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Ipv6Support',
+ 'errorMessage' => 'Ipv6Support is illegal. Valid Values are [enable, disable].',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VSwitchNotFound',
+ 'errorMessage' => 'The specified vswitch not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VSwitchIpv6CidrNotAllocated',
+ 'errorMessage' => 'The specified vswitch does not have IPv6 address allocated.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service of the account to which the resource belongs has been suspended due to arrears. Please notify the other party to renew the service and try again.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ResourceType',
+ 'errorMessage' => 'The specified parameter ResourceType is invalid.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.TransitRouterVPCAttachmentOptionsAndOptions',
+ 'errorMessage' => 'When creating or modifying a VPC attachment, the input parameter TransitRouterVPCAttachmentOptions and Options cannot be used at the same time.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ApplianceModeSupport',
+ 'errorMessage' => 'The specified parameter ApplianceModeSupport is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.Ipv6Support',
+ 'errorMessage' => 'The specified parameter Ipv6Support is invalid.',
+ ],
+ [
+ 'errorCode' => 'INVALID_OPERATION_RESOURCE_NOT_SUPPORT_APPLIANCE_MODE',
+ 'errorMessage' => 'Only VPC attachment support appliance mode.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidVSwitchId.NotFound',
+ 'errorMessage' => 'The specified VSwitchId is not found.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcSwitch',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterVpcAttachments',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-ia340z7xis7t5s****\\",\\n \\"RequestId\\": \\"C087A369-82B9-43EF-91F4-4B63A9C6E6B6\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterVpcAttachmentResponse>\\n <TransitRouterAttachmentId>tr-attach-ia340z7xis7t5s****</TransitRouterAttachmentId>\\n <RequestId>C087A369-82B9-43EF-91F4-4B63A9C6E6B6</RequestId>\\n</CreateTransitRouterVpcAttachmentResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterVpcAttachment',
+ 'description' => '* You can use the following methods to create a VPC connection from an Enterprise Edition transit router:'."\n"
+ ."\n"
+ .' * If an Enterprise Edition transit router is already created in the region where you want to create a VPC connection, configure the **VpcId**, **ZoneMappings.N.VSwitchId**, **ZoneMappings.N.ZoneId**, **TransitRouterId**, and **RegionId** parameters.'."\n"
+ .' * If no Enterprise Edition transit router is created in the region where you want to create a VPC connection, configure the **VpcId**, **ZoneMappings.N.VSwitchId**, **ZoneMappings.N.ZoneId**, **CenId**, and **RegionId** parameters. Then, the system automatically creates an Enterprise Edition transit router in the specified region.'."\n"
+ ."\n"
+ .'* **CreateTransitRouterVpcAttachment** 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 [ListTransitRouterVpcAttachments](~~261222~~) operation to query the status of a VPC connection.'."\n"
+ ."\n"
+ .' * If the VPC connection is in the **Attaching** state, the VPC connection is being created. You can query the VPC connection but cannot perform other operations.'."\n"
+ .' * If the VPC connection is in the **Attached** state, the VPC connection is created.'."\n"
+ ."\n"
+ .'* By default, route learning and associated forwarding are disabled between transit router route tables and VPC connections.'."\n"
+ ."\n"
+ .'### [](#)Prerequisites'."\n"
+ ."\n"
+ .'Before you call this operation, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .'* The VPC in the zones of the Enterprise Edition transit router contains at least one vSwitch. Each vSwitch must have at least one idle IP address. For more information, see [Regions and zones supported by Enterprise Edition transit routers](~~181681~~).'."\n"
+ .'* To connect to a network instance that belongs to another Alibaba Cloud account, you must first acquire the permissions from the account. For more information, see [Acquire permissions to connect to a network instance that belongs to another account](~~181553~~).'."\n"
+ .'* VPC connections incur fees. Make sure that you understand the billing rules of VPC connections before you create a VPC connection. For more information, see [Billing](~~189836~~).'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteTransitRouterVpcAttachment' => [
+ 'summary' => 'Deletes a virtual private cloud (VPC) connection from an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72332',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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"
+ ."\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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-ia340z7xis7t5s****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Force',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to forcefully delete the VPC connection. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): checks resources such as associated forwarding correlations and route learning policies that are related to the VPC connection before it is deleted. If such a resource exists, the VPC connection is not deleted and an error message is returned.'."\n"
+ .'* **true**: deletes the VPC connection and all resources that are related to the VPC connection.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '7E61D334-4025-41EF-9145-FC327B35301D',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.AttachmentReferencedVpcRouteEntryExisted',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry which next hop is the specified attachment.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteTablePropagationExist',
+ 'errorMessage' => 'The specified TransitRouterAttachment has configured RouteTablePropagation. Please remove the configuration first.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.MulticastDomainAssociationExist',
+ 'errorMessage' => 'The specified TransitRouterAttachment has configured MulticastDomainAssociation. Please remove the configuration first.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PrefixListExist',
+ 'errorMessage' => 'Operation failed because PrefixList exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteEntry',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcSwitch',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Vpc',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.NotSupportForceDelete',
+ 'errorMessage' => 'Not support force delete attachment.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteTable',
+ 'errorMessage' => 'The VPC route table is not in a desired state.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteEntryExist',
+ 'errorMessage' => 'Failed to delete the instance because a route table entry points to the instance.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteTableAssociationExist',
+ 'errorMessage' => 'Operation failed because there is associated routing table.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcResource',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.FlowLogExistOrNisOpened',
+ 'errorMessage' => 'Operation failed because FlowLog exists or Nis opened.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'OperationNotPermitted.AttachmentManagedByCloudService',
+ 'errorMessage' => 'The specified Attachment managed by cloud service can only be deleted through cloud service.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterVpcAttachments',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7E61D334-4025-41EF-9145-FC327B35301D\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterVpcAttachmentResponse> \\r\\n<RequestId>7E61D334-4025-41EF-9145-FC327B35301D</RequestId>\\r\\n</DeleteTransitRouterVpcAttachmentResponse> ","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterVpcAttachment',
+ 'description' => '**DeleteTransitRouterVpcAttachment** 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 **ListTransitRouterVpcAttachments** operation to query the status of a VPC connection.'."\n"
+ ."\n"
+ .'* If a VPC connection is in the **Detaching** state, the VPC connection is being deleted. You can query the VPC connection but cannot perform other operations.'."\n"
+ .'* If a VPC connection cannot be found, it is deleted.'."\n"
+ ."\n"
+ .'## Prerequisites'."\n"
+ ."\n"
+ .'Before you delete a VPC connection, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .'* No associated forwarding correlation is established between the VPC connection and the route tables of the Enterprise Edition transit router. For more information about how to delete an associated forwarding correlation, see [DissociateTransitRouterAttachmentFromRouteTable](~~260944~~).'."\n"
+ .'* No route learning correlation is established between the VPC connection and the route tables of the Enterprise Edition transit router. For more information about how to delete a route learning correlation, see [DisableTransitRouterRouteTablePropagation](~~260945~~).'."\n"
+ .'* The route table of the VPC does not contain routes that point to the VPC connection. For more information about how to delete routes from a VPC route table, see [DeleteRouteEntry](~~36013~~).'."\n"
+ .'* The route tables of the Enterprise Edition transit router do not contain a custom route entry whose next hop is the network instance connection. For more information about how to delete custom routes from the route tables of an Enterprise Edition transit router, see [DeleteTransitRouterRouteEntry](~~261240~~).'."\n"
+ .'* The route tables of the Enterprise Edition transit router do not contain a route that is generated from a prefix list and the next hop is the VPC connection. You can delete such routes by disassociating the route table from the prefix list. For more information, see [DeleteTransitRouterPrefixListAssociation](~~445486~~).'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UpdateTransitRouterVpcAttachmentAttribute' => [
+ 'summary' => 'Modifies the name and description of a virtual private cloud (VPC) connection on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72440',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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"
+ ."\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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the VPC connection.'."\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' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the VPC 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' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterVPCAttachmentOptions',
+ 'in' => 'query',
+ 'style' => 'json',
+ 'schema' => [
+ 'description' => 'The features of the VPC connection.'."\n",
+ 'type' => 'object',
+ 'required' => false,
+ 'additionalProperties' => [
+ 'type' => 'string',
+ 'example' => 'ipv6Support:enable',
+ 'description' => 'The features of the VPC connection.'."\n"
+ ."\n"
+ .'**ipv6Support**: specifies whether to enable IPv6.'."\n"
+ ."\n"
+ .'* **enable**: enables IPv6.'."\n"
+ .'* **disable**: disables IPv6.'."\n"
+ ."\n"
+ .'> Before you enable IPv6 for a VPC connection, make sure that IPv6 is enabled for the VPC and the vSwitches of the VPC. For more information, see [AllocateVpcIpv6Cidr](~~448916~~) and [CreateVSwitchCidrReservation](~~2593020~~).'."\n",
+ ],
+ ],
+ ],
+ [
+ 'name' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to allow the Enterprise Edition transit router to advertise routes to the VPC. Valid values:'."\n"
+ ."\n"
+ .'* **false:** (default)'."\n"
+ .'* **true**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '7E61D334-4025-41EF-9145-FC327B35301D',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterAttachmentId',
+ 'errorMessage' => 'TransitRouterAttachmentId status is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.RegionNotSupport',
+ 'errorMessage' => 'The operation is not supported in this region.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VpcAutoRoutesPublishInOtherCEN',
+ 'errorMessage' => 'The operation is not supported because the VPC is already set autoRoutesPublish in other CEN.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.VpcAutoRoutesPublishPerTransitRouter',
+ 'errorMessage' => 'The count of VPC instance which set autoRoutesPublish in transitRouter is over limit.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VpnAssociated',
+ 'errorMessage' => 'The operation is not supported because the VPC is associated with VPN.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Ipv6Support',
+ 'errorMessage' => 'Ipv6Support is illegal. Valid Values are [enable, disable].',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VSwitchNotFound',
+ 'errorMessage' => 'The specified vswitch not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VSwitchIpv6CidrNotAllocated',
+ 'errorMessage' => 'The specified vswitch does not have IPv6 address allocated.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.AttachmentReferencedIPv6RouteEntryExisted',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry(IPv6) which next hop is the specified attachment.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.AttachmentReferencedVpcIPv6RouteEntryExisted',
+ 'errorMessage' => 'The specified attachment is referenced by vpc route entry(IPv6).',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.EniReferencedIPv6RouteEntryExisted',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry(IPv6) which next hop is network interface that the specified attachment referenced.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.VpcRoutePropagationSource',
+ 'errorMessage' => 'The operation on this VPC route propagation source is not supported.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'INVALID_OPERATION_RESOURCE_NOT_SUPPORT_APPLIANCE_MODE',
+ 'errorMessage' => 'Only VPC attachment support appliance mode.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.Ipv6Support',
+ 'errorMessage' => 'The specified parameter Ipv6Support is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ApplianceModeSupport',
+ 'errorMessage' => 'The specified parameter ApplianceModeSupport is invalid.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.TransitRouterVPCAttachmentOptionsAndOptions',
+ 'errorMessage' => 'When creating or modifying a VPC attachment, the input parameter TransitRouterVPCAttachmentOptions and Options cannot be used at the same time.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.OrderType',
+ 'errorMessage' => 'The specified parameter OrderType is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.OrderTypeMustMatchGrantCrossAccount',
+ 'errorMessage' => 'The OrderType must be the same as the OrderType in the grant cross-account record.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.GrantCrossAccountNotExist',
+ 'errorMessage' => 'Cross-account authorization does not exist.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7E61D334-4025-41EF-9145-FC327B35301D\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTransitRouterVpcAttachmentAttributeResponse>\\n <RequestId>7E61D334-4025-41EF-9145-FC327B35301D</RequestId>\\n</UpdateTransitRouterVpcAttachmentAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateTransitRouterVpcAttachmentAttribute',
+ 'description' => '**UpdateTransitRouterVpcAttachmentAttribute** 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 **ListTransitRouterVpcAttachments** operation to query the status of a VPC connection.'."\n"
+ ."\n"
+ .'* If a VPC connection is in the **Modifying** state, the VPC connection is being modified. You can query the VPC connection but cannot perform other operations.'."\n"
+ .'* If a VPC connection is in the **Attached** state, the VPC connection is modified.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UpdateTransitRouterVpcAttachmentZones' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ '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 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' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-attach-9bbqyygouv4cpn****',
+ ],
+ ],
+ [
+ 'name' => 'AddZoneMappings',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The zones and vSwitches that you want to add to the VPC connection.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the vSwitch that you want to add to the VPC connection.'."\n"
+ ."\n"
+ .'You can specify at most 10 vSwitches in each call.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'description' => 'The ID of the vSwitch that you want to add to the VPC connection.'."\n"
+ ."\n"
+ .'You can specify at most 10 vSwitches in each call.'."\n"
+ ."\n"
+ .'* If the VPC connection belongs to the current Alibaba Cloud account, you can call the [DescribeVSwitches](~~35748~~) operation to query the IDs of the vSwitches and zones of the VPC.'."\n"
+ .'* If the VPC connection belongs to another Alibaba Cloud account, you can call the [ListGrantVSwitchesToCen](~~427599~~) operation to query the IDs of the vSwitches and zones of the VPC.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vsw-wz988dda8ldm4uvmx****',
+ ],
+ 'ZoneId' => [
+ 'description' => 'The ID of the zone where the vSwitch that you want to add to the VPC connection is deployed.'."\n"
+ ."\n"
+ .'You can specify at most 10 vSwitches in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou-h',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'RemoveZoneMappings',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The zones and vSwitches that you want to remove from the VPC connection.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The zones and vSwitches that you want to remove from the VPC connection.'."\n"
+ ."\n"
+ .'You can specify at most 10 pairs of zones and vSwitches in each call.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'description' => 'The ID of the vSwitch that you want to remove from the VPC connection.'."\n"
+ ."\n"
+ .'You can remove at most 10 vSwitches from a VPC in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vsw-wz9f5izl6wshndmta****',
+ ],
+ 'ZoneId' => [
+ 'description' => 'The ID of the zone where the vSwitch that you want to remove from the VPC connection is deployed.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou-i',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '595AE52F-49FF-5788-A677-0DD1467941A1',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.ZoneId',
+ 'errorMessage' => 'The specified ZoneId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterAttachment',
+ 'errorMessage' => 'The status of TransitRouterAttachment is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.VSwitchId',
+ 'errorMessage' => 'VSwitchId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ServiceMode',
+ 'errorMessage' => 'The specified TransitRouter does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AddOrRemoveZoneMappings',
+ 'errorMessage' => 'The specified AddZoneMappings or RemoveZoneMappings are illegal.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Vpc',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.RouteEntryOnEni',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry which next hop is the specified eni.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteEntry',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcSwitch',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InsufficientIpAddr.vsw',
+ 'errorMessage' => 'Insufficient available IP addresses in the vSwitch.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VSwitchIpv6CidrNotAllocated',
+ 'errorMessage' => 'The specified vswitch does not have IPv6 address allocated.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.EniReferencedIPv6RouteEntryExisted',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry(IPv6) which next hop is network interface that the specified attachment referenced.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'IllegalParam.ZoneId',
+ 'errorMessage' => 'The specified ZoneId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidVSwitchId.NotFound',
+ 'errorMessage' => 'The specified VSwitchId is not found.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'IncorrectStatus.VpcSwitch',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"595AE52F-49FF-5788-A677-0DD1467941A1\\"\\n}","type":"json"}]',
+ 'title' => 'UpdateTransitRouterVpcAttachmentZones',
+ 'summary' => 'Modifies the zones and vSwitches that are associated with a virtual private cloud (VPC) connection.',
+ 'description' => '* When you add a zone and a vSwitch for a VPC connection, make sure that the vSwitch has at least one idle IP address. When you modify the zones and vSwitches of a VPC connection, the Enterprise Edition transit router creates an elastic network interface (ENI) in the vSwitch. The ENI occupies one IP address in the vSwitch. The ENI forwards traffic between the VPC and the Enterprise Edition transit router.'."\n"
+ ."\n"
+ .'* **UpdateTransitRouterVpcAttachmentZones** 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 **ListTransitRouterVpcAttachments** operation to query the status of a VPC connection.'."\n"
+ ."\n"
+ .' * If a VPC connection is in the **Modifying** state, the VPC connection is being modified. You can query the VPC connection but cannot perform other operations.'."\n"
+ .' * If a VPC connection is in the **Attached** state, the VPC connection is modified.'."\n",
+ ],
+ 'ListTransitRouterVpcAttachments' => [
+ 'summary' => 'Queries the status, billing method, zones, vSwitches, and elastic network interfaces (ENIs) of virtual private cloud (VPC) connections.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72401',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IDs of the CEN instances.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the Enterprise Edition transit router.'."\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' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query and no subsequent 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' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp1kbjcre9vtsebo1****',
+ ],
+ ],
+ [
+ 'name' => 'OrderType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: the Alibaba Cloud account that owns the CEN instance.'."\n"
+ .'* **PayByResourceOwner**: the Alibaba Cloud account that owns the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PayByCenOwner',
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether the network instance is attached to the CEN instance. Valid values:'."\n"
+ ."\n"
+ .'* **Attaching**: being attached to the CEN instance.'."\n"
+ .'* **Attached**: attached to the CEN instance.'."\n"
+ .'* **Detaching**: being detached from the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Attached',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the next query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is returned, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the region.'."\n",
+ 'type' => 'string',
+ 'example' => 'C97FF53F-3EF8-4883-B459-60E171924B23',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TransitRouterAttachments' => [
+ 'description' => 'The information about the VPC connection.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the VPC connection.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CreationTime' => [
+ 'description' => 'The time when the VPC connection was created.'."\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-06-15T02:14Z',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the VPC connection. Valid values:'."\n"
+ ."\n"
+ .'* **Attached**'."\n"
+ .'* **Attaching**'."\n"
+ .'* **Detaching**'."\n",
+ 'type' => 'string',
+ 'example' => 'Attached',
+ ],
+ 'VpcId' => [
+ 'description' => 'The VPC ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The VPC connection ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The description of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of resource to which the transit router is connected.'."\n"
+ ."\n"
+ .'Only **VPC** may be returned, which indicates VPCs.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'TransitRouterAttachmentDescription' => [
+ 'description' => 'The description of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'testdesc',
+ ],
+ 'VpcOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the VPC belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1250123456123456',
+ ],
+ 'VpcRegionId' => [
+ 'description' => 'The region ID of the VPC.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'TransitRouterAttachmentName' => [
+ 'description' => 'The name of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'testname',
+ ],
+ 'ZoneMappings' => [
+ 'description' => 'The primary and secondary zones, vSwitches, and ENIs of the VPC.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'ZoneId' => [
+ 'description' => 'The zone ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-h',
+ ],
+ 'VSwitchId' => [
+ 'description' => 'The vSwitch ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsw-bp1a214sbus8z3b54****',
+ ],
+ 'NetworkInterfaceId' => [
+ 'description' => 'The ID of the ENI created by the Enterprise Edition transit router in the vSwitch.'."\n",
+ 'type' => 'string',
+ 'example' => 'eni-bp149hmyaqegerml****',
+ ],
+ ],
+ ],
+ ],
+ 'AutoPublishRouteEnabled' => [
+ 'description' => 'Indicates whether the Enterprise Edition transit router can automatically advertise routes to the VPC. Valid values:'."\n"
+ ."\n"
+ .'* **false**'."\n"
+ .'* **true**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'ChargeType' => [
+ 'description' => 'The billing method of the VPC connection.'."\n"
+ ."\n"
+ .'Only **POSTPAY** may be returned, which indicates the default pay-as-you-go billing method.'."\n",
+ 'type' => 'string',
+ 'example' => 'POSTPAY',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ 'description' => 'The value of the tag that you want to query.'."\n",
+ ],
+ ],
+ 'OrderType' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: the Alibaba Cloud account that owns the CEN instance.'."\n"
+ .'* **PayByResourceOwner**: the Alibaba Cloud account that owns the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'PayByCenOwner',
+ ],
+ 'ManagedService' => [
+ 'type' => 'string',
+ ],
+ 'TransitRouterVPCAttachmentOptions' => [
+ 'description' => 'The features of the VPC connection.'."\n",
+ 'type' => 'object',
+ 'additionalProperties' => [
+ 'type' => 'string',
+ 'description' => 'The features of the VPC connection.'."\n"
+ ."\n"
+ .'* **ipv6Support**: indicates whether IPv6 is enabled. The default value is determined based on whether IPv6 is enabled.'."\n"
+ ."\n"
+ .' * **enable**: IPv6 is enabled.'."\n"
+ .' * **disable**: IPv6 is disabled.'."\n",
+ 'example' => '{ "ipv6Support": "disable" }',
+ ],
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-j3jzhw1zpau2km****'."\n",
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrInstance',
+ 'errorMessage' => 'The specified TransitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified Region is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterId',
+ 'errorMessage' => 'The specified TransitRouterId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenIdOrRegionId',
+ 'errorMessage' => 'The specified CenId or RegionId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"C97FF53F-3EF8-4883-B459-60E171924B23\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"TransitRouterAttachments\\": [\\n {\\n \\"CreationTime\\": \\"2021-06-15T02:14Z\\",\\n \\"Status\\": \\"Attached\\",\\n \\"VpcId\\": \\"vpc-bp1h8vbrbcgohcju5****\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-nls9fzkfat8934****\\",\\n \\"TransitRouterId\\": \\"tr-bp1su1ytdxtataupl****\\",\\n \\"ResourceType\\": \\"VPC\\",\\n \\"TransitRouterAttachmentDescription\\": \\"testdesc\\",\\n \\"VpcOwnerId\\": 1250123456123456,\\n \\"VpcRegionId\\": \\"cn-hangzhou\\",\\n \\"TransitRouterAttachmentName\\": \\"testname\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-h\\",\\n \\"VSwitchId\\": \\"vsw-bp1a214sbus8z3b54****\\",\\n \\"NetworkInterfaceId\\": \\"eni-bp149hmyaqegerml****\\"\\n }\\n ],\\n \\"AutoPublishRouteEnabled\\": true,\\n \\"ChargeType\\": \\"POSTPAY\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"test\\"\\n }\\n ],\\n \\"OrderType\\": \\"PayByCenOwner\\",\\n \\"ManagedService\\": \\"SAS\\",\\n \\"TransitRouterVPCAttachmentOptions\\": {\\n \\"key\\": \\"{ \\\\\\"ipv6Support\\\\\\": \\\\\\"disable\\\\\\" }\\"\\n },\\n \\"CenId\\": \\"cen-j3jzhw1zpau2km****\\\\n\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterVpcAttachmentsResponse>\\n <RequestId>C97FF53F-3EF8-4883-B459-60E171924B23</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>20</MaxResults>\\n <TransitRouterAttachments>\\n <CreationTime>2021-06-15T02:14Z</CreationTime>\\n <Status>Attached</Status>\\n <VpcId>vpc-bp1h8vbrbcgohcju5****</VpcId>\\n <TransitRouterAttachmentId>tr-attach-nls9fzkfat8934****</TransitRouterAttachmentId>\\n <TransitRouterId>tr-bp1su1ytdxtataupl****</TransitRouterId>\\n <ResourceType>VPC</ResourceType>\\n <TransitRouterAttachmentDescription>testdesc</TransitRouterAttachmentDescription>\\n <VpcOwnerId>1250123456123456</VpcOwnerId>\\n <VpcRegionId>cn-hangzhou</VpcRegionId>\\n <TransitRouterAttachmentName>testname</TransitRouterAttachmentName>\\n <ZoneMappings>\\n <ZoneId>cn-hangzhou-h</ZoneId>\\n <VSwitchId>vsw-bp1a214sbus8z3b54****</VSwitchId>\\n <NetworkInterfaceId>eni-bp149hmyaqegerml****</NetworkInterfaceId>\\n </ZoneMappings>\\n <ChargeType>POSTPAY</ChargeType>\\n </TransitRouterAttachments>\\n</ListTransitRouterVpcAttachmentsResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterVpcAttachments',
+ 'description' => 'You can use the following methods to query VPC connections on an Enterprise Edition transit router:'."\n"
+ ."\n"
+ .'* Specify the ID of the Enterprise Edition transit router.'."\n"
+ .'* Specify the ID of the relevant Cloud Enterprise Network (CEN) instance and the region ID of the Enterprise Edition transit router.'."\n"
+ .'* Specify the ID of the region where the Enterprise Edition transit router is deployed.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateTransitRouterEcrAttachment' => [
+ 'summary' => 'Attaches an Express Connect Router (ECR) connection to the transit router in the same region.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '195515',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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-001****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eu-central-1',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the ECR connection.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the ECR connection.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'EcrId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the ECR.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'ecr-upyc0viial107r****',
+ ],
+ ],
+ [
+ 'name' => 'EcrOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the ECR belongs. By default, the ID of the current Alibaba Cloud account is specified.'."\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' => '1250123456123456',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be an empty string or up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each key-value pair must be unique. You can specify values for at most 20 tag keys in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the ECR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-qieks13jnt1cchy***',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'C0245BEF-52AC-44A8-A776-EF96FD26A5CA',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRolePolicyForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRolePolicyForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterRegionId',
+ 'errorMessage' => 'The specified TransitRouterRegion does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.ResourceStatus',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.TransitRouterServiceNotOpen',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.CenIdOrRegionId',
+ 'errorMessage' => 'Either CenId or RegionId must be specified.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AssociateRouteTableId',
+ 'errorMessage' => 'The specified AssociateRouteTableId is illegal.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.AttachChildInstanceAcrossBid',
+ 'errorMessage' => 'Operation is invalid, please apply for cross-bid attaching.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CenFullLevel',
+ 'errorMessage' => 'CEN full level does not support TransitRouter',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation. ',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.ChildInstanceRelatedCen',
+ 'errorMessage' => 'The childinstance has exceed the quota of the times that a childinstance can be attached as an attachment.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceNotOpen',
+ 'errorMessage' => 'The resource owner user has not opened transit router service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.BandwidthType',
+ 'errorMessage' => 'The specified BandwidthType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthType',
+ 'errorMessage' => 'BandwidthType is illegal.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.EcrResource',
+ 'errorMessage' => 'The ECR resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.CenQuotaEcrAttachPerTransitRouter',
+ 'errorMessage' => 'The maximum number of ECR attachment per Transit Router is exceeded.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ECRAttachment',
+ 'errorMessage' => 'ECR Attachment is not supported.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound',
+ 'errorMessage' => 'The resource does not found.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service of the account to which the resource belongs has been suspended due to arrears. Please notify the other party to renew the service and try again.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.AttachAcrossBidEcr',
+ 'errorMessage' => 'Attach cross bid ECR is unsupported. Please submit a ticket.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ResourceType',
+ 'errorMessage' => 'The specified parameter ResourceType is invalid.',
+ ],
+ [
+ 'errorCode' => 'SystemBusy',
+ 'errorMessage' => 'The system is busy. Please try again later.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.AttachmentInCurrentRegionExisted',
+ 'errorMessage' => 'The current operation is rejected. The Express Connect Router instance can only associate one Transit Router in the same region.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-qieks13jnt1cchy***\\",\\n \\"RequestId\\": \\"C0245BEF-52AC-44A8-A776-EF96FD26A5CA\\"\\n}","type":"json"}]',
+ 'title' => 'CreateTransitRouterEcrAttachment',
+ 'description' => '* Only Enterprise Edition transit routers support ECR connections.'."\n"
+ ."\n"
+ .'* The following methods describe how to attach an ECR connection to an Enterprise Edition transit router:'."\n"
+ ."\n"
+ .' * If an Enterprise Edition transit router is created in the region, specify the **EcrId**, **RegionId**, and **TransitRouterId** parameters.'."\n"
+ .' * If no Enterprise Edition transit router is created in the region, specify the **EcrId**, **CenId**, and **RegionId** parameters. An Enterprise Edition transit router is automatically created when you create an ECR connection.'."\n"
+ ."\n"
+ .'* CreateTransitRouterEcrAttachment 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 **ListTransitRouterEcrAttachments** operation to query the status of an ECR connection.'."\n"
+ ."\n"
+ .' * If the ECR connection is in the **Attaching** state, the ECR connection is being created. In this case, you can query the ECR connection but cannot perform other operations on the ECR connection.'."\n"
+ .' * If the ECR connection is in the **Attached** state, the ECR connection is created.'."\n"
+ ."\n"
+ .'* After you create an ECR connection, the ECR connection is not in route learning or associated forwarding relationships with Enterprise Edition transit routers.'."\n"
+ ."\n"
+ .' After you enable [route learning](~~468300~~) between the ECR connection and an Enterprise Edition transit router, the routes of the ECR are automatically advertised to the route tables of the Enterprise Edition transit router.'."\n"
+ ."\n"
+ .'* After you create an ECR connection, the routes in the route tables of the Enterprise Edition transit router to which the ECR connection is attached are automatically advertised to the route table of the ECR.'."\n"
+ ."\n"
+ .'### [](#)Prerequisite'."\n"
+ ."\n"
+ .'* The Alibaba Cloud account of the Enterprise Edition transit router and the Alibaba Cloud account of the ECR belong to the same enterprise.'."\n"
+ ."\n"
+ .'* The Enterprise Edition transit router and ECR can belong to the same Alibaba Cloud account or different Alibaba Cloud accounts. If the Enterprise Edition transit router and ECR belong to different Alibaba Cloud accounts, grant the transit router permissions on the ECR before you can attach the ECR to the transit router. For more information, see [Acquire permissions to connect to a network instance that belongs to another account](~~181553~~).'."\n"
+ ."\n"
+ .'* **Before you call this operation to attach an ECR connection to an Enterprise Edition transit router, you must call the [CreateExpressConnectRouterAssociation](~~2712082~~) operation to create an association between the ECR and transit router.**'."\n"
+ ."\n"
+ .' **If you call the DeleteTransitRouterEcrAttachment operation to forcefully delete an ECR connection, the association between the ECR connection and Enterprise Edition transit router is deleted.**',
+ ],
+ 'DeleteTransitRouterEcrAttachment' => [
+ 'summary' => 'Deletes an Express Connect Router (ECR) connection from an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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 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****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the ECR connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-r6g0m3epjehw57****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and performs the actual request.'."\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, a request ID is returned.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Force',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to forcibly delete the ECR connection. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): checks for resource dependencies such as associated forwarding and route learning before deleting the ECR connection. If such resources exist, the ECR connection is not deleted and an error message is returned.'."\n"
+ .'* **true**: deletes the ECR connections and all dependent resources.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.RouteTableAssociationExist',
+ 'errorMessage' => 'Operation failed because TransitRouterRouteTable exists',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteEntryExist',
+ 'errorMessage' => 'Operation failed because the TransitRouterAttachment exists in RouteTable.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteTablePropagationExist',
+ 'errorMessage' => 'The specified TransitRouterAttachment has configured RouteTablePropagation. Please remove the configuration first.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.FlowLogExistOrNisOpened',
+ 'errorMessage' => 'Operation failed because FlowLog exists or Nis opened.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.NotSupportForceDelete',
+ 'errorMessage' => 'Not support force delete attachment.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'The TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PrefixListExist',
+ 'errorMessage' => 'Operation failed because PrefixList exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.EcrResource',
+ 'errorMessage' => 'The ECR resource is not in a valid state for the attachment operation.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","type":"json"}]',
+ 'title' => 'DeleteTransitRouterEcrAttachment',
+ 'description' => 'DeleteTransitRouterEcrAttachment 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 ListTransitRouterEcrAttachments operation to query the status of an ECR connection.'."\n"
+ ."\n"
+ .'If the ECR connection is in the Detaching state, the ECR connection is being deleted. In this case, you can query the ECR connection but cannot perform other operations on the ECR connection. If the ECR connection cannot be found, the ECR connection is deleted. Before you call the DeleteTransitRouterEcrAttachment operation, make sure that all request parameters are valid. If a request is invalid, a request ID is returned but the ECR connection is not deleted.',
+ ],
+ 'UpdateTransitRouterEcrAttachmentAttribute' => [
+ 'summary' => 'Modifies the name and description of an Express Connect Router (ECR) connection on a Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the ECR connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-r6g0m3epjehw57****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the ECR connection.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the ECR connection.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, the operation is performed.'."\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, a request ID is returned.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterAttachment',
+ 'errorMessage' => 'The status of TransitRouterAttachment is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\"\\n}","type":"json"}]',
+ 'title' => 'UpdateTransitRouterEcrAttachmentAttribute',
+ 'description' => 'UpdateTransitRouterEcrAttachmentAttribute 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 ListTransitRouterEcrAttachments operation to query the status of an ECR connection.'."\n"
+ ."\n"
+ .'If an ECR connection is in the Modifying state, the ECR connection is being modified. In this case, you can query the ECR connection but cannot perform other operations on the ECR connection. If an ECR connection is in the Attached state, the ECR connection is modified.'."\n",
+ ],
+ 'ListTransitRouterEcrAttachments' => [
+ 'summary' => 'Queries the information about Express Connect Router (ECR) connections on an Enterprise Edition transit router, such as the connection status, connection ID, and the payer of instance fees.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the ECR connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-6ehx7q2jze8ch5ji0****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ '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' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\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. 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"
+ ."\n"
+ .'Each key-value must be unique. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagValue',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ '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",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '461EC1B5-04A8-4706-8764-8F5BCEF48A6F',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '4',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TransitRouterAttachments' => [
+ 'description' => 'The information about the ECR connections.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'CreationTime' => [
+ 'description' => 'The time when the ECR connection was created.'."\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-06-15T02:14Z',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the ECR connection. Valid values:'."\n"
+ ."\n"
+ .'* **Attached**'."\n"
+ .'* **Attaching**'."\n"
+ .'* **Detaching**'."\n",
+ 'type' => 'string',
+ 'example' => 'Attached',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the ECR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of resource to which the transit router is connected. Valid values:'."\n"
+ ."\n"
+ .'The value is **ECR**, which indicates ECR connections.'."\n",
+ 'type' => 'string',
+ 'example' => 'ECR',
+ ],
+ 'TransitRouterRegionId' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-shanghai',
+ ],
+ 'TransitRouterAttachmentDescription' => [
+ 'description' => 'The description of the ECR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'EcrOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the ECR connection belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1688111111111111',
+ ],
+ 'AutoPublishRouteEnabled' => [
+ 'description' => 'Indicates whether the Enterprise Edition transit router can automatically advertise routes to ECRs.'."\n"
+ ."\n"
+ .'The value is **true**, which indicates that the Enterprise Edition transit router can automatically advertise routes to ECRs.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'EcrId' => [
+ 'description' => 'The ID of the ECR with which the ECR connection is associated.'."\n",
+ 'type' => 'string',
+ 'example' => 'ecr-n78omt2qsko06y****',
+ ],
+ 'TransitRouterAttachmentName' => [
+ 'description' => 'The name of the ECR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'testname',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-j3jzhw1zpau2km****'."\n",
+ ],
+ 'OrderType' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values: Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: The Alibaba Cloud account to which the transit router belongs pays the connection and data forwarding fees of the ECR.'."\n"
+ .'* **PayByResourceOwner**: The Alibaba Cloud account to which the ECR belongs pays the connection and data forwarding fees of the ECR.'."\n",
+ 'type' => 'string',
+ 'example' => 'PayByCenOwner',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrInstance',
+ 'errorMessage' => 'The specified TransitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified Region is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterId',
+ 'errorMessage' => 'The specified TransitRouterId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenIdOrRegionId',
+ 'errorMessage' => 'The specified CenId or RegionId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"461EC1B5-04A8-4706-8764-8F5BCEF48A6F\\",\\n \\"TotalCount\\": 4,\\n \\"MaxResults\\": 20,\\n \\"TransitRouterAttachments\\": [\\n {\\n \\"CreationTime\\": \\"2021-06-15T02:14Z\\",\\n \\"Status\\": \\"Attached\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-nls9fzkfat8934****\\",\\n \\"TransitRouterId\\": \\"tr-bp1su1ytdxtataupl****\\",\\n \\"ResourceType\\": \\"ECR\\",\\n \\"TransitRouterRegionId\\": \\"cn-shanghai\\",\\n \\"TransitRouterAttachmentDescription\\": \\"desctest\\",\\n \\"EcrOwnerId\\": 1210123456123456,\\n \\"AutoPublishRouteEnabled\\": true,\\n \\"EcrId\\": \\"ecr-n78omt2qsko06y****\\",\\n \\"TransitRouterAttachmentName\\": \\"testname\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"test\\"\\n }\\n ],\\n \\"CenId\\": \\"cen-j3jzhw1zpau2km****\\\\n\\",\\n \\"OrderType\\": \\"PayByCenOwner\\"\\n }\\n ]\\n}","type":"json"}]',
+ 'title' => 'ListTransitRouterEcrAttachments',
+ 'description' => 'You can use the following methods to query ECR connection information:'."\n"
+ ."\n"
+ .'* Specify the ID of an Enterprise Edition transit router.'."\n"
+ .'* Specify the ID of an Enterprise Edition transit router and the ID of the region in which the Enterprise Edition transit router is deployed.'."\n"
+ .'* Configure the **TransitRouterAttachmentId** parameter to specify the ECR connection that you want to query.',
+ ],
+ 'CreateTransitRouterVpnAttachment' => [
+ 'summary' => 'Attaches an IPsec-VPN connection to a transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '138538',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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"
+ ."\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' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-rsgxs8ng2awen2****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-p0wm740vjnbaprv0m****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the transit router is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the VPN attachment.'."\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' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the VPN attachment.'."\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' => 'VpnId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the IPsec-VPN attachment.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vco-p0w042cqwvlhl4zyw****',
+ ],
+ ],
+ [
+ 'name' => 'VpnOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.'."\n"
+ ."\n"
+ .'* If you do not set this parameter, the ID of the current Alibaba Cloud account is used.'."\n"
+ .'* You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1210123456123456',
+ ],
+ ],
+ [
+ 'name' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default): yes'."\n"
+ .'* **false**: no'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'ChargeType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The billing method.'."\n"
+ ."\n"
+ .'Set the value to **POSTPAY**, which is the default value and specifies the pay-as-you-go billing method.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'POSTPAY',
+ ],
+ ],
+ [
+ 'name' => 'Zone',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The ID of the zone in the current region.'."\n"
+ ."\n"
+ .'Resources are deployed in the specified zone.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the zone where the instance resides.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ZoneId' => [
+ 'description' => 'The zone ID of the read-only instance.'."\n"
+ ."\n"
+ .'You can call the [ListTransitRouterAvailableResource](~~261356~~) operation to query the most recent zone list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou-h',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag keys cannot be an empty string. The tag key can be up to 64 characters in length, and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique 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' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the VPN attachment.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-y5dup2qwfyh9lu****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '8B5DD40A-3A29-5AC0-B8DA-05FD10D5C893',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRolePolicyForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRolePolicyForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterRegionId',
+ 'errorMessage' => 'The specified TransitRouterRegion does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.ResourceStatus',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.TransitRouterServiceNotOpen',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'InvalidAvailable.NoResource',
+ 'errorMessage' => 'No resource in the available zone.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.VpnAttachment',
+ 'errorMessage' => 'The specified region does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.AllocateCidrFailed',
+ 'errorMessage' => 'Operation failed because vpn allocate cidr failed.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ZoneId',
+ 'errorMessage' => 'The specified ZoneId does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.CenIdOrRegionId',
+ 'errorMessage' => 'Either CenId or RegionId must be specified.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CenFullLevel',
+ 'errorMessage' => 'CEN full level does not support TransitRouter',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation. ',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ZoneMappings',
+ 'errorMessage' => 'The Specified Parameter ZoneMappings is illegal',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VpnNetworkTypeInvalid',
+ 'errorMessage' => 'The network type of child-instance is invalid.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.CenQuotaVpnAttachPerTransitRouter',
+ 'errorMessage' => 'The maximum number of VPN attachment per Transit Router is exceeded.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.ChildInstanceRelatedCen',
+ 'errorMessage' => 'The childinstance has exceed the quota of the times that a childinstance can be attached as an attachment.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceNotOpen',
+ 'errorMessage' => 'The resource owner user has not opened transit router service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.VcoTunnelNotMatchZoneParam',
+ 'errorMessage' => 'The tunnel type of the entered Vco does not match the Zone parameter.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service of the account to which the resource belongs has been suspended due to arrears. Please notify the other party to renew the service and try again.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRegionId',
+ 'errorMessage' => 'TransitRouterRegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidVpnId.NotFound',
+ 'errorMessage' => 'The specified vpn connection instance id does not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ResourceType',
+ 'errorMessage' => 'The specified parameter ResourceType is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.VpnId',
+ 'errorMessage' => 'The specified parameter VpnId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ChargeType',
+ 'errorMessage' => 'The specified ChargeType is illegal.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterVpnAttachments',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-y5dup2qwfyh9lu****\\",\\n \\"RequestId\\": \\"8B5DD40A-3A29-5AC0-B8DA-05FD10D5C893\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterVpnAttachmentResponse>\\n <TransitRouterAttachmentId>tr-attach-y5dup2qwfyh9lu****</TransitRouterAttachmentId>\\n <RequestId>8B5DD40A-3A29-5AC0-B8DA-05FD10D5C893</RequestId>\\n</CreateTransitRouterVpnAttachmentResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterVpnAttachment',
+ 'description' => '* By default, route learning and associated forwarding are disabled between transit router route tables and IPsec-VPN attachments.'."\n"
+ .'* When you call `CreateTransitRouterVpnAttachment`, if you set **CenId** and **RegionId**, you do not need to set **TransitRouterId**. If you set **TransitRouterId** and **RegionId**, you do not need to set **CenId**.'."\n"
+ ."\n"
+ .'### Prerequisites'."\n"
+ ."\n"
+ .'* Before you attach an IPsec-VPN connection to a transit router, make sure that at least one IPsec-VPN connection is created in the region where the transit router is deployed. Make sure the IPsec-VPN connection is not associated with a resource. For more information, see [CreateVpnAttachment](~~442455~~).'."\n"
+ .'* If the IPsec-VPN connection to be attached to the transit router belongs to a different Alibaba Cloud account, make sure that the transit router has obtained the required permissions from the IPsec-VPN connection. For more information, see [GrantInstanceToTransitRouter](~~417520~~).',
+ ],
+ 'DeleteTransitRouterVpnAttachment' => [
+ 'summary' => 'Deletes a VPN attachment.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ '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"
+ ."\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-42665544****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPN attachment.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-attach-b9xj1dv69600kj****',
+ ],
+ ],
+ [
+ 'name' => 'Force',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to forcefully delete the VPN attachment. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): Check for resource dependencies, such as associated forwarding and route learning, before the VPN attachment is deleted. If such resources exist, the VPN attachment is not deleted and an error message is returned.'."\n"
+ .'* **true**: Delete the resource dependencies along with the VPN attachment.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'FA43C571-E88B-56C0-8FF8-5646D9B96297',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.RouteTableAssociationExist',
+ 'errorMessage' => 'Operation failed because TransitRouterRouteTable exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteEntryExist',
+ 'errorMessage' => 'Operation failed because the TransitRouterAttachment exists in RouteTable.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'The TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.NotSupportForceDelete',
+ 'errorMessage' => 'Not support force delete attachment.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The operation is not supported because of the wrong transitRouter type.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.ResourceStatus',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteTablePropagationExist',
+ 'errorMessage' => 'Operation failed because You are not allowed to delete TransitAttachment with TransitRouter RouteTable Associated.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PrefixListExist',
+ 'errorMessage' => 'Operation failed because PrefixList exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.FlowLogExistOrNisOpened',
+ 'errorMessage' => 'Operation failed because FlowLog exists or Nis opened.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"FA43C571-E88B-56C0-8FF8-5646D9B96297\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterVpnAttachmentResponse>\\n <RequestId>FA43C571-E88B-56C0-8FF8-5646D9B96297</RequestId>\\n</DeleteTransitRouterVpnAttachmentResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterVpnAttachment',
+ 'description' => 'Before you call the **DeleteTransitRouterVpnAttachment** operation, make sure that all request parameters are valid. If a request parameter is invalid, a **request ID** is returned, but the VPN attachment is not deleted.'."\n",
+ ],
+ 'UpdateTransitRouterVpnAttachmentAttribute' => [
+ 'summary' => 'Modifies the configuration of a VPN attachment.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ '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 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' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPN attachment.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-attach-a6p8voaodog5c0****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the VPN attachment.'."\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' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the VPN attachment.'."\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' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:'."\n"
+ ."\n"
+ .'* **true**: yes'."\n"
+ .'* **false**: no'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The result of the request.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '1AB038F2-96E5-560B-9F6E-734311D466FA',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterAttachmentId',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.OrderType',
+ 'errorMessage' => 'The specified parameter OrderType is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.OrderTypeMustMatchGrantCrossAccount',
+ 'errorMessage' => 'The OrderType must be the same as the OrderType in the grant cross-account record.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.GrantCrossAccountNotExist',
+ 'errorMessage' => 'Cross-account authorization does not exist.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1AB038F2-96E5-560B-9F6E-734311D466FA\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTransitRouterVpnAttachmentAttributeResponse>\\n <RequestId>1AB038F2-96E5-560B-9F6E-734311D466FA</RequestId>\\n</UpdateTransitRouterVpnAttachmentAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateTransitRouterVpnAttachmentAttribute',
+ ],
+ 'ListTransitRouterVpnAttachments' => [
+ 'summary' => 'Queries the information about VPN attachments, such as the status and billing method of a VPN attachment, and the ID of an IPsec-VPN connection.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'systemTags' => [
+ 'operationType' => 'list',
+ 'abilityTreeCode' => '138540',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-rsgxs8ng2awen2****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPN attachment.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-a6p8voaodog5c0****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-p0wm740vjnbaprv0m****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the next query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query and no subsequent 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' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags that are added to the CEN instance.'."\n"
+ ."\n"
+ .'You can query at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'value_A1',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the next query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is not returned, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '3D5530D2-3BBB-524E-8E98-59AB06A250E4',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TransitRouterAttachments' => [
+ 'description' => 'The information about the VPN attachment.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the VPN attachment.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CreationTime' => [
+ 'description' => 'The time when the VPN connection was created.'."\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' => '2022-07-08T08:45Z',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the VPN connection. Valid values:'."\n"
+ ."\n"
+ .'* **Attached**'."\n"
+ .'* **Attaching**'."\n"
+ .'* **Detaching**'."\n",
+ 'type' => 'string',
+ 'example' => 'Attached',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the VPN attachment.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-a6p8voaodog5c0****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-p0wm740vjnbaprv0m****',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of resource attached to the transit router.'."\n"
+ ."\n"
+ .'Only **VPN** may be returned, which indicates that an IPsec-VPN connection is attached to the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPN',
+ ],
+ 'VpnOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1210123456123456',
+ ],
+ 'VpnId' => [
+ 'description' => 'The ID of the IPsec-VPN connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'vco-p0wtu1xgd0l7fjo7k****',
+ ],
+ 'TransitRouterAttachmentDescription' => [
+ 'description' => 'The description of the IPsec-VPN connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'VpnRegionId' => [
+ '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',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'AutoPublishRouteEnabled' => [
+ 'description' => 'Indicates the transit router can automatically advertise routes to the IPsec connection. Valid values:'."\n"
+ ."\n"
+ .'* **true**: yes'."\n"
+ .'* **false**: no'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'TransitRouterAttachmentName' => [
+ 'description' => 'The name of the VPN attachment.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'Zones' => [
+ 'description' => 'The zones in which the VPN attachment is deployed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The zone in which the VPN attachment is deployed.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ZoneId' => [
+ 'description' => 'The zone ID.'."\n"
+ ."\n"
+ .'You can call the [DescribeZones](~~36064~~) operation to query the most recent zone list.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-h',
+ ],
+ ],
+ ],
+ ],
+ 'Tags' => [
+ 'description' => 'A list of tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'value_A1',
+ ],
+ ],
+ ],
+ ],
+ 'ChargeType' => [
+ 'description' => 'The billing method of the VPN attachment.'."\n"
+ ."\n"
+ .'Only POSTPAY may be returned, which is the default pay-as-you-go billing method.'."\n",
+ 'type' => 'string',
+ 'example' => 'POSTPAY',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-j3jzhw1zpau2km****'."\n",
+ ],
+ 'OrderType' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: the Alibaba Cloud account that owns the CEN instance.'."\n"
+ .'* **PayByResourceOwner**: the Alibaba Cloud account that owns the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'PayByCenOwner',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrInstance',
+ 'errorMessage' => 'The specified TransitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified Region is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenIdOrRegionId',
+ 'errorMessage' => 'The specified CenId or RegionId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterId',
+ 'errorMessage' => 'The specified TransitRouterId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"3D5530D2-3BBB-524E-8E98-59AB06A250E4\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"TransitRouterAttachments\\": [\\n {\\n \\"CreationTime\\": \\"2022-07-08T08:45Z\\",\\n \\"Status\\": \\"Attached\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-a6p8voaodog5c0****\\",\\n \\"TransitRouterId\\": \\"tr-p0wm740vjnbaprv0m****\\",\\n \\"ResourceType\\": \\"VPN\\",\\n \\"VpnOwnerId\\": 1210123456123456,\\n \\"VpnId\\": \\"vco-p0wtu1xgd0l7fjo7k****\\",\\n \\"TransitRouterAttachmentDescription\\": \\"desctest\\",\\n \\"VpnRegionId\\": \\"cn-hangzhou\\",\\n \\"AutoPublishRouteEnabled\\": true,\\n \\"TransitRouterAttachmentName\\": \\"nametest\\",\\n \\"Zones\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-h\\"\\n }\\n ],\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"value_A1\\"\\n }\\n ],\\n \\"ChargeType\\": \\"POSTPAY\\",\\n \\"CenId\\": \\"cen-j3jzhw1zpau2km****\\\\n\\",\\n \\"OrderType\\": \\"PayByCenOwner\\"\\n }\\n ]\\n}","type":"json"}]',
+ 'title' => 'ListTransitRouterVpnAttachments',
+ 'description' => 'You can use the following methods to call the ListTransitRouterVpnAttachments operation:'."\n"
+ ."\n"
+ .'* Specify only the **TransitRouterAttachmentId** parameter to query the information about a VPN attachment.'."\n"
+ .'* Specify only the **TransitRouterId** parameter to query the information about all VPN attachments on a transit router.'."\n"
+ .'* Specify the **CenId** and **RegionId** parameter to query the information about VPN attachments in a specified region.'."\n"
+ ."\n"
+ .'Before you call the **ListTransitRouterVpnAttachments** operation, make sure that all request parameters are valid. If a request parameter is invalid, a **request ID** is returned, but the information about the VPN attachments is not returned.'."\n",
+ ],
+ 'CreateTransitRouterVbrAttachment' => [
+ 'summary' => 'Connects a virtual border router (VBR) to an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '72310',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ '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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ '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' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the VBR connection.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the VBR connection.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'VbrId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VBR.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vbr-bp1svadp4lq38janc****',
+ ],
+ ],
+ [
+ 'name' => 'VbrOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs. The default value is the ID of the current Alibaba Cloud account.'."\n"
+ ."\n"
+ .'> If the network instance and CEN instance belong to different Alibaba Cloud accounts, this parameter is required.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1250123456123456',
+ ],
+ ],
+ [
+ 'name' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable the Enterprise Edition transit router to automatically advertise routes to the VBR. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): no'."\n"
+ .'* **true**: yes'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique 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' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the VBR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-ia340z7xis7t5s****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'C087A369-82B9-43EF-91F4-4B63A9C6E6B6',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRolePolicyForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRolePolicyForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterRegionId',
+ 'errorMessage' => 'The specified TransitRouterRegion does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.ResourceStatus',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.TransitRouterServiceNotOpen',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.CenIdOrRegionId',
+ 'errorMessage' => 'Either CenId or RegionId must be specified.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Vpc',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.VbrDeviceModel',
+ 'errorMessage' => 'Attach VBR on some access device models are forbidden.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AssociateRouteTableId',
+ 'errorMessage' => 'The specified AssociateRouteTableId is illegal.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.AttachChildInstanceAcrossBid',
+ 'errorMessage' => 'Operation is invalid, please apply for cross-bid attaching.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CenFullLevel',
+ 'errorMessage' => 'CEN full level does not support TransitRouter',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.VbrAttachment',
+ 'errorMessage' => 'This region not support vbr attachment.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation. ',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CloudBoxVbrNotSupport',
+ 'errorMessage' => 'Cloud Box Vbr does not support.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VbrResource',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.CenQuotaVbrAttachPerTransitRouter',
+ 'errorMessage' => 'The maximum number of VBR attachment per Transit Router is exceeded.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.ChildInstanceRelatedCen',
+ 'errorMessage' => 'The childinstance has exceed the quota of the times that a childinstance can be attached as an attachment.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceNotOpen',
+ 'errorMessage' => 'The resource owner user has not opened transit router service.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VbrAttachedToEcr',
+ 'errorMessage' => 'VBR has alreay attached to ECR.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service of the account to which the resource belongs has been suspended due to arrears. Please notify the other party to renew the service and try again.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ResourceType',
+ 'errorMessage' => 'The specified parameter ResourceType is invalid.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.VbrDeviceModel',
+ 'errorMessage' => 'The attached VBR on some access device models are not supported. Please submit a ticket to continue using this VBR on CEN.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterVbrAttachments',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-ia340z7xis7t5s****\\",\\n \\"RequestId\\": \\"C087A369-82B9-43EF-91F4-4B63A9C6E6B6\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterVbrAttachmentResponse>\\n <TransitRouterAttachmentId>tr-attach-ia340z7xis7t5s****</TransitRouterAttachmentId>\\n <RequestId>C087A369-82B9-43EF-91F4-4B63A9C6E6B6</RequestId>\\n</CreateTransitRouterVbrAttachmentResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterVbrAttachment',
+ 'description' => '* For more information about the regions and zones that support Enterprise Edition transit routers, see [What is CEN?](~~181681~~)'."\n"
+ ."\n"
+ .'* You can use the following methods to create a VBR connection on an Enterprise Edition transit router:'."\n"
+ ."\n"
+ .' * If an Enterprise Edition transit router is already created in the region, specify the **VbrId**, **RegionId**, and **TransitRouterId** parameters to create a VBR connection.'."\n"
+ .' * If no Enterprise Edition transit router is already created in the region, specify the **VbrId**, **CenId**, and **RegionId** parameters to create a VBR connection. When you create a VBR connection, the system automatically creates an Enterprise Edition transit router in the specified region.'."\n"
+ ."\n"
+ .'* **CreateTransitRouterVbrAttachment** 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 **ListTransitRouterVbrAttachments** to query the status of a VBR connection.'."\n"
+ ."\n"
+ .' * If the VBR connection is in the **Attaching** state, the VBR connection is being created. In this case, you can query the VBR connection but cannot perform other operations.'."\n"
+ .' * If the VBR connection is in the **Attached** state, the VBR connection is created.'."\n"
+ ."\n"
+ .'* The transit router and the VBR must belong to the same Alibaba Cloud account.'."\n"
+ ."\n"
+ .'* Transit routers can connect to VBRs that belong to the same or a different Alibaba Cloud account. To connect a transit router to a VBR that belongs to a different Alibaba Cloud account, grant permissions on the VBR to the transit router. For more information, see [Grant a transit router permissions on a network instance that belongs to another Alibaba Cloud account](~~181553~~).'."\n"
+ ."\n"
+ .'* After you create a VBR connection, it is not in route learning or associated forwarding relationship with transit router route tables by default.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteTransitRouterVbrAttachment' => [
+ 'summary' => 'Deletes a virtual border router (VBR) connection from an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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 value, but you must make sure that it is unique among all requests. The client 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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VBR connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-9nlnjv7by7n7a****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and the request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Force',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to forcibly delete the VBR connection. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): checks for resources related to the VBR connection, such as associated forwarding and route learning policies. If such resources exist, the VBR connection is not deleted and an error message is returned.'."\n"
+ .'* **true**: deletes the VBR connection and related resources.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '3EDA94DE-0AE5-41FC-A91E-7170E408E0FD',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.RouteTableAssociationExist',
+ 'errorMessage' => 'Operation failed because TransitRouterRouteTable exists',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteEntryExist',
+ 'errorMessage' => 'Operation failed because the TransitRouterAttachment exists in RouteTable.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteTablePropagationExist',
+ 'errorMessage' => 'The specified TransitRouterAttachment has configured RouteTablePropagation. Please remove the configuration first.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VbrAttachedVbrHa',
+ 'errorMessage' => ' The operation is failed because of VbrAttachedVbrHa.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.FlowLogExistOrNisOpened',
+ 'errorMessage' => 'Operation failed because FlowLog exists or Nis opened.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InstanceReferenced.VpcRouteEntry',
+ 'errorMessage' => 'The specified attachment is referenced by vpc route entry.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.NotSupportForceDelete',
+ 'errorMessage' => 'Not support force delete attachment.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'The TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PrefixListExist',
+ 'errorMessage' => 'Operation failed because PrefixList exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VbrWithAllowPrefixes',
+ 'errorMessage' => 'Operation failed because allow prefixes referenced by vbr exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InstanceReferenced.VbrRouteEntry',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry which next hop is the specified attachment.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"3EDA94DE-0AE5-41FC-A91E-7170E408E0FD\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterVbrAttachmentResponse> \\r\\n<RequestId>3EDA94DE-0AE5-41FC-A91E-7170E408E0FD</RequestId>\\r\\n</DeleteTransitRouterVbrAttachmentResponse> ","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterVbrAttachment',
+ 'description' => '**DeleteTransitRouterVbrAttachment** 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 **ListTransitRouterVbrAttachments** operation to query the status of a VBR connection.'."\n"
+ ."\n"
+ .'* If a VBR connection is in the **Detaching** state, the VBR connection is being deleted. You can query the VBR connection but cannot perform other operations.'."\n"
+ .'* If a VBR connection cannot be found, the VBR connection is deleted.'."\n"
+ ."\n"
+ .'## Prerequisites'."\n"
+ ."\n"
+ .'Before you delete a VBR connection for an Enterprise Edition transit router, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .'* No associated forwarding correlation is established between the VBR connection and the route tables of the Enterprise Edition transit router. For more information about how to delete an associated forwarding correlation, see [DissociateTransitRouterAttachmentFromRouteTable](~~260944~~).'."\n"
+ .'* No route learning correlation is established between the VBR connection and the route tables of the Enterprise Edition transit router. For more information about how to delete a route learning correlation, see [DisableTransitRouterRouteTablePropagation](~~260945~~).'."\n"
+ .'* The route tables of the Enterprise Edition transit router do not contain a custom route entry whose next hop is the network instance connection. For more information about how to delete custom route entries, see [DeleteTransitRouterRouteEntry](~~261240~~).'."\n"
+ .'* The route tables of the Enterprise Edition transit router do not contain a route whose next hop is the VBR connection and that is generated from a prefix list. You can delete such routes by disassociating the route table from the prefix list. For more information, see [DeleteTransitRouterPrefixListAssociation](~~445486~~).'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UpdateTransitRouterVbrAttachmentAttribute' => [
+ 'summary' => 'Modifies the name, description, and enables or disables automatic route advertisement for a virtual border router (VBR) connection on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VBR connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-oyf70wfuorwx87****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the VBR connection.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the VBR connection.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to allow the Enterprise Edition transit router to automatically advertise routes to the VBR. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Default values:'."\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"
+ .'* **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",
+ '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' => '91B36DC3-FF8A-45C3-AC1E-456B1789136D',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterAttachment',
+ 'errorMessage' => 'The status of TransitRouterAttachment is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.OrderType',
+ 'errorMessage' => 'The specified parameter OrderType is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.OrderTypeMustMatchGrantCrossAccount',
+ 'errorMessage' => 'The OrderType must be the same as the OrderType in the grant cross-account record.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.GrantCrossAccountNotExist',
+ 'errorMessage' => 'Cross-account authorization does not exist.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"91B36DC3-FF8A-45C3-AC1E-456B1789136D\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTransitRouterVbrAttachmentAttributeResponse>\\n <RequestId>91B36DC3-FF8A-45C3-AC1E-456B1789136D</RequestId>\\n</UpdateTransitRouterVbrAttachmentAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateTransitRouterVbrAttachmentAttribute',
+ 'description' => '**UpdateTransitRouterVbrAttachmentAttribute** 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 **ListTransitRouterVbrAttachments** operation to query the status of a VBR connection.'."\n"
+ ."\n"
+ .'* If a VBR connection is in the **Modifying** state, the VBR connection is being modified. You can query the VBR connection but cannot perform other operations.'."\n"
+ .'* If the VBR connection is in the **Attached** state, the VBR connection is modified.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouterVbrAttachments' => [
+ 'summary' => 'Queries the virtual border router (VBR) connections on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IDs of the CEN instances.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the Enterprise Edition transit router.'."\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' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VBR connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-oyf70wfuorwx87****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'dd20****',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ '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.'."\n",
+ 'type' => 'string',
+ 'example' => 'dd20****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'F42D9616-29EB-4E75-8CA8-9654D4E07501',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TransitRouterAttachments' => [
+ 'description' => 'A list of VBR connections.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'CreationTime' => [
+ 'description' => 'The time when the VBR connection was created.'."\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-06-15T15:20Z',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the VBR connection. Valid values:'."\n"
+ ."\n"
+ .'* **Attached**'."\n"
+ .'* **Attaching**'."\n"
+ .'* **Detaching**'."\n"
+ .'* **Detached**'."\n",
+ 'type' => 'string',
+ 'example' => 'Attached',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the VBR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-oyf70wfuorwx87****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The description of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of resource to which the transit router is connected. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **CCN**'."\n"
+ .'* **VBR**'."\n"
+ .'* **TR**'."\n",
+ 'type' => 'string',
+ 'example' => 'VBR',
+ ],
+ 'VbrRegionId' => [
+ 'description' => 'The region ID of the VBR.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'TransitRouterAttachmentDescription' => [
+ 'description' => 'The description of the VBR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'testdesc',
+ ],
+ 'VbrOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1688111111111111',
+ ],
+ 'AutoPublishRouteEnabled' => [
+ 'description' => 'Indicates whether the Enterprise Edition transit router is allowed to automatically advertise routes to the VBR. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default)'."\n"
+ .'* **true**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'VbrId' => [
+ 'description' => 'The VBR ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vbr-bp1svadp4lq38janc****',
+ ],
+ 'TransitRouterAttachmentName' => [
+ 'description' => 'The name of the VBR connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'testa',
+ ],
+ 'Tags' => [
+ 'description' => 'A list of tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'value_A1',
+ ],
+ ],
+ ],
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-j3jzhw1zpau2km****'."\n",
+ ],
+ 'OrderType' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: the Alibaba Cloud account that owns the CEN instance.'."\n"
+ .'* **PayByResourceOwner**: the Alibaba Cloud account that owns the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'PayByCenOwner',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrInstance',
+ 'errorMessage' => 'The specified TransitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified Region is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterId',
+ 'errorMessage' => 'The specified TransitRouterId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenIdOrRegionId',
+ 'errorMessage' => 'The specified CenId or RegionId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"dd20****\\",\\n \\"RequestId\\": \\"F42D9616-29EB-4E75-8CA8-9654D4E07501\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"TransitRouterAttachments\\": [\\n {\\n \\"CreationTime\\": \\"2021-06-15T15:20Z\\",\\n \\"Status\\": \\"Attached\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-oyf70wfuorwx87****\\",\\n \\"TransitRouterId\\": \\"tr-bp1su1ytdxtataupl****\\",\\n \\"ResourceType\\": \\"VBR\\",\\n \\"VbrRegionId\\": \\"cn-hangzhou\\",\\n \\"TransitRouterAttachmentDescription\\": \\"testdesc\\",\\n \\"VbrOwnerId\\": 1688111111111111,\\n \\"AutoPublishRouteEnabled\\": false,\\n \\"VbrId\\": \\"vbr-bp1svadp4lq38janc****\\",\\n \\"TransitRouterAttachmentName\\": \\"testa\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"value_A1\\"\\n }\\n ],\\n \\"CenId\\": \\"cen-j3jzhw1zpau2km****\\\\n\\",\\n \\"OrderType\\": \\"PayByCenOwner\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterVbrAttachmentsResponse> \\n<TotalCount>1</TotalCount>\\n<RequestId>F42D9616-29EB-4E75-8CA8-9654D4E07501</RequestId>\\n<MaxResults>20</MaxResults>\\n<TransitRouterAttachments>\\n <TransitRouterAttachmentId>tr-attach-oyf70wfuorwx87****</TransitRouterAttachmentId>\\n <Status>Attached</Status>\\n <AutoPublishRouteEnabled>false</AutoPublishRouteEnabled>\\n <VbrOwnerId>1688111111111111</VbrOwnerId>\\n <CreationTime>2021-06-15T15:20Z</CreationTime>\\n <TransitRouterAttachmentName>testa</TransitRouterAttachmentName>\\n <VbrRegionId>cn-hangzhou</VbrRegionId>\\n <ResourceType>VBR</ResourceType>\\n <VbrId>vbr-bp1svadp4lq38janc****</VbrId>\\n</TransitRouterAttachments>\\n</ListTransitRouterVbrAttachmentsResponse> ","errorExample":""}]',
+ 'title' => 'ListTransitRouterVbrAttachments',
+ 'description' => 'You can use the following methods to query VBR connections on an Enterprise Edition transit router:'."\n"
+ ."\n"
+ .'* Specify the ID of the Enterprise Edition transit router.'."\n"
+ .'* Specify the ID of the relevant Cloud Enterprise Network (CEN) instance and the region ID of the Enterprise Edition transit router.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'AttachCenChildInstance' => [
+ 'summary' => 'Attaches a network instance to a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '72288',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance that you want to attach to the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp18sth14qii3pnvx****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ '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,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n"
+ ."\n"
+ .'> If the network instance and the CEN instance belong to different Alibaba Cloud accounts, this parameter is required.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1688000000000000',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Forbbiden.AttachChildInstanceAcrossBid',
+ 'errorMessage' => 'Operation is invalid, please apply for cross-bid attaching.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcSwitch',
+ 'errorMessage' => 'Operation is failed because some virtual switch is modifying within the same VPC.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.CloudBoxVSwitchExist',
+ 'errorMessage' => 'The operation is not allowed because of cloud box vswitch existed.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InvalidVpcStatus',
+ 'errorMessage' => 'Operation is failed because the child-instance is configuring.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InvalidTransitRouter',
+ 'errorMessage' => 'Operation failed because the transit router is not supported.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CenFullLevel',
+ 'errorMessage' => 'CEN full level does not support vpn bgp.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteTable',
+ 'errorMessage' => 'The VPC route table is not in a desired state.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VbrAttachedToEcr',
+ 'errorMessage' => 'VBR has alreay attached to ECR.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.VpcRoutePropagationSource',
+ 'errorMessage' => 'The operation on this VPC route propagation source is not supported.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.ResourceStatus',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'The specified RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.AttachChildInstance',
+ 'errorMessage' => 'The attached VBR on some access device models are not supported. Please submit a ticket to continue using this VBR on CEN.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'Bid.NotFound',
+ 'errorMessage' => 'Not found childInstance Bid by specified AliUid.',
+ ],
+ [
+ 'errorCode' => 'Operation.FailedAndTryAgain',
+ 'errorMessage' => 'Fail to get customer label by the specified aliUid.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'InvalidOperation.ChildInstanceRIAlreadyExist',
+ 'errorMessage' => 'Operation is invalid because the child-instance has already been attached to Express Connect.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.AttachChildInstanceAcrossUid',
+ 'errorMessage' => 'Operation is invalid because the child-instance is not authorized to CEN.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.ChildInstanceAlreadyAttached',
+ 'errorMessage' => 'Operation is invalid because the child-instance has already been attached to another CEN.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenAlreadyAutoPubilshRouteToInstance',
+ 'errorMessage' => 'Operation is invalid because other cen has already auto published route to this instance.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeCenAttachedChildInstanceAttribute',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A\\"\\n}","errorExample":""},{"type":"xml","example":"<AttachCenChildInstanceResponse>\\n <RequestId>A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A</RequestId>\\n</AttachCenChildInstanceResponse>","errorExample":""}]',
+ 'title' => 'AttachCenChildInstance',
+ 'description' => 'CEN allows you to attach a network instance that belongs to another Alibaba Cloud account to your CEN instance. Before you attach the network instance, CEN must acquire permissions to access the network instance that belongs to another Alibaba Cloud account.'."\n"
+ ."\n"
+ .'* For more information about how to grant CEN permissions on virtual private clouds (VPCs) that belong to another Alibaba Cloud account, see [GrantInstanceToCen](~~126224~~).'."\n"
+ .'* For more information about how to grant CEN permissions on Cloud Connect Network (CCN) instances that belong to another Alibaba Cloud account, see [GrantInstanceToCbn](~~126141~~).'."\n"
+ .'* By default, you cannot grant permissions on virtual border routers (VBRs) that belong to another Alibaba Cloud account to a CEN instance. If you need to use this feature, contact your account manager.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DetachCenChildInstance' => [
+ 'summary' => 'Detaches a network instance from a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72369',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnY9DL3F',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmx****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance that you want to detach from the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp18sth14qii3pnvx****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ '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,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1699000000000000',
+ ],
+ ],
+ [
+ 'name' => 'CenOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the CEN instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1688000000000000',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.AttachmentReferencedVpcRouteEntryExisted',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry which next hop is the specified attachment.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.OptimizationCCNExisted',
+ 'errorMessage' => 'Operation Forbidden. CCN with optimization is on, please turn it off firstly.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.PrivatezoneRouteExisted',
+ 'errorMessage' => 'Operation Forbidden. There is a Privatezone Route associated with the instance, please dessociate it firstly.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TypeInvalid',
+ 'errorMessage' => 'The specified ChildInstanceType or TransitRouterType is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Vpc',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VbrAttachedVbrHa',
+ 'errorMessage' => ' The operation is failed because of VbrAttachedVbrHa.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RIInstanceExist',
+ 'errorMessage' => 'Operation is failed because RI exists.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteTable',
+ 'errorMessage' => 'The VPC route table is not in a desired state.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CenReferencedVpcRouteEntryExisted',
+ 'errorMessage' => 'Operation is failed because there is at least one route entry which next hop is the specified cen.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.BondVbrAssociated',
+ 'errorMessage' => 'Illegal operation due to associated BondVBR.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.VbrWithAllowPrefixes',
+ 'errorMessage' => 'Operation failed because allow prefixes referenced by vbr exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CustomRegionDomainRouteEntryExist',
+ 'errorMessage' => 'Operation is invalid because custom region-domain route entry exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'OperationNotPermitted.AttachmentManagedByCloudService',
+ 'errorMessage' => 'The specified Attachment managed by cloud service can only be deleted through cloud service.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.ResourceStatus',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'Bid.NotFound',
+ 'errorMessage' => 'Not found Bid by specified AliUid.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeCenAttachedChildInstanceAttribute',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}"},{"type":"xml","example":"<DetachCenChildInstanceResponse>\\r\\n<RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\r\\n</DetachCenChildInstanceResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<DetachCenChildInstanceResponse>\\n <RequestId>5903EE99-D542-4E14-BC65-AAC1CB2D3D03</RequestId>\\n</DetachCenChildInstanceResponse>"}]',
+ 'title' => 'DetachCenChildInstance',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenAttachedChildInstanceAttribute' => [
+ 'summary' => 'Queries the information about a network instance, such as a virtual private cloud (VPC), a virtual border router, or a Cloud Connect Network (CCN) instance, that is attached to a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-5mv960yjhja0dh****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance that is attached to the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-2zebdboka7d7t37vo****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the network 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-beijing',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'Indicates whether the network instance is attached to the CEN instance.'."\n"
+ ."\n"
+ .'* **Attaching**: The network instance is being attached to the CEN instance.'."\n"
+ .'* **Attached**: The network instance is attached to the CEN instance.'."\n"
+ .'* **Detaching**: The network instance is being detached from the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Attached',
+ ],
+ 'ChildInstanceType' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'ChildInstanceRegionId' => [
+ 'description' => 'The region ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-beijing',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'ADD98358-D265-4060-87CB-A2427F5A8944',
+ ],
+ 'ChildInstanceOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1688000000000000',
+ ],
+ 'ChildInstanceId' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-2zebdboka7d7t37vo****',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-5mv960yjhja0dh****',
+ ],
+ 'ManagedService' => [
+ 'type' => 'string',
+ ],
+ 'ChildInstanceAttachTime' => [
+ 'description' => 'The time when the network instance was attached to the CEN instance.'."\n"
+ ."\n"
+ .'The time follows the ISO 8601 standard in the yyyy-MM-ddThh:mmZ format. The time is displayed in UTC.'."\n",
+ 'type' => 'string',
+ 'example' => '2018-07-30T07:53Z',
+ ],
+ 'ChildInstanceAttributes' => [
+ 'description' => 'The details about the network instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CidrBlock' => [
+ 'description' => 'The IPv4 CIDR block of the VPC.',
+ 'type' => 'string',
+ 'example' => '192.168.0.0/16',
+ ],
+ 'SecondaryCidrBlocks' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'secondaryCidrBlock' => [
+ 'description' => 'The information about the VPC secondary CIDR block.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The secondary IPv4 CIDR block of the VPC.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.20.0/24',
+ ],
+ ],
+ ],
+ ],
+ 'Ipv6CidrBlock' => [
+ 'description' => 'The IPv6 CIDR block of the VPC.',
+ 'type' => 'string',
+ 'example' => '2408:XXXX:0:a600::/56',
+ ],
+ 'Ipv6CidrBlocks' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'ipv6CidrBlock' => [
+ 'description' => 'The IPv6 CIDR blocks of the VPC.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Ipv6Isp' => [
+ 'description' => 'The type of the IPv6 CIDR block of the VPC. Valid values:'."\n"
+ ."\n"
+ .'* BGP (default): Alibaba Cloud Border Gateway Protocol (BGP) IPv6'."\n"
+ .'* ChinaMobile: China Mobile (single line)'."\n"
+ .'* ChinaUnicom: China Unicom (single line)'."\n"
+ .'* ChinaTelecom: China Telecom (single line)'."\n"
+ ."\n"
+ .'> If you are on the whitelist of single-line 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:6a::/56',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'ChildInstanceName' => [
+ 'description' => 'The name of the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'defaultvpc',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'SystemBusy',
+ 'errorMessage' => 'The system is busy. Please try again later.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ParameterError',
+ 'errorMessage' => 'The parameter is error.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Status\\": \\"Attached\\",\\n \\"ChildInstanceType\\": \\"VPC\\",\\n \\"ChildInstanceRegionId\\": \\"cn-beijing\\",\\n \\"RequestId\\": \\"ADD98358-D265-4060-87CB-A2427F5A8944\\",\\n \\"ChildInstanceOwnerId\\": 1688000000000000,\\n \\"ChildInstanceId\\": \\"vpc-2zebdboka7d7t37vo****\\",\\n \\"CenId\\": \\"cen-5mv960yjhja0dh****\\",\\n \\"ManagedService\\": \\"swas\\",\\n \\"ChildInstanceAttachTime\\": \\"2018-07-30T07:53Z\\",\\n \\"ChildInstanceAttributes\\": {\\n \\"CidrBlock\\": \\"192.168.0.0/16\\",\\n \\"SecondaryCidrBlocks\\": {\\n \\"secondaryCidrBlock\\": [\\n \\"192.168.20.0/24\\"\\n ]\\n },\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:0:a600::/56\\",\\n \\"Ipv6CidrBlocks\\": {\\n \\"ipv6CidrBlock\\": [\\n {\\n \\"Ipv6Isp\\": \\"BGP\\",\\n \\"Ipv6CidrBlock\\": \\"2408:XXXX:0:6a::/56\\"\\n }\\n ]\\n }\\n },\\n \\"ChildInstanceName\\": \\"defaultvpc\\"\\n}","errorExample":"{\\n \\"Status\\": \\"Attached\\", \\n \\"ChildInstanceOwnerId\\": \\"1196226963299553\\", \\n \\"ChildInstanceId\\": \\"vpc-2zebdboka7d7t37vo2i7n\\", \\n \\"RequestId\\": \\"ADD98358-D265-4060-87CB-A2427F5A8944\\", \\n \\"ChildInstanceName\\": \\"defaultvpc\\", \\n \\"ChildInstanceRegionId\\": \\"cn-beijing\\", \\n \\"CenId\\": \\"cen-5mv960yjhja0dh7qsb\\", \\n \\"ChildInstanceAttachTime\\": \\"2018-07-30T07:53Z\\", \\n \\"ChildInstanceType\\": \\"VPC\\"\\n}}\\n"},{"type":"xml","example":"<DescribeCenAttachedChildInstanceAttributeResponse>\\n <Status>Attached</Status>\\n <ChildInstanceOwnerId>1688000000000000</ChildInstanceOwnerId>\\n <ChildInstanceId>vpc-2zebdboka7d7t37vo****</ChildInstanceId>\\n <RequestId>ADD98358-D265-4060-87CB-A2427F5A8944</RequestId>\\n <ChildInstanceName>defaultvpc</ChildInstanceName>\\n <ChildInstanceRegionId>cn-beijing</ChildInstanceRegionId>\\n <CenId>cen-5mv960yjhja0dh****</CenId>\\n <ChildInstanceAttachTime>2018-07-30T07:53Z</ChildInstanceAttachTime>\\n <ChildInstanceType>VPC</ChildInstanceType>\\n</DescribeCenAttachedChildInstanceAttributeResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\" ?>\\n<DescribeCenAttachedChildInstanceAttribute>\\n <Status>Attached</Status>\\n <ChildInstanceOwnerId>1196226963299553</ChildInstanceOwnerId>\\n <ChildInstanceId>vpc-2zebdboka7d7t37vo2i7n</ChildInstanceId>\\n <RequestId>ADD98358-D265-4060-87CB-A2427F5A8944</RequestId>\\n <ChildInstanceName>defaultvpc</ChildInstanceName>\\n <ChildInstanceRegionId>cn-beijing</ChildInstanceRegionId>\\n <CenId>cen-5mv960yjhja0dh7qsb</CenId>\\n <ChildInstanceAttachTime>2018-07-30T07:53Z</ChildInstanceAttachTime>\\n <ChildInstanceType>VPC</ChildInstanceType>\\n</DescribeCenAttachedChildInstanceAttribute>\\n"}]',
+ 'title' => 'DescribeCenAttachedChildInstanceAttribute',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenAttachedChildInstances' => [
+ 'summary' => 'Queries the network instances that are attached to a CEN instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ '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' => 'int32',
+ 'required' => false,
+ 'example' => '1',
+ 'default' => '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',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ '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' => false,
+ 'example' => 'cn-zhangjiakou',
+ ],
+ ],
+ ],
+ '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' => 'B2063B16-852B-5B66-B73D-4ED4D1A5E5C2',
+ ],
+ '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',
+ ],
+ 'ChildInstances' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'ChildInstance' => [
+ 'description' => 'The information about the network instances.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'ChildInstanceType' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **Attaching**: The network instance is being created on the transit router.'."\n"
+ .'* **Attached**: The network instance has been created on the transit router.'."\n"
+ .'* **Detaching**: The network instance is being deleted from the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'Attached',
+ ],
+ 'ChildInstanceRegionId' => [
+ 'description' => 'The ID of the region where the network instance is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-zhangjiakou',
+ ],
+ 'ChildInstanceOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1688000000000000',
+ ],
+ 'ChildInstanceId' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-8vb1lu55yt9rlwgxl****',
+ ],
+ 'ManagedService' => [
+ 'type' => 'string',
+ ],
+ 'ChildInstanceAttachTime' => [
+ 'description' => 'The time when the network instance was attached to the CEN instance.'."\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-08-10T06:27Z',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"B2063B16-852B-5B66-B73D-4ED4D1A5E5C2\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"ChildInstances\\": {\\n \\"ChildInstance\\": [\\n {\\n \\"ChildInstanceType\\": \\"VPC\\",\\n \\"Status\\": \\"Attached\\",\\n \\"ChildInstanceRegionId\\": \\"cn-zhangjiakou\\",\\n \\"ChildInstanceOwnerId\\": 1688000000000000,\\n \\"ChildInstanceId\\": \\"vpc-8vb1lu55yt9rlwgxl****\\",\\n \\"ManagedService\\": \\"swas\\",\\n \\"ChildInstanceAttachTime\\": \\"2021-08-10T06:27Z\\",\\n \\"CenId\\": \\"cen-j3jzhw1zpau2km****\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"PageNumber\\":1,\\n \\"ChildInstances\\":{\\n \\"ChildInstance\\":[\\n {\\n \\"Status\\":\\"Attached\\",\\n \\"ChildInstanceOwnerId\\":\\"1894573272823690\\",\\n \\"ChildInstanceId\\":\\"vpc-hp3kz27b1uv9hsmm9vqiv\\",\\n \\"ChildInstanceRegionId\\":\\"cn-huhehaote\\",\\n \\"CenId\\":\\"cen-kojok19x3j0q6kx5qf\\",\\n \\"ChildInstanceType\\":\\"VPC\\"\\n },\\n {\\n \\"Status\\":\\"Attached\\",\\n \\"ChildInstanceOwnerId\\":\\"1894573272823690\\",\\n \\"ChildInstanceId\\":\\"vpc-gw85r5kr8urw957szm455\\",\\n \\"ChildInstanceRegionId\\":\\"eu-central-1\\",\\n \\"CenId\\":\\"cen-kojok19x3j0q6kx5qf\\",\\n \\"ChildInstanceType\\":\\"VPC\\"\\n }\\n ]\\n },\\n \\"TotalCount\\":3,\\n \\"PageSize\\":10,\\n \\"RequestId\\":\\"50F8E0AB-A225-41C0-AC88-FFB51A4F5C72\\"\\n}"},{"type":"xml","example":"<DescribeCenAttachedChildInstancesResponse>\\n<TotalCount>1</TotalCount>\\n<PageSize>10</PageSize>\\n<RequestId>B2063B16-852B-5B66-B73D-4ED4D1A5E5C2</RequestId>\\n<PageNumber>1</PageNumber>\\n<ChildInstances>\\n <ChildInstance>\\n <Status>Attached</Status>\\n <ChildInstanceType>VPC</ChildInstanceType>\\n <CenId>cen-j3jzhw1zpau2kmscxd</CenId>\\n <ChildInstanceAttachTime>2021-08-10T06:27Z</ChildInstanceAttachTime>\\n <ChildInstanceOwnerId>1688401595963306</ChildInstanceOwnerId>\\n <ChildInstanceId>vpc-8vb1lu55yt9rlwgxlu83b</ChildInstanceId>\\n <ChildInstanceRegionId>cn-zhangjiakou</ChildInstanceRegionId>\\n </ChildInstance>\\n</ChildInstances>\\n</DescribeCenAttachedChildInstancesResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<DescribeCenAttachedChildInstancesResponse>\\n <ChildInstances <ChildInstance>\\n <CenId>cen-kojok19x3j0q6kx5qf</CenId>\\n <ChildInstanceId>vpc-hp3kz27b1uv9hsmm9vqiv</ChildInstanceId>\\n <ChildInstanceOwnerId>1894573272823690</ChildInstanceOwnerId>\\n <ChildInstanceRegionId>cn-huhehaote</ChildInstanceRegionId>\\n <ChildInstanceType>VPC</ChildInstanceType>\\n <Status>Attached</Satus>\\n </ChildIntance>\\n <ChildInstance>\\n <CenId>cen-kojok19x3j0q6kx5qf</CenId>\\n <ChildInstanceId>vpc-gw85r5kr8urw957szm455</ChildInstanceId>\\n <ChildInstanceOwnerId>1894573272823690</ChildInstanceOwnerId>\\n <ChildInstanceRegionId>eu-central-1</ChildInstanceRegionId>\\n <ChildInstanceType>VPC</ChildInstanceType>\\n <Status>Attched</Status>\\n e>\\n </ChildInstance>\\n </ChildInstances>\\n <PageNumber>1</PageNumber>\\n <PageSize>10</PageSize>\\n <RequestId>50F8E0AB-A225-41C0-AC88-FFB51A4F5C72</RequestId>\\n <TotalCount>3</TotalCount>\\n</DescribeCenAttachedChildInstancesResponse>"}]',
+ 'title' => 'DescribeCenAttachedChildInstances',
+ 'description' => 'You can use one of the following methods to query the information about the network instances that are attached to a CEN instance:'."\n"
+ ."\n"
+ .'* You can query all the network instances that are attached to a CEN instance by setting the `CenId` parameter.'."\n"
+ .'* You can query the network instances that are attached to a CEN instance in a specified region by setting the `CenId` and `ChildInstanceRegionId` parameters.'."\n"
+ .'* You can query a specified type of network instances that are attached to a CEN instance by setting the `CenId` and `ChildInstanceType` parameters.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeChildInstanceRegions' => [
+ 'summary' => 'Queries the regions in which you can attach network instances to Cloud Enterprise Network (CEN) instances.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ProductType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'AcceptLanguage',
+ 'in' => 'query',
+ 'allowEmptyValue' => true,
+ 'schema' => [
+ 'description' => 'The language of the response. Valid values: zh-CN (Chinese, which is the default language), en-US (English), and ja (Japanese).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'zh-CN',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'D5CEED59-36AA-47CC-9D81-16F71C46BD80',
+ ],
+ 'Regions' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Region' => [
+ 'description' => 'A list of regions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'LocalName' => [
+ 'description' => 'The name of the region.'."\n",
+ 'type' => 'string',
+ 'example' => 'China (Hangzhou)'."\n",
+ ],
+ 'RegionId' => [
+ 'description' => 'The ID of the region.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'MissingParameter.OwnerIdOrOwnerAccount',
+ 'errorMessage' => 'The input parameter OwnerAccount or OwnerId that is mandatory for processing this request is not supplied',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D5CEED59-36AA-47CC-9D81-16F71C46BD80\\",\\n \\"Regions\\": {\\n \\"Region\\": [\\n {\\n \\"LocalName\\": \\"华东 1\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeChildInstanceRegionsResponse>\\n<RequestId>D5CEED59-36AA-47CC-9D81-16F71C46BD80</RequestId>\\n<Regions>\\n <Region>\\n <RegionId>cn-hangzhou</RegionId>\\n <LocalName>华东 1</LocalName>\\n </Region>\\n</Regions>\\n</DescribeChildInstanceRegionsResponse>","errorExample":""}]',
+ 'title' => 'DescribeChildInstanceRegions',
+ 'description' => 'The regions that support CEN vary based on the network instance type. To query the regions where you can attach a specified type of network instance to CEN, set the `ProductType` parameter. If you do not set the `ProductType` parameter, the system queries all regions in which you can attach network instances to CEN, regardless of the network instance type.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeGrantRulesToCen' => [
+ 'summary' => 'Queries the network instances of other Alibaba Cloud accounts that have granted permissions to a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72362',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnOQ547T',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the network instance.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-nye53d7p3hzyu4****',
+ ],
+ ],
+ [
+ 'name' => 'ProductType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **CCN**'."\n"
+ .'* **VPN**'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '* If you do not set **MaxResults**, it indicates that you do not need to query results in batches. The value of **MaxResults** in the response indicates the total number of entries returned.'."\n"
+ .'* If you specify a value for **MaxResults**, it indicates that you need to query results in batches. The value of **MaxResults** indicates the number of entries to return in each batch. Valid values: **1** to **100**. The value of **MaxResults** in the response indicates the number of entries in the current batch. We recommend that you set **MaxResults** to **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '0',
+ 'example' => '20',
+ ],
+ ],
+ [
+ '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' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance that you want to query.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-rj9gt5nll27onu7****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '125012345612****',
+ ],
+ ],
+ [
+ 'name' => 'EnabledIpv6',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable IPv6.'."\n"
+ ."\n"
+ .'1. This parameter takes effect only if ProductType is set to VPC.'."\n"
+ .'2. true: enables IPv6. false: disables IPv6. If you do not specify a value, network instances are not filtered based on this parameter.'."\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' => '4906B209-8613-5C19-9CC9-B7A3FFDA731C',
+ ],
+ 'GrantRules' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'GrantRule' => [
+ 'description' => 'The permissions that are granted to the CEN instance.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The queried network instances.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ChildInstanceType' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n"
+ .'* **VPN**: IPsec-VPN connection'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'ChildInstanceRegionId' => [
+ 'description' => 'The region ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'ChildInstanceOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1250123456123456',
+ ],
+ 'ChildInstanceId' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp1rgeww9mdstuuar****',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-nye53d7p3hzyu4****',
+ ],
+ 'OrderType' => [
+ 'description' => 'The entity that pays the fees of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **PayByCenOwner**: The fees of the connections and data forwarding on the transit router are paid by the Alibaba Cloud account to which the CEN instance belongs.'."\n"
+ .'* **PayByResourceOwner**: The fees of the connections and data forwarding on the transit router are paid by the Alibaba Cloud account to which the network instance belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'PayByCenOwner',
+ 'title' => '网络实例的付费方',
+ ],
+ 'CenOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the CEN instance belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1210123456123456',
+ ],
+ 'CreateTime' => [
+ 'description' => 'The time when the permissions were granted to the CEN instance.'."\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' => 'integer',
+ 'format' => 'int64',
+ 'example' => '2024-01-24T16:27Z',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => '* If no value is specified for **MaxResults**, query results are returned in one batch. The value of **MaxResults** indicates the total number of entries.'."\n"
+ .'* If a value is specified for **MaxResults**, it indicates that you need to query results in batches. The value of **MaxResults** in the response indicates the number of entries in the current batch.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '20',
+ ],
+ '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 of **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'MissingParameter',
+ 'errorMessage' => 'Missing parameter.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.RegionId',
+ 'errorMessage' => 'The specified Region Id is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'NextToken is illegal',
+ ],
+ [
+ 'errorCode' => 'MissingParameter.RegionId',
+ 'errorMessage' => 'Missing RegionId parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4906B209-8613-5C19-9CC9-B7A3FFDA731C\\",\\n \\"GrantRules\\": {\\n \\"GrantRule\\": [\\n {\\n \\"ChildInstanceType\\": \\"VPC\\",\\n \\"ChildInstanceRegionId\\": \\"cn-hangzhou\\",\\n \\"ChildInstanceOwnerId\\": 1250123456123456,\\n \\"ChildInstanceId\\": \\"vpc-bp1rgeww9mdstuuar****\\",\\n \\"CenId\\": \\"cen-nye53d7p3hzyu4****\\",\\n \\"OrderType\\": \\"PayByCenOwner\\",\\n \\"CenOwnerId\\": 1210123456123456,\\n \\"CreateTime\\": 0\\n }\\n ]\\n },\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\"\\n}","errorExample":""},{"type":"xml","example":"<DescribeGrantRulesToCenResponse>\\n <RequestId>4906B209-8613-5C19-9CC9-B7A3FFDA731C</RequestId>\\n <GrantRules>\\n <ChildInstanceType>VPC</ChildInstanceType>\\n <ChildInstanceRegionId>cn-hangzhou</ChildInstanceRegionId>\\n <ChildInstanceOwnerId>1250123456123456</ChildInstanceOwnerId>\\n <ChildInstanceId>vpc-bp1rgeww9mdstuuar****</ChildInstanceId>\\n <CenId>cen-nye53d7p3hzyu4****</CenId>\\n <OrderType>PayByCenOwner</OrderType>\\n <CenOwnerId>1210123456123456</CenOwnerId>\\n </GrantRules>\\n <TotalCount>1</TotalCount>\\n <MaxResults>20</MaxResults>\\n</DescribeGrantRulesToCenResponse>","errorExample":""}]',
+ 'title' => 'DescribeGrantRulesToCen',
+ 'description' => 'Before you call the **DescribeGrantRulesToCen** operation, make sure that all request parameters are valid. If a request parameter is invalid, a **request ID** is returned, but the network instances are not returned.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListGrantVSwitchesToCen' => [
+ 'summary' => 'Queries the vSwitches in a virtual private cloud (VPC) that belongs to another Alibaba Cloud account and is attached to a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72385',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnOQ547T',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the VPC.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-44m0p68spvlrqq****',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The VPC ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp12ge2tq5gzdc915****',
+ ],
+ ],
+ [
+ 'name' => 'PageNumber',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The page number of the page to return. Default value: **1**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '1000',
+ 'minimum' => '0',
+ '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,
+ 'maximum' => '50',
+ 'minimum' => '1',
+ 'example' => '10',
+ ],
+ ],
+ [
+ 'name' => 'ZoneId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the zone.'."\n"
+ ."\n"
+ .'* If you specify a zone ID, the system queries the information about the vSwitches in the specified zone.'."\n"
+ .'* If you do not specify a zone ID, the system queries the information about the vSwitches in all zones.'."\n"
+ ."\n"
+ .'You can call the [DescribeZones](~~36064~~) operation to query the most recent zone list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou-h',
+ ],
+ ],
+ [
+ 'name' => 'EnabledIpv6',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable IPv6. true: enables IPv6. false: disables IPv6. If you do not specify a value, vSwitches are not filtered based on this attribute.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ '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' => 'A9288C78-881A-5D30-A8A9-68E05EE0A086',
+ ],
+ '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' => '2',
+ ],
+ 'VSwitches' => [
+ 'description' => 'The list of vSwitches.'."\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-bp12ge2tq5gzdc915****',
+ ],
+ 'ZoneId' => [
+ 'description' => 'The ID of the zone to which the vSwitch belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-h',
+ ],
+ 'VSwitchId' => [
+ 'description' => 'The ID of the vSwitch.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsw-bp1194lh263wx1gsk****',
+ ],
+ 'VSwitchName' => [
+ 'description' => 'The name of the vSwitch.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"A9288C78-881A-5D30-A8A9-68E05EE0A086\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"VSwitches\\": [\\n {\\n \\"VpcId\\": \\"vpc-bp12ge2tq5gzdc915****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-h\\",\\n \\"VSwitchId\\": \\"vsw-bp1194lh263wx1gsk****\\",\\n \\"VSwitchName\\": \\"nametest\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListGrantVSwitchesToCenResponse>\\n <PageSize>10</PageSize>\\n <RequestId>A9288C78-881A-5D30-A8A9-68E05EE0A086</RequestId>\\n <PageNumber>1</PageNumber>\\n <TotalCount>2</TotalCount>\\n <VSwitches>\\n <VpcId>vpc-bp12ge2tq5gzdc915****</VpcId>\\n <ZoneId>cn-hangzhou-h</ZoneId>\\n <VSwitchId>vsw-bp1194lh263wx1gsk****</VSwitchId>\\n <VSwitchName>nametest</VSwitchName>\\n </VSwitches>\\n</ListGrantVSwitchesToCenResponse>","errorExample":""}]',
+ 'title' => 'ListGrantVSwitchesToCen',
+ 'description' => 'Before you call the `ListGrantVSwitchesToCen` operation, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .'* The permissions on the VPC are granted to the CEN instance. For more information, see [GrantInstanceToCen](~~126224~~).'."\n"
+ ."\n"
+ .'* The VPC is attached to the CEN instance.'."\n"
+ ."\n"
+ .' * For more information about how to connect an Enterprise Edition transit router to a VPC, see [CreateTransitRouterVpcAttachment](~~261358~~).'."\n"
+ .' * For more information about how to connect a Basic Edition transit router to a VPC, see [AttachCenChildInstance](~~65902~~).',
+ ],
+ 'CreateCenBandwidthPackage' => [
+ 'summary' => 'Creates a bandwidth plan.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '75161',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn7IORX8',
+ ],
+ '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 and cannot exceed 64 characters in length.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'Name',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the bandwidth plan.'."\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 and cannot start with `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'namedesc',
+ ],
+ ],
+ [
+ 'name' => 'Bandwidth',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The maximum bandwidth value of the bandwidth plan. Unit: Mbit/s. Valid values: **2** to **10000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '2',
+ ],
+ ],
+ [
+ 'name' => 'GeographicRegionAId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The area where the network instance is deployed. Valid values:'."\n"
+ ."\n"
+ .'* **China**: Chinese mainland'."\n"
+ .'* **North-America**: North America'."\n"
+ .'* **Asia-Pacific**: Asia Pacific'."\n"
+ .'* **Europe**: Europe',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'China ',
+ ],
+ ],
+ [
+ 'name' => 'GeographicRegionBId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The area where the other network instance is deployed. Valid values: Valid values:'."\n"
+ ."\n"
+ .'* **China**: Chinese mainland'."\n"
+ .'* **North-America**: North America'."\n"
+ .'* **Asia-Pacific**: Asia Pacific'."\n"
+ .'* **Europe**: Europe',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'China ',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthPackageChargeType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The billing method of the bandwidth plan. Set the value to **PREPAY**, which indicates that the billing method is pay-as-you-go.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PREPAY',
+ ],
+ ],
+ [
+ 'name' => 'Period',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The subscription duration of the bandwidth plan. Default value: 1.'."\n"
+ ."\n"
+ .'* If **PricingCycle** is set to **Month**, set **Period** to a value from **1** to **3** or **6**.'."\n"
+ .'* If **PricingCycle** is set to **Year**, set **Period** to a value from **1** to **3**.'."\n"
+ ."\n"
+ .'> This parameter is required when **BandwidthPackageChargeType** is set to **PREPAY**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '1',
+ ],
+ ],
+ [
+ 'name' => 'PricingCycle',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The billing cycle of the bandwidth plan. Valid values:'."\n"
+ ."\n"
+ .'* **Month** (default): billed on a monthly basis.'."\n"
+ .'* **Year**: billed on an annual basis.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Month',
+ ],
+ ],
+ [
+ 'name' => 'AutoPay',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to automatically complete the payment of the bandwidth plan. Valid values:'."\n"
+ ."\n"
+ .'* **true**: yes'."\n"
+ .'* **false** (default): no'."\n"
+ ."\n"
+ .'If you set the parameter to false, go to Billing Management to complete the payment after you call this operation. The instance is created only after you complete the payment.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag keys cannot be an empty string. The tag key can be up to 64 characters in length, and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CenBandwidthPackageId' => [
+ 'description' => 'The ID of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenbwp-4c2zaavbvh5fx****',
+ ],
+ 'CenBandwidthPackageOrderId' => [
+ 'description' => 'The ID of the order for the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => '20156420004****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'UnSupported.ChargeType',
+ 'errorMessage' => 'The charge type is not supported.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.BandwidthPackage',
+ 'errorMessage' => 'The parameter of bandwidth packaged is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.UserCanNotBuyCrossBorderBwp',
+ 'errorMessage' => 'According to the laws and regulations of the operator and mainland China, you are currently not eligible to purchase or renew a cross-border bandwidth package. Please contact online customer service or your business manager for consultation.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.UserCanNotBuyBwp',
+ 'errorMessage' => 'The user can not buy Cen bandwidthPackage.',
+ ],
+ [
+ 'errorCode' => 'Order.AccountStatusIllegal',
+ 'errorMessage' => 'Illegal account status for postpay service not opened for this account.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 500 => [
+ [
+ 'errorCode' => 'PayFor.AccountMoneyValidateError',
+ 'errorMessage' => 'Your channel merchant quota is insufficient. Please contact the channel merchant.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeCenBandwidthPackages',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"CenBandwidthPackageId\\": \\"cenbwp-4c2zaavbvh5fx****\\",\\n \\"CenBandwidthPackageOrderId\\": \\"20156420004****\\",\\n \\"RequestId\\": \\"E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B\\",\\n \\"CenBandwidthPackageId\\":\\"Cenbwp-stb2axpqzzko2jagd7\\"\\n}"},{"type":"xml","example":"<CreateCenBandwidthPackageResponse>\\n <RequestId>E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B</RequestId>\\n <CenBandwidthPackageOrderId>20156420004****</CenBandwidthPackageOrderId>\\n <CenBandwidthPackageId> cenbwp-4c2zaavbvh5fx****</CenBandwidthPackageId>\\n</CreateCenBandwidthPackageResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\" ?>\\n<CreateCenBandwidthPackageResponse>\\n <RequestId>E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B</RequestId>\\n <CenBandwidthPackageId> Cenbwp-stb2axpqzzko2jagd7</CenBandwidthPackageId>\\n</CreateCenBandwidthPackageResponse>"}]',
+ 'title' => 'CreateCenBandwidthPackage',
+ 'description' => '* You must specify the areas to be connected when you create a bandwidth plan. An area contains one or more Alibaba Cloud regions. When you select areas for a bandwidth plan, make sure that the areas contain the regions that you want to connect. For more information about the supported areas and regions, see [Purchase a bandwidth plan](~~181560~~).'."\n"
+ .'* For more information about the billing rules, see [Billing](~~189836~~).'."\n"
+ .'* **CreateCenBandwidthPackage** is an asynchronous operation. After you send a request, the system returns a bandwidth plan instance ID and runs the task in the background. You can call the **DescribeCenBandwidthPackages** operation to query the status of a bandwidth plan. If a bandwidth plan is in the **Idle** or **InUse** state, the bandwidth plan is created.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteCenBandwidthPackage' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenbwp-4c2zaavbvh5f42****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'C0245BEF-52AC-44A8-A776-EF96FD26A5CA',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Release',
+ 'errorMessage' => 'Forbidden to release a PREPAY bandwidth instance within validity period.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.BwpInstanceStatus',
+ 'errorMessage' => 'The CBN bandwidth package is not in a valid state for the operation.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C0245BEF-52AC-44A8-A776-EF96FD26A5CA\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteCenBandwidthPackageResponse>\\r\\n <RequestId>C0245BEF-52AC-44A8-A776-EF96FD26A5CA</RequestId>\\r\\n</DeleteCenBandwidthPackageResponse>","errorExample":""}]',
+ 'title' => 'DeleteCenBandwidthPackage',
+ 'summary' => 'Deletes a bandwidth plan.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ModifyCenBandwidthPackageAttribute' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'Name',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the bandwidth plan.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the bandwidth plan.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Bandwidth Plans'."\n",
+ ],
+ ],
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenbwp-4c2zaavbvh5fx****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '13526224-5780-4426-8ADF-BC8B08700F23',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"13526224-5780-4426-8ADF-BC8B08700F23\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"13526224-5780-4426-8ADF-BC8B08700F23\\"\\n}"},{"type":"xml","example":"<ModifyCenBandwidthPackageAttributeResponse>\\n <RequestId>13526224-5780-4426-8ADF-BC8B08700F23</RequestId>\\n</ModifyCenBandwidthPackageAttributeResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\" ?>\\n<ModifyCenBandwidthPackageAttributeResponse>\\n <RequestId>5903EE99-D542-4E14-BC65-AAC1CB2D3D03</RequestId>\\n</ModifyCenBandwidthPackageAttributeResponse>"}]',
+ 'title' => 'ModifyCenBandwidthPackageAttribute',
+ 'summary' => 'Modifies the name and description of a bandwidth plan.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ModifyCenBandwidthPackageSpec' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenbwp-4c2zaavbvh5x****',
+ ],
+ ],
+ [
+ 'name' => 'Bandwidth',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new maximum bandwidth value of the bandwidth plan. Unit: Mbit/s.'."\n"
+ ."\n"
+ .'Valid values: **2** to **10000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '2',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Operation.Failed',
+ 'errorMessage' => 'Spec of the specified bandwidth package is not changed, please check again.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.Resource',
+ 'errorMessage' => 'The status of the specified resource is invalid. The resource cannot be renewed.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InsufficientBalance',
+ 'errorMessage' => 'Your account does not have enough balance.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.OperationIsProcessing',
+ 'errorMessage' => 'The operation failed because another operation is being processed.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.OrderIsProcessing',
+ 'errorMessage' => 'The operation failed because the order is being processed.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.UpDownRadeConfigNoChange',
+ 'errorMessage' => 'The operation failed because the config not change.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.SaleValidateFailed',
+ 'errorMessage' => 'Sales expression validation system error.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}"},{"type":"xml","example":"<ModifyCenBandwidthPackageSpecResponse>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</ModifyCenBandwidthPackageSpecResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<ModifyCenBandwidthPackageSpecResponse>\\n <RequestId>5903EE99-D542-4E14-BC65-AAC1CB2D3D03</RequestId>\\n</ModifyCenBandwidthPackageSpecResponse>"}]',
+ 'title' => 'ModifyCenBandwidthPackageSpec',
+ 'summary' => 'Modifies the maximum bandwidth of a bandwidth plan.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenGeographicSpanRemainingBandwidth' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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. Default value: **10**. Valid values: **1** to **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance to which the bandwidth plan is associated.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-nh98vzx8gfhlwn****',
+ ],
+ ],
+ [
+ 'name' => 'GeographicRegionAId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of one of the connected areas of the bandwidth plan. Valid values:'."\n"
+ ."\n"
+ .'* **China**: Chinese mainland'."\n"
+ .'* **North-America**: North America'."\n"
+ .'* **Asia-Pacific**: Asia Pacific'."\n"
+ .'* **Europe**: Europe',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'China',
+ ],
+ ],
+ [
+ 'name' => 'GeographicRegionBId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the other area connected by the bandwidth plan. Valid values:'."\n"
+ ."\n"
+ .'* **China**: Chinese mainland'."\n"
+ .'* **North-America**: North America'."\n"
+ .'* **Asia-Pacific**: Asia Pacific'."\n"
+ .'* **Europe**: Europe',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'North-America',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RemainingBandwidth' => [
+ 'description' => 'The remaining bandwidth of the bandwidth plan. Unit: Mbit/s.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '2',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RemainingBandwidth\\": 2,\\n \\"RequestId\\": \\"E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B\\"\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenGeographicSpanRemainingBandwidthResponse>\\r\\n <RequestId>E4B345CD-2CBA-4881-AF6D-E5D9BAE1CA7B</RequestId>\\r\\n <RemainingBandwidth>2</RemainingBandwidth>\\r\\n</DescribeCenGeographicSpanRemainingBandwidthResponse>","errorExample":""}]',
+ 'title' => 'DescribeCenGeographicSpanRemainingBandwidth',
+ 'summary' => 'Queries the remaining bandwidth of a bandwidth plan.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenBandwidthPackages' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'IncludeReservationData',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to include renewal data. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ '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' => '2',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'IsOrKey',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The logical operator between the filter conditions. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): **AND** Bandwidth plans that meet all filter conditions are returned.'."\n"
+ .'* **true**: **OR** Bandwidth plans that meet one of the filter conditions are returned.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-acfnwjeo4tv****',
+ ],
+ ],
+ [
+ 'name' => 'Filter',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The filter configurations.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The filter conditions. You can use filter conditions to filter the bandwidth plans that you want to query. The following filter conditions are supported:'."\n"
+ ."\n"
+ .'* **CenId**: CEN instance ID'."\n"
+ ."\n"
+ .'* **Status**: bandwidth plan status. Valid values:'."\n"
+ ."\n"
+ .' * **Idle**: not associated with a CEN instance.'."\n"
+ .' * **InUse**: associated with a CEN instance.'."\n"
+ ."\n"
+ .'* **CenBandwidthPackageId**: bandwidth plan ID'."\n"
+ ."\n"
+ .'* **Name**: bandwidth plan name You can specify one or more filter conditions. The maximum value of **N** is **5**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'CenId',
+ ],
+ 'Value' => [
+ 'description' => 'Specify a filter value based on the **Key** parameter. You can specify multiple filter values for each **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' => 'Specify a filter value based on the **Key** parameter. You can specify multiple filter values for each **Key**. The logical operator between filter values is **OR**. If a bandwidth plan matches one of the filter values, the bandwidth plan is a match.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-xxjsjfkffkfkfjkf****',
+ ],
+ 'required' => false,
+ 'example' => 'Idle',
+ 'maxItems' => 5,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 5,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag keys.'."\n"
+ ."\n"
+ .'The tag keys cannot be an empty string. The tag keys can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag values.'."\n"
+ ."\n"
+ .'The tag values can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'The tag value of each tag key must be unique. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagValue',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'headers' => [],
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'PageSize' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '9D7E2400-2755-4AF5-9B73-12565E4F73A0',
+ ],
+ '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' => '2',
+ ],
+ 'CenBandwidthPackages' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenBandwidthPackage' => [
+ 'description' => 'The details about the bandwidth plan.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'ReservationActiveTime' => [
+ 'description' => 'The expiration time of the temporary upgrade.'."\n",
+ 'type' => 'string',
+ 'example' => '2021-08-30T16:00Z',
+ ],
+ 'Status' => [
+ 'description' => 'Indicates whether the bandwidth plan is associated with a CEN instance.'."\n"
+ ."\n"
+ .'* **Idle**'."\n"
+ .'* **InUse**'."\n",
+ 'type' => 'string',
+ 'example' => 'InUse',
+ ],
+ 'CreationTime' => [
+ 'description' => 'The time when the bandwidth plan was created. The time is displayed in the ISO8601 standard in the YYYY-MM-DDThh:mmZ format.'."\n",
+ 'type' => 'string',
+ 'example' => '2021-02-01T11:14Z',
+ ],
+ 'ReservationOrderType' => [
+ 'description' => 'The renewal method.'."\n"
+ ."\n"
+ .'* **TEMP_UPGRADE**: temporary upgrade'."\n"
+ .'* **UPGRADE**: upgrade'."\n",
+ 'type' => 'string',
+ 'example' => 'UPGRADE',
+ ],
+ 'BandwidthPackageChargeType' => [
+ 'description' => 'The billing method of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'PREPAY',
+ ],
+ 'CenBandwidthPackageId' => [
+ 'description' => 'The ID of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenbwp-4c2zaavbvh5x****',
+ ],
+ 'ReservationInternetChargeType' => [
+ 'description' => 'The new billing method.'."\n",
+ 'type' => 'string',
+ 'example' => 'PREPAY',
+ ],
+ 'GeographicRegionAId' => [
+ 'description' => 'The ID of the area that you want to query. Valid values:'."\n"
+ ."\n"
+ .'* **china**: Chinese mainland.'."\n"
+ .'* **asia-pacific**: Asia Pacific'."\n"
+ .'* **europe**: Europe'."\n"
+ .'* **north-america**: North America',
+ 'type' => 'string',
+ 'example' => 'china',
+ ],
+ 'Bandwidth' => [
+ 'description' => 'The maximum bandwidth of the bandwidth plan.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '2',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen',
+ ],
+ 'ExpiredTime' => [
+ 'description' => 'The time when the bandwidth plan expires.'."\n",
+ 'type' => 'string',
+ 'example' => '2021-09-08T16:00Z',
+ ],
+ 'ReservationBandwidth' => [
+ 'description' => 'The bandwidth value to which the bandwidth plan is restored when the temporary upgrade ends.'."\n",
+ 'type' => 'string',
+ 'example' => '10',
+ ],
+ 'GeographicSpanId' => [
+ 'description' => 'The ID of the connected area.'."\n",
+ 'type' => 'string',
+ 'example' => 'north-america_china',
+ ],
+ 'GeographicRegionBId' => [
+ 'description' => 'The ID of the other area connected by the bandwidth plan. Valid values:'."\n"
+ ."\n"
+ .'* **china**: Chinese mainland.'."\n"
+ .'* **asia-pacific**: Asia Pacific'."\n"
+ .'* **europe**: Europe'."\n"
+ .'* **north-america**: North America',
+ 'type' => 'string',
+ 'example' => 'north-america',
+ ],
+ 'ResourceGroupId' => [
+ 'description' => 'The ID of the resource group to which the ACL belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-aekzoyr5k36****',
+ ],
+ 'IsCrossBorder' => [
+ 'description' => 'Indicates whether the bandwidth plan supports cross-border communication.'."\n"
+ ."\n"
+ .'* **false**'."\n"
+ .'* **true**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'BusinessStatus' => [
+ 'description' => 'The status of the bandwidth plan. Valid values:'."\n"
+ ."\n"
+ .'* **Normal**: running as expected.'."\n"
+ .'* **FinancialLocked**: locked due to overdue payments.'."\n"
+ .'* **SecurityLocked**: locked due to security reasons'."\n",
+ 'type' => 'string',
+ 'example' => 'Normal',
+ ],
+ 'Name' => [
+ 'description' => 'The name of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'HasReservationData' => [
+ 'description' => 'Indicates whether renewal data is included.'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter returns **true** only when the **IncludeReservationData** parameter is set to **true** and a pending order exists.'."\n",
+ 'type' => 'string',
+ 'example' => 'false',
+ ],
+ 'OrginInterRegionBandwidthLimits' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'OrginInterRegionBandwidthLimit' => [
+ 'description' => 'The details about the connected regions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'BandwidthLimit' => [
+ 'description' => 'The maximum bandwidth value for the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => '1',
+ ],
+ 'OppositeRegionId' => [
+ 'description' => 'The ID of the peer region.'."\n",
+ 'type' => 'string',
+ 'example' => 'us-west-1',
+ ],
+ 'GeographicSpanId' => [
+ 'description' => 'The connected regions.'."\n",
+ 'type' => 'string',
+ 'example' => 'north-america_china',
+ ],
+ 'LocalRegionId' => [
+ 'description' => 'The ID of the local region.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'Tags' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Tag' => [
+ 'description' => 'The tags of the bandwidth plan.'."\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',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'CenIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenId' => [
+ 'description' => 'A list of CEN instances that are associated with the bandwidth plan.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the CEN instance that is associated with the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-xxjsjfkffkfkfjkf****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.TagValue',
+ 'errorMessage' => 'The tag values are not valid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagKey',
+ 'errorMessage' => 'The tag keys are not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 2,\\n \\"RequestId\\": \\"9D7E2400-2755-4AF5-9B73-12565E4F73A0\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"CenBandwidthPackages\\": {\\n \\"CenBandwidthPackage\\": [\\n {\\n \\"ReservationActiveTime\\": \\"2021-08-30T16:00Z\\",\\n \\"Status\\": \\"InUse\\",\\n \\"CreationTime\\": \\"2021-02-01T11:14Z\\",\\n \\"ReservationOrderType\\": \\"UPGRADE\\",\\n \\"BandwidthPackageChargeType\\": \\"PREPAY\\",\\n \\"CenBandwidthPackageId\\": \\"cenbwp-4c2zaavbvh5x****\\",\\n \\"ReservationInternetChargeType\\": \\"PREPAY\\",\\n \\"GeographicRegionAId\\": \\"china\\",\\n \\"Bandwidth\\": 2,\\n \\"Description\\": \\"cen\\",\\n \\"ExpiredTime\\": \\"2021-09-08T16:00Z\\",\\n \\"ReservationBandwidth\\": \\"10\\",\\n \\"GeographicSpanId\\": \\"north-america_china\\",\\n \\"GeographicRegionBId\\": \\"north-america\\",\\n \\"ResourceGroupId\\": \\"rg-aekzoyr5k36****\\",\\n \\"IsCrossBorder\\": false,\\n \\"BusinessStatus\\": \\"Normal\\",\\n \\"Name\\": \\"test\\",\\n \\"HasReservationData\\": \\"false\\",\\n \\"OrginInterRegionBandwidthLimits\\": {\\n \\"OrginInterRegionBandwidthLimit\\": [\\n {\\n \\"BandwidthLimit\\": \\"1\\",\\n \\"OppositeRegionId\\": \\"us-west-1\\",\\n \\"GeographicSpanId\\": \\"north-america_china\\",\\n \\"LocalRegionId\\": \\"cn-hangzhou\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ]\\n },\\n \\"CenIds\\": {\\n \\"CenId\\": [\\n \\"cen-xxjsjfkffkfkfjkf****\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenBandwidthPackagesResponse>\\n <PageSize>2</PageSize>\\n <RequestId>9D7E2400-2755-4AF5-9B73-12565E4F73A0</RequestId>\\n <PageNumber>1</PageNumber>\\n <TotalCount>2</TotalCount>\\n <CenBandwidthPackages>\\n <ReservationActiveTime>2021-08-30T16:00Z</ReservationActiveTime>\\n <Status>InUse</Status>\\n <CreationTime>2021-02-01T11:14Z</CreationTime>\\n <ReservationOrderType>UPGRADE</ReservationOrderType>\\n <BandwidthPackageChargeType>PREPAY</BandwidthPackageChargeType>\\n <CenBandwidthPackageId>cenbwp-4c2zaavbvh5x****</CenBandwidthPackageId>\\n <ReservationInternetChargeType>PREPAY</ReservationInternetChargeType>\\n <GeographicRegionAId>china</GeographicRegionAId>\\n <Bandwidth>2</Bandwidth>\\n <Description>cen</Description>\\n <ExpiredTime>2021-09-08T16:00Z</ExpiredTime>\\n <ReservationBandwidth>10</ReservationBandwidth>\\n <GeographicSpanId>north-america_china</GeographicSpanId>\\n <GeographicRegionBId>north-america</GeographicRegionBId>\\n <IsCrossBorder>false</IsCrossBorder>\\n <BusinessStatus>Normal</BusinessStatus>\\n <Name>test</Name>\\n <HasReservationData>false</HasReservationData>\\n <OrginInterRegionBandwidthLimits>\\n <BandwidthLimit>1</BandwidthLimit>\\n <OppositeRegionId>us-west-1</OppositeRegionId>\\n <GeographicSpanId>north-america_china</GeographicSpanId>\\n <LocalRegionId>cn-hangzhou</LocalRegionId>\\n </OrginInterRegionBandwidthLimits>\\n <CenIds>cen-xxjsjfkffkfkfjkf****</CenIds>\\n </CenBandwidthPackages>\\n</DescribeCenBandwidthPackagesResponse>","errorExample":""}]',
+ 'title' => 'DescribeCenBandwidthPackages',
+ 'summary' => 'Queries the information about bandwidth plans.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenGeographicSpans' => [
+ 'summary' => 'Queries the areas that a Cloud Enterprise Network (CEN) instance can connect.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72352',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn7IORX8',
+ ],
+ 'tenantRelevance' => 'publicInformation',
+ ],
+ 'parameters' => [
+ [
+ '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 per page. Default value: **10**. Valid values: **1** to **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'GeographicSpanId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the areas that are connected by the CEN instance.'."\n"
+ ."\n"
+ .'> If you do not set this parameter, the system queries the information about all areas supported by CEN.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'china_asia-pacific',
+ ],
+ ],
+ ],
+ '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' => '09780287-BC24-4164-8334-773432E32696',
+ ],
+ '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',
+ ],
+ 'GeographicSpanModels' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'GeographicSpanModel' => [
+ 'description' => 'A list of areas.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'LocalGeoRegionId' => [
+ 'description' => 'The ID of the local area.'."\n",
+ 'type' => 'string',
+ 'example' => 'asia-pacific',
+ ],
+ 'GeographicSpanId' => [
+ 'description' => 'The ID of the pair of connected areas.'."\n",
+ 'type' => 'string',
+ 'example' => 'china_asia-pacific',
+ ],
+ 'OppositeGeoRegionId' => [
+ 'description' => 'The ID of the peer area.'."\n",
+ 'type' => 'string',
+ 'example' => 'china',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"09780287-BC24-4164-8334-773432E32696\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"GeographicSpanModels\\": {\\n \\"GeographicSpanModel\\": [\\n {\\n \\"LocalGeoRegionId\\": \\"asia-pacific\\",\\n \\"GeographicSpanId\\": \\"china_asia-pacific\\",\\n \\"OppositeGeoRegionId\\": \\"china\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenGeographicSpansResponse>\\r\\n\\t<PageNumber>1</PageNumber>\\r\\n\\t<TotalCount>1</TotalCount>\\r\\n\\t<PageSize>10</PageSize>\\r\\n\\t<RequestId>09780287-BC24-4164-8334-773432E32696</RequestId>\\r\\n\\t<GeographicSpanModels>\\r\\n\\t\\t<GeographicSpanModel>\\r\\n\\t\\t\\t<OppositeGeoRegionId>china</OppositeGeoRegionId>\\r\\n\\t\\t\\t<LocalGeoRegionId>asia-pacific</LocalGeoRegionId>\\r\\n\\t\\t\\t<GeographicSpanId>china_asia-pacific</GeographicSpanId>\\r\\n\\t\\t</GeographicSpanModel>\\r\\n\\t</GeographicSpanModels>\\r\\n</DescribeCenGeographicSpansResponse>","errorExample":""}]',
+ 'title' => 'DescribeCenGeographicSpans',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeGeographicRegionMembership' => [
+ 'summary' => 'Queries regions in an area.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ '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' => 'int32',
+ 'required' => false,
+ 'example' => '1',
+ 'default' => '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',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'GeographicRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the area that you want to query. Valid values:'."\n"
+ ."\n"
+ .'* **china**: the Chinese mainland'."\n"
+ .'* **asia-pacific**: Asia Pacific'."\n"
+ .'* **europe**: Europe'."\n"
+ .'* **north-america**: North America',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'china ',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'PageSize' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.',
+ 'type' => 'string',
+ 'example' => 'DC9EB0C9-60AF-4A09-A36C-608F70130274',
+ ],
+ 'PageNumber' => [
+ 'description' => 'The page number of the returned page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '10',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'RegionIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'RegionId' => [
+ 'description' => 'The list of regions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RegionId' => [
+ 'description' => 'The ID of the region.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'example' => 'us-west-1',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 2,\\n \\"RequestId\\": \\"DC9EB0C9-60AF-4A09-A36C-608F70130274\\",\\n \\"PageNumber\\": 10,\\n \\"TotalCount\\": 2,\\n \\"RegionIds\\": {\\n \\"RegionId\\": [\\n {\\n \\"RegionId\\": \\"us-west-1\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RegionIds\\":{\\n \\"RegionId\\":[\\n {\\n \\"RegionId\\":\\"us-west-1\\"\\n },\\n {\\n \\"RegionId\\":\\"us-east-1\\"\\n }\\n ]\\n },\\n \\"PageNumber\\":1,\\n \\"TotalCount\\":2,\\n \\"PageSize\\":10,\\n \\"RequestId\\":\\"DC9EB0C9-60AF-4A09-A36C-608F70130274\\"\\n}"},{"type":"xml","example":"<DescribeGeographicRegionMembershipResponse>\\n <PageNumber>1</PageNumber>\\n <PageSize>10</PageSize>\\n <RegionIds>\\n <RegionId>\\n <RegionId>us-west-1</RegionId>\\n </RegionId>\\n <RegionId>\\n <RegionId>us-east-1</RegionId>\\n </RegionId>\\n </RegionIds>\\n <RequestId>DC9EB0C9-60AF-4A09-A36C-608F70130274</RequestId>\\n <TotalCount>2</TotalCount>\\n</DescribeGeographicRegionMembershipResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<DescribeGeographicRegionMembershipResponse>\\n <PageNumber>1</PageNumber>\\n <PageSize>10</PageSize>\\n <RegionIds>\\n <RegionId>\\n <RegionId>us-west-1</RegionId>\\n </RegionId>\\n <RegionId>\\n <RegionId>us-east-1</RegionId>\\n </RegionId>\\n </RegionIds>\\n <RequestId>DC9EB0C9-60AF-4A09-A36C-608F70130274</RequestId>\\n <TotalCount>2</TotalCount>\\n <TotalCount>6</TotalCount>\\n</DescribeGeographicRegionMembershipResponse>"}]',
+ 'title' => 'DescribeGeographicRegionMembership',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'TempUpgradeCenBandwidthPackageSpec' => [
+ 'summary' => 'Temporarily upgrades a subscription bandwidth plan of Cloud Enterprise Network (CEN).',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenbwp-y08yosedeqlpua****',
+ ],
+ ],
+ [
+ 'name' => 'Bandwidth',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'EndTime',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '2022-07-24T13:00:52Z',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'DB0A026C-A8E5-40AB-977E-3A87DD78F694',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Forbidden.AssociatedUnsupportedInterRegionTrafficQosPolicy',
+ 'errorMessage' => 'The transit router associated with the bandwidth plan has an inter-region traffic scheduling policy that allocates bandwidth based on absolute values. You must delete this policy before you can change the configurations.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.OrderParameterIllegal',
+ 'errorMessage' => 'The order parameters are abnormal, please check whether the order parameters are correct and whether they conflict with existing orders.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UpgradeBwpBandwidth',
+ 'errorMessage' => 'The operation is invalid because the upgrade is equal or less than the original bandwidth.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DB0A026C-A8E5-40AB-977E-3A87DD78F694\\"\\n}","errorExample":""},{"type":"xml","example":"<TempUpgradeCenBandwidthPackageSpecResponse>\\n <RequestId>DB0A026C-A8E5-40AB-977E-3A87DD78F694</RequestId>\\n</TempUpgradeCenBandwidthPackageSpecResponse>","errorExample":""}]',
+ 'title' => 'TempUpgradeCenBandwidthPackageSpec',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UnassociateCenBandwidthPackage' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6j****',
+ ],
+ ],
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenbwp-4c2zaavbvh5****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.SetPostPay95BandwidthLimitError',
+ 'errorMessage' => 'Operation failed because set postpay 95 bandwidth limit error.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}"},{"type":"xml","example":"<UnassociateCenBandwidthPackageResponse>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</UnassociateCenBandwidthPackageResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<UnassociateCenBandwidthPackageResponse>\\n <RequestId>5903EE99-D542-4E14-BC65-AAC1CB2D3D03</RequestId>\\n</UnassociateCenBandwidthPackageResponse>"}]',
+ 'title' => 'UnassociateCenBandwidthPackage',
+ 'summary' => 'Disassociates a Cloud Enterprise Network (CEN) from a bandwidth plan. After the disassociation, the bandwidth can be associated with another CEN instance.',
+ 'description' => 'No inter-region connections are configured in the bandwidth plan. For more information about how to delete inter-region connections, see [SetCenInterRegionBandwidthLimit](~~65942~~).'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'AssociateCenBandwidthPackage' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenbwp-4c2zaavbvh5fx****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.SetPostPay95BandwidthLimitError',
+ 'errorMessage' => 'Operation failed because set postpay 95 bandwidth limit error.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.UserCanNotUseBwp',
+ 'errorMessage' => 'The user can not use Cen bandwidthPackage.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","type":"json"}]',
+ 'title' => 'AssociateCenBandwidthPackage',
+ 'summary' => 'Associates a bandwidth plan with a Cloud Enterprise Network (CEN) instance.',
+ 'description' => 'You can associate multiple bandwidth plans with a CEN instance. However, the pair of areas connected by each bandwidth plan must be unique.'."\n"
+ ."\n"
+ .'For example, if a CEN instance is associated with a bandwidth plan that connects networks in the Chinese mainland, you cannot associate another bandwidth plan that also connects networks in the Chinese mainland with the CEN instance. However, you can associate a bandwidth plan that connects the Chinese mainland to North America with the CEN instance.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateTransitRouterPeerAttachment' => [
+ 'summary' => 'To connect network instances across regions, such as virtual private clouds (VPCs), virtual border routers (VBRs), and IPsec-VPN connections that are connected to transit routers, you must create an inter-region connection between the network instances that you want to connect. You can call the CreateTransitRouterPeerAttachment operation to create an inter-region connection on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '72307',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnFWWHEY',
+ ],
+ ],
+ '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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the local Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the local Enterprise Edition transit router 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' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the inter-region connection.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the inter-region connection.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'PeerTransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the peer transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-m5eq27g6bndum7e88****',
+ ],
+ ],
+ [
+ 'name' => 'PeerTransitRouterRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the peer transit router is deployed.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-qingdao',
+ ],
+ ],
+ [
+ 'name' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable the local Enterprise Edition transit router to automatically advertise the routes of the inter-region connection to the peer transit router. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): no'."\n"
+ .'* **true**: yes'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Bandwidth',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The bandwidth value of the inter-region connection. Unit: Mbit/s.'."\n"
+ ."\n"
+ .'* This parameter specifies the maximum bandwidth value for the inter-region connection if you set **BandwidthType** to **BandwidthPackage**.'."\n"
+ .'* This parameter specifies the bandwidth throttling threshold for the inter-region connection if you set **BandwidthType** to **DataTransfer**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100000000',
+ 'minimum' => '0',
+ 'example' => '2',
+ ],
+ ],
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the bandwidth plan that you want to associate with the inter-region connection.'."\n"
+ ."\n"
+ .'> If you set **BandwidthType** to **DataTransfer**, you can skip this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cenbwp-3xrxupouolw5ou****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The method that is used to allocate bandwidth to the inter-region connection. Valid values:'."\n"
+ ."\n"
+ .'* **BandwidthPackage**: allocates bandwidth from a bandwidth plan.'."\n"
+ .'* **DataTransfer**: bandwidth is billed based on the pay-by-data-transfer metering method.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'BandwidthPackage',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tag_A1',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'value_A1',
+ ],
+ ],
+ 'required' => false,
+ 'description' => 'The tags.',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'DefaultLinkType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The default line type.'."\n"
+ ."\n"
+ .'Valid values: Platinum and Gold.'."\n"
+ ."\n"
+ .'Platinum is supported only when BandwidthType is set to DataTransfer.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Gold',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-nwkiqfvw22qesz****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '59422BF5-BAAD-4CFD-9019-9557BD3ACFA3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterRegionId',
+ 'errorMessage' => 'The specified TransitRouterRegion does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRolePolicyForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRolePolicyForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.PeerTransitRouterId',
+ 'errorMessage' => 'PeerTransitRouterId is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterId',
+ 'errorMessage' => 'TransitRouterId is unsupported.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.Bandwidth',
+ 'errorMessage' => 'The parameter Bandwidth is mandatory.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Bandwidth',
+ 'errorMessage' => 'Bandwidth is illegal.',
+ ],
+ [
+ 'errorCode' => 'Forbbiden.TransitRouterServiceNotOpen',
+ 'errorMessage' => 'The user has not open transit router service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.BandwidthType',
+ 'errorMessage' => 'The specified BandwidthType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthType',
+ 'errorMessage' => 'BandwidthType is illegal.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.CenIdOrRegionId',
+ 'errorMessage' => 'Either CenId or RegionId must be specified.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.BandwidthHS',
+ 'errorMessage' => 'This bandwidth limit can only be set in China-AsiaPacific-HS',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CenFullLevel',
+ 'errorMessage' => 'CEN full level does not support TransitRouter',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CloudDataTransferService',
+ 'errorMessage' => 'CCN region not support cloud data transfer service.',
+ ],
+ [
+ 'errorCode' => 'InvalidPeerTransitRouterId.NotFound',
+ 'errorMessage' => 'The specified PeerTransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.PeerRegionId',
+ 'errorMessage' => 'PeerRegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRegionId',
+ 'errorMessage' => 'TransitRouterRegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation. ',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.BwpNotAssociated',
+ 'errorMessage' => 'Operation is invalid because a bandwidth package corresponding to the geographic span is not associated.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.BwpBusinessStatus',
+ 'errorMessage' => 'The CBN bandwidth package is not in a valid business state for the operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenBandwidthPackageId',
+ 'errorMessage' => 'Parameter CenBandwidthPackageId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.BwpBandwidthExceeded',
+ 'errorMessage' => 'Operation is invalid because the total bandwidth limit has exceeded that of the bandwidth package.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CdtDefaultLinkTypeOnlySupportPlatinumOrGold',
+ 'errorMessage' => 'DataTransfer only support Platinum and Gold.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.BandwidthPackageDefaultLinkTypeOnlySupportGold',
+ 'errorMessage' => 'Cen bandwidthPackage only support Gold.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CdtDefaultLinkTypeOnlySupportGold',
+ 'errorMessage' => 'CDT only support Gold when both transitrouters for cross regional connections are not all enterprise version.',
+ ],
+ [
+ 'errorCode' => 'OperationNotAllowed.DefaultLinkTypeOnlySupportGold',
+ 'errorMessage' => 'Operation is not allowed because this user can only set default link type to Gold.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.UserCanNotBuyCrossBorderBwp',
+ 'errorMessage' => 'According to the laws and regulations of the operator and mainland China, you are currently not eligible to purchase or renew a cross-border bandwidth package. Please contact online customer service or your business manager for consultation.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.IdentityRegistrationStatusNotSupport',
+ 'errorMessage' => 'Real name registration of enterprises required.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.OnlyOneRegionSupportIpv6',
+ 'errorMessage' => 'Peer Attachment is only allowed when both regions support IPv6 or do not support IPv6 at all.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation',
+ 'errorMessage' => 'Operation is invalid.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.ResourceOwnerTransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service of the account to which the resource belongs has been suspended due to arrears. Please notify the other party to renew the service and try again.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.TransitRouterServiceExpired',
+ 'errorMessage' => 'The transit router service is out of service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.RegionId',
+ 'errorMessage' => 'The specified RegionId does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.Bandwidth',
+ 'errorMessage' => 'Bandwidth quota exceeded.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.PeerTransitRouterId',
+ 'errorMessage' => 'The specified parameter PeerTransitRouterId is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ResourceType',
+ 'errorMessage' => 'The specified parameter ResourceType is invalid.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CdtDefaultLinkTypeOnlySupportUnderlaySilver',
+ 'errorMessage' => 'CDT only support UnderlaySilver when both transitrouters for cross regional connections are not all enterprise version.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.DefaultLinkTypeOnlySupportUnderlaySilver',
+ 'errorMessage' => 'Cen bandwidthPackage only support UnderlaySilver.',
+ ],
+ [
+ 'errorCode' => 'OperationNotAllowed.DefaultLinkTypeOnlySupportUnderlaySilver',
+ 'errorMessage' => 'This user can only set the default link type to UnderlaySilver.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.ValidateVbrInstanceFailedForLowLatencyCircuit',
+ 'errorMessage' => 'Operation failed when validate VBR instance for Low Latency Circuit.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-nwkiqfvw22qesz****\\",\\n \\"RequestId\\": \\"59422BF5-BAAD-4CFD-9019-9557BD3ACFA3\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterPeerAttachmentResponse>\\n <TransitRouterAttachmentId>tr-attach-nwkiqfvw22qesz****</TransitRouterAttachmentId>\\n <RequestId>59422BF5-BAAD-4CFD-9019-9557BD3ACFA3</RequestId>\\n</CreateTransitRouterPeerAttachmentResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterPeerAttachment',
+ 'description' => '* Enterprise Edition transit routers allow you to allocate bandwidth resources to inter-region connections by using the following methods:'."\n"
+ ."\n"
+ .' * **Allocate bandwidth resources from a bandwidth plan**:'."\n"
+ ."\n"
+ .' You must purchase a bandwidth plan, and then allocate bandwidth resources from the bandwidth plan to inter-region connections. For more information about how to purchase a bandwidth plan, see [CreateCenBandwidthPackage](~~65919~~).'."\n"
+ ."\n"
+ .' * **Use pay-by-data-transfer bandwidth resources**:'."\n"
+ ."\n"
+ .' You can set a maximum bandwidth value for an inter-region connection. Then, you are charged for the amount of data transfer over the connection. For more information, see [Inter-region data transfer](~~337827~~).'."\n"
+ ."\n"
+ .'* **CreateTransitRouterPeerAttachment** 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 **ListTransitRouterPeerAttachments** operation to query the status of an inter-region connection.'."\n"
+ ."\n"
+ .' * If the inter-region connection is in the **Attaching** state, the inter-region connection is being created. In this case, you can query the connection but cannot perform other operations on the connection.'."\n"
+ .' * If the inter-region connection is in the **Attached** state, the inter-region connection is created.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteTransitRouterPeerAttachment' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The client token that you want to use 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' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-gyjhtx9sjsxhm6****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. If the request fails to pass the check, an error message is returned. If the request passes the dry run, the system returns the ID of the request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Force',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to forcefully delete the inter-region connection. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): Check for relevant resources, including associated forwarding and route learning, before deleting the inter-region connection. If such a resource exists, the VPC connection is not deleted and an error message is returned.'."\n"
+ .'* **true**: Delete the inter-region connection and all relevant resources.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'A01FEDD7-7D69-4EB3-996D-CF79F6F885CA',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.RouteTablePropagationExist',
+ 'errorMessage' => 'Operation failed because You are not allowed to delete TransitAttachment with TransitRouter RouteTable Associated.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteEntryExist',
+ 'errorMessage' => 'Operation failed because the TransitRouterAttachment exists in RouteTable.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteTableAssociationExist',
+ 'errorMessage' => 'Operation failed because TransitRouterRouteTable exists',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TrafficQosExist',
+ 'errorMessage' => 'Operation failed because TrafficQos exists',
+ ],
+ [
+ 'errorCode' => 'InvalidValue.PrefixlistCidr',
+ 'errorMessage' => 'Invalid cidr exist in the specified prefixlist.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.FlowLogExistOrNisOpened',
+ 'errorMessage' => 'Operation failed because FlowLog exists or Nis opened.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.NotSupportForceDelete',
+ 'errorMessage' => 'Not support force delete attachment.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The operation is not supported because of the wrong transitRouter type.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.MulticastGroupExist',
+ 'errorMessage' => 'Operation is failed because attachment exists in multicast groups.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterAttachment',
+ 'errorMessage' => 'The specified TransitRouterAttachment has configured TransitRegion. Please remove the configuration first.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.PrefixListExist',
+ 'errorMessage' => 'Operation failed because PrefixList exists.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InterRegionCloudRouteEntryExist',
+ 'errorMessage' => 'Operation failed because inter region cloud route associated with specified attachment exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A01FEDD7-7D69-4EB3-996D-CF79F6F885CA\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterPeerAttachmentResponse>\\n <RequestId>A01FEDD7-7D69-4EB3-996D-CF79F6F885CA</RequestId>\\n</DeleteTransitRouterPeerAttachmentResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterPeerAttachment',
+ 'summary' => 'Deletes an inter-region connection from an Enterprise Edition transit router.',
+ 'description' => '**DeleteTransitRouterPeerAttachment** 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 **ListTransitRouterPeerAttachments** to query the status of an inter-region connection.'."\n"
+ ."\n"
+ .'* If an inter-region connection is in the **Detaching** state, the inter-region connection is being deleted. You can query the inter-region connection but cannot perform other operations.'."\n"
+ .'* If an inter-region connection cannot be found, the inter-region connection is deleted.'."\n"
+ ."\n"
+ .'## Prerequisites'."\n"
+ ."\n"
+ .'Before you begin, make sure that the Enterprise Edition transit router that you use to create inter-region connections meets the following prerequisites:'."\n"
+ ."\n"
+ .'* No associated forwarding correlation is established between the inter-region connection and the route tables of the Enterprise Edition transit router. For more information about how to delete an associated forwarding correlation, see [DissociateTransitRouterAttachmentFromRouteTable](~~260944~~).'."\n"
+ .'* No route learning correlation is established between the inter-region connection and the route tables of the Enterprise Edition transit router. For more information about how to delete a route learning correlation, see [DisableTransitRouterRouteTablePropagation](~~260945~~).'."\n"
+ .'* The route tables of the Enterprise Edition transit router do not contain a custom route entry whose next hop is the network instance connection. For more information about how to delete custom routes from route tables of Enterprise Edition transit routers, see [DeleteTransitRouterRouteEntry](~~261240~~).'."\n"
+ .'* The route table does not contain a route whose next hop is the inter-region connection and that is generated from a prefix list. You can delete routes from a route table by disassociating the route table from the prefix list. For more information, see [DeleteTransitRouterPrefixListAssociation](~~445486~~).'."\n"
+ .'* No quality of service (QoS) policy is configured for the inter-region connection. For more information about how to delete QoS policies, see [DeleteCenInterRegionTrafficQosPolicy](~~427547~~).'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'SetCenInterRegionBandwidthLimit' => [
+ 'summary' => 'Configures, modifies, or deletes the bandwidth of inter-region connections for a Basic Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '72421',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn7IORX8',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmx****',
+ ],
+ ],
+ [
+ 'name' => 'LocalRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the local region.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query regions where you can attach network instances to a CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'OppositeRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the peer region.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'us-west-1',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthLimit',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The maximum bandwidth value of the inter-region connection. Unit: Mbit/s.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '8',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The bandwidth allocation method. Valid values:'."\n"
+ ."\n"
+ .'**BandwidthPackage**: allocates bandwidth from a bandwidth plan.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'BandwidthPackage',
+ 'default' => 'BandwidthPackage',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '530BC816-F575-412A-AAB2-435125D26328',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'MissingParam.CbnBandwidthPackageId',
+ 'errorMessage' => 'There are more than one suitable cen bandwidth package',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.CbnBandwidthPackageId',
+ 'errorMessage' => '%s',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InvalidOperation',
+ 'errorMessage' => 'The operation is failed because the operation is not support.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.Attachment',
+ 'errorMessage' => 'The cross region connection contains an existing bandwidth. The operation is not supported.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UnsupportChargeType',
+ 'errorMessage' => 'The charge type is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TrafficQosPolicyExist',
+ 'errorMessage' => 'Operation unsupported because traffic qos policy exists.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.BandwidthType',
+ 'errorMessage' => 'The specified BandwidthType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthType',
+ 'errorMessage' => 'BandwidthType is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Bandwidth',
+ 'errorMessage' => 'Bandwidth is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.BandwidthTypeAndCenBandwidthPackageId',
+ 'errorMessage' => 'DataTransfer and CenBandwidthPackageId is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'IdentityRegistrationStatusNotSupport',
+ 'errorMessage' => 'Real name registration of enterprises required.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthLessThanQosPolicyBandwidth',
+ 'errorMessage' => 'The input bandwidth value is less than the sum of the Qos policy bandwidth.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.RegionId',
+ 'errorMessage' => 'The specified RegionId does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.Bandwidth',
+ 'errorMessage' => 'Bandwidth quota exceeded.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"530BC816-F575-412A-AAB2-435125D26328\\"\\n}","errorExample":""},{"type":"xml","example":"<SetCenInterRegionBandwidthLimitResponse>\\n <RequestId>530BC816-F575-412A-AAB2-435125D26328</RequestId>\\n</SetCenInterRegionBandwidthLimitResponse>","errorExample":""}]',
+ 'title' => 'SetCenInterRegionBandwidthLimit',
+ 'description' => 'This operation is used to manage bandwidth of inter-region connections only for Basic Edition transit routers.'."\n"
+ ."\n"
+ .'### [](#)Prerequisites'."\n"
+ ."\n"
+ .'The Cloud Enterprise Network (CEN) instance is associated with a bandwidth plan. For more information, see [CreateCenBandwidthPackage](~~65919~~) and [AssociateCenBandwidthPackage](~~65934~~).'."\n"
+ ."\n"
+ .'You can call the **SetCenInterRegionBandwidthLimit** operation to configure, change, or remove the bandwidth limit of an inter-region connection.'."\n"
+ ."\n"
+ .'* If you set **BandwidthLimit** to a value other than 0, the bandwidth of the inter-region connection is set to the specified value.'."\n"
+ .'* If you set **BandwidthLimit** to 0, the bandwidth of the inter-region connection is no longer limited.'."\n"
+ ."\n"
+ .'### [](#)Limits'."\n"
+ ."\n"
+ .'* The bandwidth limit of an inter-region connection cannot exceed the bandwidth limit of the associated bandwidth plan.'."\n"
+ ."\n"
+ .'* The sum of bandwidth limits of all inter-region connections cannot exceed the bandwidth limit of the associated bandwidth plan.'."\n"
+ ."\n"
+ .'* If bandwidth multiplexing is enabled for an inter-region connection, you cannot change the bandwidth of the inter-region connection.'."\n"
+ ."\n"
+ .'* The **SetCenInterRegionBandwidthLimit** operation can be used to configure, modify, or delete the bandwidth of inter-region connections only for Basic Edition transit routers.'."\n"
+ ."\n"
+ .' To configure, modify, or delete the bandwidth of inter-region connections for Enterprise Edition transit routers, call the [CreateTransitRouterPeerAttachment](~~261363~~), [UpdateTransitRouterPeerAttachmentAttribute](~~261229~~), or [DeleteTransitRouterPeerAttachment](~~261227~~) operation.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UpdateTransitRouterPeerAttachmentAttribute' => [
+ 'summary' => 'Modifies an inter-region connection on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72436',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnFWWHEY',
+ ],
+ ],
+ '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, **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' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-ft94dcrbc3e5taun3x',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the inter-region connection.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the inter-region connection.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'AutoPublishRouteEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable the local Enterprise Edition transit router to automatically advertise the routes of the inter-region connection to the peer transit router. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): no'."\n"
+ .'* **true**: yes'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run to check information such as the permissions and the instance status. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Bandwidth',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The bandwidth value of the inter-region connection. Unit: Mbit/s.'."\n"
+ ."\n"
+ .'* This parameter specifies the maximum bandwidth value for the inter-region connection if you set **BandwidthType** to **BandwidthPackage**.'."\n"
+ .'* This parameter specifies the bandwidth throttling threshold for the inter-region connection if you set **BandwidthType** to **DataTransfer**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100000000',
+ 'minimum' => '0',
+ 'example' => '2',
+ ],
+ ],
+ [
+ 'name' => 'CenBandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the bandwidth plan that is used to allocate bandwidth to the inter-region connection.'."\n"
+ ."\n"
+ .'> If you set **BandwidthType** to **DataTransfer**, you do not need to set this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cenbwp-3xrxupouolw5ou****',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The bandwidth allocation method. Valid values:'."\n"
+ ."\n"
+ .'* **BandwidthPackage**: allocates bandwidth from a bandwidth plan.'."\n"
+ .'* **DataTransfer**: bandwidth is billed based on the pay-by-data-transfer metering method.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'BandwidthPackage',
+ ],
+ ],
+ [
+ 'name' => 'DefaultLinkType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The default line type.'."\n"
+ ."\n"
+ .'Valid values: Platinum and Gold.'."\n"
+ ."\n"
+ .'Platinum is supported only when BandwidthType is set to DataTransfer.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Gold',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'A01FEDD7-7D69-4EB3-996D-CF79F6F885CA',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.BandwidthType',
+ 'errorMessage' => 'The specified BandwidthType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.Bandwidth',
+ 'errorMessage' => 'The parameter Bandwidth is mandatory.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Attachment',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthType',
+ 'errorMessage' => 'BandwidthType is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Bandwidth',
+ 'errorMessage' => 'Bandwidth is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.BandwidthPackageDefaultLinkTypeOnlySupportGold',
+ 'errorMessage' => 'Cen bandwidthPackage only support Gold.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CdtDefaultLinkTypeOnlySupportPlatinumOrGold',
+ 'errorMessage' => 'DataTransfer only support Platinum and Gold.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CdtDefaultLinkTypeOnlySupportGold',
+ 'errorMessage' => 'CDT only support Gold when both transitrouters for cross regional connections are not all enterprise version.',
+ ],
+ [
+ 'errorCode' => 'OperationNotAllowed.DefaultLinkTypeOnlySupportGold',
+ 'errorMessage' => 'Operation is not allowed because this user can only set default link type to Gold.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterAttachment',
+ 'errorMessage' => 'The specified TransitRouterAttachment has configured TransitRegion. Please remove the configuration first.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthLessThanQosPolicyBandwidth',
+ 'errorMessage' => 'The input bandwidth value is less than the sum of the Qos policy bandwidth.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthPackageStatus',
+ 'errorMessage' => 'The status of the bandwidth package is incorrect.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.Bandwidth',
+ 'errorMessage' => 'Bandwidth quota exceeded.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.BandwidthTypeAndCenBandwidthPackageId',
+ 'errorMessage' => 'DataTransfer and CenBandwidthPackageId is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CloudDataTransferService',
+ 'errorMessage' => 'CCN region not support cloud data transfer service.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CdtDefaultLinkTypeOnlySupportUnderlaySilver',
+ 'errorMessage' => 'CDT only support UnderlaySilver when both transitrouters for cross regional connections are not all enterprise version.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.DefaultLinkTypeOnlySupportUnderlaySilver',
+ 'errorMessage' => 'Cen bandwidthPackage only support UnderlaySilver.',
+ ],
+ [
+ 'errorCode' => 'OperationNotAllowed.DefaultLinkTypeOnlySupportUnderlaySilver',
+ 'errorMessage' => 'This user can only set the default link type to UnderlaySilver.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterPeerAttachments',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A01FEDD7-7D69-4EB3-996D-CF79F6F885CA\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTransitRouterPeerAttachmentAttributeResponse>\\n <RequestId>A01FEDD7-7D69-4EB3-996D-CF79F6F885CA</RequestId>\\n</UpdateTransitRouterPeerAttachmentAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateTransitRouterPeerAttachmentAttribute',
+ 'description' => '**UpdateTransitRouterPeerAttachmentAttribute** 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 **ListTransitRouterPeerAttachments** operation to query the status of an inter-region connection.'."\n"
+ ."\n"
+ .'* If an inter-region connection is in the **Modifying** state, the inter-region connection is being modified. You can query the inter-region connection but cannot perform other operations.'."\n"
+ .'* If an inter-region connection is in the **Attached** state, the inter-region connection is modified.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouterPeerAttachments' => [
+ 'summary' => 'Queries inter-region connections on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '72394',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnFWWHEY',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-j3jzhw1zpau2km****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the Enterprise Edition transit router 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' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-5u4qbayfv2io5v****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries returned per page. Default value: **20**. Maximum value: **100**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '0',
+ 'example' => '20',
+ ],
+ ],
+ [
+ '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' => '1',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tag.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ '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 the **NextToken** parameter is empty, no next page exists.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'dd20****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'AA97AFA3-8E48-4BD7-9F3E-A9F6176018A0',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TransitRouterAttachments' => [
+ 'description' => 'A list of inter-region connections.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the inter-region connection.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CreationTime' => [
+ 'description' => 'The time when the inter-region connection 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-16T02:50Z',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the inter-region connection. Valid values:'."\n"
+ ."\n"
+ .'* **Attached**'."\n"
+ .'* **Attaching**'."\n"
+ .'* **Detaching**'."\n"
+ .'* **Detached**'."\n",
+ 'type' => 'string',
+ 'example' => 'Attached',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-5u4qbayfv2io5v****',
+ ],
+ 'BandwidthType' => [
+ 'description' => 'The bandwidth allocation method. Valid values:'."\n"
+ ."\n"
+ .'* **BandwidthPackage**: allocates bandwidth from a bandwidth plan.'."\n"
+ .'* **DataTransfer**: bandwidth is billed based on the pay-by-data-transfer metering method.'."\n",
+ 'type' => 'string',
+ 'example' => 'BandwidthPackage',
+ ],
+ 'CenBandwidthPackageId' => [
+ 'description' => 'The ID of the bandwidth plan that is used to allocate bandwidth to the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenbwp-3xrxupouolw5ou****',
+ ],
+ 'TransitRouterAttachmentDescription' => [
+ 'description' => 'The description of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'testdesc',
+ ],
+ 'RegionId' => [
+ 'description' => 'The region ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'PeerTransitRouterId' => [
+ 'description' => 'The ID of the peer transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-m5eq27g6bndum7e88****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ 'PeerTransitRouterRegionId' => [
+ 'description' => 'The region ID of the peer transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-qingdao',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of the resource to which the transit router is connected. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **TR**: transit router'."\n",
+ 'type' => 'string',
+ 'example' => 'TR',
+ ],
+ 'Bandwidth' => [
+ 'description' => 'The bandwidth value of the inter-region connection. Unit: Mbit/s.'."\n"
+ ."\n"
+ .'* This parameter specifies the maximum bandwidth value for the inter-region connection if you set **BandwidthType** to **BandwidthPackage**.'."\n"
+ .'* This parameter specifies the bandwidth throttling threshold for the inter-region connection if you set **BandwidthType** to **DataTransfer**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'GeographicSpanId' => [
+ 'description' => 'The areas that are connected by the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'china_china',
+ ],
+ 'PeerTransitRouterOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the peer transit router belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '253460731706911258',
+ ],
+ 'AutoPublishRouteEnabled' => [
+ 'description' => 'Indicates whether the local Enterprise Edition transit router automatically advertises routes of the cross-region connection to the peer transit router. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default)'."\n"
+ .'* **true**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'TransitRouterAttachmentName' => [
+ 'description' => 'The name of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Tags' => [
+ 'description' => 'A list of tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'tag_A1',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ 'description' => 'The tags.',
+ ],
+ ],
+ 'CenId' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-j3jzhw1zpau2km****'."\n",
+ ],
+ 'DefaultLinkType' => [
+ 'description' => 'The default line type.'."\n"
+ ."\n"
+ .'* **Gold** (default)'."\n"
+ .'* **Platinum**'."\n",
+ 'type' => 'string',
+ 'example' => 'Gold',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrInstance',
+ 'errorMessage' => 'The specified TransitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified Region is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterId',
+ 'errorMessage' => 'The specified TransitRouterId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionIdOrTransitRouterId',
+ 'errorMessage' => 'The specified TransitRouterId or RegionId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenIdOrRegionId',
+ 'errorMessage' => 'The specified CenId or RegionId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagKey',
+ 'errorMessage' => 'The tag keys are not valid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagValue',
+ 'errorMessage' => 'The tag values are not valid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"dd20****\\",\\n \\"RequestId\\": \\"AA97AFA3-8E48-4BD7-9F3E-A9F6176018A0\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"TransitRouterAttachments\\": [\\n {\\n \\"CreationTime\\": \\"2021-06-16T02:50Z\\",\\n \\"Status\\": \\"Attached\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-5u4qbayfv2io5v****\\",\\n \\"BandwidthType\\": \\"BandwidthPackage\\",\\n \\"CenBandwidthPackageId\\": \\"cenbwp-3xrxupouolw5ou****\\",\\n \\"TransitRouterAttachmentDescription\\": \\"testdesc\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"PeerTransitRouterId\\": \\"tr-m5eq27g6bndum7e88****\\",\\n \\"TransitRouterId\\": \\"tr-bp1su1ytdxtataupl****\\",\\n \\"PeerTransitRouterRegionId\\": \\"cn-qingdao\\",\\n \\"ResourceType\\": \\"TR\\",\\n \\"Bandwidth\\": 2,\\n \\"GeographicSpanId\\": \\"china_china\\",\\n \\"PeerTransitRouterOwnerId\\": 253460731706911260,\\n \\"AutoPublishRouteEnabled\\": false,\\n \\"TransitRouterAttachmentName\\": \\"test\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"tag_A1\\",\\n \\"Value\\": \\"test\\"\\n }\\n ],\\n \\"CenId\\": \\"cen-j3jzhw1zpau2km****\\\\n\\",\\n \\"DefaultLinkType\\": \\"Gold\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterPeerAttachmentsResponse>\\n <TotalCount>1</TotalCount>\\n <RequestId>AA97AFA3-8E48-4BD7-9F3E-A9F6176018A0</RequestId>\\n <MaxResults>20</MaxResults>\\n <TransitRouterAttachments>\\n <TransitRouterAttachmentId>tr-attach-5u4qbayfv2io5v****</TransitRouterAttachmentId>\\n <Status>Attached</Status>\\n <GeographicSpanId>china_china</GeographicSpanId>\\n <PeerTransitRouterOwnerId>253460731706911258</PeerTransitRouterOwnerId>\\n <TransitRouterAttachmentName>test</TransitRouterAttachmentName>\\n <ResourceType>TR</ResourceType>\\n <BandwidthType>BandwidthPackage</BandwidthType>\\n <AutoPublishRouteEnabled>false</AutoPublishRouteEnabled>\\n <Bandwidth>0</Bandwidth>\\n <CreationTime>2021-06-16T02:50Z</CreationTime>\\n <BandwidthPackageId/>\\n <PeerTransitRouterId>tr-m5eq27g6bndum7e88****</PeerTransitRouterId>\\n <RegionId>cn-hangzhou</RegionId>\\n <CenBandwidthPackageId/>\\n <PeerTransitRouterRegionId>cn-qingdao</PeerTransitRouterRegionId>\\n <TransitRouterId>tr-bp1su1ytdxtataupl****</TransitRouterId>\\n </TransitRouterAttachments>\\n</ListTransitRouterPeerAttachmentsResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterPeerAttachments',
+ 'description' => 'You can use the following methods to query inter-region connections on an Enterprise Edition transit router:'."\n"
+ ."\n"
+ .'* Query all inter-region connections on an Enterprise Edition transit router by specifying the ID of the Enterprise Edition transit router.'."\n"
+ .'* Query all inter-region connections on an Enterprise Edition transit router by specifying the ID of the Cloud Enterprise Network (CEN) instance and the ID of the region where the transit router is deployed.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenInterRegionBandwidthLimits' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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. Default value: **10**. Valid values: **1** to **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-pfa6ugf3xl0qsd****',
+ ],
+ ],
+ [
+ 'name' => 'TrRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ccn-cn-shanghai',
+ ],
+ ],
+ ],
+ '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' => '7A30C665-8766-5AAA-9274-C97380E2D850',
+ ],
+ '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',
+ ],
+ 'CenInterRegionBandwidthLimits' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenInterRegionBandwidthLimit' => [
+ 'description' => 'A list of inter-region connections.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The bandwidth status of the inter-region connection. Valid values:'."\n"
+ ."\n"
+ .'* **Active**'."\n"
+ .'* **Modifying**'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'BandwidthPackageId' => [
+ 'description' => 'The ID of the bandwidth plan.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenbwp-uenczwb592fnvv****',
+ ],
+ 'OppositeRegionId' => [
+ 'description' => 'The ID of the peer region.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'GeographicSpanId' => [
+ 'description' => 'The IDs of the local and peer regions.'."\n",
+ 'type' => 'string',
+ 'example' => 'china_china',
+ ],
+ 'CenId' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-pfa6ugf3xl0qsd****',
+ ],
+ 'LocalRegionId' => [
+ 'description' => 'The ID of the local region.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-cn-shanghai',
+ ],
+ 'BandwidthLimit' => [
+ 'description' => 'The maximum bandwidth of the inter-region connection. Unit: Mbit/s.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1',
+ ],
+ 'BandwidthType' => [
+ 'description' => 'The bandwidth allocation method. Valid values:'."\n"
+ ."\n"
+ .'* **BandwidthPackage**: allocates bandwidth from a bandwidth plan.'."\n"
+ .'* **DataTransfer**: bandwidth is billed based on the pay-by-data-transfer metering method.'."\n",
+ 'type' => 'string',
+ 'example' => 'BandwidthPackage',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"7A30C665-8766-5AAA-9274-C97380E2D850\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"CenInterRegionBandwidthLimits\\": {\\n \\"CenInterRegionBandwidthLimit\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"BandwidthPackageId\\": \\"cenbwp-uenczwb592fnvv****\\",\\n \\"OppositeRegionId\\": \\"cn-hangzhou\\",\\n \\"GeographicSpanId\\": \\"china_china\\",\\n \\"CenId\\": \\"cen-pfa6ugf3xl0qsd****\\",\\n \\"LocalRegionId\\": \\"ccn-cn-shanghai\\",\\n \\"BandwidthLimit\\": 1,\\n \\"BandwidthType\\": \\"BandwidthPackage\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"CenInterRegionBandwidthLimits\\":{\\n \\"CenInterRegionBandwidthLimit\\":[\\n {\\"\\n Status\\":\\" Active \\",\\n \\"LocalRegionId\\":\\"cn-hangzhou-667\\",\\n \\"CenId\\":\\"Cen-to55jjgdqd4pfvby3d\\",\\n \\"OppositeRegionId\\":\\"cn-hangzhou-668\\",\\n \\"BandwidthLimit\\":1000\\n }\\n ]\\n },\\n \\"PageNumber\\":1,\\n \\"TotalCount\\":1,\\n \\"PageSize\\":10,\\n \\"RequestId\\":\\"187507F9-D955-41A5-98EB-7E4471F9D8E7\\"\\n}"},{"type":"xml","example":"<DescribeCenInterRegionBandwidthLimitsResponse>\\n\\n<CenInterRegionBandwidthLimits>\\n <CenInterRegionBandwidthLimit>\\n <Status>Active</Status>\\n <GeographicSpanId>china_china</GeographicSpanId>\\n <OppositeRegionId>cn-hangzhou</OppositeRegionId>\\n <CenId>cen-pfa6ugf3xl0qsd****</CenId>\\n <BandwidthPackageId>cenbwp-uenczwb592fnvv****</BandwidthPackageId>\\n <BandwidthLimit>1</BandwidthLimit>\\n <LocalRegionId>ccn-cn-shanghai</LocalRegionId>\\n </CenInterRegionBandwidthLimit>\\n</CenInterRegionBandwidthLimits>\\n<TotalCount>1</TotalCount>\\n<RequestId>7A30C665-8766-5AAA-9274-C97380E2D850</RequestId>\\n<PageSize>10</PageSize>\\n<PageNumber>1</PageNumber>\\n</DescribeCenInterRegionBandwidthLimitsResponse>\\n","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<DescribeCenInterRegionBandwidthLimitsResponse>\\n <CenInterRegionBandwidthLimits>\\n <CenInterRegionBandwidthLimit>\\n <Status> Active </Status>\\n <LocalRegionId>cn-hangzhou-667</LocalRegionId>\\n <CenId>Cen-to55jjgdqd4pfvby3d</CenId>\\n <OppositeRegionId>cn-hangzhou-668</OppositeRegionId>\\n <BandwidthLimit>1000</BandwidthLimit>\\n </CenInterRegionBandwidthLimit>\\n </CenInterRegionBandwidthLimits>\\n <PageNumber>1</PageNumber>\\n <TotalCount>1</TotalCount>\\n <PageSize>10</PageSize>\\n <RequestId>C4CF2E97-5C04-4A9E-B908-BE95FF68C7B2</RequestId>\\n</DescribeCenInterRegionBandwidthLimitsResponse>"}]',
+ 'title' => 'DescribeCenInterRegionBandwidthLimits',
+ 'summary' => 'Queries the bandwidth of connections between regions.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateCenChildInstanceRouteEntryToAttachment' => [
+ 'summary' => 'Adds a route entry to a network instance and sets the next hop of the destination CIDR block to the transit router in the current region.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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 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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run to check information such as the permissions and the instance status. Valid values:'."\n"
+ ."\n"
+ .'* **false**: performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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"
+ .'> This parameter is not in use.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp1n6cbxcszp55vxo****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-r1qhupkc19iadz****',
+ ],
+ ],
+ [
+ 'name' => 'RouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vrt-bp1msipdczo9lejup****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '10.0.0.0/24',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'A95A100B-3F3A-56F4-A5DE-19DB7E994807',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Forbidden.VpcAsInternetGateway',
+ 'errorMessage' => 'It’s forbidden that using Vpc as internet gateway for your private IDC.',
+ ],
+ [
+ 'errorCode' => 'InvalidCIDRBlock.Duplicate',
+ 'errorMessage' => 'Specified CIDR block is already exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidCidrBlock.Malformed',
+ 'errorMessage' => 'Specified CIDR block is not valid.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.RouteConflict',
+ 'errorMessage' => 'Route conflict exists in routing table.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UnsupportnexthopType',
+ 'errorMessage' => 'The specified next hop type is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteEntry',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.RouteTableTypeNotPermitted',
+ 'errorMessage' => 'The operation is not allowed because of RouteTableTypeNotPermitted.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'SystemBusy',
+ 'errorMessage' => 'The system is busy. Please try again later.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.DestinationCidrBlockOverlapWithVSwitch',
+ 'errorMessage' => 'The destination network segment specified in the route entry overlaps with the vSwitch network segment.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A95A100B-3F3A-56F4-A5DE-19DB7E994807\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateCenChildInstanceRouteEntryToAttachmentResponse>\\n <RequestId>A95A100B-3F3A-56F4-A5DE-19DB7E994807</RequestId>\\n</CreateCenChildInstanceRouteEntryToAttachmentResponse>","errorExample":""}]',
+ 'title' => 'CreateCenChildInstanceRouteEntryToAttachment',
+ 'description' => '* You can add routes only to virtual private clouds (VPCs) or virtual border routers (VBRs) that are connected to an Enterprise Edition transit router.'."\n"
+ ."\n"
+ .'* By default, the next hop of the routes is the **transit router connection**, which is the connection between the VBR and the Enterprise Edition transit router. You cannot modify the next hop.'."\n"
+ ."\n"
+ .'* **CreateCenChildInstanceRouteEntryToAttachment** 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 **DescribeRouteEntryList** operation to query the status of a route.'."\n"
+ ."\n"
+ .' * If a route is in the **Pending** state, the route is being created. You can query the route but cannot perform other operations.'."\n"
+ .' * If a route is in the **Available** state, the route is created.'."\n",
+ ],
+ 'CreateCenChildInstanceRouteEntryToCen' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7febra5nqj7jjh****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-k1alm2jbuwibhxtx2****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: a virtual private cloud (VPC)'."\n"
+ .'* **VBR**: a virtual border router (VBR)'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ '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,
+ 'docRequired' => true,
+ 'example' => 'ap-southeast-5',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceAliUid',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n"
+ ."\n"
+ .'> If the network instance belongs to another Alibaba Cloud account, this parameter is required.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1787100000000000',
+ ],
+ ],
+ [
+ 'name' => 'RouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-k1aa8ulqs39f86op8****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route.'."\n"
+ ."\n"
+ .'Specify the value of this parameter in CIDR notation. Example: 192.168.10.0/24.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '192.168.22.0/24',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '437ED236-BE47-5370-8695-15C58C7A8014',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"437ED236-BE47-5370-8695-15C58C7A8014\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateCenChildInstanceRouteEntryToCenResponse>\\r\\n<RequestId>437ED236-BE47-5370-8695-15C58C7A8014</RequestId>\\r\\n</CreateCenChildInstanceRouteEntryToCenResponse>","errorExample":""}]',
+ 'title' => 'CreateCenChildInstanceRouteEntryToCen',
+ 'summary' => 'Adds routes to a network instance.',
+ 'description' => '## Limits'."\n"
+ ."\n"
+ .'* By default, the CreateCenChildInstanceRouteEntryToCen operation is unavailable. To call this operation,[submit a ticket](https://workorder-intl.console.aliyun.com/#/ticket/createIndex).'."\n"
+ .'* You cannot add a route entry to an Enterprise Edition transit router by calling the CreateCenChildInstanceRouteEntryToCen operation.'."\n"
+ .'* By default, the next hop of the route entry is the regional gateway of the Cloud Enterprise Network (CEN) instance. You cannot modify the next hop.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteCenChildInstanceRouteEntryToAttachment' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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"
+ ."\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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run to check information such as the permissions and the instance status. Valid values:'."\n"
+ ."\n"
+ .'* **false**: performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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"
+ ."\n"
+ .'> This parameter is not in use.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-wgcl0ik5o8jakq****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-r1qhupkc19iadz****',
+ ],
+ ],
+ [
+ 'name' => 'RouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1osd9opvegfpowc****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '10.0.1.0/24',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '250E717B-9823-5FD8-A1C6-5714234FB825',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidRouteEntry.NotFound',
+ 'errorMessage' => 'Route entry not exists.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.VpcRouteEntry',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Vpc',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidCidrBlock.Malformed',
+ 'errorMessage' => 'The specified CIDR block is not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"250E717B-9823-5FD8-A1C6-5714234FB825\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteCenChildInstanceRouteEntryToAttachmentResponse>\\n <RequestId>250E717B-9823-5FD8-A1C6-5714234FB825</RequestId>\\n</DeleteCenChildInstanceRouteEntryToAttachmentResponse>","errorExample":""}]',
+ 'title' => 'DeleteCenChildInstanceRouteEntryToAttachment',
+ 'summary' => 'Deletes a route of a network instance from an Enterprise Edition transit router.',
+ 'description' => '* You can delete routes only from virtual private clouds (VPCs) and virtual border routers (VBRs) whose next hop is an **Enterprise Edition transit router connection**, which is the connection to the network instance.'."\n"
+ ."\n"
+ .'* **DeleteCenChildInstanceRouteEntryToAttachment** 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 **DescribeRouteEntryList** operation to query the status of a route.'."\n"
+ ."\n"
+ .' * If a route is in the **Deleting** state, the route is being deleted. You can query the route but cannot perform other operations.'."\n"
+ .' * If a route cannot be found, the route is deleted.'."\n",
+ ],
+ 'DeleteCenChildInstanceRouteEntryToCen' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7febra5nqj7jjh****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-k1alm2jbuwibhxtx2****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: a virtual private cloud (VPC)'."\n"
+ .'* **VBR**: a virtual border router (VBR)'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ '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 obtain the region ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'ap-southeast-5',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceAliUid',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the network instance belongs.'."\n"
+ ."\n"
+ .'> If the network instance and the CEN instance belong to different Alibaba Cloud accounts, this parameter is required.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1787100000000000',
+ ],
+ ],
+ [
+ 'name' => 'RouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-k1aa8ulqs39f86op8****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route.'."\n"
+ ."\n"
+ .'Specify the value of this parameter in CIDR notation. Example: 192.168.10.0/24.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '192.168.22.0/24',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'C05000A4-2FC5-5B2C-9527-954044DE2CF3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.VpcNotAttachedToCen',
+ 'errorMessage' => 'Operation failed because vpc not attached to cen.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InvalidChildInstanceType',
+ 'errorMessage' => 'Child instance type is invalid for this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C05000A4-2FC5-5B2C-9527-954044DE2CF3\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteCenChildInstanceRouteEntryToCenResponse>\\r\\n<RequestId>C05000A4-2FC5-5B2C-9527-954044DE2CF3</RequestId>\\r\\n</DeleteCenChildInstanceRouteEntryToCenResponse>","errorExample":""}]',
+ 'title' => 'DeleteCenChildInstanceRouteEntryToCen',
+ 'summary' => 'Deletes a route from a network instance that is attached to a Cloud Enterprise Network (CEN) instance.',
+ 'description' => '## Limits'."\n"
+ ."\n"
+ .'* By default, the DeleteCenChildInstanceRouteEntryToCen operation is unavailable. To call this operation, [submit a ticket](https://workorder-intl.console.aliyun.com/#/ticket/createIndex).'."\n"
+ .'* You cannot delete a route entry from an Enterprise Edition transit router by calling the DeleteCenChildInstanceRouteEntryToCen operation.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListCenChildInstanceRouteEntriesToAttachment' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ 'default' => '50',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query and no subsequent 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' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-dc4vwznpwbobrl****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => false,
+ 'example' => 'vtb-bp174d1gje79u1g4t****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => false,
+ 'example' => 'tr-attach-r6g0m3epjehw57****',
+ ],
+ ],
+ [
+ 'name' => 'RouteFilter',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The filter condition for the destination CIDR block.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The match mode of the route.'."\n"
+ ."\n"
+ .'* **prefix-exact-match**: exact match.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'prefix-exact-match',
+ 'enum' => [
+ 'prefix-exact-match',
+ ],
+ ],
+ 'Value' => [
+ 'description' => 'The destination CIDR blocks.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination CIDR block.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.0.0.0/8',
+ ],
+ 'required' => false,
+ 'maxItems' => 5,
+ ],
+ ],
+ 'required' => false,
+ 'description' => '',
+ ],
+ 'required' => false,
+ 'maxItems' => 5,
+ ],
+ ],
+ [
+ 'name' => 'ServiceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to host the route. If you leave the parameter empty, the route is not hosted. A value of TR specifies that the route is hosted on a transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TR',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the next query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is not returned, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the region.'."\n",
+ 'type' => 'string',
+ 'example' => '530BC816-F575-412A-AAB2-435125D26328',
+ ],
+ 'RouteEntry' => [
+ 'description' => 'The detailed information about the route.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The detailed information about the route.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-9adwg6ghpq8oq4dp7q',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-y463sghkkv1loe****',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the route. Valid values:'."\n"
+ ."\n"
+ .'* **Available**: The route is available.'."\n"
+ .'* **Pending**: The route is being configured.'."\n"
+ .'* **Modifying**: the route is being modified.'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ 'ServiceType' => [
+ 'description' => 'Indicates whether the route is hosted. If the parameter is empty, the route is not hosted. A value of TR indicates that the route is hosted on a transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'TR',
+ ],
+ 'DestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the route.'."\n",
+ 'type' => 'string',
+ 'example' => '10.0.0.0/8',
+ ],
+ 'ChildInstanceRouteTableId' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-bp1tlaj1c4nxr2t3e****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The parameter NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterAttachmentId',
+ 'errorMessage' => 'The parameter TransitRouterAttachmentId is Missing.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.ChildInstanceRouteTableId',
+ 'errorMessage' => 'The parameter ChildInstanceRouteTableId is Missing.',
+ ],
+ [
+ 'errorCode' => 'InvalidParam.RouteFilter',
+ 'errorMessage' => 'The parameter RouteFilter is invalid.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.TransitRouterAttachment',
+ 'errorMessage' => 'The specified TransitRouterAttachment does not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParam.RoutFilterKey',
+ 'errorMessage' => 'The specified Key of RouteFilter is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParam.CenId',
+ 'errorMessage' => 'The specified CEN does not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"530BC816-F575-412A-AAB2-435125D26328\\",\\n \\"RouteEntry\\": [\\n {\\n \\"CenId\\": \\"cen-9adwg6ghpq8oq4dp7q\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-y463sghkkv1loe****\\",\\n \\"Status\\": \\"Available\\",\\n \\"ServiceType\\": \\"TR\\",\\n \\"DestinationCidrBlock\\": \\"10.0.0.0/8\\",\\n \\"ChildInstanceRouteTableId\\": \\"vtb-bp1tlaj1c4nxr2t3e****\\"\\n }\\n ]\\n}","type":"json"}]',
+ 'title' => 'ListCenChildInstanceRouteEntriesToAttachment',
+ 'summary' => 'Queries routes in route tables of network instances that point to network instance connections on Enterprise Edition transit routers.',
+ 'description' => 'Before you call the ListCenChildInstanceRouteEntriesToAttachment operation, make sure that all request parameter values are valid. If a parameter is set to an invalid value, a request ID is returned, but the routes to the network instance are not returned.'."\n",
+ ],
+ 'DescribeCenRegionDomainRouteEntries' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '72355',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnIIZZGE',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6j****',
+ ],
+ ],
+ [
+ 'name' => 'CenRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) 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 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 per page. Valid values: **1** to **500**. Default value: **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The route status. Valid values:'."\n"
+ ."\n"
+ .'* **Active** (default): available'."\n"
+ .'* **Candidate**: standby'."\n"
+ .'* **Rejected**: rejected'."\n"
+ .'* **Prohibited**: prohibited'."\n"
+ .'* **All** (default value): all routes'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ 'default' => 'Active',
+ 'enum' => [
+ 'Active',
+ 'Rejected',
+ 'Prohibited',
+ 'Candidate',
+ 'Standby',
+ 'All',
+ ],
+ ],
+ ],
+ ],
+ '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' => '004E99FB-E996-5777-888E-BA1D8F215407',
+ ],
+ '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' => '4',
+ ],
+ 'CenRouteEntries' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenRouteEntry' => [
+ 'description' => 'A list of route entries.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'ToOtherRegionStatus' => [
+ 'description' => 'Indicates whether the route can be advertised to other regions. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: The route can be advertised to other regions.'."\n"
+ .'* **Prohibited**: The route cannot be advertised to other regions.'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'Type' => [
+ 'description' => 'The route type. Valid values:'."\n"
+ ."\n"
+ .'* **CEN**: route that is advertised through CEN'."\n"
+ .'* **Custom**: custom route'."\n"
+ .'* **System**: system route'."\n",
+ 'type' => 'string',
+ 'example' => 'CEN',
+ ],
+ 'Status' => [
+ 'description' => 'The route status. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: available'."\n"
+ .'* **Candidate**: standby'."\n"
+ .'* **Rejected**: rejected'."\n"
+ .'* **Prohibited**: prohibited'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'NextHopType' => [
+ 'description' => 'The type of the instance specified as the next hop in the route. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n"
+ .'* **local_service**: system route. No next hop is specified.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'NextHopInstanceId' => [
+ 'description' => 'The ID of the instance specified as the next hop in the route.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp1j8728mm6pweeod****',
+ ],
+ 'NextHopRegionId' => [
+ 'description' => 'The ID of the region to which the network instance specified as the next hop in the route belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'DestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the route.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.1.0/24',
+ ],
+ 'Preference' => [
+ 'description' => 'The route priority.'."\n"
+ ."\n"
+ .'A smaller value indicates a higher priority.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'CenRouteMapRecords' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenRouteMapRecord' => [
+ 'description' => 'The routing policy that the routes match in the inbound direction.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RouteMapId' => [
+ 'description' => 'The ID of the routing policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenrmap-cz5axczdxb7yfu****',
+ ],
+ 'RegionId' => [
+ 'description' => 'The ID of the region where the routing policy is applied.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'CenOutRouteMapRecords' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenOutRouteMapRecord' => [
+ 'description' => 'The routing policy that the routes match in the outbound direction.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RouteMapId' => [
+ 'description' => 'The ID of the routing policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenrmap-dbarzidzp7ek4k****',
+ ],
+ 'RegionId' => [
+ 'description' => 'The ID of the region where the routing policy is applied.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-cn-shanghai',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'Communities' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Community' => [
+ 'description' => 'The communities of the route.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community of the route.'."\n",
+ 'type' => 'string',
+ 'example' => '65501:1',
+ ],
+ ],
+ ],
+ ],
+ 'AsPaths' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'AsPath' => [
+ 'description' => 'The AS paths of the route.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS path of the route.'."\n",
+ 'type' => 'string',
+ 'example' => '65501',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"004E99FB-E996-5777-888E-BA1D8F215407\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 4,\\n \\"CenRouteEntries\\": {\\n \\"CenRouteEntry\\": [\\n {\\n \\"ToOtherRegionStatus\\": \\"Active\\",\\n \\"Type\\": \\"CEN\\",\\n \\"Status\\": \\"Active\\",\\n \\"NextHopType\\": \\"VPC\\",\\n \\"NextHopInstanceId\\": \\"vpc-bp1j8728mm6pweeod****\\",\\n \\"NextHopRegionId\\": \\"cn-hangzhou\\",\\n \\"DestinationCidrBlock\\": \\"192.168.1.0/24\\",\\n \\"Preference\\": 50,\\n \\"CenRouteMapRecords\\": {\\n \\"CenRouteMapRecord\\": [\\n {\\n \\"RouteMapId\\": \\"cenrmap-cz5axczdxb7yfu****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ]\\n },\\n \\"CenOutRouteMapRecords\\": {\\n \\"CenOutRouteMapRecord\\": [\\n {\\n \\"RouteMapId\\": \\"cenrmap-dbarzidzp7ek4k****\\",\\n \\"RegionId\\": \\"ccn-cn-shanghai\\"\\n }\\n ]\\n },\\n \\"Communities\\": {\\n \\"Community\\": [\\n \\"65501:1\\"\\n ]\\n },\\n \\"AsPaths\\": {\\n \\"AsPath\\": [\\n \\"65501\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenRegionDomainRouteEntriesResponse>\\n <PageSize>10</PageSize>\\n <RequestId>004E99FB-E996-5777-888E-BA1D8F215407</RequestId>\\n <PageNumber>1</PageNumber>\\n <TotalCount>4</TotalCount>\\n <CenRouteEntries>\\n <ToOtherRegionStatus>Active</ToOtherRegionStatus>\\n <Type>CEN</Type>\\n <Status>Active</Status>\\n <NextHopType>VPC</NextHopType>\\n <NextHopInstanceId>vpc-bp1j8728mm6pweeod****</NextHopInstanceId>\\n <NextHopRegionId>cn-hangzhou</NextHopRegionId>\\n <DestinationCidrBlock>192.168.1.0/24</DestinationCidrBlock>\\n <Preference>50</Preference>\\n <CenRouteMapRecords>\\n <RouteMapId>cenrmap-cz5axczdxb7yfu****</RouteMapId>\\n <RegionId>cn-hangzhou</RegionId>\\n </CenRouteMapRecords>\\n <CenOutRouteMapRecords>\\n <RouteMapId>cenrmap-dbarzidzp7ek4k****</RouteMapId>\\n <RegionId>ccn-cn-shanghai</RegionId>\\n </CenOutRouteMapRecords>\\n <Communities>65501:1</Communities>\\n <AsPaths>65501</AsPaths>\\n </CenRouteEntries>\\n</DescribeCenRegionDomainRouteEntriesResponse>","errorExample":""}]',
+ 'title' => 'DescribeCenRegionDomainRouteEntries',
+ 'summary' => 'Queries the details about routes in a region for a Cloud Enterprise Network (CEN) instance.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenChildInstanceRouteEntries' => [
+ 'summary' => 'Queries the routes of a network instance that is attached to a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '72350',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnIIZZGE',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp18sth14qii3pnvo****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n"
+ .'* **ECR**: Express Connect Router (ECR)'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ 'enum' => [
+ 'VPC',
+ 'VBR',
+ 'CCN',
+ 'VPN',
+ 'ECR',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the route. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: available'."\n"
+ .'* **Candidate**: standby'."\n"
+ .'* **Rejected**: rejected'."\n"
+ .'* **Prohibited**: prohibited'."\n"
+ .'* **All** (default): all routes'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ [
+ '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 per page. Valid values: **1** to **500**. Default value: **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the network instance is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the network instance. If you do not specify a route table ID, the system queries the routes in the system route tables of the VPCs by default.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-p0wxx3apzgn6uqp3r****',
+ ],
+ ],
+ ],
+ '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' => '17A57456-EF48-419D-9AE6-9B03D9996018',
+ ],
+ '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' => '4',
+ ],
+ 'CenRouteEntries' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenRouteEntry' => [
+ 'description' => 'The information about the route.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The route status. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: available routes'."\n"
+ .'* **Candidate**: standby routes'."\n"
+ .'* **Rejected**: rejected routes'."\n"
+ .'* **Prohibited**: prohibited routes'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'Type' => [
+ 'description' => 'The route type. Valid values:'."\n"
+ ."\n"
+ .'* **CEN**: route that is advertised through CEN'."\n"
+ .'* **System**: system route'."\n"
+ .'* **Custom**: custom route'."\n",
+ 'type' => 'string',
+ 'example' => 'CEN',
+ ],
+ 'PublishStatus' => [
+ 'description' => 'Indicates whether the route is advertised to the CEN instance. Valid values:'."\n"
+ ."\n"
+ .'* **Published**'."\n"
+ .'* **NonPublished**'."\n",
+ 'type' => 'string',
+ 'example' => 'Published',
+ ],
+ 'NextHopType' => [
+ 'description' => 'The type of the instance specified as the next hop in the route. Valid values:'."\n"
+ ."\n"
+ .'* **Instance**: an ECS instance'."\n"
+ .'* **HaVip**: an HAVIP'."\n"
+ .'* **RouterInterface**: a router interface'."\n"
+ .'* **NetworkInterface**: an ENI'."\n"
+ .'* **VpnGateway**: a VPN gateway'."\n"
+ .'* **IPv6Gateway**: an IPv6 gateway'."\n"
+ .'* **Ipv4Gateway**: an IPv4 gateway'."\n"
+ .'* **NatGateway**: a NAT gateway'."\n"
+ .'* **Attachment**: a network instance connection'."\n"
+ .'* **service**: a cloud service'."\n"
+ .'* **VBR**: a VBR'."\n"
+ .'* **CCN**: a CCN instance'."\n"
+ .'* **VPC**: a VPC'."\n"
+ .'* **local**: a system route (no next hop is specified)'."\n"
+ .'* **TR**: a transit router'."\n"
+ .'* **BlackHole**: a blackhole route (no next hop is specified)'."\n"
+ .'* **EcRouterInterface**: a router interface for Express Connect'."\n"
+ .'* **HealthCheck**: a health check'."\n"
+ .'* **AS**: an access gateway for CCN'."\n"
+ .'* **classic**: a classic network-type instance'."\n"
+ .'* **GatewayEndpoint**: a gateway endpoint'."\n"
+ .'* **CPE**: a data center connected to a VBR'."\n",
+ 'type' => 'string',
+ 'example' => 'VBR',
+ ],
+ 'OperationalMode' => [
+ 'description' => 'Indicates whether the route is allowed to be advertised to or withdrawn from the CEN instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'NextHopRegionId' => [
+ 'description' => 'The region ID of the instance specified as the next hop in the route.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'NextHopInstanceId' => [
+ 'description' => 'The ID of the instance specified as the next hop in the route.'."\n",
+ 'type' => 'string',
+ 'example' => 'vbr-bp13gtbhdp0pfqg6s****',
+ ],
+ 'DestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the route.'."\n",
+ 'type' => 'string',
+ 'example' => '10.0.0.0/24',
+ ],
+ 'RouteTableId' => [
+ 'description' => 'The route table ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-bp1r9pvl4xen8s9ju****',
+ ],
+ 'CenRouteMapRecords' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'CenRouteMapRecord' => [
+ 'description' => 'The routing policy that the routes match.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RouteMapId' => [
+ 'description' => 'The routing policy ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenrmap-w4yf7toozfol3q****',
+ ],
+ 'RegionId' => [
+ 'description' => 'The region ID of the routing policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'Conflicts' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Conflict' => [
+ 'description' => 'A list of overlapping routes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The cause of the route error. Valid values:'."\n"
+ ."\n"
+ .'* **conflict**: The routes have the same destination CIDR block.'."\n"
+ .'* **overflow**: The number of routes in the route table configured on another network instance has reached the upper limit.'."\n",
+ 'type' => 'string',
+ 'example' => 'conflict',
+ ],
+ 'DestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the overlapping route.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.1.0/24',
+ ],
+ 'InstanceId' => [
+ 'description' => 'The ID of the peer network instance on which the overlapping routes are found.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-0q3b7oviikmm9h****',
+ ],
+ 'InstanceType' => [
+ 'description' => 'The type of the peer network instance on which the overlapping routes are found. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n"
+ .'* **ECR**: ECR'."\n",
+ 'type' => 'string',
+ 'example' => 'CCN',
+ ],
+ 'RegionId' => [
+ 'description' => 'The region ID of the peer network instance on which the overlapping routes are found.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-cn-shanghai',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ ],
+ 'Communities' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Community' => [
+ 'description' => 'The community attributes of the route entries.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The route community value.'."\n",
+ 'type' => 'string',
+ 'example' => '65501:1',
+ ],
+ ],
+ ],
+ ],
+ 'AsPaths' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'AsPath' => [
+ 'description' => 'The AS paths of the routes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The route AS path value.'."\n",
+ 'type' => 'string',
+ 'example' => '65501',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"17A57456-EF48-419D-9AE6-9B03D9996018\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 4,\\n \\"CenRouteEntries\\": {\\n \\"CenRouteEntry\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"Type\\": \\"CEN\\",\\n \\"PublishStatus\\": \\"Published\\",\\n \\"NextHopType\\": \\"VBR\\",\\n \\"OperationalMode\\": true,\\n \\"NextHopRegionId\\": \\"cn-hangzhou\\",\\n \\"NextHopInstanceId\\": \\"vbr-bp13gtbhdp0pfqg6s****\\",\\n \\"DestinationCidrBlock\\": \\"10.0.0.0/24\\",\\n \\"RouteTableId\\": \\"vtb-bp1r9pvl4xen8s9ju****\\",\\n \\"CenRouteMapRecords\\": {\\n \\"CenRouteMapRecord\\": [\\n {\\n \\"RouteMapId\\": \\"cenrmap-w4yf7toozfol3q****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ]\\n },\\n \\"Conflicts\\": {\\n \\"Conflict\\": [\\n {\\n \\"Status\\": \\"conflict\\",\\n \\"DestinationCidrBlock\\": \\"192.168.1.0/24\\",\\n \\"InstanceId\\": \\"ccn-0q3b7oviikmm9h****\\",\\n \\"InstanceType\\": \\"CCN\\",\\n \\"RegionId\\": \\"ccn-cn-shanghai\\"\\n }\\n ]\\n },\\n \\"Communities\\": {\\n \\"Community\\": [\\n \\"65501:1\\"\\n ]\\n },\\n \\"AsPaths\\": {\\n \\"AsPath\\": [\\n \\"65501\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenChildInstanceRouteEntriesResponse>\\n <PageSize>10</PageSize>\\n <RequestId>17A57456-EF48-419D-9AE6-9B03D9996018</RequestId>\\n <PageNumber>1</PageNumber>\\n <TotalCount>4</TotalCount>\\n <CenRouteEntries>\\n <Status>Active</Status>\\n <Type>CEN</Type>\\n <PublishStatus>Published</PublishStatus>\\n <NextHopType>VBR</NextHopType>\\n <OperationalMode>true</OperationalMode>\\n <NextHopRegionId>cn-hangzhou</NextHopRegionId>\\n <NextHopInstanceId>vbr-bp13gtbhdp0pfqg6s****</NextHopInstanceId>\\n <DestinationCidrBlock>10.0.0.0/24</DestinationCidrBlock>\\n <RouteTableId>vtb-bp1r9pvl4xen8s9ju****</RouteTableId>\\n <CenRouteMapRecords>\\n <RouteMapId>cenrmap-w4yf7toozfol3q****</RouteMapId>\\n <RegionId>cn-hangzhou</RegionId>\\n </CenRouteMapRecords>\\n <Conflicts>\\n <Status>conflict</Status>\\n <DestinationCidrBlock>192.168.1.0/24</DestinationCidrBlock>\\n <InstanceId>ccn-0q3b7oviikmm9h****</InstanceId>\\n <InstanceType>CCN</InstanceType>\\n <RegionId>ccn-cn-shanghai</RegionId>\\n </Conflicts>\\n <Communities>65501:1</Communities>\\n <AsPaths>65501</AsPaths>\\n </CenRouteEntries>\\n</DescribeCenChildInstanceRouteEntriesResponse>","errorExample":""}]',
+ 'title' => 'DescribeCenChildInstanceRouteEntries',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribePublishedRouteEntries' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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. Default value: **10**. Valid values: **1** to **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jm****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp18sth14qii3pnv****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the network instance is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-bp174d1gje79u1g4****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route that you want to query.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '172.16.0.0/16',
+ ],
+ ],
+ ],
+ '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' => 'FF1A7B2A-677F-4F71-96EA-6002B329F437',
+ ],
+ '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' => '2',
+ ],
+ 'PublishedRouteEntries' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'PublishedRouteEntry' => [
+ 'description' => 'A list of routes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'NextHopId' => [
+ 'description' => 'The ID of the instance specified as the next hop in the route.'."\n",
+ 'type' => 'string',
+ 'example' => ' ecs-bp18sth14qii3pn****',
+ ],
+ 'PublishStatus' => [
+ 'description' => 'Indicates whether the route is advertised to the CEN instance. Valid values:'."\n"
+ ."\n"
+ .'* **Published**: The route is advertised to the CEN instance.'."\n"
+ .'* **NonPublished**: The route is not advertised to the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Published',
+ ],
+ 'ChildInstanceRouteTableId' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-il7qut3mjgtlcbpk2****',
+ ],
+ 'NextHopType' => [
+ 'description' => 'The type of the instance specified as the next hop in the route.'."\n"
+ ."\n"
+ .'* **Instance**: ECS instance'."\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**: network instance connection'."\n"
+ .'* **service**: cloud service'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **local**: system route. No next hop is specified.'."\n"
+ .'* **TR**: transit router'."\n"
+ .'* **BlackHole**: blackhole route. No next hop is specified.'."\n"
+ .'* **EcRouterInterface**: router interface for Express Connect'."\n"
+ .'* **HealthCheck**: health check'."\n"
+ .'* **AS**: access gateway for CCN'."\n"
+ .'* **classicLink**: classic network-type instance'."\n"
+ .'* **GatewayEndpoint**: gateway endpoint'."\n"
+ .'* **CPE**: data center connected to the VBR',
+ 'type' => 'string',
+ 'example' => 'Instance',
+ ],
+ 'OperationalMode' => [
+ 'description' => 'Indicates whether the route is allowed to be advertised to or withdrawn from the CEN instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**: The route is allowed to be advertised to or withdrawn from the CEN instance.'."\n"
+ .'* **false**: The route is not allowed to be advertised to or withdrawn from the CEN instance.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'DestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the route.'."\n",
+ 'type' => 'string',
+ 'example' => '172.16.0.0/16',
+ ],
+ 'RouteType' => [
+ 'description' => 'The type of the route. Valid values:'."\n"
+ ."\n"
+ .'* **CEN**: route that is advertised through CEN'."\n"
+ .'* **System**: system route'."\n"
+ .'* **Custom**: custom route'."\n",
+ 'type' => 'string',
+ 'example' => 'System',
+ ],
+ 'Conflicts' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Conflict' => [
+ 'description' => 'A list of conflicting routes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The cause of the route confliction. Valid values:'."\n"
+ ."\n"
+ .'* **conflict**: The routes have the same destination CIDR block.'."\n"
+ .'* **overflow**: The number of routes in the route table configured on another network instance has reached the upper limit.'."\n",
+ 'type' => 'string',
+ 'example' => 'conflict',
+ ],
+ 'DestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the conflicting route.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.20.0/24',
+ ],
+ 'InstanceId' => [
+ 'description' => 'The ID of the peer network instance on which conflicting routes are found.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-0q3b7oviikmm9h****',
+ ],
+ 'InstanceType' => [
+ 'description' => 'The type of the peer network instance on which the conflicting routes are found. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n",
+ 'type' => 'string',
+ 'example' => 'CCN',
+ ],
+ 'RegionId' => [
+ 'description' => 'The ID of the region where the peer network instance on which the conflicting routes are found is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-cn-shanghai',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ParameterIllegal.CenInstanceId',
+ 'errorMessage' => 'The parameter of CEN instance id is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ChildInstanceRegionId',
+ 'errorMessage' => 'The parameter of child instance region id is illegal.',
+ ],
+ [
+ 'errorCode' => 'VRC_ERROR',
+ 'errorMessage' => 'VRC error',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ChildInstanceType',
+ 'errorMessage' => 'The parameter of child instance type is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal',
+ 'errorMessage' => 'The parameter is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'Instance.NotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'InvalidOperation.ChildInstanceStatus',
+ 'errorMessage' => 'The child-instance is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation.',
+ ],
+ ],
+ 500 => [
+ [
+ 'errorCode' => 'InternalError',
+ 'errorMessage' => 'Internal error.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"FF1A7B2A-677F-4F71-96EA-6002B329F437\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"PublishedRouteEntries\\": {\\n \\"PublishedRouteEntry\\": [\\n {\\n \\"NextHopId\\": \\" ecs-bp18sth14qii3pn****\\",\\n \\"PublishStatus\\": \\"Published\\",\\n \\"ChildInstanceRouteTableId\\": \\"vtb-il7qut3mjgtlcbpk2****\\",\\n \\"NextHopType\\": \\"Instance\\",\\n \\"OperationalMode\\": true,\\n \\"DestinationCidrBlock\\": \\"172.16.0.0/16\\",\\n \\"RouteType\\": \\"System\\",\\n \\"Conflicts\\": {\\n \\"Conflict\\": [\\n {\\n \\"Status\\": \\"conflict\\",\\n \\"DestinationCidrBlock\\": \\"192.168.20.0/24\\",\\n \\"InstanceId\\": \\"ccn-0q3b7oviikmm9h****\\",\\n \\"InstanceType\\": \\"CCN\\",\\n \\"RegionId\\": \\"ccn-cn-shanghai\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"TotalCount\\": 2, \\n \\"PublishRouteEntries\\": {\\n \\"PublishRouteEntries\\": [\\n {\\n \\"DestinationCidrBlock\\": \\"100.64.0.0/10\\", \\n \\"NextHopId\\": \\"\\", \\n \\"NextHopType\\": \\"service\\", \\n \\"ChildInstanceRouteTableId\\": \\"vtb-il7qut3mjgtlcbpk2ie31\\", \\n \\"PublishStatus\\": \\"NonPublished\\", \\n \\"RouteConflicts\\": {\\n \\"RouteConflicts\\": []\\n }, \\n \\"RouteType\\": \\"System\\"\\n }, \\n {\\n \\"DestinationCidrBlock\\": \\"192.168.10.0/24\\", \\n \\"NextHopId\\": \\"\\", \\n \\"NextHopType\\": \\"local\\", \\n \\"ChildInstanceRouteTableId\\": \\"vtb-il7qut3mjgtlcbpk2ie31\\", \\n \\"PublishStatus\\": \\"Published\\", \\n \\"RouteConflicts\\": {\\n \\"RouteConflicts\\": []\\n }, \\n \\"RouteType\\": \\"System\\"\\n }\\n ]\\n }, \\n \\"PageNumber\\": 1, \\n \\"RequestId\\": \\"FF1A7B2A-677F-4F71-96EA-6002B329F437\\", \\n \\"PageSize\\": 10\\n}"},{"type":"xml","example":"<DescribeRouteConflictResponse>\\n\\t<TotalCount>2</TotalCount>\\n\\t<PublishRouteEntries>\\n\\t\\t<PublishRouteEntries>\\n\\t\\t\\t<DestinationCidrBlock>100.64.0.0/10</DestinationCidrBlock>\\n\\t\\t\\t<NextHopId></NextHopId>\\n\\t\\t\\t<NextHopType>service</NextHopType>\\n\\t\\t\\t<ChildInstanceRouteTableId>vtb-il7qut3mjgtlcbpk2****</ChildInstanceRouteTableId>\\n\\t\\t\\t<PublishStatus>NonPublished</PublishStatus>\\n\\t\\t\\t<RouteConflicts></RouteConflicts>\\n\\t\\t\\t<RouteType>System</RouteType>\\n\\t\\t</PublishRouteEntries>\\n\\t\\t<PublishRouteEntries>\\n\\t\\t\\t<DestinationCidrBlock>192.168.10.0/24</DestinationCidrBlock>\\n\\t\\t\\t<NextHopId></NextHopId>\\n\\t\\t\\t<NextHopType>local</NextHopType>\\n\\t\\t\\t<ChildInstanceRouteTableId>vtb-il7qut3mjgtlcbpk2****</ChildInstanceRouteTableId>\\n\\t\\t\\t<PublishStatus>Published</PublishStatus>\\n\\t\\t\\t<RouteConflicts></RouteConflicts>\\n\\t\\t\\t<RouteType>System</RouteType>\\n\\t\\t</PublishRouteEntries>\\n\\t</PublishRouteEntries>\\n\\t<PageNumber>1</PageNumber>\\n\\t<RequestId>FF1A7B2A-677F-4F71-96EA-6002B329F437</RequestId>\\n\\t<PageSize>10</PageSize>\\n</DescribeRouteConflictResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<DescribeRouteConflictResponse>\\n <PageNumber>1</PageNumber>\\n <PageSize>10</PageSize>\\n <RequestId>B6C11547-2D56-4EEC-A8D5-FDC5A53E53D0</RequestId>\\n <RouteConflicts>\\n <RouteConflict/>\\n </RouteConflicts>\\n <TotalCount>0</TotalCount>\\n</DescribeRouteConflictResponse>"}]',
+ 'title' => 'DescribePublishedRouteEntries',
+ 'summary' => 'Queries whether the routes of virtual private clouds (VPCs) and virtual border routers (VBRs) are advertised to the Cloud Enterprise Network (CEN) instance to which the VCPs and VBRs are attached.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeRouteConflict' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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. Default value: **10**. Valid values: **1** to **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance that you want to query.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'ccn-0q3b7oviikmm9h****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **CCN**: Cloud Connect Network (CCN) instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'CCN',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the network instance is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'ccn-cn-shanghai',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table that is configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp174d1gje79u1g4t****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the conflicting route.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '172.16.0.0/16',
+ ],
+ ],
+ ],
+ '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' => 'EE3A2CC7-41F1-58DB-8306-CFC99D9C747B',
+ ],
+ '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',
+ ],
+ 'RouteConflicts' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'RouteConflict' => [
+ 'description' => 'A list of overlapping routes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The cause of the route error. Valid values:'."\n"
+ ."\n"
+ .'* **conflict**: The routes have the same destination CIDR block.'."\n"
+ .'* **overflow**: The number of routes in the route table configured on another network instance has reached the upper limit.'."\n",
+ 'type' => 'string',
+ 'example' => 'conflict',
+ ],
+ 'DestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the overlapping route.'."\n",
+ 'type' => 'string',
+ 'example' => '172.16.0.0/16',
+ ],
+ 'InstanceId' => [
+ 'description' => 'The ID of the peer network instance on which the overlapping routes are found.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-0q3b7oviikmm9h****',
+ ],
+ 'InstanceType' => [
+ 'description' => 'The type of the peer network instance on which the overlapping routes are found.'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **CCN**: CCN instance'."\n",
+ 'type' => 'string',
+ 'example' => 'CCN',
+ ],
+ 'RegionId' => [
+ 'description' => 'The region ID of the peer network instance on which the overlapping routes are found is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'ccn-cn-shanghai',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidChildInstanceId.NotFound',
+ 'errorMessage' => 'The specified ChildInstanceId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"EE3A2CC7-41F1-58DB-8306-CFC99D9C747B\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"RouteConflicts\\": {\\n \\"RouteConflict\\": [\\n {\\n \\"Status\\": \\"conflict\\",\\n \\"DestinationCidrBlock\\": \\"172.16.0.0/16\\",\\n \\"InstanceId\\": \\"ccn-0q3b7oviikmm9h****\\",\\n \\"InstanceType\\": \\"CCN\\",\\n \\"RegionId\\": \\"ccn-cn-shanghai\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 0,\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"B6C11547-2D56-4EEC-A8D5-FDC5A53E53D0\\",\\n \\"RouteConflicts\\": {\\n \\"RouteConflict\\": []\\n }\\n}"},{"type":"xml","example":"<DescribeRouteConflictResponse>\\n<TotalCount>1</TotalCount>\\n<RequestId>EE3A2CC7-41F1-58DB-8306-CFC99D9C747B</RequestId>\\n<PageSize>10</PageSize>\\n<PageNumber>1</PageNumber>\\n<RouteConflicts>\\n <RouteConflict>\\n <InstanceId>ccn-0q3b7oviikmm9h****</InstanceId>\\n <DestinationCidrBlock>172.16.0.0/16</DestinationCidrBlock>\\n <RegionId>ccn-cn-shanghai</RegionId>\\n <InstanceType>CCN</InstanceType>\\n </RouteConflict>\\n</RouteConflicts>\\n</DescribeRouteConflictResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<DescribeRouteConflictResponse>\\n <PageNumber>1</PageNumber>\\n <PageSize>10</PageSize>\\n <RequestId>B6C11547-2D56-4EEC-A8D5-FDC5A53E53D0</RequestId>\\n <RouteConflicts>\\n <RouteConflict/>\\n </RouteConflicts>\\n <TotalCount>0</TotalCount>\\n</DescribeRouteConflictResponse>"}]',
+ 'title' => 'DescribeRouteConflict',
+ 'summary' => 'Queries conflicting routes on a network instance.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'PublishRouteEntries' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-rj9gt5nll27onu****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the network instance is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'us-west-1',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table configured on the network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp174d1gje7****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route that you want to advertise.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '172.16.1.0/24',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'FBDB18D8-E91E-4978-8D6C-6E2E3EE10133',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ParameterIllegal.AliUid',
+ 'errorMessage' => 'The parameter of aliUid is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UnsupportnexthopType',
+ 'errorMessage' => 'The nexthop type is unsupported',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.NotFoundRoute',
+ 'errorMessage' => 'The specified route does not exist.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CenInstanceId',
+ 'errorMessage' => 'The parameter of CEN instance id is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ChildInstanceRegionId',
+ 'errorMessage' => 'The parameter of child instance region id is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ChildInstanceType',
+ 'errorMessage' => 'The parameter of child instance type is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UnsupportRouteTableType',
+ 'errorMessage' => 'The route table type is unsupported',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'Instance.NotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'InvalidOperation.ChildInstanceStatus',
+ 'errorMessage' => 'The child-instance is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"FBDB18D8-E91E-4978-8D6C-6E2E3EE10133\\"\\n}","errorExample":"\\n{\\n \\"RequestId\\": \\"FBDB18D8-E91E-4978-8D6C-6E2E3EE10133\\"\\n}\\n\\n"},{"type":"xml","example":"<PublishRouteEntriesResponse>\\n <RequestId>FBDB18D8-E91E-4978-8D6C-6E2E3EE101330</RequestId>\\n</PublishRouteEntriesResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<PublishRouteEntriesResponse>\\n <RequestId>FBDB18D8-E91E-4978-8D6C-6E2E3EE101330</RequestId>\\n</PublishRouteEntriesResponse>"}]',
+ 'title' => 'PublishRouteEntries',
+ 'summary' => 'Cloud Enterprise Network (CEN) supports route advertisement. You can call this operation to advertise routes of virtual private clouds (VPCs) or virtual border routers (VBRs) attached to a CEN instance to the CEN instance. Other network instances attached to the CEN instance can learn the routes if route conflicts do not exist.',
+ 'description' => 'The following table describes whether routes of different types are advertised to CEN by default. You can call the PublishRouteEntries operation to advertise routes to CEN.'."\n"
+ ."\n"
+ .'|Route|Network instance|Advertised to CEN by default|'."\n"
+ .'|---|---|---|'."\n"
+ .'|Routes that route network traffic to Elastic Compute Service (ECS) instances|VPC|No|'."\n"
+ .'|Routes that route network traffic to VPN gateways|VPC|No|'."\n"
+ .'|Routes that route network traffic to high-availability virtual IP addresses (HAVIPs)|VPC|No|'."\n"
+ .'|Routes that route network traffic to router interfaces|VPC|No|'."\n"
+ .'|Routes that route network traffic to elastic network interfaces (ENIs)|VPC|No|'."\n"
+ .'|Routes that route network traffic to IPv6 gateways|VPC|No|'."\n"
+ .'|Routes that route network traffic to NAT gateways|VPC|No|'."\n"
+ .'|System routes of VPCs|VPC|Yes|'."\n"
+ .'|Routes that route network traffic to data centers|VBR|Yes|'."\n"
+ .'|Border Gateway Protocol (BGP) routes|VBR|Yes|',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'WithdrawPublishedRouteEntries' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-sxjfjkjfkjfiein****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the attached network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-rj9gt5nll27onu7****',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the attached network instance.'."\n"
+ ."\n"
+ .'Set the value to **VPC**, which indicates a virtual private cloud (VPC).'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the attached network instance is created.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'ChildInstanceRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the attached network instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp174d1gje79u1g4t****',
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route that you want to withdraw.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '172.XX.XX.0/24',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'FBDB18D8-E91E-4978-8D6C-6E2E3EE10133',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidOperation.UnsupportnexthopType',
+ 'errorMessage' => 'The specified next hop type is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.NotFoundRoute',
+ 'errorMessage' => 'You cannot query the system routing information of the specified instance.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CenInstanceId',
+ 'errorMessage' => 'The parameter of CEN instance id is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ChildInstanceRegionId',
+ 'errorMessage' => 'The parameter of child instance region id is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ChildInstanceType',
+ 'errorMessage' => 'The parameter of child instance type is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'Instance.NotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'InvalidOperation.ChildInstanceStatus',
+ 'errorMessage' => 'The child-instance is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"FBDB18D8-E91E-4978-8D6C-6E2E3EE10133\\"\\n}","errorExample":"\\n{\\n \\"RequestId\\": \\"FBDB18D8-E91E-4978-8D6C-6E2E3EE10133\\"\\n}\\n\\n"},{"type":"xml","example":"<WithdrawPublishedRouteEntriesResponse>\\n <RequestId>FBDB18D8-E91E-4978-8D6C-6E2E3EE101330</RequestId>\\n</WithdrawPublishedRouteEntriesResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<PublishRouteEntriesResponse>\\n <RequestId>FBDB18D8-E91E-4978-8D6C-6E2E3EE101330</RequestId>\\n</PublishRouteEntriesResponse>"}]',
+ 'title' => 'WithdrawPublishedRouteEntries',
+ 'summary' => 'Withdraws the routes of a virtual private cloud (VPC) or a virtual border router (VBR) from a Cloud Enterprise Network (CEN) instance.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateTransitRouterRouteTable' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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 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' => 'TransitRouterRouteTableName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the custom route table.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the custom route table.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-bp1su1ytdxtataupl****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to precheck the request. Check items include permissions and the status of the specified cloud resources. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): sends the request. If the request passes the precheck, the custom route table is created.'."\n"
+ .'* **true**: prechecks the request but does not create the custom route table. If you use this value, the system checks the required parameters and the request syntax. If the request fails to pass the precheck, an error message is returned. If the request passes the check, the system returns the ID of the request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tagtest',
+ ],
+ ],
+ 'required' => false,
+ 'description' => '',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'RouteTableOptions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The features of the route table.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MultiRegionECMP' => [
+ 'description' => 'Specifies whether to enable multi-region equal-cost multi-path (ECMP) routing. Valid values:'."\n"
+ ."\n"
+ .'* **disable**(default) If multi-region ECMP routing is disabled, routes that are learned from different regions but have the same prefix and attributes select the transit router with the smallest region ID as the next hop. Region IDs are sorted in alphabetic order. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.'."\n"
+ .'* **enable** If multi-region ECMP routing is enabled, routes that are learned from different regions but have the same prefix and attributes form an ECMP route. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'disable',
+ 'default' => 'disable',
+ 'enum' => [
+ 'enable',
+ 'disable',
+ ],
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterRouteTableId' => [
+ 'description' => 'The ID of the custom route table.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-bp1xbcgpgcz9axl9m****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '599904C8-A3DA-4E5F-83B6-D5364E664247',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'TransitRouterId is not found',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CCNTrNotSupport',
+ 'errorMessage' => 'Operation failed because the CCN transit router does not support route table.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterId',
+ 'errorMessage' => 'The parameter TransitrouterId is mandatory.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.BasicTrNotSupport',
+ 'errorMessage' => 'Operation failed because the Basic TransitRouter does not support RouteTable',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'TransitRouter status is invalid.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.TransitRouterRoutTable',
+ 'errorMessage' => 'TransitRouterRoutTable quota exceeded.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.MultiRegionEcmp',
+ 'errorMessage' => 'This region does not support MultiRegionEcmp.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterRouteTableId\\": \\"vtb-bp1xbcgpgcz9axl9m****\\",\\n \\"RequestId\\": \\"599904C8-A3DA-4E5F-83B6-D5364E664247\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterRouteTableResponse>\\n <TransitRouterRouteTableId>vtb-bp1xbcgpgcz9axl9m****</TransitRouterRouteTableId>\\n <RequestId>599904C8-A3DA-4E5F-83B6-D5364E664247</RequestId>\\n</CreateTransitRouterRouteTableResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterRouteTable',
+ 'summary' => 'Creates a custom route table for an Enterprise Edition transit router.',
+ 'description' => '* Only Enterprise Edition transit routers support custom route tables. For more information about the regions and zones that support Enterprise Edition transit routers, see [What is CEN?](~~181681~~)'."\n"
+ ."\n"
+ .'* **CreateTransitRouterRouteTable** is an asynchronous operation. After you send a request, the route table ID is returned but the operation is still being performed in the system background. You can call **ListTransitRouterRouteTables** to query the status of a route table.'."\n"
+ ."\n"
+ .' * If a route table is in the **Creating** state, the route table is being created. In this case, you can query the route table but cannot perform other operations.'."\n"
+ .' * If a route table is in the **Active** state, the route table is created.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteTransitRouterRouteTable' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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 client 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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and the request syntax. 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.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the custom route table.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1xbcgpgcz9axl9m****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'EAB2F133-8556-4D7C-9E91-7EE4FE9CC7D2',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationFailed.DeleteSystemRouteTable',
+ 'errorMessage' => 'Operation failed because You are not allowed to Delete System Transit Route Table.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterRouteTableId.NotFound',
+ 'errorMessage' => 'TransitRouterRouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterRouteTableId',
+ 'errorMessage' => 'The parameter TransitRouterRouteTableId is mandatory.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterRouteTable',
+ 'errorMessage' => 'TransitRouterRouteTable status is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.DeleteRouteTableWithAssociation',
+ 'errorMessage' => 'Operation failed because you are not allowed to delete TransitRouterRouteTable with association',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.DeleteRouteTableWithPropagation',
+ 'errorMessage' => 'Operation failed because you are not allowed to delete transit router route table with propagation',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.DeleteRouteTableWithRouteEntry',
+ 'errorMessage' => 'Operation failed because you are not allowed to delete transit touter route table with route entry',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.DeleteRouteTableWithRouteAggregation',
+ 'errorMessage' => 'Operation is invalid because delete route table with route aggregation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"EAB2F133-8556-4D7C-9E91-7EE4FE9CC7D2\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterRouteTableResponse>\\n <RequestId>EAB2F133-8556-4D7C-9E91-7EE4FE9CC7D2</RequestId>\\n</DeleteTransitRouterRouteTableResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterRouteTable',
+ 'summary' => 'Deletes a custom route table from an Enterprise Edition transit router.',
+ 'description' => '* You cannot delete the default route table of an Enterprise Edition transit router.'."\n"
+ ."\n"
+ .'* **DeleteTransitRouterRouteTable** 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 **ListTransitRouterRouteTables** operation to query the status of a custom route table.'."\n"
+ ."\n"
+ .' * If a custom route table is in the Deleting state, the custom route table is being deleted. In this case, you can query the custom route table but cannot perform other operations.'."\n"
+ .' * If a custom route table cannot be found, the custom route table is deleted.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UpdateTransitRouterRouteTable' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableName',
+ '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://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableDescription',
+ '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://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ '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' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and the request syntax. 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.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'RouteTableOptions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The features of the route table.',
+ 'type' => 'object',
+ 'properties' => [
+ 'MultiRegionECMP' => [
+ 'description' => 'Indicates whether multi-region ECMP routing is enabled. Valid values:'."\n"
+ ."\n"
+ .'- **disable**: If multi-region ECMP routing is disabled, routes that are learned from different regions but have the same prefix and attributes select the transit router with the smallest region ID as the next hop. Region IDs are sorted in alphabetic order. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.'."\n"
+ .'- **enable**: If multi-region ECMP routing is enabled, routes that are learned from different regions but have the same prefix and attributes form an ECMP route. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'disable',
+ 'enum' => [
+ 'enable',
+ 'disable',
+ ],
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'headers' => [],
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '9D6D5548-F271-41C4-AA9F-A62F5599085B',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterRouteTableId.NotFound',
+ 'errorMessage' => 'TransitRouterRouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.MultiRegionEcmp',
+ 'errorMessage' => 'This region does not support MultiRegionEcmp.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9D6D5548-F271-41C4-AA9F-A62F5599085B\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTransitRouterRouteTableResponse>\\n <RequestId>9D6D5548-F271-41C4-AA9F-A62F5599085B</RequestId>\\n</UpdateTransitRouterRouteTableResponse>","errorExample":""}]',
+ 'title' => 'UpdateTransitRouterRouteTable',
+ 'summary' => 'Modifies the name and description of a route table of an Enterprise Edition transit router and enables or disables multi-region equal-cost multi-path (ECMP) routing.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouterRouteTables' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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' => '100',
+ 'minimum' => '1',
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no subsequent query is to be sent, ignore this parameter.'."\n"
+ .'* If a subsequent 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' => 'dd20****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the route table. Valid values:'."\n"
+ ."\n"
+ .'* **Custom**: a custom route table'."\n"
+ .'* **System**: the default route table'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Custom',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'tr-uf654ttymmljlvh2x****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableStatus',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the route table. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**: The route table is being created.'."\n"
+ .'* **Deleting**: The route table is being deleted.'."\n"
+ .'* **Active**: The route table is available.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableNames',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The name of the route table.'."\n"
+ ."\n"
+ .'You can query multiple route tables in each call. Maximum value of **N**: **20**.'."\n"
+ ."\n"
+ .'> If you set both **TransitRouterRouteTableNames.N** and **TransitRouterRouteTableIds.N**, make sure that the specified name and ID belong to the same route table.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The name of the route table.'."\n"
+ ."\n"
+ .'You can query multiple route tables in each call. Maximum value of **N**: **20**.'."\n"
+ ."\n"
+ .'> If you set both **TransitRouterRouteTableNames.N** and **TransitRouterRouteTableIds.N**, make sure that the specified name and ID belong to the same route table.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ 'required' => false,
+ 'example' => 'testname',
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The ID of the route table.'."\n"
+ ."\n"
+ .'You can query multiple route tables in each call. Maximum value of **N**: **20**.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the route table.'."\n"
+ ."\n"
+ .'You can query multiple route tables in each call. Maximum value of **N**: **20**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ 'required' => false,
+ 'example' => 'vtb-bp1l8awdb4iuo9uwu****',
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique tag value. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'RouteTableOptions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The features of the route table.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MultiRegionECMP' => [
+ 'description' => 'Specifies whether to enable equal-cost multi-path (ECMP) routing. Valid values:'."\n"
+ ."\n"
+ .'* **disable**: disables ECMP routing If you disable ECMP routing, routes that are learned from different regions but have the same prefix and attributes select the transit router with the smallest region ID as the next hop. Region IDs are sorted in alphabetic order. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.'."\n"
+ .'* **enable**: enables ECMP routing. If you enable ECMP routing, routes that are learned from different regions but have the same prefix and attributes form an ECMP route. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'enumValueTitles' => [
+ 'disable' => 'disable',
+ 'enable' => 'enable',
+ ],
+ 'example' => 'disable',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the next query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n"
+ .'* If a value of **NextToken** is not returned, it indicates that no additional results exist.'."\n",
+ 'type' => 'string',
+ 'example' => 'dd20****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '82678F4A-C9F7-4CC1-8BF0-D619A63BFC57',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TransitRouterRouteTables' => [
+ 'description' => 'A list of route tables.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterRouteTableStatus' => [
+ 'description' => 'The status of the route table. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**'."\n"
+ .'* **Deleting**'."\n"
+ .'* **Active**'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'TransitRouterRouteTableType' => [
+ 'description' => 'The type of the route table. Valid values:'."\n"
+ ."\n"
+ .'* **Custom**'."\n"
+ .'* **System**'."\n",
+ 'type' => 'string',
+ 'example' => 'System',
+ ],
+ 'CreateTime' => [
+ '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-03-15T09:39Z',
+ ],
+ 'TransitRouterRouteTableId' => [
+ 'description' => 'The ID of the route table.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ 'TransitRouterRouteTableName' => [
+ 'description' => 'The name of the route table.'."\n",
+ 'type' => 'string',
+ 'example' => 'testname',
+ ],
+ 'TransitRouterRouteTableDescription' => [
+ 'description' => 'The description of the route table.'."\n",
+ 'type' => 'string',
+ 'example' => 'testdesc',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ ],
+ 'RouteTableOptions' => [
+ 'description' => 'The features of the route table.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MultiRegionECMP' => [
+ 'description' => 'Indicates whether ECMP routing is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **disable** If ECMP routing is disabled, routes that are learned from different regions but have the same prefix and attributes select the transit router with the smallest region ID as the next hop. Region IDs are sorted in alphabetic order. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.'."\n"
+ .'* **enable** If ECMP routing is enabled, routes that are learned from different regions but have the same prefix and attributes form an ECMP route. The network latency and bandwidth consumption also vary based on the region. Proceed with caution.'."\n",
+ 'type' => 'string',
+ 'enumValueTitles' => [
+ 'disable' => 'disable',
+ 'enable' => 'enable',
+ ],
+ 'example' => 'disable',
+ ],
+ ],
+ ],
+ 'RegionId' => [
+ 'description' => 'The region ID of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-beijing',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The transit router ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-8vb8bie2koduo5awz****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'NextToken is illegal',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagValue',
+ 'errorMessage' => 'The tag values are not valid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagKey',
+ 'errorMessage' => 'The tag keys are not valid.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterIdOrTransitRouterRouteTables',
+ 'errorMessage' => 'Either TransitRouterId or TransitRouterRouteTables must be specified.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"dd20****\\",\\n \\"RequestId\\": \\"82678F4A-C9F7-4CC1-8BF0-D619A63BFC57\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"TransitRouterRouteTables\\": [\\n {\\n \\"TransitRouterRouteTableStatus\\": \\"Active\\",\\n \\"TransitRouterRouteTableType\\": \\"System\\",\\n \\"CreateTime\\": \\"2021-03-15T09:39Z\\",\\n \\"TransitRouterRouteTableId\\": \\"vtb-bp1dudbh2d5na6b50****\\",\\n \\"TransitRouterRouteTableName\\": \\"testname\\",\\n \\"TransitRouterRouteTableDescription\\": \\"testdesc\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"test\\"\\n }\\n ],\\n \\"RouteTableOptions\\": {\\n \\"MultiRegionECMP\\": \\"disable\\"\\n },\\n \\"RegionId\\": \\"cn-beijing\\",\\n \\"TransitRouterId\\": \\"tr-8vb8bie2koduo5awz****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterRouteTablesResponse>\\n <NextToken>dd20****</NextToken>\\n <RequestId>82678F4A-C9F7-4CC1-8BF0-D619A63BFC57</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>1</MaxResults>\\n <TransitRouterRouteTables>\\n <TransitRouterRouteTableStatus>Active</TransitRouterRouteTableStatus>\\n <TransitRouterRouteTableType>System</TransitRouterRouteTableType>\\n <CreateTime>2021-03-15T09:39Z</CreateTime>\\n <TransitRouterRouteTableId>vtb-bp1dudbh2d5na6b50****</TransitRouterRouteTableId>\\n <TransitRouterRouteTableName>testname</TransitRouterRouteTableName>\\n <TransitRouterRouteTableDescription>testdesc</TransitRouterRouteTableDescription>\\n </TransitRouterRouteTables>\\n</ListTransitRouterRouteTablesResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterRouteTables',
+ 'summary' => 'Queries the route tables of an Enterprise Edition transit router.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateTransitRouterRouteEntry' => [
+ 'summary' => 'Adds a route to a route table of an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72308',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnT33W0H',
+ 'FEATUREcbn476RI8',
+ ],
+ ],
+ '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** is different for each request.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the route.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the route.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the next hop. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: routes network traffic to a black hole. All packets that match this route are dropped. If you select this option, you do not need to specify the next hop information.'."\n"
+ .'* **Attachment**: routes network traffic to a network instance connection. If you select this option, you must specify the ID of the network instance connection. All packets that match this route are routed to the specified network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'BlackHole',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryDestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route entry. IPv4 and IPv6 addresses are supported.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '192.168.0.0/24',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection that you want to specify as the next hop.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and performs the actual request.'."\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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterRouteEntryId' => [
+ 'description' => 'The ID of the route.'."\n",
+ 'type' => 'string',
+ 'example' => 'rte-75eg4jprkvk0pw****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '835E7F4B-B380-4E0F-96A5-6EA572388047',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterRouteTableId.NotFound',
+ 'errorMessage' => 'TransitRouterRouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'TransitRouterRouteEntryNextHopId.NotFound',
+ 'errorMessage' => 'TransitRouterRouteEntryNextHopId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CreateRouteEntryWithCCNAttachment',
+ 'errorMessage' => 'Operation failed because Create RouteEntry to CCN Attachment does not support.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.TransitRouterRoutEntry',
+ 'errorMessage' => 'TransitRouterRoutEntry quota exceeded.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterDestinationCidrBlock',
+ 'errorMessage' => 'TransitRouterDestinationCidrBlock is illegal.',
+ ],
+ [
+ 'errorCode' => 'InstanceExist.TransitRouterRouteEntry',
+ 'errorMessage' => 'The instance TransitRouterRouteEntry already exists.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterRouteTable',
+ 'errorMessage' => 'TransitRouterRouteTable status is invalid.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.RouteEntryIdAndRouteTableIdOrDestCidrBlock',
+ 'errorMessage' => 'RouteEntryId and TransitRouterRouteTableIdOrDestCidrBlock is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextHopType',
+ 'errorMessage' => 'The NextHopType is illegal.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterRouteEntryNextHopId',
+ 'errorMessage' => 'The parameter TransitRouterRouteEntryNextHopId is mandatory',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterRouteEntryNextHopId.NotFound',
+ 'errorMessage' => 'TransitRouterRouteEntryNextHopId is not found',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CreateRouteEntryWithSameDestinationCidrBlock',
+ 'errorMessage' => 'Operation failed because Create RouteEntry with same destination cidrblock does not support.',
+ ],
+ [
+ 'errorCode' => 'InvalidDestinationCidrBlock.NotFound',
+ 'errorMessage' => 'DestinationCidrBlock is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CreateRouteEntryWithConnectAttachment',
+ 'errorMessage' => 'Operation failed because Create RouteEntry to connect Attachment does not support.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.NextHopTypeBlackHoleAndNextHopId',
+ 'errorMessage' => 'TransitRouterRouteEntryNextHopType(BlackHole) and TransitRouterRouteEntryNextHopId is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CreateTransitRouterRouteEntryWithVPCAttachment',
+ 'errorMessage' => 'The specified VPC Attachment has not enable IPv6.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CreateTransitRouterRouteEntryWithVPNAttachment',
+ 'errorMessage' => 'Create RouteEntry to VPN Attachment does not support IPv6.',
+ ],
+ [
+ 'errorCode' => 'NotSupport.AttachmentRoute',
+ 'errorMessage' => 'Not support such attachment route.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterRouteEntries',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TransitRouterRouteEntryId\\": \\"rte-75eg4jprkvk0pw****\\",\\n \\"RequestId\\": \\"835E7F4B-B380-4E0F-96A5-6EA572388047\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterRouteEntryResponse>\\n <TransitRouterRouteEntryId>rte-75eg4jprkvk0pw****</TransitRouterRouteEntryId>\\n <RequestId>835E7F4B-B380-4E0F-96A5-6EA572388047</RequestId>\\n</CreateTransitRouterRouteEntryResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterRouteEntry',
+ 'description' => '**CreateTransitRouterRouteEntry** is an asynchronous operation. After you send a request, the route ID is returned but the operation is still being performed in the system background. You can call **ListTransitRouterRouteEntries** to query the status of a route.'."\n"
+ ."\n"
+ .'* If a route is in the **Creating** state, the route is being created. In this case, you can query the route but cannot perform other operations.'."\n"
+ .'* If a route is in the **Active** state, the route is created.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteTransitRouterRouteEntry' => [
+ 'summary' => 'Deletes blackhole routes and static routes that point to network instance connections from the route tables of an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72329',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnT33W0H',
+ ],
+ ],
+ '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. 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 may be different.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to check the request but not perform the operation. The system checks the permissions and the status of the specified instances. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): sends the request. If the request passes the precheck, the route is deleted.'."\n"
+ .'* **true**: sends a precheck request. The route is not deleted after the request passes the precheck. If you use this value, the system checks the required parameters and the request syntax. If the check fails, the corresponding error message is returned. If the request passes the check, the system returns the ID of the request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route entry.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rte-75eg4jprkvk0pw****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the next hop. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: a blackhole route. You do not need to specify a next hop.'."\n"
+ .'* **Attachment**: a network instance connection. You must specify a network instance connection as the next hop.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'BlackHole',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryDestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.0.0/24',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection that you want to specify as the next hop.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '2D69CCEA-42D0-48B2-8C9A-9BB207F76D6E',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryId',
+ 'errorMessage' => 'TransitRouterRouteEntryId is not found.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.RouteEntryIdAndRouteTableIdOrDestCidrBlock',
+ 'errorMessage' => 'RouteEntryId and TransitRouterRouteTableIdOrDestCidrBlock is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterRouteTableId.NotFound',
+ 'errorMessage' => 'TransitRouterRouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidDestinationCidrBlock.NotFound',
+ 'errorMessage' => 'DestinationCidrBlock is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.DeleteTransitRouterRouteEntry',
+ 'errorMessage' => 'Operation failed because this route entry is created automatically.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextHopType',
+ 'errorMessage' => 'The NextHopType is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteTableId',
+ 'errorMessage' => 'The transitRouter route table id is illegal.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterRouteEntryNextHopId',
+ 'errorMessage' => 'The parameter TransitRouterRouteEntryNextHopId is mandatory',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterRouteEntries',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2D69CCEA-42D0-48B2-8C9A-9BB207F76D6E\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterRouteEntryResponse>\\n <RequestId>2D69CCEA-42D0-48B2-8C9A-9BB207F76D6E</RequestId>\\n</DeleteTransitRouterRouteEntryResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterRouteEntry',
+ 'description' => 'Before you call this operation, take note of the following items:'."\n"
+ ."\n"
+ .'* If you specify the **TransitRouterRouteEntryId** parameter to delete a specific route, you do not need to configure the **TransitRouterRouteTableId** or **TransitRouterRouteEntryDestinationCidrBlock**. Otherwise, parameter conflicts occur.'."\n"
+ ."\n"
+ .'* If you do not specify the **TransitRouterRouteEntryId** parameter, configure the following parameters based on the next hop type of the route that you want to delete:'."\n"
+ ."\n"
+ .' * To delete a blackhole route, configure the following parameters: **TransitRouterRouteTableId**, **TransitRouterRouteEntryDestinationCidrBlock**, and **TransitRouterRouteEntryNextHopType**.'."\n"
+ .' * To delete routes other than blackhole routes, configure the following parameters: **TransitRouterRouteTableId**, **TransitRouterRouteEntryDestinationCidrBlock**, **TransitRouterRouteEntryNextHopType**, and **TransitRouterRouteEntryNextHopId**.'."\n"
+ ."\n"
+ .'* **DeleteTransitRouterRouteEntry** 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 **ListTransitRouterRouteEntries** operation to query the status of a route entry.'."\n"
+ ."\n"
+ .' * If the route entry is in the **Deleting** state, the route entry is being deleted. In this case, you can query the route entry but cannot perform other operations.'."\n"
+ .' * If a route entry cannot be found, it is deleted.'."\n"
+ ."\n"
+ .'### [](#)Limits'."\n"
+ ."\n"
+ .'You can call this operation to delete only static routes. Automatically learned routes are not supported. You can call the [ListTransitRouterRouteEntries](~~260941~~) operation to query route types.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UpdateTransitRouterRouteEntry' => [
+ 'summary' => 'Modifies the name and description of a route in a route table of an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterRouteEntryId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'rte-ksssq7kto4wfdx****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the route.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the route.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testdesc',
+ ],
+ ],
+ [
+ '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** is different for each request.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '2D69CCEA-42D0-48B2-8C9A-9BB207F76D6E',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryId',
+ 'errorMessage' => 'TransitRouterRouteEntryId is not found.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.UpdateTransitRouterRouteEntry',
+ 'errorMessage' => 'Operation failed because this route entry is created by system.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2D69CCEA-42D0-48B2-8C9A-9BB207F76D6E\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTransitRouterRouteEntryResponse>\\n <RequestId>2D69CCEA-42D0-48B2-8C9A-9BB207F76D6E</RequestId>\\n</UpdateTransitRouterRouteEntryResponse>","errorExample":""}]',
+ 'title' => 'UpdateTransitRouterRouteEntry',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouterRouteEntries' => [
+ 'summary' => 'Queries the details about routes in the route tables of an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72395',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnIIZZGE',
+ ],
+ ],
+ 'parameters' => [
+ [
+ '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' => '100',
+ 'minimum' => '1',
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryDestinationCidrBlock',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the route. **This parameter is to be deprecated. We recommend that you use the RouteFilter parameter**.'."\n",
+ 'type' => 'string',
+ 'deprecated' => true,
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '192.168.0.0/24',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryStatus',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the route. Valid values:'."\n"
+ ."\n"
+ .'* **All**'."\n"
+ .'* **Active** (default)'."\n"
+ .'* **Rejected**'."\n"
+ .'* **Prohibited**'."\n"
+ .'* **Standby**'."\n"
+ .'* **Candidate**'."\n"
+ ."\n"
+ .'If you do not specify a value, routes in the active state are queried.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ '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' => 'fce19****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNames',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The route name.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The route name.'."\n"
+ ."\n"
+ .'The name is optional. If you enter a name, it must be 1 to 128 characters in length, and cannot start with http:// or https://.'."\n"
+ ."\n"
+ .'> You can use this parameter to query only static routes in the specified route table. This parameter conflicts with other query conditions except for TransitRouterRouteEntryIds.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'testname',
+ ],
+ 'required' => false,
+ 'example' => 'testname',
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The route ID.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The route ID.'."\n"
+ ."\n"
+ .'> You can use this parameter to query only static routes in the specified route table. This parameter conflicts with other query conditions except for TransitRouterRouteEntryNames.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rte-oklkgwmj97z6dn****',
+ ],
+ 'required' => false,
+ 'example' => 'rte-oklkgwmj97z6dn****',
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The route type. Valid values:'."\n"
+ ."\n"
+ .'* **Propagated**: automatically learned by the route table.'."\n"
+ .'* **Static**: static routes.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Propagated',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The next hop type. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: routes network traffic to a black hole.'."\n"
+ .'* **Attachment**: routes network traffic to a network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Attachment',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection that you want to specify as the next hop.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The next hop ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-m5ent6du8deaq5*****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryNextHopResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The next hop type. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **TR**'."\n"
+ .'* **VPN**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryOriginResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The source instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-m5ent6du8deaq5*****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteEntryOriginResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The source instance type. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **TR**'."\n"
+ .'* **VPN**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'PrefixListId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The prefix list ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'pl-6ehtn5kqxgeyy08fi****',
+ ],
+ ],
+ [
+ 'name' => 'RouteFilter',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The filter conditions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The filter conditions.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The match pattern for filtering CIDR blocks. Valid values:'."\n"
+ ."\n"
+ .'* **PrefixExactMatchCidrs**: exact matching.'."\n"
+ .'* **LongestPrefixMatchCidrs**: longest prefix matching. You can specify IP addresses and CIDR blocks.'."\n"
+ .'* **SubnetOfMatchCidrs**: subnet matching. The subnets of the specified CIDR blocks, including the CIDR block, are matches against the match conditions.'."\n"
+ .'* **SupernetOfMatchCidrs**: supernet matching. The supernets of the CIDR block, including the CIDR block, are matched against the match conditions.'."\n"
+ ."\n"
+ .'By default, the logical operator among filter conditions is **AND**. Information about a route entry is returned only if the route entry matches all filter conditions. Filter conditions must be unique.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PrefixExactMatchCidrs',
+ ],
+ 'Value' => [
+ 'description' => 'The filter value.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'Specify a filter value based on the **Key**. You can specify multiple values for a **key**. The logical operator among values is OR, which indicates that a route entry is a match if the request matches one of the values. You can specify at most 500 values for each match condition.\\'."\n"
+ .'IPv4 addresses and CIDR blocks and IPv6 addresses and CIDR blocks are supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.1.0/24',
+ ],
+ 'required' => false,
+ 'maxItems' => 500,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\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 **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' => 'fce19****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'C3835E5E-1504-4344-B1BB-98A4110F1079',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '6',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TransitRouterRouteEntries' => [
+ 'description' => 'A list of route entries.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the route.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterRouteEntryId' => [
+ 'description' => 'The route ID.'."\n"
+ ."\n"
+ .'> This parameter is returned only for static routes.'."\n",
+ 'type' => 'string',
+ 'example' => 'rte-oklkgwmj97z6dn****',
+ ],
+ 'TransitRouterRouteEntryDestinationCidrBlock' => [
+ 'description' => 'The destination CIDR block of the route entry. An IPv4 or IPv6 CIDR block is returned.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.0.0/24',
+ ],
+ 'TransitRouterRouteEntryType' => [
+ 'description' => 'The type of the route. Valid values:'."\n"
+ ."\n"
+ .'* **Static**: static routes.'."\n"
+ .'* **Propagated**: automatically learned by the route table.'."\n",
+ 'type' => 'string',
+ 'example' => 'Static',
+ ],
+ 'CreateTime' => [
+ 'description' => 'The time when the route entry was created.'."\n"
+ ."\n"
+ .'The time follows the ISO8601 standard in the YYYY-MM-DDThh:mmZ format. The time is displayed in UTC.'."\n"
+ ."\n"
+ .'> This parameter is returned only for static routes.'."\n",
+ 'type' => 'string',
+ 'example' => '2021-06-15T07:01Z',
+ ],
+ 'TransitRouterRouteEntryName' => [
+ 'description' => 'The route name.'."\n"
+ ."\n"
+ .'> This parameter is returned only for static routes.'."\n",
+ 'type' => 'string',
+ 'example' => 'testname',
+ ],
+ 'TransitRouterRouteEntryStatus' => [
+ 'description' => 'The route status. Valid values:'."\n"
+ ."\n"
+ .'* **Active**'."\n"
+ .'* **Rejected**'."\n"
+ .'* **Prohibited**'."\n"
+ .'* **Standby**'."\n"
+ .'* **Candidate**'."\n"
+ .'* **Creating**'."\n"
+ .'* **Deleting**'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'TransitRouterRouteEntryNextHopType' => [
+ 'description' => 'The next hop type. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: a blackhole route. Packets destined for the destination CIDR block of the route are dropped.'."\n"
+ .'* **Attachment**: a network instance connection. Packets destined for the destination CIDR block of the route are forwarded to the specified network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'BlackHole',
+ ],
+ 'TransitRouterRouteEntryNextHopId' => [
+ 'description' => 'The next hop ID. This parameter is not returned if the route is a blackhole route.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-vx6iwhjr1x1j78****',
+ ],
+ 'TransitRouterRouteEntryDescription' => [
+ 'description' => 'The route description.'."\n"
+ ."\n"
+ .'> This parameter is returned only for static routes.'."\n",
+ 'type' => 'string',
+ 'example' => 'CidrRoute',
+ ],
+ 'OperationalMode' => [
+ 'description' => 'Indicates whether the route can be managed. Valid values:'."\n"
+ ."\n"
+ .'* **true**: The route can be managed. You can delete the route.'."\n"
+ .'* **false**: The route cannot be managed because it is automatically generated by the system.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'Tag' => [
+ 'description' => 'The route tag.'."\n"
+ ."\n"
+ .'Only **PermitVbr** may be returned, which indicates that the route is advertised only to the route tables of the virtual border routers (VBRs) that are connected to the transit router.'."\n"
+ ."\n"
+ .'> This parameter is returned only for routes whose CIDR blocks are automatically generated by the system.'."\n",
+ 'type' => 'string',
+ 'example' => 'PermitVbr',
+ ],
+ 'TransitRouterRouteEntryNextHopResourceId' => [
+ 'description' => 'The next hop ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-m5ent6du8deaq5*****',
+ ],
+ 'TransitRouterRouteEntryNextHopResourceType' => [
+ 'description' => 'The next hop type. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **TR**'."\n"
+ .'* **VPN**'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'TransitRouterRouteEntryOriginResourceType' => [
+ 'description' => 'The source instance type. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **TR**'."\n"
+ .'* **VPN**'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'TransitRouterRouteEntryOriginResourceId' => [
+ 'description' => 'The source instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-m5ent6du8deaq5*****',
+ ],
+ 'PrefixListId' => [
+ 'description' => 'The prefix list ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'pl-k1ainl66z3527773d****',
+ ],
+ 'PathAttributes' => [
+ 'description' => 'The route attributes.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Communities' => [
+ 'description' => 'The route community.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community attributes of the routes.'."\n",
+ 'type' => 'string',
+ 'example' => '65501:1',
+ ],
+ ],
+ 'AsPaths' => [
+ 'description' => 'The route AS path.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS path of the route.'."\n",
+ 'type' => 'string',
+ 'example' => '65501',
+ ],
+ ],
+ 'OriginInstanceId' => [
+ 'description' => 'The source instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vbr-m5ent6du8deaq5*****'."\n",
+ ],
+ 'OriginInstanceType' => [
+ 'description' => 'The source instance type. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **TR**'."\n"
+ .'* **VPN**'."\n"
+ .'* **CCN**'."\n",
+ 'type' => 'string',
+ 'example' => 'VBR',
+ ],
+ 'OriginRouteType' => [
+ 'description' => 'The route type. Valid values:'."\n"
+ ."\n"
+ .'* **System**'."\n"
+ .'* **Custom**'."\n"
+ .'* **static**'."\n"
+ .'* **BGP**'."\n"
+ .'* **BlackHole**'."\n",
+ 'type' => 'string',
+ 'example' => 'BGP',
+ ],
+ 'Preference' => [
+ 'description' => 'The route priority.'."\n"
+ ."\n"
+ .'A smaller value indicates a higher priority.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteTableId',
+ 'errorMessage' => 'TransitRouterRouteTableId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryStatus',
+ 'errorMessage' => 'TransitRouterRouteEntryStatus is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'NextToken is illegal.',
+ ],
+ [
+ 'errorCode' => 'ParamExclusive.RouteEntryIdsAndStatus',
+ 'errorMessage' => 'TransitRouterRouteEntryIds and TransitRouterRouteEntryStatus is mutually exclusive.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterRouteTableId.NotFound',
+ 'errorMessage' => 'TransitRouterRouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'FilterKeyDuplicated.RouteFilter',
+ 'errorMessage' => 'The keys in RouteFilter are duplicated.',
+ ],
+ [
+ 'errorCode' => 'InvalidFilterKey',
+ 'errorMessage' => 'The key in filter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryNextHopType',
+ 'errorMessage' => 'TransitRouterRouteEntryNextHopType is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryNextHopAttachmentId',
+ 'errorMessage' => 'TransitRouterRouteEntryNextHopAttachmentId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryNextHopResourceId',
+ 'errorMessage' => 'TransitRouterRouteEntryNextHopResourceId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryNextHopResourceType',
+ 'errorMessage' => 'TransitRouterRouteEntryNextHopResourceType is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryOriginResourceId',
+ 'errorMessage' => 'TransitRouterRouteEntryOriginResourceId is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryOriginResourceType',
+ 'errorMessage' => 'TransitRouterRouteEntryOriginResourceType is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteEntryType',
+ 'errorMessage' => 'TransitRouterRouteEntryType is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.PrefixExactMatchCidr',
+ 'errorMessage' => 'PrefixExactMatchCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.LongestPrefixMatchCidr',
+ 'errorMessage' => 'LongestPrefixMatchCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SubnetOfMatchCidr',
+ 'errorMessage' => 'SubnetOfMatchCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SupernetOfMatchCidr',
+ 'errorMessage' => 'SupernetOfMatchCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TextMatchCidr',
+ 'errorMessage' => 'The TextMatchCidr specified in the parameter is illegal.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.PrefixlistAssociation',
+ 'errorMessage' => 'The prefix list is not associated with this route table.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"fce19****\\",\\n \\"RequestId\\": \\"C3835E5E-1504-4344-B1BB-98A4110F1079\\",\\n \\"TotalCount\\": 6,\\n \\"MaxResults\\": 20,\\n \\"TransitRouterRouteEntries\\": [\\n {\\n \\"TransitRouterRouteEntryId\\": \\"rte-oklkgwmj97z6dn****\\",\\n \\"TransitRouterRouteEntryDestinationCidrBlock\\": \\"192.168.0.0/24\\",\\n \\"TransitRouterRouteEntryType\\": \\"Static\\",\\n \\"CreateTime\\": \\"2021-06-15T07:01Z\\",\\n \\"TransitRouterRouteEntryName\\": \\"testname\\",\\n \\"TransitRouterRouteEntryStatus\\": \\"Active\\",\\n \\"TransitRouterRouteEntryNextHopType\\": \\"BlackHole\\",\\n \\"TransitRouterRouteEntryNextHopId\\": \\"tr-attach-vx6iwhjr1x1j78****\\",\\n \\"TransitRouterRouteEntryDescription\\": \\"CidrRoute\\",\\n \\"OperationalMode\\": false,\\n \\"Tag\\": \\"PermitVbr\\",\\n \\"TransitRouterRouteEntryNextHopResourceId\\": \\"vpc-m5ent6du8deaq5*****\\",\\n \\"TransitRouterRouteEntryNextHopResourceType\\": \\"VPC\\",\\n \\"TransitRouterRouteEntryOriginResourceType\\": \\"VPC\\",\\n \\"TransitRouterRouteEntryOriginResourceId\\": \\"vpc-m5ent6du8deaq5*****\\",\\n \\"PrefixListId\\": \\"pl-k1ainl66z3527773d****\\",\\n \\"PathAttributes\\": {\\n \\"Communities\\": [\\n \\"65501:1\\"\\n ],\\n \\"AsPaths\\": [\\n \\"65501\\"\\n ],\\n \\"OriginInstanceId\\": \\"vbr-m5ent6du8deaq5*****\\\\n\\",\\n \\"OriginInstanceType\\": \\"VBR\\",\\n \\"OriginRouteType\\": \\"BGP\\",\\n \\"Preference\\": 50\\n }\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterRouteEntriesResponse>\\n <NextToken>fce19****</NextToken>\\n <RequestId>C3835E5E-1504-4344-B1BB-98A4110F1079</RequestId>\\n <TotalCount>6</TotalCount>\\n <MaxResults>20</MaxResults>\\n <TransitRouterRouteEntries>\\n <TransitRouterRouteEntryId>rte-oklkgwmj97z6dn****</TransitRouterRouteEntryId>\\n <TransitRouterRouteEntryDestinationCidrBlock>192.168.0.0/24</TransitRouterRouteEntryDestinationCidrBlock>\\n <TransitRouterRouteEntryType>Static</TransitRouterRouteEntryType>\\n <CreateTime>2021-06-15T07:01Z</CreateTime>\\n <TransitRouterRouteEntryName>testname</TransitRouterRouteEntryName>\\n <TransitRouterRouteEntryStatus>Active</TransitRouterRouteEntryStatus>\\n <TransitRouterRouteEntryNextHopType>BlackHole</TransitRouterRouteEntryNextHopType>\\n <TransitRouterRouteEntryNextHopId>tr-attach-vx6iwhjr1x1j78****</TransitRouterRouteEntryNextHopId>\\n <TransitRouterRouteEntryDescription>CidrRoute</TransitRouterRouteEntryDescription>\\n <OperationalMode>false</OperationalMode>\\n <Tag>PermitVbr</Tag>\\n <TransitRouterRouteEntryNextHopResourceId>vpc-m5ent6du8deaq5*****</TransitRouterRouteEntryNextHopResourceId>\\n <TransitRouterRouteEntryNextHopResourceType>VPC</TransitRouterRouteEntryNextHopResourceType>\\n <TransitRouterRouteEntryOriginResourceType>VPC</TransitRouterRouteEntryOriginResourceType>\\n <TransitRouterRouteEntryOriginResourceId>vpc-m5ent6du8deaq5*****</TransitRouterRouteEntryOriginResourceId>\\n <PrefixListId>pl-k1ainl66z3527773d****</PrefixListId>\\n <Preference>50</Preference>\\n </TransitRouterRouteEntries>\\n</ListTransitRouterRouteEntriesResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterRouteEntries',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouterRouteTableAssociations' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '50',
+ 'default' => '50',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no subsequent 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' => 'a415****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentResourceId',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'description' => 'The ID of the next hop.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of next hop. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **TR**: transit router'."\n"
+ .'* **VPN**: VPN attachment'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the associated forwarding correlation. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: The associated forwarding correlation is available.'."\n"
+ .'* **Associating**: The associated forwarding correlation is being created.'."\n"
+ .'* **Dissociating**: The associated forwarding correlation is being deleted.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** was not returned, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'a415****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'F6B1D9AB-176D-4399-801D-8BC576F4EB0D',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'TransitRouterAssociations' => [
+ 'description' => 'A list of associated forwarding correlations.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the associated forwarding correlation.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the associated forwarding correlation. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: The associated forwarding correlation is available.'."\n"
+ .'* **Associating**: The associated forwarding correlation is being created.'."\n"
+ .'* **Dissociating**: The associated forwarding correlation is being deleted.'."\n"
+ .'* **Deleted**: The associated forwarding correlation is deleted.'."\n",
+ 'type' => 'string',
+ 'example' => 'Associating',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of next hop. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **TR**: transit router'."\n"
+ .'* **VPN** :VPN attachment'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'ResourceId' => [
+ 'description' => 'The ID of the next hop.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ 'TransitRouterRouteTableId' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The parameter NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"a415****\\",\\n \\"RequestId\\": \\"F6B1D9AB-176D-4399-801D-8BC576F4EB0D\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 50,\\n \\"TransitRouterAssociations\\": [\\n {\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-nls9fzkfat8934****\\",\\n \\"Status\\": \\"Associating\\",\\n \\"ResourceType\\": \\"VPC\\",\\n \\"ResourceId\\": \\"vpc-bp1h8vbrbcgohcju5****\\",\\n \\"TransitRouterRouteTableId\\": \\"vtb-bp1dudbh2d5na6b50****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterRouteTableAssociationsResponse>\\n <RequestId>F6B1D9AB-176D-4399-801D-8BC576F4EB0D</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>50</MaxResults>\\n <TransitRouterAssociations>\\n <TransitRouterAttachmentId>tr-attach-nls9fzkfat8934****</TransitRouterAttachmentId>\\n <Status>Associating</Status>\\n <ResourceType>VPC</ResourceType>\\n <ResourceId>vpc-bp1h8vbrbcgohcju5****</ResourceId>\\n <TransitRouterRouteTableId>vtb-bp1dudbh2d5na6b50****</TransitRouterRouteTableId>\\n </TransitRouterAssociations>\\n</ListTransitRouterRouteTableAssociationsResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterRouteTableAssociations',
+ 'summary' => 'Queries the associated forwarding correlations that are created for a route table of an Enterprise Edition transit router or a network instance connection.',
+ 'description' => 'When you call **ListTransitRouterRouteTableAssociations**, you must set at least one of **TransitRouterRouteTableId** and **TransitRouterAttachmentId**.'."\n"
+ ."\n"
+ .'* If you set only **TransitRouterRouteTableId**, the network instance connections that are in associated forwarding correlation with a route table of an Enterprise Edition transit router are queried.'."\n"
+ ."\n"
+ .'* If you set only **TransitRouterAttachmentId**, the route table of an Enterprise Edition transit router that is in associated forwarding correlation with a network instance connection is queried.'."\n"
+ ."\n"
+ .'* If you set both **TransitRouterRouteTableId** and **TransitRouterAttachmentId**, the associated forwarding correlations between a specified network instance connection and a specified route table of an Enterprise Edition transit router are queried.'."\n"
+ ."\n"
+ .' * If an associated forwarding correlation is created between the network instance connection and the route table of the Enterprise Edition transit router, the information about the associated forwarding correlation is returned.'."\n"
+ .' * If no associated forwarding correlation is created between the network instance connection and the route table of the Enterprise Edition transit router, **TransitRouterAssociations** in the response is empty.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'AssociateTransitRouterAttachmentWithRouteTable' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ '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** is different for each request.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\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"
+ .'* **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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ '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' => 'AssociationExist.TransitRouterTable',
+ 'errorMessage' => 'The specified association already exists.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterTableType',
+ 'errorMessage' => 'When peer attachment is associated with a custom routeTable, the Transit Router in both regions must be enterprise.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TransitRouterType',
+ 'errorMessage' => 'Operation failed because transit router type not support this operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.AttachmentOrRouteTable',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterTableId',
+ 'errorMessage' => 'The specified TransitRouterTableId is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.Associate',
+ 'errorMessage' => 'The specified attachment or routeTable is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"<AssociateTransitRouterAttachmentWithRouteTableResponse>\\n <RequestId>4EC47282-1B74-4534-BD0E-403F3EE64CAF</RequestId>\\n</AssociateTransitRouterAttachmentWithRouteTableResponse>","errorExample":""}]',
+ 'title' => 'AssociateTransitRouterAttachmentWithRouteTable',
+ 'summary' => 'Creates an associated forwarding correlation.',
+ 'description' => 'After you create a network instance connection on a transit router, you can configure an associated forwarding correlation to associate the network instance connection with the route table of an Enterprise Edition transit router. The Enterprise Edition transit router forwards traffic for the network instance based on the routes in the route table. Before you begin, we recommend that you take note of the following rules:'."\n"
+ ."\n"
+ .'* Only route tables of Enterprise Edition transit routers support associated forwarding correlations. For more information about the regions and zones that support Enterprise Edition transit routers, see [What is CEN?](~~181681~~)'."\n"
+ ."\n"
+ .'* Each network instance connection can have an associated forwarding correlation with only one route table of only one Enterprise Edition transit router.'."\n"
+ ."\n"
+ .'* **AssociateTransitRouterAttachmentWithRouteTable** 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 **ListTransitRouterRouteTableAssociations** operation to query the status of an associated forwarding correlation.'."\n"
+ ."\n"
+ .' * If an associated forwarding correlation is in the **Associating** state, the associated forwarding correlation is being created. You can query the associated forwarding correlation but cannot perform other operations.'."\n"
+ .' * If an associated forwarding correlation is in the **Active** state, the associated forwarding correlation is created.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ReplaceTransitRouterRouteTableAssociation' => [
+ 'summary' => 'Associates a network instance connection with another route table of a transit router.',
+ 'methods' => [
+ 'get',
+ '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 value, but you must make sure that it is unique among all requests. The client 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' => '123e4567-e89b-12d3-a456-426655****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether only to precheck the API request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: prechecks the request but does not associate the network instance connection with another route table. The system checks whether the required parameters are set, whether the formats of the values are valid, and the service 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**: sends the request. After the request passes the authentication, the network instance connection is associated with the specified route table. This is the default value.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-attach-071g5j5tefg4x6****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table with which you want to associate the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vtb-bp1cprmc6xmzjd66i****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The returned result.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '160BD7D3-3D1E-5702-9AF0-56E4B15FCB65',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitAttachment',
+ 'errorMessage' => 'The specified TransitAttachment does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterTableType',
+ 'errorMessage' => 'TransitRouterTableType is illegal. ',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Status',
+ 'errorMessage' => 'The TransitRouterRouteTable or TransitRouterAttachment Status is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterRouteTableId',
+ 'errorMessage' => 'The specified parameter TransitRouterRouteTableId is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterAttachmentId',
+ 'errorMessage' => 'The specified parameter TransitRouterAttachmentId is invalid.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"160BD7D3-3D1E-5702-9AF0-56E4B15FCB65\\"\\n}","errorExample":""},{"type":"xml","example":"<ReplaceTransitRouterRouteTableAssociationResponse>\\n <RequestId>160BD7D3-3D1E-5702-9AF0-56E4B15FCB65</RequestId>\\n</ReplaceTransitRouterRouteTableAssociationResponse>","errorExample":""}]',
+ 'title' => 'ReplaceTransitRouterRouteTableAssociation',
+ ],
+ 'DissociateTransitRouterAttachmentFromRouteTable' => [
+ 'summary' => 'Deletes an associated forwarding correlation.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ '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 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' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run to check information such as the permissions and the instance status. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ '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' => 'IncorrectStatus.AttachmentOrRouteTable',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.dissociateRouteTable',
+ 'errorMessage' => 'The specified attachment or routeTable is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterConnectPeer',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterAttachmentId',
+ 'errorMessage' => 'The specified parameter TransitRouterAttachmentId is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterRouteTableId',
+ 'errorMessage' => 'The specified parameter TransitRouterRouteTableId is invalid.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4EC47282-1B74-4534-BD0E-403F3EE64CAF\\"\\n}","errorExample":""},{"type":"xml","example":"<DissociateTransitRouterAttachmentFromRouteTableResponse>\\n <RequestId>4EC47282-1B74-4534-BD0E-403F3EE64CAF</RequestId>\\n</DissociateTransitRouterAttachmentFromRouteTableResponse>","errorExample":""}]',
+ 'title' => 'DissociateTransitRouterAttachmentFromRouteTable',
+ 'description' => '**DissociateTransitRouterAttachmentFromRouteTable** 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 **ListTransitRouterRouteTableAssociations** operation to query an associated forwarding correlation between a network instance connection and a route table.'."\n"
+ ."\n"
+ .'* If an associated forwarding correlation is in the **Dissociating** state, the associated forwarding correlation is being deleted. You can query the associated forwarding correlation but cannot perform other operations.'."\n"
+ .'* If an associated forwarding correlation cannot be found, the associated forwarding correlation is deleted.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'EnableTransitRouterRouteTablePropagation' => [
+ 'summary' => 'Creates a route learning correlation.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-nls9fzkfat8934****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ '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' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and performs the actual request.'."\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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '59CF8BF9-DE61-421E-B903-D56AF46A303C',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterTableId',
+ 'errorMessage' => 'The specified TransitRouterTableId is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.AttachmentOrRouteTable',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.EnablePropagation',
+ 'errorMessage' => 'The specified attachment or routeTable is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterRouteTableId',
+ 'errorMessage' => 'The specified parameter TransitRouterRouteTableId is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterAttachmentId',
+ 'errorMessage' => 'The specified parameter TransitRouterAttachmentId is invalid.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"59CF8BF9-DE61-421E-B903-D56AF46A303C\\"\\n}","errorExample":""},{"type":"xml","example":"<EnableTransitRouterRouteTablePropagationResponse>\\n <RequestId>59CF8BF9-DE61-421E-B903-D56AF46A303C</RequestId>\\n</EnableTransitRouterRouteTablePropagationResponse>","errorExample":""}]',
+ 'title' => 'EnableTransitRouterRouteTablePropagation',
+ 'description' => 'After you establish a network instance connection on a transit router, you can create a route learning correlation for the network instance connection. Then, the routes of the connected network instance are automatically advertised to the route table of the transit router. Before you begin, we recommend that you take note of the following rules:'."\n"
+ ."\n"
+ .'* You can create route learning correlations only on Enterprise Edition transit routers. For more information about the regions and zones that support Enterprise Edition transit routers, see [What is CEN?](~~181681~~)'."\n"
+ ."\n"
+ .'* **EnableTransitRouterRouteTablePropagation** 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 **ListTransitRouterRouteTablePropagations** operation to query the route learning status between a network instance connection and a route table.'."\n"
+ ."\n"
+ .' * **Enabling** indicates that a route learning correlation is being created between the network instance connection and route table. You can query the route learning correlation but cannot perform other operations.'."\n"
+ .' * **Active** indicates that the route learning correlation is created between the network instance connection and route table.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DisableTransitRouterRouteTablePropagation' => [
+ 'summary' => 'Deletes a route learning correlation.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-vx6iwhjr1x1j78****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ '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' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and performs the actual request.'."\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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'A7C43F99-B1E5-4A53-AB64-4BAE8AF4484E',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.AttachmentOrRouteTable',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.DisablePropagation',
+ 'errorMessage' => 'The specified attachment or routeTable is not supported by this operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterRouteTableId',
+ 'errorMessage' => 'The specified parameter TransitRouterRouteTableId is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouterAttachmentId',
+ 'errorMessage' => 'The specified parameter TransitRouterAttachmentId is invalid.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A7C43F99-B1E5-4A53-AB64-4BAE8AF4484E\\"\\n}","errorExample":""},{"type":"xml","example":"<DisableTransitRouterRouteTablePropagationResponse>\\n <RequestId>A7C43F99-B1E5-4A53-AB64-4BAE8AF4484E</RequestId>\\n</DisableTransitRouterRouteTablePropagationResponse>","errorExample":""}]',
+ 'title' => 'DisableTransitRouterRouteTablePropagation',
+ 'description' => '**DisableTransitRouterRouteTablePropagation** is an synchronous operation. After you send a request, the system returns a **request ID** and runs the task in the background. You can call the **ListTransitRouterRouteTablePropagations** operation to query the status of a route learning correlation.'."\n"
+ ."\n"
+ .'* If a route learning correlation is in the **Disabling** state, the route learning correlation is being deleted. You can query the route learning correlation but cannot perform other operations.'."\n"
+ .'* If a route learning correlation cannot be found, the route learning correlation is deleted.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTransitRouterRouteTablePropagations' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '50',
+ 'default' => '50',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'dd20****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'tr-attach-vx6iwhjr1x1j78****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: virtual private cloud (VPC)'."\n"
+ .'* **VBR**: virtual border router (VBR)'."\n"
+ .'* **TR**: transit router'."\n"
+ .'* **VPN**: VPN connection',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the route learning correlation. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: available'."\n"
+ .'* **Enabling**: being enabled'."\n"
+ .'* **Disabling**: being disabled'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the query.'."\n",
+ 'type' => 'string',
+ 'example' => 'dd20****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '04C81E0D-945E-4D61-A561-3DEA322F243B',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'TransitRouterPropagations' => [
+ 'description' => 'A list of route learning correlations.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-vx6iwhjr1x1j78****',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the route learning correlation. Valid values:'."\n"
+ ."\n"
+ .'* **Enabling**: being enabled'."\n"
+ .'* **Disabling**: being disabled'."\n"
+ .'* **Active**: available',
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of the network instance. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ .'* **VBR**: VBR'."\n"
+ .'* **TR**: transit router'."\n"
+ .'* **VPN**: VPN connection',
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'ResourceId' => [
+ 'description' => 'The ID of the network instance.',
+ 'type' => 'string',
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ 'TransitRouterRouteTableId' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-bp1dudbh2d5na6b50****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The parameter NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"dd20****\\",\\n \\"RequestId\\": \\"04C81E0D-945E-4D61-A561-3DEA322F243B\\",\\n \\"TotalCount\\": 2,\\n \\"MaxResults\\": 50,\\n \\"TransitRouterPropagations\\": [\\n {\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-vx6iwhjr1x1j78****\\",\\n \\"Status\\": \\"Active\\",\\n \\"ResourceType\\": \\"VPC\\",\\n \\"ResourceId\\": \\"vpc-bp1h8vbrbcgohcju5****\\",\\n \\"TransitRouterRouteTableId\\": \\"vtb-bp1dudbh2d5na6b50****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterRouteTablePropagationsResponse> \\n<TotalCount>2</TotalCount>\\n<RequestId>04C81E0D-945E-4D61-A561-3DEA322F243B</RequestId>\\n<MaxResults>50</MaxResults>\\n<TransitRouterPropagations>\\n <Status>Active</Status>\\n <TransitRouterAttachmentId>tr-attach-nls9fzkfat8934****</TransitRouterAttachmentId>\\n <TransitRouterRouteTableId>vtb-bp1dudbh2d5na6b50****</TransitRouterRouteTableId>\\n <ResourceId>vpc-bp1h8vbrbcgohcju5****</ResourceId>\\n <ResourceType>VPC</ResourceType>\\n</TransitRouterPropagations>\\n<TransitRouterPropagations>\\n <Status>Active</Status>\\n <TransitRouterAttachmentId>tr-attach-vx6iwhjr1x1j78****</TransitRouterAttachmentId>\\n <TransitRouterRouteTableId>vtb-bp1dudbh2d5na6b50****</TransitRouterRouteTableId>\\n <ResourceId>vpc-bp1kbjcre9vtsebo1****</ResourceId>\\n <ResourceType>VPC</ResourceType>\\n</TransitRouterPropagations>\\n</ListTransitRouterRouteTablePropagationsResponse> ","errorExample":""}]',
+ 'title' => 'ListTransitRouterRouteTablePropagations',
+ 'summary' => 'Queries the route learning correlations of an Enterprise Edition transit router.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateCenRouteMap' => [
+ 'summary' => 'Creates a routing policy. A routing policy filters routing information and facilitates network management.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72302',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnL0VP69',
+ 'FEATUREcbnCEHNQQ',
+ 'FEATUREcbnK70KRY',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'CenRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region in which the routing policy is applied.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransmitDirection',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The direction in which the routing policy is applied. Valid values:'."\n"
+ ."\n"
+ .'* **RegionIn**: Routes are advertised to the gateways in the regions that are connected by the CEN instance.'."\n"
+ ."\n"
+ .'For example, routes are advertised from network instances deployed in the current region or other regions to the gateway deployed in the current region.'."\n"
+ ."\n"
+ .'* **RegionOut**: Routes are advertised from the gateways in the regions that are connected by the CEN instance.'."\n"
+ ."\n"
+ .'For example, routes are advertised from the gateway deployed in the current region to network instances deployed in the same region, or to gateways deployed in other regions.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'RegionIn',
+ 'enum' => [
+ 'RegionIn',
+ 'RegionOut',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the routing policy.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'Priority',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The priority of the routing policy. Valid values: **1** to **100**. A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'> You cannot specify the same priority for routing policies that apply in the same region and direction. The system matches routes against the match conditions of routing policies in descending order of priority. A smaller value indicates a higher priority. You must set the priorities to proper values.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'maximum' => '2999',
+ 'minimum' => '1',
+ 'example' => '3',
+ ],
+ ],
+ [
+ 'name' => 'MapResult',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The action to be performed on a route that meets all the match conditions. Valid values:'."\n"
+ ."\n"
+ .'* **Permit**: the route is permitted.'."\n"
+ .'* **Deny**: the route is denied.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'Permit',
+ 'enum' => [
+ 'Permit',
+ 'Deny',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'NextPriority',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The priority of the routing policy that you want to associate with the current one.'."\n"
+ ."\n"
+ .'* This parameter takes effect only when the **MapResult** parameter is set to **Permit**. This way, the permitted route is matched against the next routing policy.'."\n"
+ .'* The region and direction of the routing policy to be associated must be the same as those of the current routing policy.'."\n"
+ .'* The priority of the next routing policy must be lower than the priority of the current routing policy.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'docRequired' => false,
+ 'maximum' => '1000',
+ 'minimum' => '1',
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'CidrMatchMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The match method that is used to match routes against the prefix list. Valid values:'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the route prefix is included in the match conditions.'."\n"
+ ."\n"
+ .'For example, if you set the match condition to 1.1.0.0/16 and fuzzy match is applied, the route whose prefix is 1.1.1.0/24 meets the match condition.'."\n"
+ ."\n"
+ .'* **Complete**: exact match. A route is a match only if the route prefix is the same as the prefix specified in the match condition.'."\n"
+ ."\n"
+ .'For example, if you set the match condition to 1.1.0.0/16 and exact match is applied, only the route whose prefix is 1.1.0.0/16 meets the match condition.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Include ',
+ 'enum' => [
+ 'Include',
+ 'Complete',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'AsPathMatchMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The match method that is used to match routes based on the AS path. Valid values:'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the AS path of the route overlaps with the AS path in the match conditions.'."\n"
+ .'* **Complete**: exact match. A route is a match only if the AS path of the route matches the AS path in the match conditions.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Include',
+ 'enum' => [
+ 'Include',
+ 'Complete',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'CommunityMatchMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The match method that is used to match routes based on the community. Valid values:'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the community of the route overlaps with the community in the match conditions.'."\n"
+ .'* **Complete**: exact match. A route is a match only if the community of the route matches the community in the match conditions.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Include',
+ 'enum' => [
+ 'Include',
+ 'Complete',
+ 'Contain',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'CommunityOperateMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The action to be performed on the community. Valid values:'."\n"
+ ."\n"
+ .'* **Additive**: adds the community to the route.'."\n"
+ .'* **Replace**: replaces the original community of the route.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Additive',
+ 'enum' => [
+ 'Additive',
+ 'Replace',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'Preference',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new priority of the route.'."\n"
+ ."\n"
+ .'Valid values: **1** to **100**. The default priority is **50**. A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '50',
+ ],
+ ],
+ [
+ 'name' => 'SourceInstanceIdsReverseMatch',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to exclude source instance IDs. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): A route is a match if the source instance ID is included in the list specified by **SourceInstanceIds.N**.'."\n"
+ .'* **true**: A route is a match if the source network instance ID is not in the list specified by **SourceInstanceIds.N**.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'DestinationInstanceIdsReverseMatch',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to exclude destination instance IDs. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): A route is a match if the destination instance ID is included in the list specified by **SourceInstanceIds.N**.'."\n"
+ .'* **true**: A route is a match if the destination network instance ID is not in the list specified by **SourceInstanceIds.N**.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'MatchAddressType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of IP address in the match condition. Valid values:'."\n"
+ ."\n"
+ .'* **IPv4**: IPv4 address'."\n"
+ .'* **IPv6**: IPv6 address'."\n"
+ ."\n"
+ .'This parameter can be empty. If no value is specified, all types of IP address are a match.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv4',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the transit router.'."\n"
+ ."\n"
+ .'If you do not specify a route table ID, the routing policy is automatically associated with the default route table of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-gw8nx3515m1mbd1z1****',
+ ],
+ ],
+ [
+ 'name' => 'SourceInstanceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the source network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* Virtual private cloud (VPC)'."\n"
+ .'* Virtual border router (VBR)'."\n"
+ .'* Cloud Connect Network (CCN) instance'."\n"
+ .'* Smart Access Gateway (SAG) instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* VPC'."\n"
+ .'* VBR'."\n"
+ .'* CCN instance'."\n"
+ .'* SAG instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-adeg3544fdf34vf****',
+ ],
+ 'required' => false,
+ 'example' => 'vpc-adeg3544fdf34vf****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationInstanceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the destination network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* VPC'."\n"
+ .'* VBR'."\n"
+ .'* CCN instance'."\n"
+ .'* SAG instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n"
+ ."\n"
+ .'> The destination instance IDs take effect only when Direction is set to Export from Regional Gateway and the destination instances are deployed in the current region.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the destination network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* VPC'."\n"
+ .'* VBR'."\n"
+ .'* CCN instance'."\n"
+ .'* SAG instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n"
+ ."\n"
+ .'> The destination instance IDs take effect only when Direction is set to Export from Regional Gateway and the destination instances are deployed in the current region.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-afrfs434465fdf****',
+ ],
+ 'required' => false,
+ 'example' => 'vpc-afrfs434465fdf****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'SourceRouteTableIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the source route tables from which routes are evaluated. You can enter at most 32 route table IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source route tables from which routes are evaluated. You can enter at most 32 route table IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-adfr233vf34rvd4****',
+ ],
+ 'required' => false,
+ 'example' => 'vtb-adfr233vf34rvd4****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationRouteTableIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the destination route tables to which routes are evaluated. You can enter at most 32 route table IDs.'."\n"
+ ."\n"
+ .'> The destination route table IDs take effect only when Direction is set to Export from Regional Gateway and the destination route tables belong to network instances deployed in the current region.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the destination route tables to which routes are evaluated. You can enter at most 32 route table IDs.'."\n"
+ ."\n"
+ .'> The destination route table IDs take effect only when Direction is set to Export from Regional Gateway and the destination route tables belong to network instances deployed in the current region.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-adefrgtr144vf****',
+ ],
+ 'required' => false,
+ 'example' => 'vtb-adefrgtr144vf****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'SourceRegionIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the source regions from which routes are evaluated. You can enter at most 32 region IDs.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source regions from which routes are evaluated. You can enter at most 32 region IDs.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-beijing',
+ ],
+ 'required' => false,
+ 'example' => 'cn-beijing',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'SourceChildInstanceTypes',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The types of source network instance to which the routes belong. The following types of network instances are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN**: VPN gateway or IPsec connection'."\n"
+ ."\n"
+ .' * If the IPsec-VPN connection or SSL client is associated with a VPN gateway, the VPC associated with the VPN gateway must be connected to a transit router, and the VPN gateway must use BGP dynamic routing. Otherwise, this parameter cannot take effect.'."\n"
+ .' * This parameter takes effect if the IPsec connection is directly connected to a transit router.'."\n"
+ ."\n"
+ .'You can specify one or more network instance types.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The types of source network instance to which the routes belong. The following types of network instances are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN** :VPN gateway or IPsec-VPN connection'."\n"
+ ."\n"
+ .' * If the IPsec-VPN connection or SSL client is associated with a VPN gateway, the VPC associated with the VPN gateway must be connected to a transit router, and the VPN gateway must use BGP dynamic routing. Otherwise, this parameter cannot take effect.'."\n"
+ .' * This parameter takes effect if the IPsec connection is directly connected to a transit router.'."\n"
+ ."\n"
+ .'You can specify one or more network instance types.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ 'required' => false,
+ 'example' => 'VPC',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationChildInstanceTypes',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The types of destination network instance to which the routes belong. The following types of network instances are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN**: IPsec connection'."\n"
+ ."\n"
+ .' >This parameter does not take effect if the IPsec-VPN connection or SSL client is associated with a transit router through a VPN gateway and a VPC. This parameter takes effect only if the IPsec connection is directly connected to the transit router.'."\n"
+ ."\n"
+ .'You can specify one or more network instance types.'."\n"
+ ."\n"
+ .'> The destination network instance types are valid only if the routing policy is applied to scenarios where routes are advertised from the gateway in the current region to network instances in the current region.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The types of destination network instance to which the routes belong. The following types of network instances are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN**: IPsec connection'."\n"
+ ."\n"
+ .' >This parameter does not take effect if the IPsec-VPN connection or SSL client is associated with a transit router through a VPN gateway and a VPC. This parameter takes effect only if the IPsec connection is directly connected to the transit router.'."\n"
+ ."\n"
+ .'You can specify one or more network instance types.'."\n"
+ ."\n"
+ .'> The destination network instance types are valid only if the routing policy is applied to scenarios where routes are advertised from the gateway in the current region to network instances in the current region.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ 'required' => false,
+ 'example' => 'VPC',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlocks',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The prefix list against which routes are matched.'."\n"
+ ."\n"
+ .'Specify IP addresses in CIDR notations. You can specify at most 32 CIDR blocks.'."\n"
+ ."\n"
+ .'IPv4 and IPv4 addresses are supported.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The prefix list against which routes are matched.'."\n"
+ ."\n"
+ .'Specify IP addresses in CIDR notations. You can specify at most 32 CIDR blocks.'."\n"
+ ."\n"
+ .'IPv4 and IPv4 addresses are supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.10.10.0/24',
+ ],
+ 'required' => false,
+ 'example' => '10.10.10.0/24',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'RouteTypes',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The type of route to be compared. Valid values: The following route types are supported:'."\n"
+ ."\n"
+ .'* **System**: system routes that are automatically generated by the system.'."\n"
+ .'* **Custom**: custom routes that are manually added.'."\n"
+ .'* **BGP**: routes that are advertised over BGP.'."\n"
+ ."\n"
+ .'You can specify multiple route types.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The type of route to be compared. Valid values: The following route types are supported:'."\n"
+ ."\n"
+ .'* **System**: system routes that are automatically generated by the system.'."\n"
+ .'* **Custom**: custom routes that are manually added.'."\n"
+ .'* **BGP**: routes that are advertised over BGP.'."\n"
+ ."\n"
+ .'You can specify multiple route types.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'System',
+ ],
+ 'required' => false,
+ 'example' => 'System',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'MatchAsns',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The AS paths based on which routes are compared.'."\n"
+ ."\n"
+ .'You can specify at most 32 AS numbers.'."\n"
+ ."\n"
+ .'> Only the AS-SEQUENCE parameter is supported. The AS-SET, AS-CONFED-SEQUENCE, and AS-CONFED-SET parameters are not supported. In other words, only the AS number list is supported. Sets and sub-lists are not supported.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS paths based on which routes are compared.'."\n"
+ ."\n"
+ .'You can specify at most 32 AS numbers.'."\n"
+ ."\n"
+ .'> Only the AS-SEQUENCE parameter is supported. The AS-SET, AS-CONFED-SEQUENCE, and AS-CONFED-SET parameters are not supported. In other words, only the AS number list is supported. Sets and sub-lists are not supported.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '65501',
+ ],
+ 'required' => false,
+ 'example' => '65501',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'MatchCommunitySet',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The community set based on which routes are compared.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with the RFC 1997 standard. The RFC 8092 standard that defines Border Gateway Protocol (BGP) large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community set based on which routes are compared.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with the RFC 1997 standard. The RFC 8092 standard that defines Border Gateway Protocol (BGP) large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '65501:1',
+ ],
+ 'required' => false,
+ 'example' => '65501:1',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'OperateCommunitySet',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The community set on which actions are performed.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with RFC 1997. The RFC 8092 standard that defines BGP large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community set on which actions are performed.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with RFC 1997. The RFC 8092 standard that defines BGP large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '65501:1',
+ ],
+ 'required' => false,
+ 'example' => '65501:1',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'PrependAsPath',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The AS paths that are prepended by using an action statement when regional gateways receive or advertise routes.'."\n"
+ ."\n"
+ .'The AS paths vary based on the direction in which the routing policy is applied:'."\n"
+ ."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the inbound direction, you must specify source network instance IDs and the source region in the match condition. In addition, the source region must be the same as the region where the routing policy is applied.'."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the outbound direction, you must specify destination network instance IDs in the match condition.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition. You can specify at most 32 AS numbers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS paths that are prepended by using an action statement when regional gateways receive or advertise routes.'."\n"
+ ."\n"
+ .'The AS paths vary based on the direction in which the routing policy is applied:'."\n"
+ ."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the inbound direction, you must specify source network instance IDs and the source region in the match condition. In addition, the source region must be the same as the region where the routing policy is applied.'."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the outbound direction, you must specify destination network instance IDs in the match condition.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition. You can specify at most 32 AS numbers.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '65501',
+ ],
+ 'required' => false,
+ 'example' => '65501',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationRegionIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The destination region IDs of the route. You can specify at most 32 region IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination region IDs of the route. You can specify at most 32 region IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-beijing',
+ ],
+ 'required' => false,
+ 'maxItems' => 32,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The returned result.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RouteMapId' => [
+ 'description' => 'The ID of the routing policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenrmap-w4yf7toozfol3q****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '62172DD5-6BAC-45DF-8D44-56SDF467BAC',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Forbidden.CenRouteMapExist',
+ 'errorMessage' => 'The specified CEN route map ID already exists.',
+ ],
+ [
+ 'errorCode' => 'Invid.Parameter',
+ 'errorMessage' => 'When using PrependAsPath in the RegionIn, SourceRegionId must be local region Id.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.NoEffictiveAction',
+ 'errorMessage' => 'No effective action be configured.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ZoneId',
+ 'errorMessage' => 'The specified ZoneId is illegal.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.NoMedAuthorized',
+ 'errorMessage' => 'Med operation is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MedRouteMapExist',
+ 'errorMessage' => 'Operation is invalid because the default med route map already exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MedRouteMapNotAllowedOtherAction',
+ 'errorMessage' => 'Operation is invalid because the default med not allowed other action.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MedRouteMapActionMustPermit',
+ 'errorMessage' => 'Operation is invalid because the default med map result must be permit.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.MedRouteMapDestInstanceIds',
+ 'errorMessage' => 'Param DestInstanceIds must be ecr instance id.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.MedRouteMapDestInstanceType',
+ 'errorMessage' => 'Param DestChildInstanceTypes must be ecr.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeCenRouteMaps',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RouteMapId\\": \\"cenrmap-w4yf7toozfol3q****\\",\\n \\"RequestId\\": \\"62172DD5-6BAC-45DF-8D44-56SDF467BAC\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateCenRouteMapResponse>\\n <RouteMapId>cenrmap-w4yf7toozfol3q****</RouteMapId>\\n <RequestId>62172DD5-6BAC-45DF-8D44-56SDF467BAC</RequestId>\\n</CreateCenRouteMapResponse>","errorExample":""}]',
+ 'title' => 'CreateCenRouteMap',
+ 'description' => 'Routing policies are sorted by priority. A smaller value indicates a higher priority. Each routing policy is a collection of conditional statements and execution statements. Starting from the routing policy with the highest priority, the system matches routes against the match conditions specified by routing policies. If a route meets all the match conditions of a routing policy, the system permits or denies the route based on the action specified in the routing policy. You can also modify the attributes of permitted routes. By default, the system permits routes that meet none of the match conditions. For more information, see [Routing policy overview](~~124157~~).'."\n"
+ ."\n"
+ .'`CreateCenRouteMap` is an asynchronous operation. After you send a request, the routing policy ID is returned but the operation is still being performed in the system background. You can call `DescribeCenRouteMaps` to query the status of a routing policy.'."\n"
+ ."\n"
+ .'* If a routing policy is in the **Creating** state, the routing policy is being created. In this case, you can query the routing policy but cannot perform other operations.'."\n"
+ .'* If a routing policy is in the **Active** state, the routing policy is created.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeleteCenRouteMap' => [
+ 'summary' => 'Deletes a routing policy.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72322',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnL0VP69',
+ 'FEATUREcbnCEHNQQ',
+ 'FEATUREcbnK70KRY',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jm****',
+ ],
+ ],
+ [
+ 'name' => 'CenRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region in which the routing policy is applied.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'RouteMapId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the routing policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenrmap-abcdedfghij****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '5903EE99-D542-4E14-BC65-AAC1CB2D3D03',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.RouteMap',
+ 'errorMessage' => 'Operation Failed. The specified route map is configuring, please try again later.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.TransitRouterNotExist',
+ 'errorMessage' => 'Operation is invalid because the transit router not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterStatus',
+ 'errorMessage' => 'The specified TransitRouterStatus does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeCenRouteMaps',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5903EE99-D542-4E14-BC65-AAC1CB2D3D03\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteCenRouteMapResponse>\\n <RequestId>5903EE99-D542-4E14-BC65-AAC1CB2D3D03</RequestId>\\n</DeleteCenRouteMapResponse>","errorExample":""}]',
+ 'title' => 'DeleteCenRouteMap',
+ 'description' => '`DeleteCenRouteMap` 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 `DescribeCenRouteMaps` operation to query the status of a routing policy.'."\n"
+ ."\n"
+ .'* If a routing policy is in the **Deleting** state, the routing policy is being deleted. You can query the routing policy but cannot perform other operations.'."\n"
+ .'* If a routing policy cannot be found, it is deleted.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ModifyCenRouteMap' => [
+ 'summary' => 'Modifies a routing policy of a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72411',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnL0VP69',
+ 'FEATUREcbnCEHNQQ',
+ 'FEATUREcbnK70KRY',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'CenRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region in which the routing policy is applied.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'RouteMapId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the routing policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cenrmap-abcdedfghij****',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the routing policy.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'MapResult',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The action to be performed on a route that meets all the match conditions. Valid values:'."\n"
+ ."\n"
+ .'* **Permit**: the route is permitted.'."\n"
+ .'* **Deny**: the route is denied.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'Permit',
+ 'enum' => [
+ 'Permit',
+ 'Deny',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'NextPriority',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The priority of the routing policy that you want to associate with the current one.'."\n"
+ ."\n"
+ .'* This parameter takes effect only when the **MapResult** parameter is set to **Permit**. This way, the permitted route is matched against the next routing policy.'."\n"
+ .'* The region and direction of the routing policy to be associated must be the same as those of the current routing policy.'."\n"
+ .'* The priority of the routing policy to be associated must be lower than the priority of the current routing policy.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'docRequired' => false,
+ 'maximum' => '1000',
+ 'minimum' => '1',
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'CidrMatchMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The match method that is used to match routes against the prefix list. Valid values:'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the route prefix is included in the match conditions.'."\n"
+ ."\n"
+ .'For example, if you set the match condition to 10.10.0.0/16 and fuzzy match is applied, the route whose prefix is 10.10.1.0/24 meets the match condition.'."\n"
+ ."\n"
+ .'* **Complete**: exact match. A route is a match only if the route prefix is the same as the prefix specified in the match condition.'."\n"
+ ."\n"
+ .'For example, if you set the match condition to 10.10.0.0/16 and exact match is applied, only the route whose prefix is 10.10.0.0/16 meets the match condition.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Include ',
+ 'enum' => [
+ 'Include',
+ 'Complete',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'AsPathMatchMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The match method that is used to match routes based on the AS path. Valid values:'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the AS path of the route overlaps with the AS path in the match conditions.'."\n"
+ .'* **Complete**: exact match. A route is a match only if the AS path of the route matches the AS path in the match conditions.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Include',
+ 'enum' => [
+ 'Include',
+ 'Complete',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'CommunityMatchMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The match method that is used to match routes based on the community. Valid values:'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the community of the route overlaps with the community in the match conditions.'."\n"
+ .'* **Complete**: exact match. A route is a match only if the community of the route matches the community in the match conditions.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Include',
+ 'enum' => [
+ 'Include',
+ 'Complete',
+ 'Contain',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'CommunityOperateMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The action to be performed on the community. Valid values:'."\n"
+ ."\n"
+ .'* **Additive**: adds the community to the route.'."\n"
+ .'* **Replace**: replaces the original community of the route.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Additive',
+ 'enum' => [
+ 'Additive',
+ 'Replace',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'Preference',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new priority of the route.'."\n"
+ ."\n"
+ .'Valid values: **1** to **100**. The default priority is **50**. A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '22',
+ ],
+ ],
+ [
+ 'name' => 'Priority',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The priority of the routing policy. Valid values: **1** to **100**. A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'> You cannot specify the same priority for routing policies that apply in the same region and direction. The system matches routes against the match conditions of routing policies in descending order of priority. A smaller value indicates a higher priority. You must set the priorities to proper values.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'maximum' => '1000',
+ 'minimum' => '1',
+ 'example' => '10',
+ ],
+ ],
+ [
+ 'name' => 'SourceInstanceIdsReverseMatch',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to exclude source instance IDs. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): A route is a match if the source instance ID is included in the list specified by **SourceInstanceIds.N**.'."\n"
+ .'* **true**: A route is a match if the source network instance ID is not in the list specified by **SourceInstanceIds.N**.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'DestinationInstanceIdsReverseMatch',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to exclude destination instance IDs. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): A route is a match if the destination instance ID is included in the list specified by **SourceInstanceIds.N**.'."\n"
+ .'* **true**: A route is a match if the destination network instance ID is not in the list specified by **SourceInstanceIds.N**.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'MatchAddressType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of IP address in the match condition. Valid values:'."\n"
+ ."\n"
+ .'* **IPv4**: IPv4 address'."\n"
+ .'* **IPv6**: IPv6 address'."\n"
+ ."\n"
+ .'This parameter can be empty. If no value is specified, all types of IP address are a match.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv4',
+ ],
+ ],
+ [
+ 'name' => 'SourceInstanceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the source network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* Virtual private cloud (VPC)'."\n"
+ .'* Virtual border router (VBR)'."\n"
+ .'* Cloud Connect Network (CCN) instance'."\n"
+ .'* Smart Access Gateway (SAG) instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* VPC'."\n"
+ .'* VBR'."\n"
+ .'* CCN instance'."\n"
+ .'* SAG instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-afsfdf5435vcvc****',
+ ],
+ 'required' => false,
+ 'example' => 'vpc-afsfdf5435vcvc****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationInstanceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the destination network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* VPC'."\n"
+ .'* VBR'."\n"
+ .'* CCN instance'."\n"
+ .'* SAG instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n"
+ ."\n"
+ .'> The destination instance IDs take effect only when Direction is set to Export from Regional Gateway and the destination instances are deployed in the current region.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the destination network instances to which the routes belong. The following network instance types are supported:'."\n"
+ ."\n"
+ .'* VPC'."\n"
+ .'* VBR'."\n"
+ .'* CCN instance'."\n"
+ .'* SAG instance'."\n"
+ .'* The ID of the IPsec-VPN connection.'."\n"
+ ."\n"
+ .'You can enter at most 32 IDs.'."\n"
+ ."\n"
+ .'> The destination instance IDs take effect only when Direction is set to Export from Regional Gateway and the destination instances are deployed in the current region.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-avcdsg34ds****',
+ ],
+ 'required' => false,
+ 'example' => 'vpc-avcdsg34ds****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'SourceRouteTableIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the source route tables to which the routes belong. You can enter at most 32 route table IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source route tables to which the routes belong. You can enter at most 32 route table IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-acdbvtbr342cd****',
+ ],
+ 'required' => false,
+ 'example' => 'vtb-acdbvtbr342cd****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationRouteTableIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the destination route tables to which the routes belong. You can enter at most 32 route table IDs.'."\n"
+ ."\n"
+ .'> The destination route table IDs take effect only when Direction is set to Export from Regional Gateway and the destination route tables belong to network instances deployed in the current region.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the destination route tables to which the routes belong. You can enter at most 32 route table IDs.'."\n"
+ ."\n"
+ .'> The destination route table IDs take effect only when Direction is set to Export from Regional Gateway and the destination route tables belong to network instances deployed in the current region.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-adfg53c322v****',
+ ],
+ 'required' => false,
+ 'example' => 'vtb-adfg53c322v****',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'SourceRegionIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the source regions to which the routes belong. You can enter at most 32 region IDs.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source regions to which the routes belong. You can enter at most 32 region IDs.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-beijing',
+ ],
+ 'required' => false,
+ 'example' => 'cn-beijing',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'SourceChildInstanceTypes',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The types of source network instance to which the routes belong. The following types of network instances are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN** :VPN gateway or IPsec-VPN connection'."\n"
+ ."\n"
+ .' * If the IPsec-VPN connection or SSL client is associated with a VPN gateway, the VPC associated with the VPN gateway must be connected to a transit router, and the VPN gateway must use Border Gateway Protocol (BGP) dynamic routing. Otherwise, this parameter cannot take effect.'."\n"
+ .' * This parameter takes effect if the IPsec connection is directly connected to a transit router.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The types of source network instance to which the routes belong. The following types of network instances are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN** :VPN gateway or IPsec-VPN connection'."\n"
+ ."\n"
+ .' * If the IPsec-VPN connection or SSL client is associated with a VPN gateway, the VPC associated with the VPN gateway must be connected to a transit router, and the VPN gateway must use BGP dynamic routing. Otherwise, this parameter cannot take effect.'."\n"
+ .' * This parameter takes effect if the IPsec connection is directly connected to a transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ 'required' => false,
+ 'example' => 'VPC',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationChildInstanceTypes',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The types of destination network instance to which the routes belong. The following types of network instances are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN**: IPsec connection'."\n"
+ ."\n"
+ .' > This parameter does not take effect if the IPsec-VPN connection or SSL client is associated with a transit router through a VPN gateway and a VPC. This parameter takes effect only if the IPsec connection is directly connected to the transit router.'."\n"
+ ."\n"
+ .'The destination network instance types are valid only if the routing policy is applied to scenarios where routes are advertised from the gateway in the current region to network instances in the current region.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The types of destination network instance to which the routes belong. The following types of network instance are supported:'."\n"
+ ."\n"
+ .'* **VPC**: VPC'."\n"
+ ."\n"
+ .'* **VBR**: VBR'."\n"
+ ."\n"
+ .'* **CCN**: CCN instance'."\n"
+ ."\n"
+ .'* **VPN**: IPsec connection'."\n"
+ ."\n"
+ .' >This parameter does not take effect if the IPsec-VPN connection or SSL client is associated with a transit router through a VPN gateway and a VPC.** This parameter takes effect only if the IPsec connection is directly connected to the transit router.'."\n"
+ ."\n"
+ .'The destination network instance types are valid only if the routing policy is applied to scenarios where routes are advertised from the gateway in the current region to network instances in the current region.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ 'required' => false,
+ 'example' => 'VPC',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationCidrBlocks',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The prefix list against which routes are matched.'."\n"
+ ."\n"
+ .'You must specify the IP addresses in CIDR notation. You can enter at most 32 CIDR blocks.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The prefix list against which routes are matched.'."\n"
+ ."\n"
+ .'You must specify the IP addresses in CIDR notation. You can enter at most 32 CIDR blocks.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.10.10.0/24',
+ ],
+ 'required' => false,
+ 'example' => '10.10.10.0/24',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'RouteTypes',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The type of route to be matched against the match condition. The following route types are supported:'."\n"
+ ."\n"
+ .'* **System**: system routes that are automatically generated by the system.'."\n"
+ .'* **Custom**: custom routes that are manually added.'."\n"
+ .'* **BGP**: routes that are advertised over BGP.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The type of route to be matched against the match condition. The following route types are supported:'."\n"
+ ."\n"
+ .'* **System**: system routes that are automatically generated by the system.'."\n"
+ .'* **Custom**: custom routes that are manually added.'."\n"
+ .'* **BGP**: routes that are advertised over BGP.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'System',
+ ],
+ 'required' => false,
+ 'example' => 'System',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'MatchAsns',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The AS paths against which routes are matched.'."\n"
+ ."\n"
+ .'> Only the AS-SEQUENCE parameter is supported. The AS-SET, AS-CONFED-SEQUENCE, and AS-CONFED-SET parameters are not supported. In other words, only the AS number list is supported. Sets and sub-lists are not supported.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS paths against which routes are matched.'."\n"
+ ."\n"
+ .'> Only the AS-SEQUENCE parameter is supported. The AS-SET, AS-CONFED-SEQUENCE, and AS-CONFED-SET parameters are not supported. In other words, only the AS number list is supported. Sets and sub-lists are not supported.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '65501',
+ ],
+ 'required' => false,
+ 'example' => '65501',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'MatchCommunitySet',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The community against which routes are matched.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with the RFC 1997 standard. The RFC 8092 standard that defines BGP large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community against which routes are matched.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with the RFC 1997 standard. The RFC 8092 standard that defines BGP large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '65501:1',
+ ],
+ 'required' => false,
+ 'example' => '65501:1',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'OperateCommunitySet',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The community set on which actions are performed.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with RFC 1997. The RFC 8092 standard that defines BGP large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community set on which actions are performed.'."\n"
+ ."\n"
+ .'Specify the community in the format of n:m. Valid values of n and m: **1** to **65535**. Each community must comply with RFC 1997. The RFC 8092 standard that defines BGP large communities is not supported.'."\n"
+ ."\n"
+ .'You can specify at most 32 communities.'."\n"
+ ."\n"
+ .'> If the configurations of the communities are incorrect, routes may fail to be advertised to your data center.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '65501:1',
+ ],
+ 'required' => false,
+ 'example' => '65501:1',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'PrependAsPath',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The AS paths that are prepended by using an action statement when regional gateways receive or advertise routes.'."\n"
+ ."\n"
+ .'The AS paths vary based on the direction in which the routing policy is applied:'."\n"
+ ."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the inbound direction, you must specify source network instance IDs and the source region in the match condition. In addition, the source region must be the same as the region where the routing policy is applied.'."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the outbound direction, you must specify destination network instance IDs in the match condition.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS paths that are prepended by using an action statement when regional gateways receive or advertise routes.'."\n"
+ ."\n"
+ .'The AS paths vary based on the direction in which the routing policy is applied:'."\n"
+ ."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the inbound direction, you must specify source network instance IDs and the source region in the match condition. In addition, the source region must be the same as the region where the routing policy is applied.'."\n"
+ .'* If AS paths are prepended to a routing policy that is applied in the outbound direction, you must specify destination network instance IDs in the match condition.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '65501',
+ ],
+ 'required' => false,
+ 'example' => '65501',
+ 'maxItems' => 32,
+ ],
+ ],
+ [
+ 'name' => 'DestinationRegionIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The destination region IDs of the route. You can specify at most 32 region IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination region IDs of the route. You can specify at most 32 region IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-beijing',
+ ],
+ 'required' => false,
+ 'maxItems' => 32,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457 ',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidOperation.NoEffictiveAction',
+ 'errorMessage' => 'No effective action be configured.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CenRouteMapExist',
+ 'errorMessage' => 'Operation is invalid because an route map config exist.',
+ ],
+ [
+ 'errorCode' => 'Invid.Parameter',
+ 'errorMessage' => 'When using GatewayRegionId, SourceRegionId must not be null',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParam.DestinationInstanceIds',
+ 'errorMessage' => 'When using "PrependAsPath" in the "RegionOut", "DestinationInstanceIds" must be local region instances.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.NoMedAuthorized',
+ 'errorMessage' => 'Med operation is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MedRouteMapExist',
+ 'errorMessage' => 'Operation is invalid because the default med route map already exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MedRouteMapNotAllowedOtherAction',
+ 'errorMessage' => 'Operation is invalid because the default med not allowed other action.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MedRouteMapActionMustPermit',
+ 'errorMessage' => 'Operation is invalid because the default med map result must be permit.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.MedRouteMapDestInstanceIds',
+ 'errorMessage' => 'Param DestInstanceIds must be ecr instance id.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.MedRouteMapDestInstanceType',
+ 'errorMessage' => 'Param DestChildInstanceTypes must be ecr.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.PrependAsPathWithInvalidSourceRegionId',
+ 'errorMessage' => 'When using PrependAsPath in the RegionIn direction, SourceRegionId must be local region ID.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.PrependAsPathWithInvalidSourceInstanceIds',
+ 'errorMessage' => 'When using PrependAsPath in the RegionIn direction, SourceInstanceIds must be local instance ids.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.TransitRouterNotExist',
+ 'errorMessage' => 'Operation is invalid because the transit router not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.RouteMapId',
+ 'errorMessage' => 'The specified parameter RouteMapId is invalid.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeCenRouteMaps',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"<ModifyCenRouteMapResponse>\\n <RequestId>54B48E3D-DF70-471B-AA93-08E683A1B457\\t</RequestId>\\n</ModifyCenRouteMapResponse>","errorExample":""}]',
+ 'title' => 'ModifyCenRouteMap',
+ 'description' => '`ModifyCenRouteMap` 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 `DescribeCenRouteMaps` operation to query the status of a routing policy.'."\n"
+ ."\n"
+ .'* **Modifying**: indicates that the system is modifying the routing policy. You can only query the routing policy, but cannot perform other operations.'."\n"
+ .'* **Active**: indicates that the routing policy is modified.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenRouteMaps' => [
+ 'summary' => 'Queries routing policies.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72356',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnL0VP69',
+ 'FEATUREcbnCEHNQQ',
+ 'FEATUREcbnK70KRY',
+ ],
+ ],
+ 'parameters' => [
+ [
+ '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',
+ ],
+ ],
+ [
+ 'name' => 'PageSize',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries per page. Default value: **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-wx12mmlt17ld82****',
+ ],
+ ],
+ [
+ 'name' => 'RouteMapId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The routing policy ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cenrmap-y40mxdvf7joc12****',
+ ],
+ ],
+ [
+ 'name' => 'CenRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the routing policy.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransmitDirection',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The direction in which the routing policy is applied. Valid values:'."\n"
+ ."\n"
+ .'* **RegionIn**: Routes are advertised to the gateways in the regions that are connected by the CEN instance.'."\n"
+ ."\n"
+ .'For example, routes are advertised from network instances deployed in the current region or other regions to the gateway deployed in the current region.'."\n"
+ ."\n"
+ .'* **RegionOut**: Routes are advertised from the gateways in the regions that are connected by the CEN instance.'."\n"
+ ."\n"
+ .'For example, routes are advertised from the gateway deployed in the current region to network instances deployed in the current region, or to gateways deployed in other regions.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'RegionOut',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The route table ID of the transit router with which the routing policy is associated.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vtb-gw8nx3515m1mbd1z1****',
+ ],
+ ],
+ ],
+ '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' => '24CE1987-D1D1-5324-9BAD-2750B60E6ABB',
+ ],
+ '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',
+ ],
+ 'RouteMaps' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'RouteMap' => [
+ 'description' => 'The information about the routing policy.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the routing policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RouteMapId' => [
+ 'description' => 'The routing policy ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cenrmap-y40mxdvf7joc12****',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the routing policy. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**'."\n"
+ .'* **Active**'."\n"
+ .'* **Deleting**'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'TransmitDirection' => [
+ 'description' => 'The direction in which the routing policy is applied.'."\n",
+ 'type' => 'string',
+ 'example' => 'RegionOut',
+ ],
+ 'SourceInstanceIdsReverseMatch' => [
+ 'description' => 'Indicates whether the source network instance IDs are excluded.'."\n"
+ ."\n"
+ .'* **false** (default): A route is a match if its source network instance ID is in the list specified by **SourceInstanceIds.N**.'."\n"
+ .'* **true**: A route is match if its source network instance ID is not in the list specified by **SourceInstanceIds.N**.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'CenRegionId' => [
+ 'description' => 'The region ID of the routing policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'CenId' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-wx12mmlt17ld82****',
+ ],
+ 'Priority' => [
+ 'description' => 'The priority of the routing policy. A smaller value indicates a higher priority.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5000',
+ ],
+ 'TransitRouterRouteTableId' => [
+ 'description' => 'The route table ID of the transit router with which the routing policy is associated.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-gw8nx3515m1mbd1z1****',
+ ],
+ 'CommunityOperateMode' => [
+ 'description' => 'The action that is performed on the community of the route.'."\n"
+ ."\n"
+ .'* **Additive**: adds the community to the route.'."\n"
+ .'* **Replace**: replaces the original community of the route.'."\n"
+ ."\n"
+ .'This parameter specifies the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'string',
+ 'example' => 'Additive',
+ ],
+ 'MapResult' => [
+ 'description' => 'The action performed on a route that meets the match conditions.'."\n"
+ ."\n"
+ .'* **Permit**: the route is permitted.'."\n"
+ .'* **Deny**: the route is denied.'."\n",
+ 'type' => 'string',
+ 'example' => 'Deny',
+ ],
+ 'CommunityMatchMode' => [
+ 'description' => 'The match method that is used to match routes against the community.'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the community of the route overlaps with the community specified in the match condition.'."\n"
+ .'* **Complete**: exact match. A route meets the match condition only if the community of the route is the same as the community specified in the match condition.'."\n",
+ 'type' => 'string',
+ 'example' => 'Include',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the routing policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'AsPathMatchMode' => [
+ 'description' => 'The match method that is used to match routes based on the AS path.'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the AS path of the route overlaps with the AS path specified in the match condition.'."\n"
+ .'* **Complete**: exact match. A route is a match only if the AS path of the route is the same as an AS path specified in the match condition.'."\n",
+ 'type' => 'string',
+ 'example' => 'Include',
+ ],
+ 'Preference' => [
+ 'description' => 'The new priority of the route.'."\n"
+ ."\n"
+ .'A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'This parameter indicates the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'DestinationInstanceIdsReverseMatch' => [
+ 'description' => 'Indicates whether the destination network instance IDs are excluded.'."\n"
+ ."\n"
+ .'* **false** (default): A route is a match if its destination network instance ID is in the list specified by **DestinationInstanceIds.N**.'."\n"
+ .'* **true**: A route is a match if its destination network instance ID is not in the list specified by **DestinationInstanceIds.N**.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'CidrMatchMode' => [
+ 'description' => 'The match method that is used to evaluate routes based on the prefix. Valid values:'."\n"
+ ."\n"
+ .'* **Include**: fuzzy match. A route is a match if the route prefix is included in the match conditions.'."\n"
+ ."\n"
+ .'For example, if you set the match condition to 10.10.0.0/16 and fuzzy match is applied, the route whose prefix is 10.10.1.0/24 meets the match condition.'."\n"
+ ."\n"
+ .'* **Complete**: exact match. A route is a match only if the route prefix is the same as the prefix specified in the match condition.'."\n"
+ ."\n"
+ .'For example, if you set the match condition to 10.10.0.0/16 and exact match is enabled, a route is a match only if the prefix is 10.10.0.0/16.'."\n",
+ 'type' => 'string',
+ 'example' => 'Include',
+ ],
+ 'NextPriority' => [
+ 'description' => 'The priority of the routing policy that you want to associate with the current one.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '33',
+ ],
+ 'MatchAddressType' => [
+ 'description' => 'The type of IP address to be matched against the match condition. Valid values:'."\n"
+ ."\n"
+ .'* **IPv4**: IPv4 addresses'."\n"
+ .'* **IPv6**: IPv6 addresses'."\n"
+ .'* If no value is returned, both IPv4 and IPv6 addresses are matched against the match condition.'."\n",
+ 'type' => 'string',
+ 'example' => 'IPv4',
+ ],
+ 'SourceRegionIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'SourceRegionId' => [
+ 'description' => 'The IDs of the source regions to which the routes belong.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source regions to which the routes belong.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ ],
+ 'SourceChildInstanceTypes' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'SourceChildInstanceType' => [
+ 'description' => 'The types of source network instances to which the routes belong.'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **CCN**'."\n"
+ .'* **VPN**'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The types of source network instances to which the routes belong.'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **CCN**'."\n"
+ .'* **VPN**'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ ],
+ ],
+ ],
+ 'DestinationRouteTableIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'DestinationRouteTableId' => [
+ 'description' => 'The IDs of the destination route tables to which the routes belong. You can enter at most 32 route table IDs.'."\n"
+ ."\n"
+ .'> The destination route tables take effect only if the routing policy is applied to the egress gateway direction, and the destination route table IDs are in the current region.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the destination route tables to which the routes belong. You can enter at most 32 route table IDs.'."\n"
+ ."\n"
+ .'> The destination route tables take effect only if the routing policy is applied to the egress gateway direction, and the destination route table IDs are in the current region.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-adefrgtr144vf****',
+ ],
+ ],
+ ],
+ ],
+ 'SourceInstanceIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'SourceInstanceId' => [
+ 'description' => 'The IDs of the source network instances to which the routes belong.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source network instances to which the routes belong.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-adeg3544fdf34vf****',
+ ],
+ ],
+ ],
+ ],
+ 'DestinationCidrBlocks' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'DestinationCidrBlock' => [
+ 'description' => 'The prefix list against which routes are matched.'."\n"
+ ."\n"
+ .'IPv4 and IPv6 addresses are supported.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The prefix list against which routes are matched.'."\n"
+ ."\n"
+ .'IPv4 and IPv6 addresses are supported.'."\n",
+ 'type' => 'string',
+ 'example' => '10.10.10.0/24',
+ ],
+ ],
+ ],
+ ],
+ 'DestinationRegionIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'DestinationRegionId' => [
+ 'description' => 'The IDs of the destination regions for the routing policy.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the destination regions for the routing policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-beijing',
+ ],
+ ],
+ ],
+ ],
+ 'SourceRouteTableIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'SourceRouteTableId' => [
+ 'description' => 'The IDs of the source route tables to which the routes belong.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the source route tables to which the routes belong.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-adfr233vf34rvd4****',
+ ],
+ ],
+ ],
+ ],
+ 'MatchCommunitySet' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'MatchCommunity' => [
+ 'description' => 'The community set against which routes are matched.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community set against which routes are matched.'."\n",
+ 'type' => 'string',
+ 'example' => '65501:1',
+ ],
+ ],
+ ],
+ ],
+ 'PrependAsPath' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'AsPath' => [
+ 'description' => 'The AS paths that are prepended by using an action statement when regional gateways receive or advertise routes.'."\n"
+ ."\n"
+ .'This parameter indicates the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS paths that are prepended by using an action statement when regional gateways receive or advertise routes.'."\n"
+ ."\n"
+ .'This parameter indicates the action to be performed when a route meets the match condition.'."\n",
+ 'type' => 'string',
+ 'example' => '65501',
+ ],
+ ],
+ ],
+ ],
+ 'RouteTypes' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'RouteType' => [
+ 'description' => 'The type of route that is compared. Valid values:'."\n"
+ ."\n"
+ .'* **System**: system routes that are automatically generated by the system.'."\n"
+ .'* **Custom**: custom routes that are manually added.'."\n"
+ .'* **BGP**: routes that are advertised over BGP.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The type of route that is compared. Valid values:'."\n"
+ ."\n"
+ .'* **System**: system routes that are automatically generated by the system.'."\n"
+ .'* **Custom**: custom routes that are manually added.'."\n"
+ .'* **BGP**: routes that are advertised over Border Gateway Protocol (BGP).'."\n",
+ 'type' => 'string',
+ 'example' => 'System',
+ ],
+ ],
+ ],
+ ],
+ 'DestinationChildInstanceTypes' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'DestinationChildInstanceType' => [
+ 'description' => 'The types of destination network instances to which the routes belong.'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **CCN**'."\n"
+ .'* **VPN**'."\n"
+ ."\n"
+ .'> The destination route tables take effect only if the routing policy is applied to the egress gateway direction, and the type of the destination route tables is the same as that of the network instance in the current region.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The types of destination network instances to which the routes belong.'."\n"
+ ."\n"
+ .'* **VPC**'."\n"
+ .'* **VBR**'."\n"
+ .'* **CCN**'."\n"
+ .'* **VPN**'."\n"
+ ."\n"
+ .'> The destination route tables take effect only if the routing policy is applied to the egress gateway direction, and the type of the destination route tables is the same as that of the network instance in the current region.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ ],
+ ],
+ ],
+ 'DestinationInstanceIds' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'DestinationInstanceId' => [
+ 'description' => 'The IDs of the destination network instances to which the routes point.'."\n"
+ ."\n"
+ .'> The destination route tables take effect only if the routing policy is applied to the egress gateway direction, and the ID the destination instance is the same as that of the network instance in the current region.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the destination network instances to which the routes point.'."\n"
+ ."\n"
+ .'> The destination route tables take effect only if the routing policy is applied to the egress gateway direction, and the ID the destination instance is the same as that of the network instance in the current region.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-afrfs434465fdf****',
+ ],
+ ],
+ ],
+ ],
+ 'MatchAsns' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'MatchAsn' => [
+ 'description' => 'The AS paths against which routes are matched.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AS paths against which routes are matched.'."\n",
+ 'type' => 'string',
+ 'example' => '65501',
+ ],
+ ],
+ ],
+ ],
+ 'OperateCommunitySet' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'OperateCommunity' => [
+ 'description' => 'The community set on which actions are performed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The community set on which actions are performed.'."\n",
+ 'type' => 'string',
+ 'example' => '65501:1',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"24CE1987-D1D1-5324-9BAD-2750B60E6ABB\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"RouteMaps\\": {\\n \\"RouteMap\\": [\\n {\\n \\"RouteMapId\\": \\"cenrmap-y40mxdvf7joc12****\\",\\n \\"Status\\": \\"Active\\",\\n \\"TransmitDirection\\": \\"RegionOut\\",\\n \\"SourceInstanceIdsReverseMatch\\": false,\\n \\"CenRegionId\\": \\"cn-hangzhou\\",\\n \\"CenId\\": \\"cen-wx12mmlt17ld82****\\",\\n \\"Priority\\": 5000,\\n \\"TransitRouterRouteTableId\\": \\"vtb-gw8nx3515m1mbd1z1****\\",\\n \\"CommunityOperateMode\\": \\"Additive\\",\\n \\"MapResult\\": \\"Deny\\",\\n \\"CommunityMatchMode\\": \\"Include\\",\\n \\"Description\\": \\"desctest\\",\\n \\"AsPathMatchMode\\": \\"Include\\",\\n \\"Preference\\": 20,\\n \\"DestinationInstanceIdsReverseMatch\\": false,\\n \\"CidrMatchMode\\": \\"Include\\",\\n \\"NextPriority\\": 33,\\n \\"MatchAddressType\\": \\"IPv4\\",\\n \\"SourceRegionIds\\": {\\n \\"SourceRegionId\\": [\\n \\"cn-hangzhou\\"\\n ]\\n },\\n \\"SourceChildInstanceTypes\\": {\\n \\"SourceChildInstanceType\\": [\\n \\"VPC\\"\\n ]\\n },\\n \\"DestinationRouteTableIds\\": {\\n \\"DestinationRouteTableId\\": [\\n \\"vtb-adefrgtr144vf****\\"\\n ]\\n },\\n \\"SourceInstanceIds\\": {\\n \\"SourceInstanceId\\": [\\n \\"vpc-adeg3544fdf34vf****\\"\\n ]\\n },\\n \\"DestinationCidrBlocks\\": {\\n \\"DestinationCidrBlock\\": [\\n \\"10.10.10.0/24\\"\\n ]\\n },\\n \\"DestinationRegionIds\\": {\\n \\"DestinationRegionId\\": [\\n \\"cn-beijing\\"\\n ]\\n },\\n \\"SourceRouteTableIds\\": {\\n \\"SourceRouteTableId\\": [\\n \\"vtb-adfr233vf34rvd4****\\"\\n ]\\n },\\n \\"MatchCommunitySet\\": {\\n \\"MatchCommunity\\": [\\n \\"65501:1\\"\\n ]\\n },\\n \\"PrependAsPath\\": {\\n \\"AsPath\\": [\\n \\"65501\\"\\n ]\\n },\\n \\"RouteTypes\\": {\\n \\"RouteType\\": [\\n \\"System\\"\\n ]\\n },\\n \\"DestinationChildInstanceTypes\\": {\\n \\"DestinationChildInstanceType\\": [\\n \\"VPC\\"\\n ]\\n },\\n \\"DestinationInstanceIds\\": {\\n \\"DestinationInstanceId\\": [\\n \\"vpc-afrfs434465fdf****\\"\\n ]\\n },\\n \\"MatchAsns\\": {\\n \\"MatchAsn\\": [\\n \\"65501\\"\\n ]\\n },\\n \\"OperateCommunitySet\\": {\\n \\"OperateCommunity\\": [\\n \\"65501:1\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenRouteMapsResponse>\\n <TotalCount>1</TotalCount>\\n <RequestId>24CE1987-D1D1-5324-9BAD-2750B60E6ABB</RequestId>\\n <PageSize>10</PageSize>\\n <PageNumber>1</PageNumber>\\n <RouteMaps>\\n <RouteMap>\\n <Status>Active</Status>\\n <TransitRouterRouteTableId>vtb-gw8nx3515m1mbd1z1****</TransitRouterRouteTableId>\\n <Priority>5000</Priority>\\n <SourceChildInstanceTypes>\\n <SourceChildInstanceType>VBR</SourceChildInstanceType>\\n <SourceChildInstanceType>CCN</SourceChildInstanceType>\\n </SourceChildInstanceTypes>\\n <CenId>cen-wx12mmlt17ld82****</CenId>\\n <TransmitDirection>RegionOut</TransmitDirection>\\n <CenRegionId>cn-hangzhou</CenRegionId>\\n <RouteMapId>cenrmap-y40mxdvf7joc12****</RouteMapId>\\n <MapResult>Deny</MapResult>\\n <DestinationChildInstanceTypes>\\n <DestinationChildInstanceType>VBR</DestinationChildInstanceType>\\n <DestinationChildInstanceType>CCN</DestinationChildInstanceType>\\n </DestinationChildInstanceTypes>\\n </RouteMap>\\n </RouteMaps>\\n</DescribeCenRouteMapsResponse>","errorExample":""}]',
+ 'title' => 'DescribeCenRouteMaps',
+ 'description' => "\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateTransitRouteTableAggregation' => [
+ 'summary' => 'Creates an aggregate route.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'abilityTreeCode' => '154219',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnT33W0H',
+ 'FEATUREcbn476RI8',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vtb-iq8qgruq1ry8jc7vt****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the aggregate route.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationCidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the aggregate route.'."\n"
+ ."\n"
+ .'> The following CIDR blocks are not supported:'."\n"
+ .'>* CIDR blocks that start with 0 or 100.64.'."\n"
+ .'>* Multicast CIDR blocks, including 224.0.0.1 to 239.255.255.254.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '192.168.10.0/24',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationScope',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The scope of networks to which the aggregate route is advertised.'."\n"
+ ."\n"
+ .'The valid value is **VPC**, which indicates that the aggregate route is advertised to all VPCs that are in associated forwarding correlation with the Enterprise Edition transit router and have route synchronization enabled.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationScopeList',
+ 'in' => 'query',
+ 'style' => 'json',
+ 'schema' => [
+ 'description' => 'The list of propagation ranges of the aggregation route.'."\n"
+ ."\n"
+ .'> You must specify at least one of the following attributes: Aggregation Scope and Aggregate Scope List. We recommend that you specify the latter. The elements in the two attributes cannot be duplicate.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The list of propagation ranges of the aggregation route. Valid values:'."\n"
+ ."\n"
+ .'* **VPC** indicates that the aggregate route is advertised to all VPCs that are in associated forwarding correlation with the Enterprise Edition transit router and have route synchronization enabled.'."\n"
+ .'* **VBR** indicates that the aggregated route is propagated to the VBR that is attached to the Enterprise Edition transit router.'."\n"
+ .'* **Peer** indicates the aggregated route is propagated to the transit router that is connected to the Enterprise Edition transit router.'."\n"
+ .'* **VPN** indicates the aggregated route is propagated to the VPN instance that is attached to the Enterprise Edition transit router.'."\n"
+ .'* **ECR** indicates the aggregated route is propagated to the ECR instance that is attached to the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ 'required' => false,
+ 'maxItems' => 5,
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the aggregate route.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ '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' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): performs a dry run and sends the request.'."\n"
+ .'* **true**: performs a dry run. The system checks the required parameters and request syntax. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse',
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidOperation.RegionNotSupport',
+ 'errorMessage' => 'The Operation is not Support in this region.',
+ ],
+ [
+ 'errorCode' => 'InstanceExist.AggregationRoute',
+ 'errorMessage' => 'This aggregation route is already created.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.AggregationRoute',
+ 'errorMessage' => 'The aggregation route count is over limit.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouter',
+ 'errorMessage' => 'The aggregation route is not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The operation is not supported because of the wrong transitRouter type.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of transitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ServiceMode',
+ 'errorMessage' => 'The operation is not supported because of the wrong transitRouter service mode.',
+ ],
+ [
+ 'errorCode' => 'InvalidCidrBlock',
+ 'errorMessage' => 'The cidr block is invalid.',
+ ],
+ [
+ 'errorCode' => 'RouteConflict',
+ 'errorMessage' => 'The specified route already exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.InstanceNotSupportIPv6Route',
+ 'errorMessage' => 'The cen dose not support Ipv6 route.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouteTableAggregationCidr',
+ 'errorMessage' => 'The param TransitRouteTableAggregationCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'MissingParameter.ScopeListOrScope',
+ 'errorMessage' => 'The input parameter TransitRouteTableAggregationScopeList or TransitRouteTableAggregationScope that is mandatory for processing this request is not supplied.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouteTableAggregationScope',
+ 'errorMessage' => 'TransitRouteTableAggregationScope is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouteTableAggregationScopeList',
+ 'errorMessage' => 'TransitRouteTableAggregationScopeList is invalid.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouteTableAggregationScope',
+ 'errorMessage' => 'The parameter TransitRouteTableAggregationScope is mandatory.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouteTableAggregationScope',
+ 'errorMessage' => 'TransitRouteTableAggregationScope is invalid, valid value is VPC.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouteTableAggregationResponse>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</CreateTransitRouteTableAggregationResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouteTableAggregation',
+ 'description' => 'After you add an aggregate route to a route table of an Enterprise Edition transit router, the transit router advertises its routes only to route tables of associated virtual private clouds (VPCs) and have route synchronization enabled.'."\n"
+ ."\n"
+ .'Perform the following operations before you create an aggregate route. Otherwise, the Enterprise Edition transit router does not advertise routes to VPC route tables:'."\n"
+ ."\n"
+ .'* Associated forwarding is enabled between the VPCs and the Enterprise Edition transit router. For more information, see [AssociateTransitRouterAttachmentWithRouteTable](~~261242~~).'."\n"
+ .'* Route synchronization is enabled for the VPCs. For more information, see [CreateTransitRouterVpcAttachment](~~261358~~).'."\n",
+ ],
+ 'ModifyTransitRouteTableAggregation' => [
+ 'summary' => 'Edit an aggregate route.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'abilityTreeCode' => '258484',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnT33W0H',
+ 'FEATUREcbn476RI8',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The list of route table IDs of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the aggregate route.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationCidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the aggregate route.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '192.168.10.0/24',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationScope',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The scope of networks that you want to advertise the aggregate route.'."\n"
+ ."\n"
+ .'The valid value is **VPC**, which indicates that the aggregate route is advertised to all VPCs that have associated forwarding correlation with the Enterprise Edition transit router and have route synchronization enabled.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationScopeList',
+ 'in' => 'query',
+ 'style' => 'json',
+ 'schema' => [
+ 'description' => 'The scope of networks to which the aggregate route is advertised.'."\n"
+ ."\n"
+ .'> You must select at least one attribute from either the Aggregate Route Propagation Range or the Aggregate Route Propagation Range List. We recommend using the latter. The elements of the two attributes cannot duplicate.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The scope of networks that you want to advertise the aggregate route. Valid values:'."\n"
+ ."\n"
+ .'* **VPC** specifies the route is advertised to all VPCs that are in associated forwarding correlation with the Enterprise Edition transit router and have route synchronization enabled.'."\n"
+ .'* **VBR** specifies the aggregated route that is advertised to the VBR that is attached to the Enterprise Edition transit router.'."\n"
+ .'* **Peer** specifies the aggregated route is advertised to the transit router that is connected to another Enterprise Edition transit router.'."\n"
+ .'* **VPN** specifies the aggregated route is advertised to the VPN attached to the Enterprise Edition transit router.'."\n"
+ .'* **ECR** specifies the aggregated route is propagated to the ECR attached to the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VBR',
+ ],
+ 'required' => false,
+ 'maxItems' => 5,
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the aggregate route.'."\n"
+ ."\n"
+ .'The description can be empty or 0 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ '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 token, but 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' => '02fb3da4****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run to check information such as the permissions and instance status. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): sends the request. If the request passes the check, an Enterprise Edition transit router is created.'."\n"
+ .'* **true**: checks the request but does not create the Enterprise Edition transit router. 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",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse',
+ 'description' => 'PlainResponse'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidOperation.RegionNotSupport',
+ 'errorMessage' => 'The Operation is not Support in this region.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.AggregationRoute',
+ 'errorMessage' => 'The aggregation route count is over limit.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouter',
+ 'errorMessage' => 'The aggregation route is not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The operation is not supported because of the wrong transitRouter type.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of transitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ServiceMode',
+ 'errorMessage' => 'The operation is not supported because of the wrong transitRouter service mode.',
+ ],
+ [
+ 'errorCode' => 'InvalidCidrBlock',
+ 'errorMessage' => 'The cidr block is invalid.',
+ ],
+ [
+ 'errorCode' => 'RouteConflict',
+ 'errorMessage' => 'The specified route already exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.InstanceNotSupportIPv6Route',
+ 'errorMessage' => 'The cen dose not support Ipv6 route.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouteTableAggregationCidr',
+ 'errorMessage' => 'The param TransitRouteTableAggregationCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ModifyTransitRouteTableAggregation',
+ 'errorMessage' => 'ModifyTransitRouteTableAggregation is unsupported.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouteTableAggregationScopeList',
+ 'errorMessage' => 'TransitRouteTableAggregationScopeList is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TransitRouteTableAggregationScope',
+ 'errorMessage' => 'TransitRouteTableAggregationScope is invalid.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.AggregationRoute',
+ 'errorMessage' => 'The aggregation route is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.AggregationRoute',
+ 'errorMessage' => 'The aggregation route is not exist.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","type":"json"}]',
+ 'title' => 'ModifyTransitRouteTableAggregation',
+ ],
+ 'DeleteTransitRouteTableAggregation' => [
+ 'summary' => 'Deletes an aggregate route.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '154263',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnYACM08',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationCidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the aggregate route.'."\n"
+ ."\n"
+ .'> The following CIDR blocks are not supported:'."\n"
+ .'>* CIDR blocks that start with 0 or 100.64.'."\n"
+ .'>* Multicast CIDR blocks, including 224.0.0.1 to 239.255.255.254.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '192.168.10.0/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-11e9-8e44-001****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Default values:'."\n"
+ ."\n"
+ .'* **false** (default): performs only a dry run.'."\n"
+ .'* **true**: performs a dry run and performs 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 code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InstanceNotExist.AggregationRoute',
+ 'errorMessage' => 'This aggregation route is not exist.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouteTable',
+ 'errorMessage' => 'The status of transitRouter route table is invalid.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouter',
+ 'errorMessage' => 'The transitRouter is not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of transitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouteTableAggregationCidr',
+ 'errorMessage' => 'The param TransitRouteTableAggregationCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TrRouteTableAggregationCidr',
+ 'errorMessage' => 'The aggregation route does not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouteTableAggregationCidr',
+ 'errorMessage' => 'Route table aggregation cidr status is invalid.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouteTableAggregationResponse>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</DeleteTransitRouteTableAggregationResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouteTableAggregation',
+ 'description' => '* Before you delete an aggregate route, make sure that your network has a redundant route to prevent service interruptions.'."\n"
+ .'* After an aggregate route is deleted, the aggregate route is automatically withdrawn from virtual private clouds (VPCs). Specific routes that fall within the aggregate route are advertised to the VPCs.'."\n",
+ ],
+ 'RefreshTransitRouteTableAggregation' => [
+ 'summary' => 'Re-advertises an aggregate route.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vtb-iq8qgruq1ry8jc7vt****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationCidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '192.168.53.0/24',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'headers' => [],
+ 'schema' => [
+ 'title' => 'PlainResponse',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouteTable',
+ 'errorMessage' => 'The status of transitRouter route table is invalid.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.AggregationRoute',
+ 'errorMessage' => 'The aggregation route is not exist.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouter',
+ 'errorMessage' => 'The transitRouter is not exist.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouteTableAggregationCidr',
+ 'errorMessage' => 'The param TransitRouteTableAggregationCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidCidrBlock',
+ 'errorMessage' => 'The transitRouteTableAggregationCidr is invalid.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":""},{"type":"xml","example":"<RefreshTransitRouteTableAggregationResponse>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</RefreshTransitRouteTableAggregationResponse>","errorExample":""}]',
+ 'title' => 'RefreshTransitRouteTableAggregation',
+ ],
+ 'DescribeTransitRouteTableAggregationDetail' => [
+ 'summary' => 'Queries the configuration of an aggregate route.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '154265',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnIIZZGE',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationCidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the aggregate route.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '192.168.10.0/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 value, but you must make sure that the value is unique among different requests. The client 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 may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '02fb3da4-130e-11e9-8e44-001****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'ListTokenResult<CbnTrRouteTableAggregationDetailModel>',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Data' => [
+ 'description' => 'The configuration of the aggregate route.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configuration of the aggregate route.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'InstanceId' => [
+ 'description' => 'The ID of the virtual private cloud (VPC) for which the aggregate route is configured.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-6eh7fp9hdqa2wv85t****',
+ ],
+ 'Description' => [
+ 'description' => 'The error message returned if the configuration of the aggregate route fails.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the aggregate route. Valid values:'."\n"
+ ."\n"
+ .'* **Configured**: The aggregate route is advertised to the VPC.'."\n"
+ .'* **Configuring**: The aggregate route is being advertised.'."\n"
+ .'* **ConfigFailed**: The aggregate route failed to be advertised.'."\n"
+ .'* **PartialConfigured**: Failed to advertise the aggregate route to some VPCs.'."\n"
+ .'* **Deleting**: The aggregate route is being deleted.',
+ 'type' => 'string',
+ 'example' => 'Configured',
+ ],
+ ],
+ ],
+ ],
+ 'Count' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'Total' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterRouteTableId',
+ 'errorMessage' => 'The transitRouter route table id is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AggregationRouteCidr',
+ 'errorMessage' => 'The aggregation route cidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouterRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidCidrBlock',
+ 'errorMessage' => 'The transitRouteTableAggregationCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Data\\": [\\n {\\n \\"InstanceId\\": \\"vpc-6eh7fp9hdqa2wv85t****\\",\\n \\"Description\\": \\"desctest\\",\\n \\"Status\\": \\"Configured\\"\\n }\\n ],\\n \\"Count\\": 20,\\n \\"Total\\": 1,\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":""},{"type":"xml","example":"<DescribeTransitRouteTableAggregationDetailResponse>\\n <Data>\\n <InstanceId>vpc-6eh7fp9hdqa2wv85t****</InstanceId>\\n <Description>desctest</Description>\\n <Status>AllConfigured</Status>\\n </Data>\\n <Count>10</Count>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <Total>1</Total>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</DescribeTransitRouteTableAggregationDetailResponse>","errorExample":""}]',
+ 'title' => 'DescribeTransitRouteTableAggregationDetail',
+ ],
+ 'DescribeTransitRouteTableAggregation' => [
+ 'summary' => 'Queries the aggregate routes on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '154264',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnT33W0H',
+ 'FEATUREcbn476RI8',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouteTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouteTableAggregationCidr',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination CIDR block of the aggregate route.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/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 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' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'minimum' => '0',
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no subsequent 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****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'ListTokenResult<CbnTrRouteTableAggregationModel>',
+ 'description' => 'The results returned.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Data' => [
+ 'description' => 'A list of aggregate routes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the aggregate route.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Name' => [
+ 'description' => 'The name of the aggregate route.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'TransitRouteTableAggregationCidr' => [
+ 'description' => 'The destination CIDR block of the aggregate route.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.10.0/24',
+ ],
+ 'Scope' => [
+ 'description' => 'The scope of networks that you want to advertise the aggregate route.'."\n"
+ ."\n"
+ .'The valid value is **VPC**, which indicates that the aggregate route is advertised to all virtual private clouds (VPCs) that are in associated forwarding correlation with the Enterprise Edition transit router and have route synchronization enabled.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'RouteType' => [
+ 'description' => 'The type of the aggregate route.'."\n"
+ ."\n"
+ .'The valid value is **Static**, which indicates a static route. By default, aggregate routes advertised to a VPC are considered custom routes.'."\n",
+ 'type' => 'string',
+ 'example' => 'Static',
+ 'default' => 'Static',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the aggregate route.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'TrRouteTableId' => [
+ 'description' => 'The ID of the route table of the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the advertisement of the aggregate route. Valid values:'."\n"
+ ."\n"
+ .'* **AllConfigured**: The aggregate route is advertised to all VPCs.'."\n"
+ .'* **Configuring**: The aggregate route is being advertised.'."\n"
+ .'* **ConfigFailed**: The aggregate route failed to be advertised.'."\n"
+ .'* **PartialConfigured**: Failed to advertise the aggregate route to some VPCs.'."\n"
+ .'* **Deleting**: The aggregate route is being deleted.',
+ 'type' => 'string',
+ 'example' => 'AllConfigured',
+ ],
+ 'ScopeList' => [
+ 'description' => 'The list of propagation ranges of the aggregation route.'."\n"
+ ."\n"
+ .'> You must specify at least one of the following attributes: Aggregation Scope and Aggregate Scope List. We recommend that you specify the latter. The elements in the two attributes cannot be duplicate.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'Aggregate scope list. Valid values:'."\n"
+ ."\n"
+ .'* **VPC** indicates that the aggregate route is advertised to all VPCs that are in associated forwarding correlation with the Enterprise Edition transit router and have route synchronization enabled.'."\n"
+ .'* **VBR** indicates that the aggregated route is propagated to the VBR that is attached to the Enterprise Edition transit router.'."\n"
+ .'* **Peer** indicates the aggregated route is propagated to the transit router that is connected to the Enterprise Edition transit router.'."\n"
+ .'* **VPN** indicates the aggregated route is propagated to the VPN instance that is attached to the Enterprise Edition transit router.'."\n"
+ .'* **ECR** indicates the aggregated route is propagated to the ECR instance that is attached to the Enterprise Edition transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'Count' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ '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 determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'Total' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'MissingParam.transitRouterRouteTableId',
+ 'errorMessage' => 'Missing the parameter transitRouter route table id.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The nextToken is illegal.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist.TransitRouterRouteTable',
+ 'errorMessage' => 'The transitRouter route table is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidCidrBlock',
+ 'errorMessage' => 'The transitRouteTableAggregationCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Data\\": [\\n {\\n \\"Name\\": \\"nametest\\",\\n \\"TransitRouteTableAggregationCidr\\": \\"192.168.10.0/24\\",\\n \\"Scope\\": \\"VPC\\",\\n \\"RouteType\\": \\"Static\\",\\n \\"Description\\": \\"desctest\\",\\n \\"TrRouteTableId\\": \\"vtb-6ehgc262hr170qgyc****\\",\\n \\"Status\\": \\"AllConfigured\\",\\n \\"ScopeList\\": [\\n \\"VPC\\"\\n ]\\n }\\n ],\\n \\"Count\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"Total\\": 1,\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":""},{"type":"xml","example":"<DescribeTransitRouteTableAggregationResponse>\\n <Data>\\n <Name>nametest</Name>\\n <TransitRouteTableAggregationCidr>192.168.10.0/24</TransitRouteTableAggregationCidr>\\n <Scope>VPC</Scope>\\n <RouteType>Static</RouteType>\\n <Description>desctest</Description>\\n <TrRouteTableId>vtb-6ehgc262hr170qgyc****</TrRouteTableId>\\n <Status>AllConfigured</Status>\\n </Data>\\n <Count>20</Count>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <Total>1</Total>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</DescribeTransitRouteTableAggregationResponse>","errorExample":""}]',
+ 'title' => 'DescribeTransitRouteTableAggregation',
+ 'description' => 'You can specify the values of the **TransitRouteTableId** and **TransitRouteTableAggregationCidr** parameters to query a specified aggregate route. If you specify only the **TransitRouteTableId** parameter, all aggregated routes in the route table are queried.'."\n",
+ ],
+ 'CreateTransitRouterPrefixListAssociation' => [
+ 'summary' => 'Associates the route table of an Enterprise Edition transit router with a prefix list.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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 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' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the transit router is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-6ehx7q2jze8ch5ji0****',
+ ],
+ ],
+ [
+ 'name' => 'NextHopType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the next hop. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: specifies that all the CIDR blocks in the prefix list are blackhole routes. Packets destined for the CIDR blocks are dropped.'."\n"
+ .'* **VPC**: specifies a virtual private cloud (VPC) connection as the next hop.'."\n"
+ .'* **VBR**: specifies a virtual border router (VBR) connection as the next hop.'."\n"
+ .'* **TR**: specifies an inter-region connection as the next hop.'."\n"
+ .'* **ECR**: specifies an Express Connect Router (ECR) connection as the next hop.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'PrefixListId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the prefix list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'pl-6ehtn5kqxgeyy08fi****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ ],
+ [
+ 'name' => 'NextHop',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the next hop connection.'."\n"
+ ."\n"
+ .'To specify all CIDR blocks in the prefix list as blackhole routes, set this parameter to **BlackHole**.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-attach-flbq507rg2ckrj****',
+ ],
+ ],
+ [
+ 'name' => 'OwnerUid',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the prefix list belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '1210123456123456',
+ ],
+ ],
+ [
+ '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 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.'."\n"
+ ."\n"
+ .'> This parameter is not in use.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRolePolicyForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRolePolicyForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotSupport.CCN',
+ 'errorMessage' => 'CCN not support prefix list.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.PrefixlistCidrs',
+ 'errorMessage' => 'Can not find any cidr of specified prefix list.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Nexthop',
+ 'errorMessage' => 'The specified nexthop instance is not exsit.',
+ ],
+ [
+ 'errorCode' => 'ResourceExisted.PrefixlistAssociation',
+ 'errorMessage' => 'The prefix list has been already associated with this route table.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.PrefixlistAssociation',
+ 'errorMessage' => 'The prefix list is not associated with this route table. ',
+ ],
+ [
+ 'errorCode' => 'ResourceConflict.Route',
+ 'errorMessage' => 'Some of the prefixes of the prefix list are conflicted with exsited routes. ',
+ ],
+ [
+ 'errorCode' => 'MultipleFound.PrefixlistAssociation',
+ 'errorMessage' => 'multiple same prefix association record found.',
+ ],
+ [
+ 'errorCode' => 'QuotaReached.Route',
+ 'errorMessage' => 'The quota of the route table is not enough for the request prefix list. ',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.PrefixlistAssociation',
+ 'errorMessage' => 'The prefix list association is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'NotSupport.TrType',
+ 'errorMessage' => 'The basic tr type is not support for this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidValue.PrefixlistCidr',
+ 'errorMessage' => 'Invalid cidr exist in the specified prefixlist.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotSupport.Nexthop',
+ 'errorMessage' => 'The specified nexthop instance type is not support for the operation.',
+ ],
+ [
+ 'errorCode' => 'ResourceMismatch.Nexthop',
+ 'errorMessage' => 'The specified nexthop and nexthop type mismatched.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.PrefixList',
+ 'errorMessage' => 'The specified prefixlist does not found.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SystemPrefixList',
+ 'errorMessage' => 'SystemPrefixList can not be operated.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.OperateShareResource',
+ 'errorMessage' => 'Operate share prefixlist failed.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.Prefixlist',
+ 'errorMessage' => 'Prefixlist is not in a operate status.',
+ ],
+ [
+ 'errorCode' => 'RegionNotSupport.Prefixlist',
+ 'errorMessage' => 'Prefixlist association are not supported in this region.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TransitRouterNotExist',
+ 'errorMessage' => 'Operation failed because transit router not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.RouteTable',
+ 'errorMessage' => 'RouteTable status is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterTableId',
+ 'errorMessage' => 'The specified Route Table ID is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ECSPrefixList',
+ 'errorMessage' => 'Associate ECS PrefixList is not supported.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTransitRouterPrefixListAssociationResponse>\\n <RequestId>0C2EE7A8-74D4-4081-8236-CEBDE3BBCF50</RequestId>\\n</CreateTransitRouterPrefixListAssociationResponse>","errorExample":""}]',
+ 'title' => 'CreateTransitRouterPrefixListAssociation',
+ 'description' => 'To associate an Enterprise Edition transit router with a route prefix, you must meet the following requirements:'."\n"
+ ."\n"
+ .'* You are familiar with the limits and route compatibility notes of prefix lists. For more information, see [Prefix lists](~~445605~~).'."\n"
+ .'* A prefix list is created. For more information, see [CreateVpcPrefixList](~~437367~~).'."\n"
+ .'* If the prefix list and the Enterprise Edition transit router belong to different Alibaba Cloud accounts, the prefix list is shared with the Alibaba Cloud account that owns the Enterprise Edition transit router. For more information, see [Resource sharing](~~160622~~) and [API references for resource sharing](~~193445~~).'."\n",
+ ],
+ 'DeleteTransitRouterPrefixListAssociation' => [
+ 'summary' => 'Disassociates the route table of an Enterprise Edition transit router from a prefix list.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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"
+ ."\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' => '123e4567-e89b-12d3-a456-4266****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the transit router is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-6ehx7q2jze8ch5ji0****',
+ ],
+ ],
+ [
+ 'name' => 'PrefixListId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the prefix list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'pl-6ehtn5kqxgeyy08fi****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ ],
+ [
+ 'name' => 'NextHop',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the next hop.'."\n"
+ ."\n"
+ .'> If **NextHopType** is set to **BlackHole**, you must set this parameter to **BlackHole**.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-flbq507rg2ckrj****',
+ ],
+ ],
+ [
+ 'name' => 'NextHopType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the next hop. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: All the CIDR blocks in the prefix list are blackhole routes. Packets destined for the CIDR blocks are dropped.'."\n"
+ .'* **VPC**: The next hop of the CIDR blocks in the prefix list is a VPC connection.'."\n"
+ .'* **VBR**: The next hop of the CIDR blocks in the prefix list is a VBR connection.'."\n"
+ .'* **TR**: The next hop of the CIDR blocks in the prefix list is an inter-region connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ '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 task.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '835E7F4B-B380-4E0F-96A5-6EA572388047',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRolePolicyForCEN',
+ 'errorMessage' => 'You are not authorized to create the service linked role. Role Name: AliyunServiceRolePolicyForCEN. Service Name: cen.aliyuncs.com. Make sure that the user has been granted the ram:CreateServiceLinkedRole permission.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.PrefixlistCidrs',
+ 'errorMessage' => 'Can not find any cidr of specified prefix list.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Nexthop',
+ 'errorMessage' => 'The specified nexthop instance is not exsit.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.PrefixlistAssociation',
+ 'errorMessage' => 'The prefix list is not associated with this route table. ',
+ ],
+ [
+ 'errorCode' => 'MultipleFound.PrefixlistAssociation',
+ 'errorMessage' => 'multiple same prefix association record found.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.PrefixlistAssociation',
+ 'errorMessage' => 'The prefix list association is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.PrefixList',
+ 'errorMessage' => 'The specified prefixlist does not found.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SystemPrefixList',
+ 'errorMessage' => 'SystemPrefixList can not be operated.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.OperateShareResource',
+ 'errorMessage' => 'Operate share prefixlist failed.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.Prefixlist',
+ 'errorMessage' => 'Prefixlist is not in a operate status.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.RouteTable',
+ 'errorMessage' => 'RouteTable status is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TransitRouterNotExist',
+ 'errorMessage' => 'Operation failed because transit router not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'TransitRouter status is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterTableId',
+ 'errorMessage' => 'The specified Route Table ID is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidRouteTableId.NotFound',
+ 'errorMessage' => 'The specified RouteTableId is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"835E7F4B-B380-4E0F-96A5-6EA572388047\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterPrefixListAssociationResponse>\\n <RequestId>835E7F4B-B380-4E0F-96A5-6EA572388047</RequestId>\\n</DeleteTransitRouterPrefixListAssociationResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterPrefixListAssociation',
+ 'description' => 'After you disassociate a route table of an Enterprise Edition transit router from a prefix list, the routes that point to the CIDR blocks in the prefix list are automatically withdrawn from the route table. Before you disassociate the route table of an Enterprise Edition transit router from a prefix list, you must migrate workloads that use the routes in case services are interrupted.',
+ ],
+ 'ListTransitRouterPrefixListAssociation' => [
+ 'summary' => 'Queries the prefix lists that are associated with an Enterprise Edition transit router.',
+ '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 where the transit router is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-6ehx7q2jze8ch5ji0****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterTableId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the route table of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ ],
+ [
+ 'name' => 'PrefixListId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the prefix list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'pl-6ehtn5kqxgeyy08fi****',
+ ],
+ ],
+ [
+ 'name' => 'OwnerUid',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the prefix list belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '1210123456123456',
+ ],
+ ],
+ [
+ '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. Maximum value: **100**. Default value: **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ ],
+ ],
+ [
+ 'name' => 'NextHop',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the next hop.'."\n"
+ ."\n"
+ .'> Set the value to **BlackHole** if you want to query the prefix list that generates blackhole routes.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-flbq507rg2ckrj****',
+ ],
+ ],
+ [
+ 'name' => 'NextHopType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the next hop. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: The prefix list that generates blackhole routes.'."\n"
+ .'* **VPC**: The prefix list whose next hop is a virtual private cloud (VPC) connection.'."\n"
+ .'* **VBR**: The prefix list whose next hop is a virtual border router (VBR) connection.'."\n"
+ .'* **TR**: The prefix list whose next hop is an inter-region connection on the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'NextHopInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance associated with the next hop connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-6eh7fp9hdqa2wv85t****',
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the prefix list. Valid values:'."\n"
+ ."\n"
+ .'* **Active**'."\n"
+ .'* **Updating**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '6005CA94-676E-1FEE-985E-7602EFAADD6A',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ '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',
+ ],
+ 'PrefixLists' => [
+ 'description' => 'A list of prefix lists.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the prefix list.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'PrefixListId' => [
+ 'description' => 'The ID of the prefix list.'."\n",
+ 'type' => 'string',
+ 'example' => 'pl-6ehtn5kqxgeyy08fi****',
+ ],
+ 'OwnerUid' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the prefix list belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1210123456123456',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the prefix list. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: The prefix list is effective.'."\n"
+ .'* **Updating**: The prefix list is being updated.'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'NextHop' => [
+ 'description' => 'The ID of the next hop.'."\n"
+ ."\n"
+ .'> A value of **BlackHole** indicates that all the CIDR blocks in the prefix list are blackhole routes. Packets destined for the CIDR blocks are dropped.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-flbq507rg2ckrj****',
+ ],
+ 'NextHopInstanceId' => [
+ 'description' => 'The ID of the network instance associated with the next hop connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-6eh7fp9hdqa2wv85t****',
+ ],
+ 'NextHopType' => [
+ 'description' => 'The type of the next hop. Valid values:'."\n"
+ ."\n"
+ .'* **BlackHole**: All the CIDR blocks in the prefix list are blackhole routes. Packets destined for the CIDR blocks are dropped.'."\n"
+ .'* **VPC**: The next hop of the CIDR blocks in the prefix list is a VPC connection.'."\n"
+ .'* **VBR**: The next hop of the CIDR blocks in the prefix list is a VBR connection.'."\n"
+ .'* **TR**: The next hop of the CIDR blocks in the prefix list is an inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'TransitRouterTableId' => [
+ 'description' => 'The ID of the route table of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'vtb-6ehgc262hr170qgyc****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-6ehx7q2jze8ch5ji0****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ [],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified Region is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6005CA94-676E-1FEE-985E-7602EFAADD6A\\",\\n \\"TotalCount\\": 1,\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"PrefixLists\\": [\\n {\\n \\"PrefixListId\\": \\"pl-6ehtn5kqxgeyy08fi****\\",\\n \\"OwnerUid\\": 1210123456123456,\\n \\"Status\\": \\"Active\\",\\n \\"NextHop\\": \\"tr-attach-flbq507rg2ckrj****\\",\\n \\"NextHopInstanceId\\": \\"vpc-6eh7fp9hdqa2wv85t****\\",\\n \\"NextHopType\\": \\"VPC\\",\\n \\"TransitRouterTableId\\": \\"vtb-6ehgc262hr170qgyc****\\",\\n \\"TransitRouterId\\": \\"tr-6ehx7q2jze8ch5ji0****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterPrefixListAssociationResponse>\\n <RequestId>6005CA94-676E-1FEE-985E-7602EFAADD6A</RequestId>\\n <TotalCount>1</TotalCount>\\n <PageSize>10</PageSize>\\n <PageNumber>1</PageNumber>\\n <PrefixLists>\\n <PrefixListId>pl-6ehtn5kqxgeyy08fi****</PrefixListId>\\n <OwnerUid>1210123456123456</OwnerUid>\\n <Status>Active</Status>\\n <NextHop>tr-attach-flbq507rg2ckrj****</NextHop>\\n <NextHopInstanceId>vpc-6eh7fp9hdqa2wv85t****</NextHopInstanceId>\\n <NextHopType>VPC</NextHopType>\\n <TransitRouterTableId>vtb-6ehgc262hr170qgyc****</TransitRouterTableId>\\n <TransitRouterId>tr-6ehx7q2jze8ch5ji0****</TransitRouterId>\\n </PrefixLists>\\n</ListTransitRouterPrefixListAssociationResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterPrefixListAssociation',
+ ],
+ 'AddTraficMatchRuleToTrafficMarkingPolicy' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ '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 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, ClientToken is set to the value of RequestId. The value of RequestId may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-u9nxup5kww5po8****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMatchRules',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the traffic classification rule.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The description of the traffic classification rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MatchDscp' => [
+ 'description' => 'The differentiated services code point (DSCP) value that is used to match packets. Valid values: **0** to **63**.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets that contain the specified DSCP value. If you do not set this parameter, packets are considered a match regardless of the DSCP value.'."\n"
+ ."\n"
+ .'> The DSCP value that you specify for this parameter is the DSCP value that packets carry before they are transmitted over the inter-region connection.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '5',
+ ],
+ 'DstCidr' => [
+ 'description' => 'The destination CIDR block that is used to match packets.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose destination IP addresses fall within the specified destination CIDR block. If you do not set this parameter, packets are considered a match regardless of the DSCP value.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.10.10.0/24',
+ ],
+ 'TrafficMatchRuleDescription' => [
+ 'description' => 'The description of the traffic classification rule.'."\n"
+ ."\n"
+ .'The description must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The description must start with a letter.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ 'Protocol' => [
+ 'description' => 'The protocol that is used to match packets.'."\n"
+ ."\n"
+ .'Valid values: **HTTP**, **HTTPS**, **TCP**, **UDP**, **SSH**, and **Telnet**. For more information, log on to the [Cloud Enterprise Network (CEN) console](https://cen.console.aliyun.com/cen/list).'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'DstPortRange' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose destination ports fall within the destination port range. If you do not set this parameter, packets are considered a match regardless of the DSCP value.'."\n"
+ ."\n"
+ .'You can specify at most two ports. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number such as 1, the system matches the packets whose destination port is port 1.'."\n"
+ .'* If you enter two port numbers such as 1 and 200, the system matches the packets whose destination ports fall between 1 and 200.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, packets are considered a match regardless of the destination port.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose destination ports fall within the destination port range. If you do not set this parameter, packets are considered a match regardless of the DSCP value.'."\n"
+ ."\n"
+ .'You can specify at most two ports. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number such as 1, the system matches the packets whose destination port is port 1.'."\n"
+ .'* If you enter two port numbers such as 1 and 200, the system matches the packets whose destination ports fall between 1 and 200.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, packets are considered a match regardless of the destination port.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'SrcCidr' => [
+ 'description' => 'The source CIDR block that is used to match packets.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose source IP addresses fall within the specified source CIDR block. If you do not set this parameter, packets are considered a match regardless of the source IP address.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/24',
+ ],
+ 'SrcPortRange' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose source ports fall within the source port range. If you do not set this parameter, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can specify at most two ports. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number such as 1, the system matches the packets whose source port is 1.'."\n"
+ .'* If you enter two port numbers such as 1 and 200, the system matches the packets whose source ports fall between 1 and 200.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose source ports fall within the source port range. If you do not set this parameter, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can specify at most two ports. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number such as 1, the system matches the packets whose source port is 1.'."\n"
+ .'* If you enter two port numbers such as 1 and 200, the system matches the packets whose source ports fall between 1 and 200.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '200',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'TrafficMatchRuleName' => [
+ 'description' => 'The name of the traffic classification rule.'."\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"
+ ."\n"
+ .'You can specify at most 50 traffic classification rules.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTrafficMarkingPolicyId.NotFound',
+ 'errorMessage' => 'Operation is failed because traffic marking policy id is not found.',
+ ],
+ [
+ 'errorCode' => 'InstanceExist.TrafficMatchRules',
+ 'errorMessage' => 'The instance already exists.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.TrafficMatchRules',
+ 'errorMessage' => 'The parameter TrafficMatchRules are duplicated.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SrcCidr',
+ 'errorMessage' => 'SrcCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficMarkingPolicy',
+ 'errorMessage' => 'The status of TrafficMarkingPolicy is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.DstCidr',
+ 'errorMessage' => 'DstCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Protocol',
+ 'errorMessage' => 'Protocol is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'substitutions' => [
+ 'Cbn::2017-09-12::AddTrafficMatchRuleToTrafficMarkingPolicy',
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\"\\n}","errorExample":""},{"type":"xml","example":"<AddTraficMatchRuleToTrafficMarkingPolicyResponse>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n</AddTraficMatchRuleToTrafficMarkingPolicyResponse>","errorExample":""}]',
+ 'title' => 'AddTraficMatchRuleToTrafficMarkingPolicy',
+ 'summary' => 'Adds a traffic classification rule to a traffic marking policy.',
+ 'description' => '### Usage notes'."\n"
+ ."\n"
+ .'The **AddTraficMatchRuleToTrafficMarkingPolicy** operation is deprecated and will be discontinued soon. If you need to add a traffic classification rule to a traffic marking policy, call the [AddTrafficMatchRuleToTrafficMarkingPolicy](~~427602~~) operation.',
+ ],
+ 'AddTrafficMatchRuleToTrafficMarkingPolicy' => [
+ 'summary' => 'Adds a traffic classification rule to a traffic marking policy.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '136121',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnWVMXRT',
+ ],
+ ],
+ '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.'."\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' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-u9nxup5kww5po8****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMatchRules',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The traffic classification rules.'."\n"
+ ."\n"
+ .'You can add at most 50 traffic classification rules in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the traffic classification rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MatchDscp' => [
+ 'description' => 'The Differentiated Services Code Point (DSCP) value that is used to match packets. Valid values: **0** to **63**.'."\n"
+ ."\n"
+ .'Packets that carry the specified DSCP value are considered a match. If you do not specify a DSCP value, packets are considered a match regardless of the DSCP value.'."\n"
+ ."\n"
+ .'> The DSCP value that you specify for this parameter is the DSCP value that packets carry before they are transmitted over the inter-region connection.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '5',
+ ],
+ 'DstCidr' => [
+ 'description' => 'The destination CIDR block that is used to match packets.'."\n"
+ ."\n"
+ .'Packets whose destination IP addresses fall into the specified destination CIDR block are considered a match. If you do not specify a destination CIDR block, packets are considered a match regardless of the destination IP address.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.10.10.0/24',
+ ],
+ 'TrafficMatchRuleDescription' => [
+ 'description' => 'The description of the traffic classification rule.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ 'Protocol' => [
+ 'description' => 'The protocol that is used to match packets.'."\n"
+ ."\n"
+ .'Traffic classification rules support the following protocols: **HTTP**, **HTTPS**, **TCP**, **UDP**, **SSH**, and **Telnet**. For more information, log on to the [Cloud Enterprise Network (CEN) console](https://cen.console.aliyun.com/cen/list).'."\n"
+ ."\n"
+ .'**Some protocols use a specific port. Click to view protocols and ports.**'."\n"
+ ."\n"
+ .'* If the protocol is **ICMP**, set the destination port to **-1**.'."\n"
+ .'* If the protocol is **GRE**, set the destination port to **-1**.'."\n"
+ .'* If the protocol is **SSH**, set the destination port to **22**.'."\n"
+ .'* If the protocol is **Telnet**, set the destination port to **23**.'."\n"
+ .'* If the protocol is **HTTP**, set the destination port to **80**.'."\n"
+ .'* If the protocol is **HTTPS**, set the destination port to **443**.'."\n"
+ .'* If the protocol is **MS SQL**, set the destination port to **1443**.'."\n"
+ .'* If the protocol is **Oracle**, set the destination port to **1521**.'."\n"
+ .'* If the protocol is **Mysql**, set the destination port to **3306**.'."\n"
+ .'* If the protocol is **RDP**, set the destination port to **3389**.'."\n"
+ .'* If the protocol is **Postgre SQL**, set the destination port to **5432**.'."\n"
+ .'* If the protocol is **Redis**, set the destination port to **6379**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'DstPortRange' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose destination ports fall into the specified destination port range are considered a match. If you do not specify destination port range, packets are considered a match regardless of the destination port.'."\n"
+ ."\n"
+ .'You can specify at most two port numbers for this parameter. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose destination port is 1 are considered a match. A value of -1 specifies all destination ports.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose destination ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port must also be -1. In this case, packets are considered a match regardless of the destination port.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose destination ports fall into the specified destination port range are considered a match. If you do not specify a destination port range, packets are considered a match regardless of the destination port.'."\n"
+ ."\n"
+ .'You can enter at most two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose destination port is 1 are considered a match.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose destination ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, packets are considered a match regardless of the destination port.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'SrcCidr' => [
+ 'description' => 'The source CIDR block that is used to match packets.'."\n"
+ ."\n"
+ .'Packets whose source IP addresses fall into the specified source CIDR block are considered a match. If you do not specify a source CIDR block, packets are considered a match regardless of the source IP address.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/24',
+ ],
+ 'AddressFamily' => [
+ 'description' => 'The address family. You can set the value to IPv4 or IPv6, or leave the value empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv4',
+ ],
+ 'SrcPortRange' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose source ports fall into the specified source port range are considered a match. If you do not specify a source port range, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can enter at most two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose source port is 1 are considered a match. A value of -1 specifies all source ports.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose source ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, packets are considered a match regardless of the source port.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose source ports fall into the specified source port range are considered a match. If you do not specify a source port range, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can enter at most two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose source port is 1 are considered a match.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose source ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, packets are considered a match regardless of the source port.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '200',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'TrafficMatchRuleName' => [
+ 'description' => 'The name of the traffic classification rule.'."\n"
+ ."\n"
+ .'The name is optional. If you enter a name, it must be 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTrafficMarkingPolicyId.NotFound',
+ 'errorMessage' => 'Operation is failed because traffic marking policy id is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SrcCidr',
+ 'errorMessage' => 'The specified SrcCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficMarkingPolicy',
+ 'errorMessage' => 'The status of TrafficMarkingPolicy is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.DstCidr',
+ 'errorMessage' => 'The specified DstCidr is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Protocol',
+ 'errorMessage' => 'The specified Protocol is invalid.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.TrafficMatchRules',
+ 'errorMessage' => 'The parameter AddTrafficMatchRules are duplicated.',
+ ],
+ [
+ 'errorCode' => 'InstanceExist.TrafficMatchRules',
+ 'errorMessage' => 'The instance already exists.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficMatchRules',
+ 'errorMessage' => 'The parameter TrafficMatchRules is empty.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SrcPortRange',
+ 'errorMessage' => 'The specified SrcPortRange is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.DstPortRange',
+ 'errorMessage' => 'The specified DstPortRange is illegal.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.CidrAddressFamily',
+ 'errorMessage' => 'Attribute SrcCidr or DstCidr of TrafficMarkRule does not match AddressFamily.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AddressFamily',
+ 'errorMessage' => 'AddressFamily is illegal.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.SrcCidrDstCidr',
+ 'errorMessage' => 'Attribute SrcCidr of TrafficMarkRule does not match DstCidr.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.CidrProtocol',
+ 'errorMessage' => 'Attribute SrcCidr or DstCidr of TrafficMarkRule does not match Protocol.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.SrcPortRange',
+ 'errorMessage' => 'Current TR version does not support setting source port range.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.DstPortRange',
+ 'errorMessage' => 'Current TR version does not support setting destination port range.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.IPv6Cidr',
+ 'errorMessage' => 'The traffic marking policy for current TR type does not support IPv6 CIDR.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficMarkingPolicyId',
+ 'errorMessage' => 'The parameter TrafficMarkingPolicyId is mandatory.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTrafficMarkingPolicies',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\"\\n}","errorExample":""},{"type":"xml","example":"<AddTraficMatchRuleToTrafficMarkingPolicyResponse>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n</AddTraficMatchRuleToTrafficMarkingPolicyResponse>","errorExample":""}]',
+ 'title' => 'AddTrafficMatchRuleToTrafficMarkingPolicy',
+ 'description' => '**AddTrafficMatchRuleToTrafficMarkingPolicy** 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 **ListTrafficMarkingPolicies** operation to query the status of a traffic classification rule.'."\n"
+ ."\n"
+ .'* If a traffic classification rule is in the **Creating** state, the traffic classification rule is being created. In this case, you can query the traffic classification rule but cannot perform other operations.'."\n"
+ .'* If a traffic classification rule is in the **Active** state, the traffic classification rule is added to the traffic marking policy.'."\n",
+ ],
+ 'ModifyTrafficMatchRuleToTrafficMarkingPolicy' => [
+ 'summary' => 'Modifies the name and description of a traffic classification rule.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'abilityTreeCode' => '247314',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnWVMXRT',
+ ],
+ '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-42665544****',
+ ],
+ ],
+ [
+ '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 sends the request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-u9nxup5kww5po8****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMatchRuleId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-rule-fa9kgq1e90rmhc****'."\n",
+ ],
+ ],
+ [
+ 'name' => 'TrafficMatchRuleName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the traffic classification rule.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMatchRuleDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the traffic classification rule.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'descriptiontest',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '13526224-5780-4426-8ADF-BC8B08700F23',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.TrafficMatchRuleName',
+ 'errorMessage' => 'TrafficMatchRuleName is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrafficMatchRuleDescription',
+ 'errorMessage' => 'TrafficMatchRuleDescription is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidTrafficMarkingPolicyId.NotFound',
+ 'errorMessage' => 'The specified TrafficMarkingPolicyId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidTrafficMatchRuleId.NotFound',
+ 'errorMessage' => 'TrafficMatchRuleId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'eventInfo' => [
+ 'enable' => false,
+ 'eventNames' => [],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"13526224-5780-4426-8ADF-BC8B08700F23\\"\\n}","type":"json"}]',
+ 'title' => 'ModifyTrafficMatchRuleToTrafficMarkingPolicy',
+ ],
+ 'CreateTrafficMarkingPolicy' => [
+ 'summary' => 'Creates a traffic marking policy. A traffic marking policy captures network traffic based on traffic classification rules and marks the traffic with the Differentiated Services Code Point (DSCP) values that you specify.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72304',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnWVMXRT',
+ ],
+ ],
+ '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. The client 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' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-8vbuqeo5h5pu3m01d****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the traffic marking policy.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the traffic marking policy.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'Priority',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The priority value of the traffic marking policy. Valid values: **1** to **100**.'."\n"
+ ."\n"
+ .'The priority value of each traffic marking policy on a transit router must be unique. A smaller value specifies a higher priority.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '5',
+ ],
+ ],
+ [
+ 'name' => 'MarkingDscp',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The differentiated services code point (DSCP) value to be added to packets that match the traffic classification rule. Valid values: **0** to **63**.'."\n"
+ ."\n"
+ .'The DSCP value of each traffic marking policy on a transit router must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '5',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMatchRules',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The traffic classification rules in the traffic marking policy.'."\n"
+ ."\n"
+ .'Data packets that meet the traffic classification rule is assigned the DSCP value of quality of service (QoS) policy.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the traffic classification rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MatchDscp' => [
+ 'description' => 'The Differentiated Service Code Point (DSCP) value that is used to match packets. Valid values: **0** to **63**.'."\n"
+ ."\n"
+ .'Packets that carry the specified DSCP value meet the traffic classification rule. If you do not specify a DSCP value, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'> The DSCP value that you specify for this parameter is the DSCP value that packets carry before they are transmitted over the inter-region connection.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a DSCP value for each traffic classification rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '6',
+ ],
+ 'DstCidr' => [
+ 'description' => 'The destination CIDR block of packets. IPv4 and IPv6 addresses are supported.'."\n"
+ ."\n"
+ .'Packets whose destination IP addresses fall into the specified destination CIDR block meet the traffic classification rule. If you do not specify a destination CIDR block, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call You can specify a destination CIDR block for each traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.10.10.0/24',
+ ],
+ 'TrafficMatchRuleDescription' => [
+ 'description' => 'The description of the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a description for each traffic classification rule.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ 'Protocol' => [
+ 'description' => 'The protocol that is used to match packets.'."\n"
+ ."\n"
+ .'Traffic classification rules support the following protocols: **HTTP**, **HTTPS**, **TCP**, **UDP**, **SSH**, and **Telnet**. For more information, log on to the [CEN console](https://cen.console.aliyun.com/cen/list).'."\n"
+ ."\n"
+ .'**Some protocols use a fixed port. Click to view the protocols and ports.**'."\n"
+ ."\n"
+ .'* If the protocol is **ICMP**, the destination port must be **-1**.'."\n"
+ .'* If the protocol is **GRE**, the destination port must be **1**.'."\n"
+ .'* If the protocol is **SSH**, the destination port must be **22**.'."\n"
+ .'* If the protocol is **Telnet**, the destination port must be **23**.'."\n"
+ .'* If the protocol is **HTTP**, the destination port must be **80**.'."\n"
+ .'* If the protocol is **HTTPS**, the destination port must be **443**.'."\n"
+ .'* If the protocol is **MS SQL**, the destination port must be **1443**.'."\n"
+ .'* If the protocol is **Oracle**, the destination port must be **1521**.'."\n"
+ .'* If the protocol is **Mysql**, the destination port must be **3306**.'."\n"
+ .'* If the protocol is **RDP**, the destination port must be **3389**.'."\n"
+ .'* If the protocol is **Postgre SQL**, the destination port must be **5432**.'."\n"
+ .'* If the protocol is **Redis**, the destination port must be **6379**.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a protocol for each traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'DstPortRange' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose destination ports fall within the destination port range meet the traffic classification rule. If you do not specify destination port range, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose destination port is 1 meet the traffic classification rule. A value of -1 specifies all destination ports.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose destination ports fall into 1 and 200 meet the traffic classification rule.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a destination port range for each traffic classification rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose destination ports fall within the destination port range meet the traffic classification rule. If you do not specify destination port range, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose destination port is 1 meet the traffic classification rule.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose destination ports fall into 1 and 200 meet the traffic classification rule.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a destination port range for each traffic classification rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'SrcCidr' => [
+ 'description' => 'The source CIDR block of packets. IPv6 and IPv4 addresses are supported.'."\n"
+ ."\n"
+ .'Packets whose source IP addresses fall into the specified source CIDR block meet the traffic classification rule. If you do not specify a source CIDR block, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a source CIDR block for each traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.0/24',
+ ],
+ 'SrcPortRange' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose source ports fall within the source port range meet the traffic classification rule. If you do not specify a source port range, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose source port is 1 meet the traffic classification rule. A value of -1 specifies all source ports.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose source ports fall into 1 and 200 meet the traffic classification rule.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a source port range for each traffic classification rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose source ports fall within the source port range meet the traffic classification rule. If you do not specify a source port range, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose source port is 1 meet the traffic classification rule.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose source ports fall into 1 and 200 meet the traffic classification rule.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a source port range for each traffic classification rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '1',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'TrafficMatchRuleName' => [
+ 'description' => 'The name of the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a name for each traffic classification rule.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ 'AddressFamily' => [
+ 'description' => 'The address family. You can set the value to IPv4 or IPv6, or leave the value empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv4',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TrafficMarkingPolicyId' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'tm-u9nxup5kww5po8****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '0876E54E-3E36-5C31-89F0-9EE8A9266F9A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Protocol',
+ 'errorMessage' => 'Protocol is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.TransitRouterType',
+ 'errorMessage' => 'Operation failed because The Basic TransitRouter does not support this action.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Priority',
+ 'errorMessage' => 'Priority is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MarkingDscp',
+ 'errorMessage' => 'MarkingDscp is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SrcCidr',
+ 'errorMessage' => 'SrcCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.DstCidr',
+ 'errorMessage' => 'DstCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.Priority',
+ 'errorMessage' => 'The parameter Priority is duplicated.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.MarkingDscp',
+ 'errorMessage' => 'The parameter MarkingDscp is duplicated.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.TrafficMatchRules',
+ 'errorMessage' => 'The parameter TrafficMatchRules are duplicated.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.TrafficMatchRule',
+ 'errorMessage' => 'The maximum number of TrafficMatchRule per Transit Router is exceeded.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MatchDscp',
+ 'errorMessage' => 'MarkingDscp is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SrcPortRange',
+ 'errorMessage' => 'The specified SrcPortRange is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.DstPortRange',
+ 'errorMessage' => 'The specified DstPortRange is illegal.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.CidrAddressFamily',
+ 'errorMessage' => 'Attribute SrcCidr or DstCidr of TrafficMarkRule does not match AddressFamily.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AddressFamily',
+ 'errorMessage' => 'AddressFamily is illegal.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.SrcCidrDstCidr',
+ 'errorMessage' => 'Attribute SrcCidr of TrafficMarkRule does not match DstCidr.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.CidrProtocol',
+ 'errorMessage' => 'Attribute SrcCidr or DstCidr of TrafficMarkRule does not match Protocol.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.DstPortRange',
+ 'errorMessage' => 'Current TR version does not support setting destination port range.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.SrcPortRange',
+ 'errorMessage' => 'Current TR version does not support setting source port range.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.IPv6Cidr',
+ 'errorMessage' => 'The traffic marking policy for current TR type does not support IPv6 CIDR.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterId',
+ 'errorMessage' => 'The parameter TransitrouterId is mandatory.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTrafficMarkingPolicies',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TrafficMarkingPolicyId\\": \\"tm-u9nxup5kww5po8****\\",\\n \\"RequestId\\": \\"0876E54E-3E36-5C31-89F0-9EE8A9266F9A\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateTrafficMarkingPolicyResponse>\\n <TrafficMarkingPolicyId>tm-u9nxup5kww5po8****</TrafficMarkingPolicyId>\\n <RequestId>0876E54E-3E36-5C31-89F0-9EE8A9266F9A</RequestId>\\n</CreateTrafficMarkingPolicyResponse>","errorExample":""}]',
+ 'title' => 'CreateTrafficMarkingPolicy',
+ 'description' => '* Only Enterprise Edition transit routers support traffic marking policies.'."\n"
+ ."\n"
+ .'* **CreateTrafficMarkingPolicy** is an asynchronous operation. After you send a request, the system returns a traffic marking policy ID and runs the task in the background. You can call the **ListTrafficMarkingPolicies** operation to query the status of a traffic marking policy.'."\n"
+ ."\n"
+ .' * If a traffic marking policy is in the **Creating** state, the traffic marking policy is being created. You can query the traffic marking policy but cannot perform other operations.'."\n"
+ .' * If a traffic marking policy is in the **Active** state, the traffic marking policy is created.'."\n",
+ ],
+ 'DeleteTrafficMarkingPolicy' => [
+ 'summary' => 'Deletes a specified traffic marking policy.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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 value, but you must make sure that it is unique among all 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 value of **ClientToken**. The value of **RequestId** for each API request may be different.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ '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' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-u9nxup5kww5po8****',
+ ],
+ ],
+ [
+ 'name' => 'Force',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Whether to force delete the traffic marking policy. Valid values:'."\n"
+ ."\n"
+ .'* **false** (default): checks whether there is a traffic classification rule before deleting the traffic marking policy. If there is, the traffic marking policy cannot be deleted and an error is returned.'."\n"
+ .'* **true**: When you delete a traffic marking policy, all traffic classification rules are deleted by default.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The returned result.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '5F1F3A57-A753-572B-8F71-4F964398C566',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'AssociationExist.TransitQosRuleExist',
+ 'errorMessage' => 'The rule with the specified TrafficMarkingPolicy already exists.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficMarkingPolicy',
+ 'errorMessage' => 'The status of TrafficMarkingPolicy is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidTrafficMarkingPolicyId.NotFound',
+ 'errorMessage' => 'The specified TrafficMarkingPolicyId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficMarkingPolicyId',
+ 'errorMessage' => 'The parameter TrafficMarkingPolicyId is mandatory.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5F1F3A57-A753-572B-8F71-4F964398C566\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTrafficMarkingPolicyResponse>\\n <RequestId>5F1F3A57-A753-572B-8F71-4F964398C566</RequestId>\\n</DeleteTrafficMarkingPolicyResponse>","errorExample":""}]',
+ 'title' => 'DeleteTrafficMarkingPolicy',
+ 'description' => '* **DeleteTrafficMarkingPolicy** 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 **ListTrafficMarkingPolicies** operation to query the status of a traffic marking policy.'."\n"
+ ."\n"
+ .' * If a traffic marking policy is in the **Deleting** state, the traffic marking policy is being deleted. You can query the traffic marking policy but cannot perform other operations.'."\n"
+ .' * If a traffic marking policy cannot be found, the traffic marking policy is deleted.'."\n"
+ ."\n"
+ .'* Before you delete a traffic marking policy, you must delete all traffic classification rules from the policy. For more information, see [RemoveTrafficMatchRuleFromTrafficMarkingPolicy](~~468330~~).'."\n",
+ ],
+ 'UpdateTrafficMarkingPolicyAttribute' => [
+ 'summary' => 'Modifies the name, description, and traffic classification rules of a traffic marking policy.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72432',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnWVMXRT',
+ ],
+ ],
+ '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",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
+ ."\n"
+ .'* **true**: preforms 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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-u9nxup5kww5po8****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the traffic marking policy.'."\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' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the traffic marking policy.'."\n"
+ ."\n"
+ .'The description must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The description must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'AddTrafficMatchRules',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The traffic classification rules to be added to the traffic marking policy.'."\n"
+ ."\n"
+ .'You can add at most 50 traffic classification rules in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The traffic classification rules to be added to the traffic marking policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MatchDscp' => [
+ 'description' => 'The Differentiated Service Code Point (DSCP) value that is used to match packets. Valid values: **0** to **63**.'."\n"
+ ."\n"
+ .'Requests that carry the specified DSCP value are considered a match. If you do not specify a DSCP value, packets are considered a match regardless of the DSCP value.'."\n"
+ ."\n"
+ .'> The DSCP value that you specify for this parameter is the DSCP value that packets carry before they are transmitted over the inter-region connection.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a DSCP value for each traffic classification rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '1',
+ ],
+ 'DstCidr' => [
+ 'description' => 'The destination CIDR block of packets. IPv4 and IPv6 addresses are supported.'."\n"
+ ."\n"
+ .'Packets whose destination IP addresses fall into the specified destination CIDR block meet the traffic classification rule. If you do not specify a destination CIDR block, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a destination CIDR block for each traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '172.30.0.0/24',
+ ],
+ 'TrafficMatchRuleDescription' => [
+ 'description' => 'The description of the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a description for each traffic classification rule.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test1',
+ ],
+ 'Protocol' => [
+ 'description' => 'The protocol that is used to match packets.'."\n"
+ ."\n"
+ .'Traffic classification rules support the following protocols: **HTTP**, **HTTPS**, **TCP**, **UDP**, **SSH**, and **Telnet**. For more information, log on to the [CEN console](https://cen.console.aliyun.com/cen/list).'."\n"
+ ."\n"
+ .'**Some protocols use a fixed port. Click to view the protocols and ports.**'."\n"
+ ."\n"
+ .'* If the protocol is **ICMP**, set the destination port to **-1**.'."\n"
+ .'* If the protocol is **GRE**, set the destination port to **-1**.'."\n"
+ .'* If the protocol is **SSH**, set the destination port to **22**.'."\n"
+ .'* If the protocol is **Telnet**, set the destination port to **23**.'."\n"
+ .'* If the protocol is **HTTP**, set the destination port to **80**.'."\n"
+ .'* If the protocol is **HTTPS**, set the destination port to **443**.'."\n"
+ .'* If the protocol is **MS SQL**, set the destination port to **1443**.'."\n"
+ .'* If the protocol is **Oracle**, set the destination port to **1521**.'."\n"
+ .'* If the protocol is **Mysql**, set the destination port to **3306**.'."\n"
+ .'* If the protocol is **RDP**, set the destination port to **3389**.'."\n"
+ .'* If the protocol is **Postgre SQL**, set the destination port to **5432**.'."\n"
+ .'* If the protocol is **Redis**, the destination port must be **6379**.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a protocol for each traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UDP',
+ ],
+ 'DstPortRange' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose destination ports fall within the specified destination port range are considered a match. If you do not specify a destination port range, packets are considered a match regardless of the destination port.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose destination port is 1 match the traffic classification rule. A value of -1 specifies all destination ports.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose destination ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a destination port range for each traffic classification rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'Packets whose destination ports fall within the specified destination port range are considered a match. If you do not specify a destination port range, packets are considered a match regardless of the destination port.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose destination port is 1 match the traffic classification rule.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose destination ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a destination port range for each traffic classification rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '77',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'SrcCidr' => [
+ 'description' => 'The source CIDR block of packets. IPv4 and IPv6 addresses are supported.'."\n"
+ ."\n"
+ .'Packets whose source IP addresses fall into the specified source CIDR block meet the traffic classification rule. If you do not specify a source CIDR block, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a source CIDR block for each traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.128.32.0/19',
+ ],
+ 'SrcPortRange' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose source ports fall within the source port range. If you do not specify this parameter, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose source port is 1 are considered a match. A value of -1 specifies all source ports.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose source ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a source port range for each traffic classification rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The source port range that is used to match packets. Valid values: **-1** and **1** to **65535**.'."\n"
+ ."\n"
+ .'The traffic classification rule matches the packets whose source ports fall within the source port range. If you do not specify this parameter, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'You can enter up to two port numbers. Take note of the following rules:'."\n"
+ ."\n"
+ .'* If you enter only one port number, such as 1, packets whose source port is 1 are considered a match.'."\n"
+ .'* If you enter two port numbers, such as 1 and 200, packets whose source ports fall into 1 and 200 are considered a match.'."\n"
+ .'* If you enter two port numbers and one of them is -1, the other port number must also be -1. In this case, all packets meet the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a source port range for each traffic classification rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '22',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'TrafficMatchRuleName' => [
+ 'description' => 'The name of the traffic classification rule.'."\n"
+ ."\n"
+ .'You can create up to 50 traffic classification rules in each call. You can specify a name for each traffic classification rule.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Guangzhou Testing'."\n",
+ ],
+ 'AddressFamily' => [
+ 'description' => 'The address family. Valid values: You can set the value to IPv4 or IPv6, or leave the value empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv4',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ [
+ 'name' => 'DeleteTrafficMatchRules',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The traffic classification rules to be deleted from the traffic marking policy.'."\n"
+ ."\n"
+ .'> Specify detailed information about the traffic classification rule, such as the source CIDR block, destination CIDR block, source port, destination port, and DSCP value. If you do not specify sufficient information, the system may fail to match the traffic classification rule that you want to delete.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The traffic classification rules to be deleted from the traffic marking policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MatchDscp' => [
+ 'description' => 'The DSCP value that is used to match packets.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '3',
+ ],
+ 'DstCidr' => [
+ 'description' => 'The destination CIDR block of packets. IPv4 and IPv6 addresses are supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.200.3/32',
+ ],
+ 'TrafficMatchRuleDescription' => [
+ 'description' => 'The description of the traffic classification rule.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Hangzhou-to-Qingdao CAT'."\n",
+ ],
+ 'Protocol' => [
+ 'description' => 'The protocol that is used to match packets.'."\n"
+ ."\n"
+ .'You can call the [ListTrafficMarkingPolicies](~~468322~~) operation to query the details about a traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TCP',
+ ],
+ 'DstPortRange' => [
+ 'description' => 'The destination port range that is used to match packets.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination port range that is used to match packets.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '-1',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'SrcCidr' => [
+ 'description' => 'The source CIDR block of packets. IPv4 and IPv6 addresses are supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.72.0.0/16',
+ ],
+ 'SrcPortRange' => [
+ 'description' => 'The source port range that is used to match packets.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The source port range that is used to match packets.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '23',
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ ],
+ 'TrafficMatchRuleName' => [
+ 'description' => 'The name of the traffic classification rule.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'AddressFamily' => [
+ 'description' => 'The address family. Valid values: You can set the value to IPv4 or IPv6, or leave the value empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv6',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '60BB11B2-7BF4-54DC-BCC9-F706E1EB02AC',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTrafficMarkingPolicyId.NotFound',
+ 'errorMessage' => 'TrafficMarkingPolicyId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficMarkingPolicy',
+ 'errorMessage' => 'The status of TrafficMarkingPolicy is incorrect.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.AddTrafficMatchRules',
+ 'errorMessage' => 'The parameter AddTrafficMatchRules are duplicated. ',
+ ],
+ [
+ 'errorCode' => 'Duplicated.DeleteTrafficMatchRulese',
+ 'errorMessage' => 'The parameter DeleteTrafficMatchRules are duplicated. ',
+ ],
+ [
+ 'errorCode' => 'InstanceExist.AddTrafficMatchRules',
+ 'errorMessage' => 'The instance already exists.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.AddTrafficMatchRulesAndDeleteTrafficMatchRules',
+ 'errorMessage' => 'The same rule in AddTrafficMatchRules and DeleteTrafficMatchRules is not supported..',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.DstPortRange',
+ 'errorMessage' => 'The specified DstPortRange is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SrcPortRange',
+ 'errorMessage' => 'The specified SrcPortRange is illegal.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.CidrAddressFamily',
+ 'errorMessage' => 'Attribute SrcCidr or DstCidr of TrafficMarkRule does not match AddressFamily.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AddressFamily',
+ 'errorMessage' => 'AddressFamily is illegal.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.SrcCidrDstCidr',
+ 'errorMessage' => 'Attribute SrcCidr of TrafficMarkRule does not match DstCidr.',
+ ],
+ [
+ 'errorCode' => 'AttrMismatching.CidrProtocol',
+ 'errorMessage' => 'Attribute SrcCidr or DstCidr of TrafficMarkRule does not match Protocol.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterMode.NeedUpgrade',
+ 'errorMessage' => 'TransitRouter need to upgrade.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.SrcPortRange',
+ 'errorMessage' => 'Current TR version does not support setting source port range.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.DstPortRange',
+ 'errorMessage' => 'Current TR version does not support setting destination port range.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.IPv6Cidr',
+ 'errorMessage' => 'The traffic marking policy for current TR type does not support IPv6 CIDR.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.DstCidr',
+ 'errorMessage' => 'DstCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.SrcCidr',
+ 'errorMessage' => 'SrcCidr is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficMarkingPolicyId',
+ 'errorMessage' => 'The parameter TrafficMarkingPolicyId is mandatory.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidDeleteTrafficMatchRules.NotFound',
+ 'errorMessage' => 'The specified DeleteTrafficMatchRules are not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTrafficMarkingPolicies',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"60BB11B2-7BF4-54DC-BCC9-F706E1EB02AC\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateTrafficMarkingPolicyAttributeResponse>\\n <RequestId>60BB11B2-7BF4-54DC-BCC9-F706E1EB02AC</RequestId>\\n</UpdateTrafficMarkingPolicyAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateTrafficMarkingPolicyAttribute',
+ ],
+ 'ListTrafficMarkingPolicies' => [
+ 'summary' => 'Queries the details about a traffic marking policy, such as the status and priority.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72388',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnWVMXRT',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'tr-bp1rmwxnk221e3fas****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tm-iz5egnyitxiroq****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the traffic marking policy.'."\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' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the traffic marking policy.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ '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' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no subsequent 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****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the query.'."\n"
+ ."\n"
+ .'* If **NextToken** was not returned in the previous query, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '699989E4-64A0-5F78-8B93-CDB32D98971F',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned on each page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TrafficMarkingPolicies' => [
+ 'description' => 'The information about the traffic marking policy.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the traffic marking policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TrafficMarkingPolicyStatus' => [
+ 'description' => 'The status of the traffic marking policy. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**: The policy is being created.'."\n"
+ .'* **Active**: The policy is available.'."\n"
+ .'* **Modifying**: The policy is being modified.'."\n"
+ .'* **Deleting**: The policy is being deleted.'."\n",
+ 'type' => 'string',
+ 'example' => 'Creating',
+ ],
+ 'TrafficMarkingPolicyId' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'tm-iz5egnyitxiroq****',
+ ],
+ 'MarkingDscp' => [
+ 'description' => 'The Differentiated Service Code Point (DSCP) value of the traffic marking policy.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5',
+ ],
+ 'TrafficMarkingPolicyName' => [
+ 'description' => 'The name of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'Priority' => [
+ 'description' => 'The priority of the traffic marking policy.'."\n"
+ ."\n"
+ .'A lower value indicates a higher priority.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5',
+ ],
+ 'TrafficMarkingPolicyDescription' => [
+ 'description' => 'The description of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'TrafficMatchRules' => [
+ 'description' => 'The traffic classification rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the traffic classification rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MatchDscp' => [
+ 'description' => 'The DSCP value used to match data packets.'."\n"
+ ."\n"
+ .'> If the value of the **MatchDscp** parameter is -1, data packets are considered a match regardless of the DSCP value.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '6',
+ ],
+ 'DstCidr' => [
+ 'description' => 'The destination CIDR block of packets. IPv4 and IPv6 addresses are supported.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.120.0/24',
+ ],
+ 'TrafficMatchRuleDescription' => [
+ 'description' => 'The description of the traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'Protocol' => [
+ 'description' => 'The protocol that is used to match packets.'."\n"
+ ."\n"
+ .'> Traffic marking policies support multiple protocols. For more information, see the documentation of CEN.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'TrafficMatchRuleId' => [
+ 'description' => 'The ID of the traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'tm-rule-fa9kgq1e90rmhc****',
+ ],
+ 'SrcCidr' => [
+ 'description' => 'The source CIDR block of packets. IPv6 and IPv4 addresses are supported.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.10.0/24',
+ ],
+ 'TrafficMatchRuleName' => [
+ 'description' => 'The name of the traffic classification rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'TrafficMatchRuleStatus' => [
+ 'description' => 'The status of the traffic classification rule. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**: The rule is being created.'."\n"
+ .'* **Active**: The rule is available.'."\n"
+ .'* **Deleting**: The rule is being deleted.'."\n",
+ 'type' => 'string',
+ 'example' => 'Creating',
+ ],
+ 'AddressFamily' => [
+ 'description' => 'The address family. You can set the value to IPv4 or IPv6, or leave the value empty.'."\n",
+ 'type' => 'string',
+ 'example' => 'IPv4',
+ ],
+ 'DstPortRange' => [
+ 'description' => 'The destination port range used to match data packets.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The destination port range used to match data packets.'."\n"
+ ."\n"
+ .'Two destination port numbers are returned.'."\n"
+ ."\n"
+ .'* If the returned destination ports are the same, such as 80 and 80, the traffic classification rule matches packets whose destination port is port 80.'."\n"
+ ."\n"
+ .' If the returned destination ports are both -1, packets are considered a match regardless of the destination port.'."\n"
+ ."\n"
+ .'* If the returned destination ports are different, such as 1 and 200, the traffic classification rule matches packets whose destination ports are from 1 to 200.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80,80',
+ ],
+ ],
+ 'SrcPortRange' => [
+ 'description' => 'The source port range used to match data packets.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The source port range used to match data packets.'."\n"
+ ."\n"
+ .'Two source port numbers are returned.'."\n"
+ ."\n"
+ .'* If the returned source ports are the same, such as 80 and 80, the traffic classification rule matches packets whose source port is 80.'."\n"
+ ."\n"
+ .' If the returned source ports are both -1, packets are considered a match regardless of the source port.'."\n"
+ ."\n"
+ .'* If the returned source ports are different, such as 1 and 200, the traffic classification rule matches packets whose source ports are from 1 to 200.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1,200',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-ccni***',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'MissingParam.TransitRouterIdOrTrafficMarkingPolicyId',
+ 'errorMessage' => 'Either TransitRouterId or TrafficMarkingPolicyId must be specified.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"699989E4-64A0-5F78-8B93-CDB32D98971F\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"TrafficMarkingPolicies\\": [\\n {\\n \\"TrafficMarkingPolicyStatus\\": \\"Creating\\",\\n \\"TrafficMarkingPolicyId\\": \\"tm-iz5egnyitxiroq****\\",\\n \\"MarkingDscp\\": 5,\\n \\"TrafficMarkingPolicyName\\": \\"nametest\\",\\n \\"Priority\\": 5,\\n \\"TrafficMarkingPolicyDescription\\": \\"desctest\\",\\n \\"TrafficMatchRules\\": [\\n {\\n \\"MatchDscp\\": 6,\\n \\"DstCidr\\": \\"192.168.120.0/24\\",\\n \\"TrafficMatchRuleDescription\\": \\"desctest\\",\\n \\"Protocol\\": \\"HTTP\\",\\n \\"TrafficMatchRuleId\\": \\"tm-rule-fa9kgq1e90rmhc****\\",\\n \\"SrcCidr\\": \\"192.168.10.0/24\\",\\n \\"TrafficMatchRuleName\\": \\"nametest\\",\\n \\"TrafficMatchRuleStatus\\": \\"Creating\\",\\n \\"AddressFamily\\": \\"IPv4\\",\\n \\"DstPortRange\\": [\\n 0\\n ],\\n \\"SrcPortRange\\": [\\n 0\\n ]\\n }\\n ],\\n \\"TransitRouterId\\": \\"tr-ccni***\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTrafficMarkingPoliciesResponse>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>699989E4-64A0-5F78-8B93-CDB32D98971F</RequestId>\\n <TotalCount>6</TotalCount>\\n <MaxResults>20</MaxResults>\\n <TrafficMarkingPolicies>\\n <TrafficMarkingPolicyStatus>Creating</TrafficMarkingPolicyStatus>\\n <TrafficMarkingPolicyId>tm-iz5egnyitxiroq****</TrafficMarkingPolicyId>\\n <MarkingDscp>5</MarkingDscp>\\n <TrafficMarkingPolicyName>nametest</TrafficMarkingPolicyName>\\n <Priority>5</Priority>\\n <TrafficMarkingPolicyDescription>desctest</TrafficMarkingPolicyDescription>\\n <TrafficMatchRules>\\n <MatchDscp>6</MatchDscp>\\n <DstCidr>192.168.120.0/24</DstCidr>\\n <TrafficMatchRuleDescription>desctest</TrafficMatchRuleDescription>\\n <Protocol>HTTP</Protocol>\\n <TrafficMatchRuleId>tm-rule-fa9kgq1e90rmhc****</TrafficMatchRuleId>\\n <SrcCidr>192.168.10.0/24</SrcCidr>\\n <TrafficMatchRuleName>nametest</TrafficMatchRuleName>\\n <TrafficMatchRuleStatus>Creating</TrafficMatchRuleStatus>\\n <DstPortRange>80</DstPortRange>\\n <DstPortRange>80</DstPortRange>\\n <SrcPortRange>1</SrcPortRange>\\n <SrcPortRange>200</SrcPortRange>\\n </TrafficMatchRules>\\n </TrafficMarkingPolicies>\\n</ListTrafficMarkingPoliciesResponse>","errorExample":""}]',
+ 'title' => 'ListTrafficMarkingPolicies',
+ 'description' => 'Before you call the **ListTrafficMarkingPolicies** operation, take note of the following limits:'."\n"
+ ."\n"
+ .'* Specify at least one of the **TransitRouterId** and **TrafficMarkingPolicyId** parameters.'."\n"
+ .'* If you do not specify a traffic marking policy ID (**TrafficMarkingPolicyId**), the operation queries only the information about the traffic marking policy based on the **TransitRouterId**, **TrafficMarkingPolicyName**, and **TrafficMarkingPolicyDescription** parameters. The **TrafficMatchRules** parameter that contains the information about the traffic classification rules is not returned.'."\n"
+ .'* If you specify a traffic marking policy ID (**TrafficMarkingPolicyId**), the operation queries the information about the traffic marking policy and traffic classification rules. The **TrafficMatchRules** parameter is returned in the response. If the value of the **TrafficMatchRules** parameter is an empty array, the traffic marking policy does not contain a traffic classification rule.'."\n",
+ ],
+ 'RemoveTraficMatchRuleFromTrafficMarkingPolicy' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ '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"
+ ."\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-426****',
+ ],
+ ],
+ [
+ '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 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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-d33hdczo3qo8ta****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkRuleIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The ID of the traffic classification rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the traffic classification rule.'."\n"
+ ."\n"
+ .'You can delete at most 20 traffic classification rules in each call.'."\n"
+ ."\n"
+ .'You can call the [ListTrafficMarkingPolicies](~~419013~~) operation to query IDs of traffic classification rules.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tm-rule-15jtgapsat62r9****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '6DF9A765-BCD2-5C7E-8C32-C35C8A361A39',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficMarkingPolicy',
+ 'errorMessage' => 'TrafficMarkingPolicy status is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidTrafficMarkingPolicyId.NotFound',
+ 'errorMessage' => 'The specified TrafficMarkingPolicyId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrafficMarkingRuleIds',
+ 'errorMessage' => 'The specified TrafficMarkingRuleIds is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'substitutions' => [
+ 'Cbn::2017-09-12::RemoveTrafficMatchRuleFromTrafficMarkingPolicy',
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6DF9A765-BCD2-5C7E-8C32-C35C8A361A39\\"\\n}","errorExample":""},{"type":"xml","example":"<RemoveTraficMatchRuleFromTrafficMarkingPolicyResponse>\\n <RequestId>6DF9A765-BCD2-5C7E-8C32-C35C8A361A39</RequestId>\\n</RemoveTraficMatchRuleFromTrafficMarkingPolicyResponse>","errorExample":""}]',
+ 'title' => 'RemoveTraficMatchRuleFromTrafficMarkingPolicy',
+ 'summary' => 'Removes a traffic classification rule from a traffic marking policy.',
+ 'description' => '### [](#)Precautions'."\n"
+ ."\n"
+ .'The **RemoveTraficMatchRuleFromTrafficMarkingPolicy** operation is deprecated and will be discontinued soon. To delete a traffic classification rule, call the [RemoveTrafficMatchRuleFromTrafficMarkingPolicy](~~452726~~) operation. Maintenance on this document has stopped.'."\n",
+ ],
+ 'RemoveTrafficMatchRuleFromTrafficMarkingPolicy' => [
+ 'summary' => 'Deletes specified traffic classification rules from a traffic marking policy.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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 value, but you must make sure that it is unique among all requests. The client 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' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkingPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the traffic marking policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tm-d33hdczo3qo8ta****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficMarkRuleIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The ID of the traffic classification rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the traffic classification rule.'."\n"
+ ."\n"
+ .'You can delete at most 20 traffic classification rules in each call.'."\n"
+ ."\n"
+ .'You can call the [ListTrafficMarkingPolicies](~~419013~~) operation to query IDs of traffic classification rules.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tm-rule-15jtgapsat62r9****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '6DF9A765-BCD2-5C7E-8C32-C35C8A361A39',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficMarkingPolicy',
+ 'errorMessage' => 'TrafficMarkingPolicy status is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrafficMarkingRuleIds',
+ 'errorMessage' => 'The specified TrafficMarkingRuleIds is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidTrafficMarkingPolicyId.NotFound',
+ 'errorMessage' => 'The specified TrafficMarkingPolicyId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficMarkingPolicyId',
+ 'errorMessage' => 'The parameter TrafficMarkingPolicyId is mandatory.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6DF9A765-BCD2-5C7E-8C32-C35C8A361A39\\"\\n}","errorExample":""},{"type":"xml","example":"<RemoveTrafficMatchRuleFromTrafficMarkingPolicyResponse>\\n <RequestId>6DF9A765-BCD2-5C7E-8C32-C35C8A361A39</RequestId>\\n</RemoveTrafficMatchRuleFromTrafficMarkingPolicyResponse>","errorExample":""}]',
+ 'title' => 'RemoveTrafficMatchRuleFromTrafficMarkingPolicy',
+ 'description' => '* When you call **RemoveTrafficMatchRuleFromTrafficMarkingPolicy**, take note of the following rules:'."\n"
+ ."\n"
+ .' * If you specify the ID of a traffic classification rule in the **TrafficMarkRuleIds** parameter, the specified traffic classification rule is deleted.'."\n"
+ .' * If you do not specify a traffic classification rule ID in the **TrafficMarkRuleIds** parameter, no operation is performed after you call this operation.'."\n"
+ ."\n"
+ .' If you want to delete a traffic classification rule, you must specify the rule ID before you call this operation.'."\n"
+ ."\n"
+ .'* **RemoveTrafficMatchRuleFromTrafficMarkingPolicy** 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 **ListTrafficMarkingPolicies** operation to query the status of a traffic classification rule.'."\n"
+ ."\n"
+ .' * If a traffic classification rule is in the **Deleting** state, the traffic classification rule is being deleted. In this case, you can query the traffic classification rule but cannot perform other operations.'."\n"
+ .' * If a traffic classification rule cannot be found, the traffic classification rule is deleted.'."\n",
+ ],
+ 'CreateCenInterRegionTrafficQosQueue' => [
+ 'summary' => 'Creates queues in a quality of service (QoS) policy to manage network traffic based on finer granularities, improve service performance, and meet service-level agreements (SLAs).',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72301',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnUX9TH2',
+ ],
+ ],
+ '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.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ '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, the request format, and the 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 sends the request.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'QosQueueName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the queue.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'QosQueueDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the queue.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'RemainBandwidthPercent',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The maximum percentage of inter-region bandwidth that can be allocated to the queue.'."\n"
+ ."\n"
+ .'- Unit: percentage. For example, a value of 20 specifies that the queue can consume at most 20% of inter-region bandwidth.'."\n"
+ .'- The sum of the percentage values specified for all queues that belong to the same inter-region connection cannot exceed 100%.',
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '20',
+ 'pattern' => '^\\d+$',
+ ],
+ ],
+ [
+ 'name' => 'Bandwidth',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The maximum absolute bandwidth value that can be allocated to the queue. Unit: Mbit/s.'."\n"
+ ."\n"
+ .'- The value specifies an absolute bandwidth. For example, a value of 20 specifies that the queue can consume at most 20 Mbit/s of bandwidth.'."\n"
+ .'- The sum of the bandwidth values specified for all queues that belong to the same inter-region connection cannot exceed the maximum bandwidth of the inter-region connection.',
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the QoS policy.',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'qos-qdvybn468kaoxx****',
+ ],
+ ],
+ [
+ 'name' => 'Dscps',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The differentiated services code point (DSCP) value that matches the current queue.'."\n"
+ ."\n"
+ .'You can specify at most 20 DSCP values for a queue in each call. Separate DSCP values with commas (,).',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The DSCP value that matches the current queue.'."\n"
+ ."\n"
+ .'You can specify at most 20 DSCP values for a queue in each call. Separate DSCP values with commas (,).',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '5',
+ ],
+ 'required' => true,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.',
+ 'type' => 'object',
+ 'properties' => [
+ 'QosQueueId' => [
+ 'description' => 'The ID of the queue.',
+ 'type' => 'string',
+ 'example' => 'qos-queue-irqhi8k5fdyuu5****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.',
+ 'type' => 'string',
+ 'example' => '845F66F6-5C27-53A1-9428-B859086237B2',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.RemainBandwidthPercent',
+ 'errorMessage' => 'The specified RemainBandwidthPercent is invalid.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficQosPolicy',
+ 'errorMessage' => 'The status of TrafficQosPolicy is incorrect.',
+ ],
+ [
+ 'errorCode' => 'Duplicated.Dscps',
+ 'errorMessage' => 'The parameter Dscps are duplicated.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.Bandwidth',
+ 'errorMessage' => 'The parameter Bandwidth is mandatory.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthGuaranteeModeMismatch',
+ 'errorMessage' => 'The BandwidthGuaranteeMode does not match the Bandwidth or RemainBandwidthPercent.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AttachmentBandwidthExceed',
+ 'errorMessage' => 'The entered bandwidth causes the total QoS guaranteed bandwidth to exceed the cross-region bandwidth allocation value.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.RemainBandwidthPercent',
+ 'errorMessage' => 'RemainBandwidthPercent is missing.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Bandwidth',
+ 'errorMessage' => 'Bandwidth is illegal',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficQosPolicyId',
+ 'errorMessage' => 'The parameter TrafficQosPolicyId is mandatory.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.CDTServiceExpired',
+ 'errorMessage' => 'The CDT service is out of service.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidTrafficQosPolicyId.NotFound',
+ 'errorMessage' => 'The specified TrafficQosPolicyId is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListCenInterRegionTrafficQosPolicies',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"QosQueueId\\": \\"qos-queue-irqhi8k5fdyuu5****\\",\\n \\"RequestId\\": \\"845F66F6-5C27-53A1-9428-B859086237B2\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateCenInterRegionTrafficQosQueueResponse>\\n <QosQueueId>qos-queue-irqhi8k5fdyuu5****</QosQueueId>\\n <RequestId>845F66F6-5C27-53A1-9428-B859086237B2</RequestId>\\n</CreateCenInterRegionTrafficQosQueueResponse>","errorExample":""}]',
+ 'title' => 'CreateCenInterRegionTrafficQosQueue',
+ 'description' => 'The **CreateCenInterRegionTrafficQosQueue** operation 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 **ListCenInterRegionTrafficQosPolicies** operation to query the status of the QoS policy to determine the status of the queue. When you call this operation, you must set the **TrafficQosPolicyId** parameter.'."\n"
+ ."\n"
+ .'- If a QoS policy is in the **Modifying** state, the queue is being created. In this case, you can query the QoS policy and queue but cannot perform other operations.'."\n"
+ .'- If a QoS policy is in the **Active** state, the queue is created.',
+ ],
+ 'CreateCenInterRegionTrafficQosPolicy' => [
+ 'summary' => 'Creates a quality of service (QoS) policy for an inter-region connection on an Enterprise Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72300',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnUX9TH2',
+ ],
+ ],
+ '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",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether only to precheck the API request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: prechecks the request but does not create the QoS policy. The system checks the required parameters, the request format, and the service 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**: sends the API request. If the request passes the precheck, the QoS policy is created. This is the default value.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-8vbuqeo5h5pu3m01d****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-attach-r6g0m3epjehw57****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the QoS policy.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the QoS policy.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthGuaranteeMode',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'description' => 'The allocation mode of the guaranteed bandwidth. You can specify an absolute bandwidth value or a bandwidth percentage. Valid values:'."\n"
+ ."\n"
+ .'* **byBandwidth**: allocates an absolute bandwidth value for the QoS queue.'."\n"
+ .'* **byBandwidthPercent** (default): allocates a bandwidth percentage for the OoS queue.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'byBandwidthPercent',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosQueues',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the QoS queue.'."\n"
+ ."\n"
+ .'You can add at most three QoS queues in a QoS policy by calling this operation. To add more QoS queues, call the CreateCenInterRegionTrafficQosQueue operation.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the QoS queue.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QosQueueName' => [
+ 'description' => 'The name of the current queue.'."\n"
+ ."\n"
+ .'Each QoS policy supports at most three queues. You can specify a name for each queue.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ 'RemainBandwidthPercent' => [
+ 'description' => 'The percentage of the inter-region bandwidth that can be used by the queue.'."\n"
+ ."\n"
+ .'Each QoS policy supports at most 10 queues. You can specify a valid percentage for each queue.'."\n"
+ ."\n"
+ .'For example, a value of **1** specifies that the queue can consume 1% of the inter-region bandwidth.'."\n"
+ ."\n"
+ .'> The sum of the percentage values of all the queues in a QoS policy cannot exceed 100%.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '1',
+ 'pattern' => '^\\d+$',
+ ],
+ 'Bandwidth' => [
+ 'description' => 'The absolute bandwidth that can be consumed by the QoS queue. Unit: Mbit/s.'."\n"
+ ."\n"
+ .'Each QoS policy supports at most 10 queues. You can specify a valid bandwidth value for each queue.'."\n"
+ ."\n"
+ .'For example, a value of 1 specifies that the queue can consume 1 Mbit/s of the inter-region bandwidth.'."\n"
+ ."\n"
+ .'> The sum of the absolute bandwidth values of all the queues in a QoS policy cannot exceed the total bandwidth of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '1',
+ ],
+ 'Dscps' => [
+ 'description' => 'The Differentiated Services Code Point (DSCP) value that matches the current queue.'."\n"
+ ."\n"
+ .'Each QoS policy supports at most three queues. You can specify at most 60 DSCP values for each queue. Separate multiple DCSP values with commas (,).'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The Differentiated Services Code Point (DSCP) value that matches the current queue.'."\n"
+ ."\n"
+ .'Each QoS policy supports at most three queues. You can specify at most 60 DSCP values for each queue. Separate multiple DCSP values with commas (,).'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '5',
+ ],
+ 'required' => false,
+ 'maxItems' => 60,
+ ],
+ 'QosQueueDescription' => [
+ 'description' => 'The description of the current queue.'."\n"
+ ."\n"
+ .'Each QoS policy supports at most 10 queues. You can specify a description for each queue.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 11,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TrafficQosPolicyId' => [
+ 'description' => 'The ID of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'qos-eczzew0v1kzrb5****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '6DF9A765-BCD2-5C7E-8C32-C35C8A361A39',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'AssociationExist.TrafficQos',
+ 'errorMessage' => 'The traffic qos with the specified attachment already exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'The specified TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterAttachmentId',
+ 'errorMessage' => 'TransitRouterAttachmentId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParamSize.TrafficQosQueues',
+ 'errorMessage' => 'The queue size included in the traffic QoS policy exceeds the limit.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthGuaranteeModeMismatch',
+ 'errorMessage' => 'The BandwidthGuaranteeMode does not match the Bandwidth or RemainBandwidthPercent.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AttachmentBandwidthExceed',
+ 'errorMessage' => 'The entered bandwidth causes the total QoS guaranteed bandwidth to exceed the cross-region bandwidth allocation value.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthGuaranteeMode',
+ 'errorMessage' => 'The input bandwidth guarantee type is not valid.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.RemainBandwidthPercent',
+ 'errorMessage' => 'RemainBandwidthPercent is missing.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.Bandwidth',
+ 'errorMessage' => 'The parameter Bandwidth is mandatory.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RemainBandwidthPercent',
+ 'errorMessage' => 'The specified RemainBandwidthPercent is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Bandwidth',
+ 'errorMessage' => 'Bandwidth is illegal',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthPackageStatus',
+ 'errorMessage' => 'The status of the bandwidth package is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterAttachment',
+ 'errorMessage' => 'TransitRouterAttachmentId status is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterId',
+ 'errorMessage' => 'The parameter TransitrouterId is mandatory.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TransitRouterAttachmentId',
+ 'errorMessage' => 'The parameter TransitRouterAttachmentId is Missing.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.CDTServiceExpired',
+ 'errorMessage' => 'The CDT service is out of service.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.QosPolicyForLowLatencyLinkType',
+ 'errorMessage' => 'QoS Policy is not supported for Low Latency LinkType.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListCenInterRegionTrafficQosPolicies',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"TrafficQosPolicyId\\": \\"qos-eczzew0v1kzrb5****\\",\\n \\"RequestId\\": \\"6DF9A765-BCD2-5C7E-8C32-C35C8A361A39\\"\\n}","type":"json"}]',
+ 'title' => 'CreateCenInterRegionTrafficQosPolicy',
+ 'description' => '* Only inter-region connections created on Enterprise Edition transit routers support QoS policies.'."\n"
+ ."\n"
+ .'* Traffic scheduling applies only to outbound traffic on Enterprise Edition transit routers.'."\n"
+ ."\n"
+ .' For example, you create an inter-region connection between the China (Hangzhou) and China (Qingdao) regions, and create a QoS policy for the transit router in the China (Hangzhou) region. In this case, the QoS policy can ensure bandwidth for network traffic from the China (Hangzhou) region to the China (Qingdao) region. However, the QoS policy does not apply to network traffic from the China (Qingdao) region to the China (Hangzhou) region.'."\n"
+ ."\n"
+ .'* **CreateCenInterRegionTrafficQosPolicy** 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 **ListCenInterRegionTrafficQosPolicies** operation to query the status of the task.'."\n"
+ ."\n"
+ .' * If the QoS policy is in the **Creating** state, the QoS policy is being created. You can query the QoS policy but cannot perform other operations on the QoS policy.'."\n"
+ .' * If the QoS policy is in the **Active** state, the QoS policy is created.'."\n"
+ ."\n"
+ .'### [](#)Prerequisites'."\n"
+ ."\n"
+ .'Before you call the **CreateCenInterRegionTrafficQosPolicy** operation, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .'* An inter-region connection is created. For more information, see [CreateTransitRouterPeerAttachment](~~261363~~).'."\n"
+ .'* A traffic marking policy is created. For more information, see [CreateTrafficMarkingPolicy](~~419025~~).'."\n",
+ ],
+ 'DeleteCenInterRegionTrafficQosQueue' => [
+ 'summary' => 'Deletes a queue from 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' => '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 client 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' => '123e4567-e89b-12d3-a456-426****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'QosQueueId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the queue.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'qos-queue-nv2vfzqkewhk4t****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '6DF9A765-BCD2-5C7E-8C32-C35C8A361A39',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTrafficQosQueueId.NotFound',
+ 'errorMessage' => 'The specified TrafficQosQueueId is not found. ',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficQosPolicy',
+ 'errorMessage' => 'The status of TrafficQosPolicy is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficQosPolicyQueueId',
+ 'errorMessage' => 'The parameter TrafficQosPolicyQueueId is mandatory.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.CDTServiceExpired',
+ 'errorMessage' => 'The CDT service is out of service.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6DF9A765-BCD2-5C7E-8C32-C35C8A361A39\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteCenInterRegionTrafficQosQueueResponse>\\n <RequestId>6DF9A765-BCD2-5C7E-8C32-C35C8A361A39</RequestId>\\n</DeleteCenInterRegionTrafficQosQueueResponse>","errorExample":""}]',
+ 'title' => 'DeleteCenInterRegionTrafficQosQueue',
+ 'description' => '* You cannot delete the default queue.'."\n"
+ .'* **DeleteCenInterRegionTrafficQosQueue** 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 **ListCenInterRegionTrafficQosPolicies** operation to query the status of a queue. If a queue cannot be found, the queue is deleted.'."\n",
+ ],
+ 'DeleteCenInterRegionTrafficQosPolicy' => [
+ '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' => '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 client 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' => '123e4567-e89b-12d3-a456-426655****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run. Default value: false. 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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'qos-eczzew0v1kzrb5****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '6DF9A765-BCD2-5C7E-8C32-C35C8A361A39',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'AssociationExist.TransitQosQueueExist',
+ 'errorMessage' => 'The qos queue with the specified TrafficQosPolicyId exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.CDTServiceExpired',
+ 'errorMessage' => 'The CDT service is out of service.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'InvalidTransitQosId.NotFound',
+ 'errorMessage' => 'The specified TrafficQosPolicyId is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6DF9A765-BCD2-5C7E-8C32-C35C8A361A39\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteCenInterRegionTrafficQosPolicyResponse>\\n <RequestId>6DF9A765-BCD2-5C7E-8C32-C35C8A361A39</RequestId>\\n</DeleteCenInterRegionTrafficQosPolicyResponse>","errorExample":""}]',
+ 'title' => 'DeleteCenInterRegionTrafficQosPolicy',
+ 'description' => '* Before you delete a QoS policy, you must delete all queues in the QoS policy except the default queue. For more information, see [DeleteCenInterRegionTrafficQosQueue](~~419062~~).'."\n"
+ ."\n"
+ .'* **DeleteCenInterRegionTrafficQosPolicy** 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 **ListCenInterRegionTrafficQosPolicies** operation to query the status of a QoS policy.'."\n"
+ ."\n"
+ .' * If a QoS policy is in the **Deleting** state, the QoS policy is being deleted. You can query the QoS policy but cannot perform other operations.'."\n"
+ .' * If a QoS policy cannot be found, the QoS policy is deleted.'."\n",
+ ],
+ 'UpdateCenInterRegionTrafficQosQueueAttribute' => [
+ 'summary' => 'Modifies the name, description, inter-region bandwidth, and Differentiated Services Code Point (DSCP) value of a quality of service (QoS) queue.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72430',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnUX9TH2',
+ ],
+ ],
+ '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",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655****',
+ ],
+ ],
+ [
+ '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' => 'QosQueueId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The queue ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'qos-queue-nv2vfzqkewhk4t****',
+ ],
+ ],
+ [
+ 'name' => 'QosQueueName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the queue.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'QosQueueDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the queue.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ 'name' => 'RemainBandwidthPercent',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The percentage of bandwidth that can be allocated to the current queue.'."\n"
+ ."\n"
+ .'Enter a number. You do not need to enter a percent sign (%).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '1',
+ 'pattern' => '^\\d+$',
+ ],
+ ],
+ [
+ 'name' => 'Bandwidth',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The absolute bandwidth value that can be allocated to the current queue. Unit: Mbit/s.'."\n"
+ ."\n"
+ .'Enter a number. You do not need to enter a unit.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1',
+ ],
+ ],
+ [
+ 'name' => 'Dscps',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The differentiated services code point (DSCP) value used to match packets in the queue.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The DSCP value used to match packets in the queue. Valid values: **0** to **63**.'."\n"
+ ."\n"
+ .'You can enter up to 20 DSCP values at a time.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '5',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '6DF9A765-BCD2-5C7E-8C32-C35C8A361A39',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.TrafficQosPolicy',
+ 'errorMessage' => 'The status of TrafficQosPolicy is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidTrafficQosQueueId.NotFound',
+ 'errorMessage' => 'The instance of TrafficQosQueueId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.BandwidthGuaranteeModeMismatch',
+ 'errorMessage' => 'The BandwidthGuaranteeMode does not match the Bandwidth or RemainBandwidthPercent.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AttachmentBandwidthExceed',
+ 'errorMessage' => 'The entered bandwidth causes the total QoS guaranteed bandwidth to exceed the cross-region bandwidth allocation value.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Bandwidth',
+ 'errorMessage' => 'Bandwidth is illegal',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RemainBandwidthPercent',
+ 'errorMessage' => 'The specified RemainBandwidthPercent is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficQosPolicyQueueId',
+ 'errorMessage' => 'The parameter TrafficQosPolicyQueueId is mandatory.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListCenInterRegionTrafficQosQueues',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6DF9A765-BCD2-5C7E-8C32-C35C8A361A39\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateCenInterRegionTrafficQosQueueAttributeResponse>\\n <RequestId>6DF9A765-BCD2-5C7E-8C32-C35C8A361A39</RequestId>\\n</UpdateCenInterRegionTrafficQosQueueAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateCenInterRegionTrafficQosQueueAttribute',
+ ],
+ 'UpdateCenInterRegionTrafficQosPolicyAttribute' => [
+ 'summary' => 'Modifies the name and description of a quality of service (QoS) policy.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ '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 and cannot exceed 64 characters in length.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655****',
+ ],
+ ],
+ [
+ '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 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, the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'qos-eczzew0v1kzrb5****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the QoS policy.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the QoS policy.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The returned results.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '5B8465FF-E697-5D3D-AAD5-0B4EEADFDB27',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTrafficQosPolicyId.NotFound',
+ 'errorMessage' => 'The specified TrafficQosPolicyId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.TrafficQosPolicyId',
+ 'errorMessage' => 'The parameter TrafficQosPolicyId is mandatory.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.CDTServiceExpired',
+ 'errorMessage' => 'The CDT service is out of service.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5B8465FF-E697-5D3D-AAD5-0B4EEADFDB27\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateCenInterRegionTrafficQosPolicyAttributeResponse>\\n <RequestId>5B8465FF-E697-5D3D-AAD5-0B4EEADFDB27</RequestId>\\n</UpdateCenInterRegionTrafficQosPolicyAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateCenInterRegionTrafficQosPolicyAttribute',
+ ],
+ 'ListCenInterRegionTrafficQosPolicies' => [
+ 'summary' => 'Queries quality of service (QoS) policies.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72383',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnUX9TH2',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'tr-bp1rmwxnk221e3fas****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'tr-attach-r6g0m3epjehw57****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'qos-rnghap5gc8155x****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the QoS policy.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the QoS policy.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ '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' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no subsequent 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****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the query.'."\n"
+ ."\n"
+ .'* If **NextToken** was not returned in the previous query, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '113BFD47-63DF-5D9D-972C-033FB9C360CD',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'TrafficQosPolicies' => [
+ 'description' => 'A list of QoS policies.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the QoS policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TrafficQosPolicyName' => [
+ 'description' => 'The name of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'TrafficQosPolicyStatus' => [
+ 'description' => 'The status of the QoS policy.'."\n"
+ ."\n"
+ .'* **Creating**: The QoS policy is being created.'."\n"
+ .'* **Active**: The QoS policy is available.'."\n"
+ .'* **Modifying**: The policy is being modified.'."\n"
+ .'* **Deleting**: The QoS policy is being deleted.'."\n",
+ 'type' => 'string',
+ 'example' => 'Creating',
+ ],
+ 'TrafficQosPolicyId' => [
+ 'description' => 'The ID of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'qos-rnghap5gc8155x****',
+ ],
+ 'TrafficQosPolicyDescription' => [
+ 'description' => 'The description of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'BandwidthGuaranteeMode' => [
+ 'description' => 'The guaranteed bandwidth mode.'."\n"
+ ."\n"
+ .'* **byBandwidth**: allocates absolute bandwidth values to QoS queues.'."\n"
+ .'* **byBandwidthPercent**: assigns bandwidth percentages to QoS queues.'."\n",
+ 'type' => 'string',
+ 'example' => 'byBandwidthPercent',
+ ],
+ 'TrafficQosQueues' => [
+ 'description' => 'A list of queues.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the queue.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QosQueueName' => [
+ 'description' => 'The name of the queue.'."\n",
+ 'type' => 'string',
+ 'example' => 'namtest',
+ ],
+ 'RemainBandwidthPercent' => [
+ 'description' => 'If the QoS queues are assigned bandwidth percentages, this parameter indicates the percentage of bandwidth that is allocated to the queue.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'Bandwidth' => [
+ 'description' => 'If the QoS queues are assigned absolute bandwidth values, this parameter indicates the absolute bandwidth value that is allocated to the queue.'."\n",
+ 'type' => 'string',
+ 'example' => '1',
+ ],
+ 'QosQueueId' => [
+ 'description' => 'The queue ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'qos-queue-njcrmr9fiu1jii****',
+ ],
+ 'QosQueueDescription' => [
+ 'description' => 'The description of the queue.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'Dscps' => [
+ 'description' => 'The differentiated services code point (DSCP) value that is used to match packets.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The DSCP value that is used to match packets.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5',
+ ],
+ ],
+ 'EffectiveBandwidth' => [
+ 'description' => 'The actual bandwidth value of the current queue.'."\n",
+ 'type' => 'string',
+ 'example' => '1.35',
+ ],
+ ],
+ ],
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-2ze4ta4v32umj0rb***',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-q7ct7c06jpw***',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'MissingParam.TransitRouterIdOrTrafficQosPolicyId',
+ 'errorMessage' => 'Either TransitRouterId or TrafficQosPolicyId must be specified. ',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"113BFD47-63DF-5D9D-972C-033FB9C360CD\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"TrafficQosPolicies\\": [\\n {\\n \\"TrafficQosPolicyName\\": \\"nametest\\",\\n \\"TrafficQosPolicyStatus\\": \\"Creating\\",\\n \\"TrafficQosPolicyId\\": \\"qos-rnghap5gc8155x****\\",\\n \\"TrafficQosPolicyDescription\\": \\"desctest\\",\\n \\"BandwidthGuaranteeMode\\": \\"byBandwidthPercent\\",\\n \\"TrafficQosQueues\\": [\\n {\\n \\"QosQueueName\\": \\"namtest\\",\\n \\"RemainBandwidthPercent\\": 1,\\n \\"Bandwidth\\": \\"1\\",\\n \\"QosQueueId\\": \\"qos-queue-njcrmr9fiu1jii****\\",\\n \\"QosQueueDescription\\": \\"desctest\\",\\n \\"Dscps\\": [\\n 5\\n ],\\n \\"EffectiveBandwidth\\": \\"1.35\\"\\n }\\n ],\\n \\"TransitRouterId\\": \\"tr-2ze4ta4v32umj0rb***\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-q7ct7c06jpw***\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListCenInterRegionTrafficQosPoliciesResponse>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>113BFD47-63DF-5D9D-972C-033FB9C360CD</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>20</MaxResults>\\n <TrafficQosPolicies>\\n <TrafficQosPolicyName>nametest</TrafficQosPolicyName>\\n <TrafficQosPolicyStatus>Creating</TrafficQosPolicyStatus>\\n <TrafficQosPolicyId>qos-rnghap5gc8155x****</TrafficQosPolicyId>\\n <TrafficQosPolicyDescription>desctest</TrafficQosPolicyDescription>\\n <TrafficQosQueues>\\n <QosQueueName>namtest</QosQueueName>\\n <RemainBandwidthPercent>1</RemainBandwidthPercent>\\n <QosQueueId>qos-queue-njcrmr9fiu1jii****</QosQueueId>\\n <QosQueueDescription>desctest</QosQueueDescription>\\n <Dscps>5</Dscps>\\n </TrafficQosQueues>\\n </TrafficQosPolicies>\\n</ListCenInterRegionTrafficQosPoliciesResponse>","errorExample":""}]',
+ 'title' => 'ListCenInterRegionTrafficQosPolicies',
+ 'description' => 'Before you call the **ListCenInterRegionTrafficQosPolicies** operation, take note of the following information:'."\n"
+ ."\n"
+ .'* You must specify at least one of the **TransitRouterId** and **TrafficQosPolicyId** parameters.'."\n"
+ .'* If you do not specify a QoS policy ID (**TrafficQosPolicyId**), the system returns information based on the values of the **TransitRouterId**, **TransitRouterAttachmentId**, **TrafficQosPolicyName**, and **TrafficQosPolicyDescription** parameters. The information about the queues in the QoS policies is not returned. In this case, the **TrafficQosQueues** parameter is not included in the response.'."\n"
+ .'* If you specify a QoS policy ID (**TrafficQosPolicyId**), the system returns the information about the QoS policy and queues in the QoS policy. In this case, the **TrafficQosQueues** parameter is included in the response. If the value of the **TrafficQosQueues** parameter is an empty string, it indicates that the QoS policy contains only the default queue.'."\n"
+ .'* Make sure that all the request parameters are valid. If a request parameter is invalid, a request ID is returned but the information about the QoS policy is not returned.'."\n",
+ ],
+ 'ListCenInterRegionTrafficQosQueues' => [
+ 'summary' => 'Queries the information about quality of service (QoS) queues.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '160569',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnUX9TH2',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1rmwxnk221e3fas****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the inter-region connection.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-a6p8voaodog5c0****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the QoS policy.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'qos-rnghap5gc8155x****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosQueueId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the queue.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'qos-queue-siakjb2nn9gz5z****',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosQueueName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the QoS queue.'."\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' => 'qosQueueName',
+ ],
+ ],
+ [
+ 'name' => 'TrafficQosQueueDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the QoS queue.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'qosQueueDescription',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **20**.',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ '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"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '2ca1ed1573cb****',
+ ],
+ ],
+ [
+ 'name' => 'EffectiveBandwidthFilter',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The filter works based on the actual bandwidth. Enter a positive integer. Unit: Mbit/s.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Gte' => [
+ 'description' => 'The actual bandwidth is equal to or larger than the specified value.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '50',
+ ],
+ 'Lte' => [
+ 'description' => 'The actual bandwidth is equal to or smaller than the specified value.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\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 **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n",
+ 'type' => 'string',
+ 'example' => '0151fa6aa1ed****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.',
+ 'type' => 'string',
+ 'example' => '1D1E15D2-416D-54F3-BDD9-BC27DE4C6352',
+ ],
+ 'TrafficQosQueues' => [
+ 'description' => 'The information about the QoS queue.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the QoS queue.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the inter-region connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-nzrcv25d7ezt23****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-p0wwagjv6fvxt4b7y****',
+ ],
+ 'TrafficQosQueueName' => [
+ 'description' => 'The name of the QoS queue.'."\n",
+ 'type' => 'string',
+ 'example' => 'qosQueueName',
+ ],
+ 'RemainBandwidthPercent' => [
+ 'description' => 'The percentage of bandwidth that can be allocated to the current queue.'."\n"
+ ."\n"
+ .'A value of **1** indicates that the QoS queue can consume at most 1% of the inter-region bandwidth.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'Bandwidth' => [
+ 'description' => 'The absolute bandwidth value that can be allocated to the current queue.'."\n"
+ ."\n"
+ .'A value of **1** indicates that the QoS queue can consume at most 1 Mbit/s of inter-region bandwidth.'."\n",
+ 'type' => 'string',
+ 'example' => '1',
+ ],
+ 'EffectiveBandwidth' => [
+ 'description' => 'The actual bandwidth of the current queue.'."\n",
+ 'type' => 'string',
+ 'example' => '1.35',
+ ],
+ 'TrafficQosPolicyId' => [
+ 'description' => 'The ID of the QoS policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'qos-fv2qq9yqrsjowp****',
+ ],
+ 'TrafficQosQueueId' => [
+ 'description' => 'The ID of the QoS queue.'."\n",
+ 'type' => 'string',
+ 'example' => 'qos-queue-siakjb2nn9gz5z****'."\n",
+ ],
+ 'TrafficQosQueueDescription' => [
+ 'description' => 'The description of the QoS queue.'."\n",
+ 'type' => 'string',
+ 'example' => 'qosQueueDescription'."\n",
+ ],
+ 'Dscps' => [
+ 'description' => 'The Differentiated Services Code Point (DSCP) value that matches the current QoS queue.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The DSCP value that matches the current QoS queue.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ ],
+ 'Status' => [
+ 'description' => 'The status of the QoS queue. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**'."\n"
+ .'* **Active**'."\n"
+ .'* **Deleting**'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'MissingParam.TransitRouterIdOrTrafficQosPolicyIdOrTrafficQosQueueId',
+ 'errorMessage' => 'Either TransitRouterId or TrafficQosPolicyId or TrafficQosQueueId must be specified.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is invalid. ',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.EffectiveBandwidthFilter',
+ 'errorMessage' => 'The input bandwidth filter value is not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"0151fa6aa1ed****\\",\\n \\"RequestId\\": \\"1D1E15D2-416D-54F3-BDD9-BC27DE4C6352\\",\\n \\"TrafficQosQueues\\": [\\n {\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-nzrcv25d7ezt23****\\",\\n \\"TransitRouterId\\": \\"tr-p0wwagjv6fvxt4b7y****\\",\\n \\"TrafficQosQueueName\\": \\"qosQueueName\\",\\n \\"RemainBandwidthPercent\\": 1,\\n \\"Bandwidth\\": \\"1\\",\\n \\"EffectiveBandwidth\\": \\"1.35\\",\\n \\"TrafficQosPolicyId\\": \\"qos-fv2qq9yqrsjowp****\\",\\n \\"TrafficQosQueueId\\": \\"qos-queue-siakjb2nn9gz5z****\\\\n\\",\\n \\"TrafficQosQueueDescription\\": \\"qosQueueDescription\\\\n\\",\\n \\"Dscps\\": [\\n 1\\n ],\\n \\"Status\\": \\"Active\\"\\n }\\n ]\\n}","type":"json"}]',
+ 'title' => 'ListCenInterRegionTrafficQosQueues',
+ 'description' => 'You must specify at least one of the **TransitRouterId**, **TrafficQosPolicyId**, and **TrafficQosQueueId** parameters.'."\n"
+ ."\n"
+ .'Make sure that all the request parameters are valid. If a request parameter is invalid, a **request ID** is returned but the QoS queue information is not returned.'."\n",
+ ],
+ 'DeleteRouteServiceInCen' => [
+ 'summary' => 'Deletes the configuration of a cloud service connected to a Basic Edition transit router.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'Host',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IP addresses or CIDR blocks of the cloud service.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '100.118.28.0/24',
+ ],
+ ],
+ [
+ 'name' => 'HostRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the cloud service.'."\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' => 'AccessRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the cloud service is accessed.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'HostVpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the virtual private cloud (VPC) that is associated with the cloud service.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp1t36rn9l53iwbsf****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '2315DEB7-5E92-423A-91F7-4C1EC9AD97C3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidOperation.CloudRouteNumberInvalid',
+ 'errorMessage' => 'Cloud route number is invalid',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'InvalidOperation.CloudRouteStatusNotAllow',
+ 'errorMessage' => 'Operation is prohibited because status of cloud route is invalid.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2315DEB7-5E92-423A-91F7-4C1EC9AD97C3\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteRouteServiceInCenResponse>\\n <RequestId>2315DEB7-5E92-423A-91F7-4C1EC9AD97C3</RequestId>\\n</DeleteRouteServiceInCenResponse>","errorExample":""}]',
+ 'title' => 'DeleteRouteServiceInCen',
+ 'description' => '**DeleteRouteServiceInCen** is an asynchronous operation. After a request is sent, the system returns a **request ID** and runs the task in the background. If the request parameters are invalid, the system returns a request ID, but the cloud service configuration is not deleted. You can call **DescribeRouteServicesInCen** to query the status of the task.'."\n"
+ ."\n"
+ .'* If a cloud service is in the **Deleting** state, the cloud service configuration is being deleted. In this case, you can only query the cloud service configuration and cannot perform other operations.'."\n"
+ .'* If the specified cloud service configuration cannot be found, the cloud service configuration is deleted.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeRouteServicesInCen' => [
+ 'summary' => 'Queries the cloud services that are configured on a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ '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' => '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' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-pfa6ugf3xl0qsd****',
+ ],
+ ],
+ [
+ 'name' => 'Host',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The service address of the cloud service.'."\n"
+ ."\n"
+ .'You can enter a domain name, an IP address, or a CIDR block.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '100.118.28.0/24',
+ ],
+ ],
+ [
+ 'name' => 'HostRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the cloud service.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'AccessRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the cloud service is accessed.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'HostVpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC associated with the cloud service.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ ],
+ ],
+ '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' => '196C99CA-6997-5951-9721-AE89720DF856',
+ ],
+ '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' => '2',
+ ],
+ 'RouteServiceEntries' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'RouteServiceEntry' => [
+ 'description' => 'The information about the cloud services.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The status of the cloud service. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**'."\n"
+ .'* **Active**'."\n"
+ .'* **Deleting**'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'Host' => [
+ 'description' => 'The service address of the cloud service.'."\n",
+ 'type' => 'string',
+ 'example' => '100.118.28.0/24',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the cloud service.'."\n",
+ 'type' => 'string',
+ 'example' => 'descname',
+ ],
+ 'HostVpcId' => [
+ 'description' => 'The ID of the VPC associated with the cloud service.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-pfa6ugf3xl0qsd****',
+ ],
+ 'AccessRegionId' => [
+ 'description' => 'The ID of the region where the cloud service is accessed.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'HostRegionId' => [
+ 'description' => 'The region ID of the cloud service.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'Cidrs' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Cidr' => [
+ 'description' => 'The service addresses of the cloud service.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The service address of the cloud service.'."\n"
+ ."\n"
+ .'* If **Host** is set to an IP address or a CIDR block, the value of **Cidrs** is an IP address or a CIDR block.'."\n"
+ .'* If **Host** is set to a domain name, the value of **Cidrs** is the IP address to which the domain name is resolved.'."\n",
+ 'type' => 'string',
+ 'example' => '100.118.28.0/24',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"196C99CA-6997-5951-9721-AE89720DF856\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"RouteServiceEntries\\": {\\n \\"RouteServiceEntry\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"Host\\": \\"100.118.28.0/24\\",\\n \\"Description\\": \\"descname\\",\\n \\"HostVpcId\\": \\"vpc-bp1h8vbrbcgohcju5****\\",\\n \\"CenId\\": \\"cen-pfa6ugf3xl0qsd****\\",\\n \\"AccessRegionId\\": \\"cn-hangzhou\\",\\n \\"HostRegionId\\": \\"cn-hangzhou\\",\\n \\"Cidrs\\": {\\n \\"Cidr\\": [\\n \\"100.118.28.0/24\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeRouteServicesInCenResponse>\\n<TotalCount>2</TotalCount>\\n<RequestId>196C99CA-6997-5951-9721-AE89720DF856</RequestId>\\n<PageSize>10</PageSize>\\n<PageNumber>1</PageNumber>\\n<RouteServiceEntries>\\n <RouteServiceEntry>\\n <Status>Active</Status>\\n <HostRegionId>cn-hangzhou</HostRegionId>\\n <CenId>cen-pfa6ugf3xl0qsd****</CenId>\\n <Host>100.118.28.0/24</Host>\\n <AccessRegionId>ccn-cn-shanghai</AccessRegionId>\\n <HostVpcId>vpc-bp1h8vbrbcgohcju5****</HostVpcId>\\n <Cidrs>\\n <Cidr>100.118.28.0/24</Cidr>\\n </Cidrs>\\n </RouteServiceEntry>\\n <RouteServiceEntry>\\n <Status>Active</Status>\\n <HostRegionId>cn-hangzhou</HostRegionId>\\n <CenId>cen-pfa6ugf3xl0qsd****</CenId>\\n <Host>100.118.28.0/24</Host>\\n <AccessRegionId>cn-hangzhou</AccessRegionId>\\n <HostVpcId>vpc-bp1h8vbrbcgohcju5****</HostVpcId>\\n <Cidrs>\\n <Cidr>100.118.28.0/24</Cidr>\\n </Cidrs>\\n </RouteServiceEntry>\\n</RouteServiceEntries>\\n</DescribeRouteServicesInCenResponse>","errorExample":""}]',
+ 'title' => 'DescribeRouteServicesInCen',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ResolveAndRouteServiceInCen' => [
+ 'summary' => 'Connects an on-premises network to a cloud service.',
+ '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, **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****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-ckwa2hhmuislse****',
+ ],
+ ],
+ [
+ 'name' => 'Host',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IP addresses or CIDR blocks of the cloud service.'."\n"
+ ."\n"
+ .'> In most cases, multiple IP addresses or CIDR blocks are assigned to a cloud service. We recommend that you call this operation multiple times to add all IP addresses and CIDR blocks of the cloud service.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '100.118.28.0/24',
+ ],
+ ],
+ [
+ 'name' => 'HostRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region in which the cloud service is deployed.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'HostVpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC that is associated with the cloud service.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-o6woh5s494zueq40v****',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the cloud service.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'descname',
+ ],
+ ],
+ [
+ 'name' => 'AccessRegionIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the regions where the cloud service is accessed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the region where the cloud service is accessed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ 'required' => true,
+ 'example' => 'cn-hangzhou',
+ 'maxItems' => 32,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'C0245BEF-52AC-44A8-A776-EF96FD26A5CA',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ParameterIllegal.Ipv6CloudRouteCidrNotAllow',
+ 'errorMessage' => 'Parameter Host not in valid ipv6 cidr.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.AccessRegionId',
+ 'errorMessage' => 'Parameter Access RegionId illegal.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.CloudRouteHost',
+ 'errorMessage' => 'Parameter Host is not valid.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ClouteRouteNotSupportIpv6',
+ 'errorMessage' => 'Parameter Host not support IPv6',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.ClouteRouteCidrNotAllow',
+ 'errorMessage' => 'Parameter Host not in 100.64.0.0/10',
+ ],
+ [
+ 'errorCode' => 'CloudRoute.Exist',
+ 'errorMessage' => 'The Specified Cloud Route already Exists',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.Host',
+ 'errorMessage' => ' Parameter Host does not support domain.',
+ ],
+ [
+ 'errorCode' => 'CloudRoute.Conflict',
+ 'errorMessage' => 'The Specified Cloud Route Conflicts.',
+ ],
+ [
+ 'errorCode' => 'CloudRoute.VpcNotAttached',
+ 'errorMessage' => 'The Specified Vpc instance is not attached to CEN. ',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.AccessRegionIdNoCCN',
+ 'errorMessage' => 'Parameter Access RegionId illegal.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The resource is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.InstanceNotSupportIPv6Route',
+ 'errorMessage' => 'IPv6 routing has not been enabled for the CEN instance.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C0245BEF-52AC-44A8-A776-EF96FD26A5CA\\"\\n}","errorExample":""},{"type":"xml","example":"<ResolveAndRouteServiceInCenResponse>\\r\\n <RequestId>C0245BEF-52AC-44A8-A776-EF96FD26A5CA</RequestId>\\r\\n</ResolveAndRouteServiceInCenResponse>","errorExample":""}]',
+ 'title' => 'ResolveAndRouteServiceInCen',
+ 'description' => 'Cloud services refer to Alibaba Cloud services that use the 100.64.0.0/10 CIDR block to provide services. These cloud services include Object Storage Service (OSS), Simple Log Service (SLS), and Data Transmission Service (DTS). If your on-premises network needs to access a cloud service, you must attach the virtual border router (VBR) or Cloud Connect Network (CCN) instance that is connected to your on-premises network to a Cloud Enterprise Network (CEN) instance. In addition, you must attach a virtual private cloud (VPC) that is deployed in the same region as the cloud service to the CEN instance. This way, your on-premises network can connect to the VPC that is deployed in the same region as the cloud service and access the cloud service through the VPC.'."\n"
+ ."\n"
+ .'* This operation is supported only by Basic Edition transit routers. An on-premises network associated with a VBR can use CEN to access only a cloud service that is deployed in the same region.'."\n"
+ ."\n"
+ .' For example, if cloud services are deployed in the China (Beijing) region, only on-premises networks connected to VBRs in the China (Beijing) region can access the cloud services.'."\n"
+ ."\n"
+ .'* **ResolveAndRouteServiceInCen** 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 **DescribeRouteServicesInCen** to query the status of a cloud service.'."\n"
+ ."\n"
+ .' * If the cloud service is in the **Creating** state, the connection to the cloud service is being created. In this case, you can query the cloud service but cannot perform other operations.'."\n"
+ .' * If the cloud service is in the **Active** state, the connection to the cloud service is created.'."\n"
+ .' * If the cloud service is in the **Failed** state, the connection to the cloud service failed.'."\n"
+ ."\n"
+ .'### [](#)Prerequisites'."\n"
+ ."\n"
+ .'Before you call this operation, make sure that the following conditions are met:'."\n"
+ ."\n"
+ .'* The VBR or CCN instance to which your on-premises network is connected is attached to a CEN instance.'."\n"
+ .'* A VPC that is deployed in the same region as the cloud service is attached to the CEN instance. For more information, see [AttachCenChildInstance](~~65902~~).'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenPrivateZoneRoutes' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ '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. Default value: **10**. Valid values: **1** to **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ 'default' => '10',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc**** ',
+ ],
+ ],
+ [
+ 'name' => 'AccessRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where PrivateZone is accessed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'HostRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where PrivateZone is deployed.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '461EC1B5-04A8-4706-8764-8F5BCEF48A6F',
+ ],
+ 'PrivateZoneDnsServers' => [
+ 'description' => 'The IP address of the DNS server used by PrivateZone.'."\n",
+ 'type' => 'string',
+ 'example' => '100.100.XX.XX/32,100.100.XX.XX/32',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-7qthudw0ll6jmc**** ',
+ ],
+ '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' => '2',
+ ],
+ 'PrivateZoneInfos' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'PrivateZoneInfo' => [
+ 'description' => 'The detailed configuration of PrivateZone.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The status of PrivateZone. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**: being created'."\n"
+ .'* **Active**: available'."\n"
+ .'* **Deleting**: being deleted'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'AccessRegionId' => [
+ 'description' => 'The ID of the region where PrivateZone is accessed.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'HostRegionId' => [
+ 'description' => 'The ID of the region where PrivateZone is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'HostVpcId' => [
+ 'description' => 'The ID of the VPC that is associated with PrivateZone.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp18sth14qii3pnvo****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"461EC1B5-04A8-4706-8764-8F5BCEF48A6F\\",\\n \\"PrivateZoneDnsServers\\": \\"100.100.XX.XX/32,100.100.XX.XX/32\\",\\n \\"CenId\\": \\"cen-7qthudw0ll6jmc****\\\\t\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 2,\\n \\"PrivateZoneInfos\\": {\\n \\"PrivateZoneInfo\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"AccessRegionId\\": \\"cn-hangzhou\\",\\n \\"HostRegionId\\": \\"cn-hangzhou\\",\\n \\"HostVpcId\\": \\"vpc-bp18sth14qii3pnvo****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenPrivateZoneRoutesResponse>\\r\\n\\t<PrivateZoneInfos>\\r\\n\\t\\t<PrivateZoneInfo>\\r\\n\\t\\t\\t<Status>Active</Status>\\r\\n\\t\\t\\t<HostVpcId>vpc-bp18sth14qii3pnvo****</HostVpcId>\\r\\n\\t\\t\\t<AccessRegionId>ccn-cn-shanghai</AccessRegionId>\\r\\n\\t\\t\\t<HostRegionId>cn-hangzhou</HostRegionId>\\r\\n\\t\\t</PrivateZoneInfo>\\r\\n\\t\\t<PrivateZoneInfo>\\r\\n\\t\\t\\t<Status>Active</Status>\\r\\n\\t\\t\\t<HostVpcId>vpc-bp18sth14qii3pnvo****</HostVpcId>\\r\\n\\t\\t\\t<AccessRegionId>cn-hangzhou</AccessRegionId>\\r\\n\\t\\t\\t<HostRegionId>cn-hangzhou</HostRegionId>\\r\\n\\t\\t</PrivateZoneInfo>\\r\\n\\t</PrivateZoneInfos>\\r\\n\\t<PageNumber>1</PageNumber>\\r\\n\\t<TotalCount>2</TotalCount>\\r\\n\\t<PageSize>10</PageSize>\\r\\n\\t<PrivateZoneDnsServers>100.100.XX.XX/32,100.100.XX.XX/32</PrivateZoneDnsServers>\\r\\n\\t<RequestId>461EC1B5-04A8-4706-8764-8F5BCEF48A6F</RequestId>\\r\\n</DescribeCenPrivateZoneRoutesResponse>\\t","errorExample":""}]',
+ 'title' => 'DescribeCenPrivateZoneRoutes',
+ 'summary' => 'Queries the connections to PrivateZone.',
+ 'extraInfo' => ' ',
+ ],
+ 'UnroutePrivateZoneInCenToVpc' => [
+ 'summary' => 'Disables access to PrivateZone.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'AccessRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'C0245BEF-52AC-44A8-A776-EF96FD26A5CA',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'InvalidOperation.PrivatezoneRouteExisted',
+ 'errorMessage' => 'Privatezone routes already existed.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C0245BEF-52AC-44A8-A776-EF96FD26A5CA\\"\\n}","errorExample":""},{"type":"xml","example":"<UnroutePrivateZoneInCenToVpcResponse>\\r\\n <RequestId>C0245BEF-52AC-44A8-A776-EF96FD26A5CA</RequestId>\\r\\n</UnroutePrivateZoneInCenToVpcResponse>","errorExample":""}]',
+ 'title' => 'UnroutePrivateZoneInCenToVpc',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'RoutePrivateZoneInCenToVpc' => [
+ 'summary' => 'Configures PrivateZone.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'AccessRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where PrivateZone is accessed.'."\n"
+ ."\n"
+ .'This region refers to the region in which PrivateZone is accessed by clients.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'HostRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where PrivateZone is deployed.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'HostVpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC that is associated with PrivateZone.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vpc-bp1h8vbrbcgohcju5****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'C0245BEF-52AC-44A8-A776-EF96FD26A5CA ',
+ ],
+ ],
+ 'description' => '',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationUnsupported.CrossRegionNotSupport',
+ 'errorMessage' => 'Operation Failed. Host region Id is not equal to access region Id, VPC or VBR not support cross region privatezone service.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.PrivatezoneServiceNotAuthorize',
+ 'errorMessage' => 'Privatezone service not to grant authorization.',
+ ],
+ [
+ 'errorCode' => 'ParameterIllegal.AccessRegionIdNoCCN ',
+ 'errorMessage' => 'Parameter Access RegionId illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'InvalidOperation.PvtzNotAssociatedWithVpc',
+ 'errorMessage' => 'Privatezone not associated with the specified vpc.',
+ ],
+ ],
+ 409 => [
+ [
+ 'errorCode' => 'InvalidOperation.PrivatezoneRouteExisted',
+ 'errorMessage' => 'Privatezone routes already existed.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.VpcNotAttachedToCen',
+ 'errorMessage' => 'Vpc not attached to cen.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.UnmatchRouteInVpcRegion',
+ 'errorMessage' => 'Operation Failed.Unmatch route in vpc region.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C0245BEF-52AC-44A8-A776-EF96FD26A5CA\\"\\n}","errorExample":""},{"type":"xml","example":"<RoutePrivateZoneInCenToVpcResponse>\\n <RequestId>C0245BEF-52AC-44A8-A776-EF96FD26A5CA\\t</RequestId>\\n</RoutePrivateZoneInCenToVpcResponse>","errorExample":""}]',
+ 'title' => 'RoutePrivateZoneInCenToVpc',
+ 'description' => 'Alibaba Cloud DNS PrivateZone (PrivateZone) is an Alibaba Cloud private domain name resolution and management service based on Virtual Private Cloud (VPC). After you attach virtual border routers (VBRs) and Cloud Connect Network (CCN) instances to a Cloud Enterprise Network (CEN) instance, you can enable the on-premises networks connected to the VBRs and CCN instances to access PrivateZone through the CEN instance. '."\n"
+ ."\n"
+ .'#### Usage notes'."\n"
+ ."\n"
+ .'- The on-premises networks connected to VBRs or CCN instances must be deployed in the same region as the PrivateZone service. For example, if the PrivateZone service is deployed in the China (Beijing) region, only on-premises networks connected to VBRs or CCN instances in the China (Beijing) region can access the PrivateZone service. '."\n"
+ .'- **RoutePrivateZoneInCenToVpc** is an asynchronous operation. After you send a request, the **request ID** is returned but the operation is still being performed in the system background. You can call **DescribeCenPrivateZoneRoutes** to query the status of PrivateZone. '."\n"
+ .' - If PrivateZone is in the **Creating** state, access to PrivateZone is being configured. In this case, you can query PrivateZone configurations but cannot perform other operations. '."\n"
+ .' - If PrivateZone is in the **Active** state, access to PrivateZone is enabled. '."\n"
+ .' - If PrivateZone is in the **Failed** state, configurations of access to PrivateZone failed. '."\n"
+ ."\n"
+ .'#### Prerequisites'."\n"
+ .'Before you call **RoutePrivateZoneInCenToVpc**, make sure that the following conditions are met:'."\n"
+ ."\n"
+ .'- PrivateZone is deployed. For more information, see [PrivateZone quick start](~~64627~~).'."\n"
+ .'- The following network instances are attached to the same CEN instance: the VPC that is associated with the PrivateZone service, and the VBR and CCN instance that want to access the PrivateZone service. For more information, see [AttachCenChildInstance](~~468684~~). '."\n"
+ .'- If your on-premises network uses a CCN instance to connect to Alibaba Cloud and the account that owns the CCN instance is different from the account that owns the VPC or CEN instance, you must grant the CCN instance required permissions. For more information, see [Grant permissions to CCN](~~181654~~).',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateTransitRouterMulticastDomain' => [
+ 'summary' => 'Creates a multicast domain. A multicast domain is a multicast network in a region. Only resources in the same multicast domain can transmit and receive multicast packets.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '129145',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnI6X1AL',
+ ],
+ ],
+ '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.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-4266****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-a7syd349kne38g****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-p0wr9p28r92d598y6****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the multicast domain.'."\n"
+ ."\n"
+ .'The name must be 1 to 128 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the multicast domain.'."\n"
+ ."\n"
+ .'The description must be 1 to 256 characters in length, and cannot start with http:// or https://. You can also leave this parameter empty.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique 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' => 20,
+ ],
+ ],
+ [
+ 'name' => 'Options',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'Multicast domain feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Igmpv2Support' => [
+ 'description' => 'Indicates whether the IGMP feature is enabled for the multicast domain. Once enabled, hosts can dynamically join or leave multicast groups by using IGMP protocol. Valid values:'."\n"
+ ."\n"
+ .'* **enable**: enables IGMP.'."\n"
+ .'* **disable**(default): disables IGMP.'."\n"
+ ."\n"
+ .'> * The IGMP feature is in beta testing. To use it, contact your account manager.'."\n"
+ .'> * If you select this option, you cannot disable IPv6 after the VBR is created.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'enable',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse<String>',
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterMulticastDomainId' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-mcast-domain-40cwj0rgzgdtam****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '94E19C6F-206F-5223-9A63-64B85851BC04',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterId.NotFound',
+ 'errorMessage' => 'The specified TransitRouterId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterId',
+ 'errorMessage' => 'The specified TransitRouterId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.RegionId',
+ 'errorMessage' => 'The specified RegionId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'The specified CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.TransitRouterNotExist',
+ 'errorMessage' => 'Operation is invalid because the transit router not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.CENInstanceStatus',
+ 'errorMessage' => 'The CEN instance is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterType',
+ 'errorMessage' => 'The specified TransitRouterType does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ServiceMode',
+ 'errorMessage' => 'The specified ServiceMode does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.TransitRouterSupportMulticast',
+ 'errorMessage' => 'The specified TransitRouterSupportMulticast does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.RegionId',
+ 'errorMessage' => 'The specified RegionId does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Cen',
+ 'errorMessage' => 'The status of Cen is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.MulticastDomain',
+ 'errorMessage' => 'The MulticastDomain quota is exceeded.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Igmpv2Support',
+ 'errorMessage' => 'The specified Igmpv2Support is illegal. Valid values are [enable, disable].',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.Igmpv2Support',
+ 'errorMessage' => 'The current UID does not allow the creation of a igmpv2 multicast domain. Please submit a ticket.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"TransitRouterMulticastDomainId\\": \\"tr-mcast-domain-40cwj0rgzgdtam****\\",\\n \\"RequestId\\": \\"94E19C6F-206F-5223-9A63-64B85851BC04\\"\\n}","type":"json"}]',
+ 'title' => 'CreateTransitRouterMulticastDomain',
+ 'description' => 'Before you call this operation, read the following rules:'."\n"
+ ."\n"
+ .'* Make sure that an Enterprise Edition transit router is deployed in the region where you want to create the multicast domain, and the multicast feature is enabled for the Enterprise Edition transit router. For more information, see [CreateTransitRouter](~~261169~~).'."\n"
+ ."\n"
+ .' If an Enterprise Edition transit router was created before you apply for multicast resources, the transit router does not support multicast. You can delete the transit router and create a new one. For more information about how to delete an Enterprise Edition transit router, see [DeleteTransitRouter](~~261218~~).'."\n"
+ ."\n"
+ .'* When you call **CreateTransitRouterMulticastDomain**, if you set **CenId** and **RegionId**, you do not need to set **TransitRouterId**. If you set **TransitRouterId**, you do not need to set **CenId** or **RegionId**.'."\n",
+ ],
+ 'DeleteTransitRouterMulticastDomain' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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 the value is unique among different requests. The client token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-4266****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-mcast-domain-40cwj0rgzgdtam****',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '40194E53-2484-5831-BB53-E11D123C1A32',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.MulticastDomain',
+ 'errorMessage' => 'The status of MulticastDomain is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Cen',
+ 'errorMessage' => 'The status of Cen is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouter',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainAssociationExist',
+ 'errorMessage' => 'Operation is invalid because multicast domain associations exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastGroupExist',
+ 'errorMessage' => 'Operation is invalid because multicast groups exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainInGroup',
+ 'errorMessage' => 'Operation is invalid because multicast domain has registered as multicast group member.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"40194E53-2484-5831-BB53-E11D123C1A32\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteTransitRouterMulticastDomainResponse>\\n <RequestId>40194E53-2484-5831-BB53-E11D123C1A32</RequestId>\\n</DeleteTransitRouterMulticastDomainResponse>","errorExample":""}]',
+ 'title' => 'DeleteTransitRouterMulticastDomain',
+ 'summary' => 'Deletes a multicast domain.',
+ 'description' => 'Before you delete a multicast domain, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .'* The multicast domain is disassociated from all vSwitches. For more information, see [DisassociateTransitRouterMulticastDomain](~~429774~~).'."\n"
+ .'* All multicast sources and members are removed from the multicast domain. For more information, see [DeregisterTransitRouterMulticastGroupSources](~~429776~~) and [DeregisterTransitRouterMulticastGroupMembers](~~429779~~).'."\n"
+ .'* The multicast domain is not added to other multicast domains as a multicast member. If the multicast domain is added to another multicast domain as a multicast member, you must remove the multicast domain from the other multicast domain. For more information, see [DeregisterTransitRouterMulticastGroupMembers](~~429779~~).'."\n"
+ .'* Make sure all the request parameters are valid. If a request parameter is invalid, a request ID is returned after you call the operation, but the multicast domain is not deleted.'."\n",
+ ],
+ 'ModifyTransitRouterMulticastDomain' => [
+ 'summary' => 'You can call the ModifyTransitRouterMulticastDomain operation to modify the name, description, and feature options of a multicast domain.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '129151',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnI6X1AL',
+ ],
+ ],
+ '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-4266****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'tr-mcast-domain-40cwj0rgzgdtam****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the multicast domain.'."\n"
+ ."\n"
+ .'The name can be empty or 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nametest',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new description of the multicast domain.'."\n"
+ ."\n"
+ .'This parameter is optional. If you enter a description, it must be 1 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'desctest',
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Options',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'Multicast domain feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Igmpv2Support' => [
+ 'description' => 'Indicates whether the IGMP feature is enabled for the multicast domain. Once enabled, hosts can dynamically join or leave multicast groups by using the IGMP protocol. Default value: **enable**.'."\n"
+ ."\n"
+ .'> * The IGMP feature is in beta testing. To use it, contact your account manager.'."\n"
+ .'> * The IGMP feature cannot be disabled after it is enabled.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'enable',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '26273D23-5CB0-5EFC-AF5F-78A5448084C9',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Illegal.Name',
+ 'errorMessage' => 'Name is illegal.',
+ ],
+ [
+ 'errorCode' => 'Illegal.Description',
+ 'errorMessage' => 'Description is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidMulticastDomainId.NotFound',
+ 'errorMessage' => 'The specified MulticastDomainId is not found.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Igmpv2Support',
+ 'errorMessage' => 'The specified Igmpv2Support is illegal. Valid values are [enable, disable].',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.Igmpv2Support',
+ 'errorMessage' => 'The current UID does not allow the creation of a igmpv2 multicast domain. Please submit a ticket.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.NotAllowedDisableIgmpv2Support',
+ 'errorMessage' => 'The operation is not permitted because Igmpv2Support is not currently available to be disabled.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"26273D23-5CB0-5EFC-AF5F-78A5448084C9\\"\\n}","errorExample":""},{"type":"xml","example":"<ModifyTransitRouterMulticastDomainResponse>\\n <RequestId>26273D23-5CB0-5EFC-AF5F-78A5448084C9</RequestId>\\n</ModifyTransitRouterMulticastDomainResponse>","errorExample":""}]',
+ 'title' => 'ModifyTransitRouterMulticastDomain',
+ ],
+ 'ListTransitRouterMulticastDomains' => [
+ 'summary' => 'Queries the information about a multicast domain, such as the status, ID, and description.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '129152',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnNFSCZP',
+ ],
+ ],
+ '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' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'cen-a7syd349kne38g****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The transit router ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-p0wr9p28r92d598y6****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The multicast domain ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-mcast-domain-3r3bvbypxqheej****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region to which the transit router belongs.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ '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' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify up to 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The key can be up to 64 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\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. 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"
+ ."\n"
+ .'Each key-value pair must be unique. You can specify up to 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagValue',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The results returned.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '8A0F93D1-FD6C-56FC-B6D2-668FC92D12D2',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ '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****',
+ ],
+ 'TransitRouterMulticastDomains' => [
+ 'description' => 'The list of multicast domains.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about multicast domains.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterMulticastDomainId' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-mcast-domain-3r3bvbypxqheej****',
+ ],
+ 'TransitRouterMulticastDomainName' => [
+ 'description' => 'The name of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'nametest',
+ ],
+ 'TransitRouterMulticastDomainDescription' => [
+ 'description' => 'The description of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'desctest',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the multicast domain.'."\n"
+ ."\n"
+ .'The valid value is **Active**, which indicates that the multicast domain is available.'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'TagValue',
+ ],
+ ],
+ ],
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The transit router ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-bp1c23ijrl6d6c226h***',
+ ],
+ 'RegionId' => [
+ 'description' => 'The region ID of the transit router.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'CenId' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-a7syd349kne38g****',
+ ],
+ 'Options' => [
+ 'description' => 'Multicast domain feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Igmpv2Support' => [
+ 'description' => 'Indicates whether the IGMP feature is enabled for the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'enable',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrInstance',
+ 'errorMessage' => 'The specified TrInstance is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.CenId',
+ 'errorMessage' => 'The specified CenId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8A0F93D1-FD6C-56FC-B6D2-668FC92D12D2\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TransitRouterMulticastDomains\\": [\\n {\\n \\"TransitRouterMulticastDomainId\\": \\"tr-mcast-domain-3r3bvbypxqheej****\\",\\n \\"TransitRouterMulticastDomainName\\": \\"nametest\\",\\n \\"TransitRouterMulticastDomainDescription\\": \\"desctest\\",\\n \\"Status\\": \\"Active\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ],\\n \\"TransitRouterId\\": \\"tr-bp1c23ijrl6d6c226h***\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"CenId\\": \\"cen-h19xdb0qy2b3ir****\\",\\n \\"Options\\": {\\n \\"Igmpv2Support\\": \\"enable\\"\\n }\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterMulticastDomainsResponse>\\n <RequestId>8A0F93D1-FD6C-56FC-B6D2-668FC92D12D2</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <TransitRouterMulticastDomains>\\n <TransitRouterMulticastDomainId>tr-mcast-domain-3r3bvbypxqheej****</TransitRouterMulticastDomainId>\\n <TransitRouterMulticastDomainName>nametest</TransitRouterMulticastDomainName>\\n <TransitRouterMulticastDomainDescription>desctest</TransitRouterMulticastDomainDescription>\\n <Status>Active</Status>\\n <Tags>\\n <Key>TagKey</Key>\\n <Value>TagValue</Value>\\n </Tags>\\n </TransitRouterMulticastDomains>\\n</ListTransitRouterMulticastDomainsResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterMulticastDomains',
+ 'description' => '* If you configure one of the RegionId and CenId parameters, you must configure the other parameter. Otherwise, no information about the multicast domain is returned. You can configure only one of the TransitRouterId and TransitRouterMulticastDomainId parameters.'."\n"
+ .'* Make sure that all the request parameters are valid. If a request parameter is invalid, a **request ID** is returned but the information about the multicast domain is not returned.'."\n",
+ ],
+ 'ListTransitRouterMulticastDomainAssociations' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ '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 value, but you must make sure that it is unique among all requests. The token can only contain ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-4266****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-p90y3ymbbwuvy5****',
+ ],
+ ],
+ [
+ 'name' => 'VSwitchIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of vSwitches.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the vSwitch.'."\n"
+ ."\n"
+ .'You can specify at most 20 vSwitch IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vsw-p0w9s2ig1jnwgrbzl****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of resource associated with the multicast domain.'."\n"
+ ."\n"
+ .'Valid value: **VPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the resource associated with the multicast domain.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-p0w9alkte4w2htrqe****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the 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****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '1CD0969B-A605-5D2D-BFF0-699FD182FB7F',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned on each page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, it indicates that no subsequent 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' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'TransitRouterMulticastAssociations' => [
+ 'description' => 'The information about the resource associated with the multicast domain.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The associated resources.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TransitRouterMulticastDomainId' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-p90y3ymbbwuvy5****',
+ ],
+ 'VSwitchId' => [
+ 'description' => 'The ID of the vSwitch.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsw-p0wxk12u6okfkr8xy****',
+ ],
+ 'Status' => [
+ 'description' => 'The association status. Valid values:'."\n"
+ ."\n"
+ .'* **Associated**: The resource is associated with the multicast domain.'."\n"
+ .'* **Associating**: The resource is being associated with the multicast domain.'."\n"
+ .'* **Dissociating**: The resource is being disassociated from the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'Dissociating',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of resource associated with the multicast domain.'."\n"
+ ."\n"
+ .'Valid value: **VPC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'ResourceOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the resource associated with the multicast domain belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1210123456123456',
+ ],
+ 'ResourceId' => [
+ 'description' => 'The ID of the resource associated with the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-p0w9b7g9l90yofr0n****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterMulticastDomainId',
+ 'errorMessage' => 'The specified TransitRouterMulticastDomainId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CD0969B-A605-5D2D-BFF0-699FD182FB7F\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TransitRouterMulticastAssociations\\": [\\n {\\n \\"TransitRouterMulticastDomainId\\": \\"tr-mcast-domain-91wpg6wbhchjeq****\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-p90y3ymbbwuvy5****\\",\\n \\"VSwitchId\\": \\"vsw-p0wxk12u6okfkr8xy****\\",\\n \\"Status\\": \\"Dissociating\\",\\n \\"ResourceType\\": \\"VPC\\",\\n \\"ResourceOwnerId\\": 1210123456123456,\\n \\"ResourceId\\": \\"vpc-p0w9b7g9l90yofr0n****\\"\\n }\\n ]\\n}","type":"json"}]',
+ 'title' => 'ListTransitRouterMulticastDomainAssociations',
+ 'summary' => 'Queries whether a multicast domain is associated with a vSwitch.',
+ 'description' => '* You must set at least **TransitRouterMulticastDomainId** and **TransitRouterAttachmentId**. If you set **TransitRouterAttachmentId**, the information about the vSwitches in a virtual private cloud (VPC) that are associated with a multicast domain is returned. If you set **TransitRouterMulticastDomainId**, the information about the vSwitches that are associated with a multicast domain is returned.'."\n"
+ .'* Before you call **ListTransitRouterMulticastDomainAssociations**, make sure that all the request parameters are valid. If a request parameter is invalid, the system returns a **request ID** but does not return the vSwitches that are associated with the multicast domain.'."\n",
+ ],
+ 'ListTransitRouterMulticastDomainVSwitches' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cen-44m0p68spvlrqq****',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vpc-p0wr1cd4fcuxy3ui0****',
+ ],
+ ],
+ [
+ 'name' => 'VSwitchIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vsw-p0w5ejr9bzfsttiza****',
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'B0E7E43C-979A-5130-AA0D-B3ADA69E0827',
+ ],
+ 'TotalCount' => [
+ 'description' => '',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'MaxResults' => [
+ 'description' => '',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'VSwitchIds' => [
+ 'description' => '',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'vsw-p0w5ejr9bzfsttiza****',
+ ],
+ 'maxItems' => 50,
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TrInstance',
+ 'errorMessage' => 'The specified TransitRouter is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified Region is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"B0E7E43C-979A-5130-AA0D-B3ADA69E0827\\",\\n \\"TotalCount\\": 2,\\n \\"MaxResults\\": 20,\\n \\"VSwitchIds\\": [\\n \\"vsw-p0w5ejr9bzfsttiza****\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterMulticastDomainVSwitchesResponse>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>B0E7E43C-979A-5130-AA0D-B3ADA69E0827</RequestId>\\n <TotalCount>2</TotalCount>\\n <MaxResults>20</MaxResults>\\n <VSwitchIds>vsw-p0w5ejr9bzfsttiza****</VSwitchIds>\\n</ListTransitRouterMulticastDomainVSwitchesResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterMulticastDomainVSwitches',
+ 'summary' => 'Queries the information about vSwitches that are associated with a multicast domain after the virtual private cloud (VPC) of the vSwitches is connected to an Enterprise Edition transit router.',
+ ],
+ 'AssociateTransitRouterMulticastDomain' => [
+ 'summary' => 'Associates the vSwitch of a virtual private cloud (VPC) with a multicast domain.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '129158',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnI6X1AL',
+ ],
+ ],
+ '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. The client token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC connection.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-attach-g3kz2k3u76amsk****',
+ ],
+ ],
+ [
+ 'name' => 'VSwitchIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of vSwitches.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The vSwitch IDs.'."\n"
+ ."\n"
+ .'You can specify at most five vSwitches in each call. A multicast domain can be associated with at most 10 vSwitches.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vsw-p0wxk12u6okfkr8xy****',
+ ],
+ 'required' => true,
+ 'docRequired' => true,
+ 'maxItems' => 1000,
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run, without sending 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 sends the request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse<String>',
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'F88AC12C-943B-50E9-A344-4F8820BB07A7',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidMulticastDomain.NotFound',
+ 'errorMessage' => 'The specified MulticastDomain is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.MulticastDomain',
+ 'errorMessage' => 'The status of MulticastDomain is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AttachmentId',
+ 'errorMessage' => 'The specified AttachmentId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Attachment',
+ 'errorMessage' => 'The status of Attachment is incorrect.',
+ ],
+ [
+ 'errorCode' => 'MissingParam.VSwitchIds',
+ 'errorMessage' => 'The parameter VSwitchIds is mandatory.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.CloudBoxVpc',
+ 'errorMessage' => 'The specified CloudBoxVpc does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'AssociationExist.VSwitchIds',
+ 'errorMessage' => 'The association already exists.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.VswitchPerMulticastDomain',
+ 'errorMessage' => 'The number of vswitch associated with multicast domain has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.VpcRegion',
+ 'errorMessage' => 'The specified Region is not support for this operation.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.AdvancedFeature',
+ 'errorMessage' => 'The specified vpc does not support the operation.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.MulticastDomainPerVpc',
+ 'errorMessage' => 'The number of multicast domain that vpc associated has exceed the maximum value that can be associated.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.VSwitchIds',
+ 'errorMessage' => 'The parameter VSwitchIds is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterMulticastDomainAssociations',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F88AC12C-943B-50E9-A344-4F8820BB07A7\\"\\n}","errorExample":""},{"type":"xml","example":"<AssociateTransitRouterMulticastDomainResponse>\\n <RequestId>F88AC12C-943B-50E9-A344-4F8820BB07A7</RequestId>\\n</AssociateTransitRouterMulticastDomainResponse>","errorExample":""}]',
+ 'title' => 'AssociateTransitRouterMulticastDomain',
+ 'description' => '- A vSwitch can be associated with only one multicast domain. Make sure that the vSwitch is not associated with other multicast domains. For more information about how to disassociate a vSwitch from a multicast domain, see [DisassociateTransitRouterMulticastDomain](~~429774~~).'."\n"
+ .'- AssociateTransitRouterMulticastDomain 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 ListTransitRouterMulticastDomainAssociations operation to query whether a vSwitch is associated with the specified multicast domain.'."\n"
+ .' - If the status is Associating, it indicates that the vSwitch is being associated with the specified multicast domain. You can query the vSwitch but cannot perform other operations on the vSwitch.'."\n"
+ .' - If the status is Associated, the vSwitch is associated with the specified multicast domain.'."\n"
+ .'- The VPC of the vSwitch must be associated with an Enterprise Edition transit router. For more information about how to associate a VPC with an Enterprise Edition transit router, see [CreateTransitRouterVpcAttachment](~~468237~~).',
+ ],
+ 'DisassociateTransitRouterMulticastDomain' => [
+ 'summary' => 'Disassociates a vSwitch from a multicast domain.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '129159',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnI6X1AL',
+ ],
+ ],
+ '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. The client token can contain only ASCII characters.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the virtual private cloud (VPC) connection.'."\n"
+ ."\n"
+ .'A connection ID is generated after a VPC to which the vSwitch belongs is connected to a transit router.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-attach-g3kz2k3u76amsk****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether only to precheck the API request. Valid values:'."\n"
+ ."\n"
+ .'- **true**: prechecks the request but does not disassociate the vSwitch from the multicast domain. The system checks the required parameters, the request format, and the service 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. The vSwitch is disassociated from the multicast domain after the request passes the precheck.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'VSwitchIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of vSwitches.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The vSwitch IDs.'."\n"
+ ."\n"
+ .'You can specify at most five vSwitches in each call.'."\n"
+ ."\n"
+ .'> This parameter is required.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vsw-p0w9s2ig1jnwgrbzl****',
+ ],
+ 'required' => false,
+ 'docRequired' => true,
+ 'maxItems' => 1000,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.',
+ 'type' => 'string',
+ 'example' => '6F6B3FF0-45D1-5416-B189-C45A42A0222B',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidMulticastDomainId.NotFound',
+ 'errorMessage' => 'The specified MulticastDomainId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.MulticastDomain',
+ 'errorMessage' => 'The status of MulticastDomain is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InstanceStatusNotSupport',
+ 'errorMessage' => 'The status of instance not support the operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidAttachmentId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Attachment',
+ 'errorMessage' => 'The status of Attachment is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.AttachmentId',
+ 'errorMessage' => 'The specified AttachmentId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastGroupExist',
+ 'errorMessage' => 'Operation is invalid because multicast groups exist.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterMulticastDomainAssociations',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6F6B3FF0-45D1-5416-B189-C45A42A0222B\\"\\n}","errorExample":""},{"type":"xml","example":"<DisassociateTransitRouterMulticastDomainResponse>\\n <RequestId>6F6B3FF0-45D1-5416-B189-C45A42A0222B</RequestId>\\n</DisassociateTransitRouterMulticastDomainResponse>","errorExample":""}]',
+ 'title' => 'DisassociateTransitRouterMulticastDomain',
+ 'description' => '* Before you delete a vSwitch from a multicast domain, make sure that the vSwitch does not contain a multicast source or a multicast member. For more information about how to remove a multicast source or member from a vSwitch, see [DeregisterTransitRouterMulticastGroupSources](~~468416~~) and [DeregisterTransitRouterMulticastGroupMembers](~~468409~~).'."\n"
+ ."\n"
+ .'* If a request parameter is invalid, the system returns a request ID but does not disassociate the vSwitch from the multicast domain.'."\n"
+ ."\n"
+ .'* **DisassociateTransitRouterMulticastDomain** 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 **ListTransitRouterMulticastDomainAssociations** operation to query whether a vSwitch is disassociated from the specified multicast domain.'."\n"
+ ."\n"
+ .' * If the status is **Dissociating**, it indicates that the vSwitch is being disassociated from the specified multicast domain. You can query the vSwitch but cannot perform other operations on the vSwitch.'."\n"
+ .' * If the vSwitch cannot be found, the vSwitch is disassociated from the multicast domain.'."\n",
+ ],
+ 'ListTransitRouterMulticastGroups' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '129165',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnI6X1AL',
+ ],
+ ],
+ '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. The token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain.'."\n"
+ ."\n"
+ .'You must configure one of the TransitRouterMulticastDomainId and TransitRouterAttachmentId parameters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-mcast-domain-5mjb5gjb6dgu98****',
+ ],
+ ],
+ [
+ 'name' => 'GroupIpAddress',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IP address of the multicast group.'."\n"
+ ."\n"
+ .'Each multicast group is identified by its IP address.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '239.XX.XX.2',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection'."\n"
+ ."\n"
+ .'You must configure one of the TransitRouterMulticastDomainId and TransitRouterAttachmentId parameters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-g3kz2k3u76amsk****',
+ ],
+ ],
+ [
+ 'name' => 'VSwitchIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The vSwitch IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the vSwitch.'."\n"
+ ."\n"
+ .'You can specify at most 20 IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vsw-p0w9s2ig1jnwgrbzl****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'PeerTransitRouterMulticastDomains',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The ID of the inter-region multicast domain.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the inter-region multicast domain.'."\n"
+ ."\n"
+ .'You can specify at most 20 inter-region multicast domain IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the multicast resource. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: queries multicast resources by VPC.'."\n"
+ .'* **TR**: queries multicast resources that are also deployed in a different region.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'VPC',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the resource associated with the multicast resource.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-p0w9alkte4w2htrqe****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the 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' => 'IsGroupSource',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to query the multicast sources. Valid values:'."\n"
+ ."\n"
+ .'* **false**'."\n"
+ .'* **true**'."\n"
+ ."\n"
+ .'> - This parameter must be specified together with the IsGroupMember parameter.'."\n"
+ .'> * If you do not specify IsGroupMember or IsGroupSource, both the multicast sources and members are queried.'."\n"
+ .'> * If you specify only one of them or both of them, the specified values prevail.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'IsGroupMember',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specified whether to query the multicast members. Valid values:'."\n"
+ ."\n"
+ .'* **false**'."\n"
+ .'* **true**'."\n"
+ ."\n"
+ .'>- This parameter must be specified together with the IsGroupMember parameter.'."\n"
+ .'>- If you do not set IsGroupMember or IsGroupSource, both the multicast sources and members are queried.'."\n"
+ .'>- If you set only one of them or both of them, the specified values prevail.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'NetworkInterfaceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of ENIs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ENI.'."\n"
+ ."\n"
+ .'You can specify up to 20 ENIs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eni-p0weuda3lszwzjly****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'FB3C4A16-0933-5850-9D43-0C3EA37BCBFB',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** was not returned, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'TransitRouterMulticastGroups' => [
+ 'description' => 'A list of multicast groups.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the multicast group.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'GroupIpAddress' => [
+ 'description' => 'The IP address of the multicast group to which the multicast resource belongs.'."\n",
+ 'type' => 'string',
+ 'example' => '239.XX.XX.2',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-g3kz2k3u76amsk****',
+ ],
+ 'VSwitchId' => [
+ 'description' => 'The ID of the vSwitch to which the multicast resource belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsw-p0w9s2ig1jnwgrbzl****',
+ ],
+ 'NetworkInterfaceId' => [
+ 'description' => 'The ID of the ENI, which is a multicast resource.'."\n",
+ 'type' => 'string',
+ 'example' => 'eni-p0weuda3lszwzjly****',
+ ],
+ 'PeerTransitRouterMulticastDomainId' => [
+ 'description' => 'The ID of the multicast domain associated with the multicast resource that is deployed across regions.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ 'Status' => [
+ 'description' => 'The status of the multicast resource. Valid values:'."\n"
+ ."\n"
+ .'* **Registering**: being created'."\n"
+ .'* **Registered**: available'."\n"
+ .'* **Deregistering**: being deleted'."\n",
+ 'type' => 'string',
+ 'example' => 'Registered',
+ ],
+ 'GroupSource' => [
+ 'description' => 'Indicates whether the multicast resource is a multicast source. Valid values:'."\n"
+ ."\n"
+ .'* **true**: yes'."\n"
+ .'* **false**: no'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'GroupMember' => [
+ 'description' => 'Indicates whether the multicast resource is a multicast member. Valid values:'."\n"
+ ."\n"
+ .'* **true**: yes'."\n"
+ .'* **false**: no'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'MemberType' => [
+ 'description' => 'The type of the multicast source.'."\n"
+ ."\n"
+ .'If the value is **Static**, the multicast source is manually specified.'."\n",
+ 'type' => 'string',
+ 'example' => 'Static',
+ ],
+ 'SourceType' => [
+ 'description' => 'The type of the multicast member.'."\n"
+ ."\n"
+ .'If the value is **Static**, the multicast member is manually specified.'."\n",
+ 'type' => 'string',
+ 'example' => 'Static',
+ ],
+ 'ResourceType' => [
+ 'description' => 'The type of the multicast resource. Valid values:'."\n"
+ ."\n"
+ .'* **VPC**: The multicast resource is in a VPC.'."\n"
+ .'* **TR**: The multicast resource is deployed across regions.'."\n",
+ 'type' => 'string',
+ 'example' => 'VPC',
+ ],
+ 'ResourceOwnerId' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the multicast resource belongs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '253460731706911258',
+ ],
+ 'ResourceId' => [
+ 'description' => 'The ID of the resource associated with the multicast resource.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-p0w9alkte4w2htrqe****',
+ ],
+ 'TransitRouterMulticastDomainId' => [
+ 'description' => 'The ID of the multicast domain.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-mcast-domain-kx0vk0v7fz8kx4****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The specified NextToken is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterMulticastDomainId',
+ 'errorMessage' => 'The specified TransitRouterMulticastDomainId is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.MaxResults',
+ 'errorMessage' => 'The specified MaxResults is illegal.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterAttachmentId',
+ 'errorMessage' => 'TransitRouterAttachmentId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"FB3C4A16-0933-5850-9D43-0C3EA37BCBFB\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"TransitRouterMulticastGroups\\": [\\n {\\n \\"GroupIpAddress\\": \\"239.XX.XX.2\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-g3kz2k3u76amsk****\\",\\n \\"VSwitchId\\": \\"vsw-p0w9s2ig1jnwgrbzl****\\",\\n \\"NetworkInterfaceId\\": \\"eni-p0weuda3lszwzjly****\\",\\n \\"PeerTransitRouterMulticastDomainId\\": \\"tr-mcast-domain-91wpg6wbhchjeq****\\",\\n \\"Status\\": \\"Registered\\",\\n \\"GroupSource\\": false,\\n \\"GroupMember\\": true,\\n \\"MemberType\\": \\"Static\\",\\n \\"SourceType\\": \\"Static\\",\\n \\"ResourceType\\": \\"VPC\\",\\n \\"ResourceOwnerId\\": 0,\\n \\"ResourceId\\": \\"vpc-p0w9alkte4w2htrqe****\\",\\n \\"TransitRouterMulticastDomainId\\": \\"tr-mcast-domain-kx0vk0v7fz8kx4****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTransitRouterMulticastGroupsResponse>\\n <RequestId>FB3C4A16-0933-5850-9D43-0C3EA37BCBFB</RequestId>\\n <TotalCount>1</TotalCount>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <TransitRouterMulticastGroups>\\n <GroupIpAddress>239.XX.XX.2</GroupIpAddress>\\n <TransitRouterAttachmentId>tr-attach-g3kz2k3u76amsk****</TransitRouterAttachmentId>\\n <VSwitchId>vsw-p0w9s2ig1jnwgrbzl****</VSwitchId>\\n <NetworkInterfaceId>eni-p0weuda3lszwzjly****</NetworkInterfaceId>\\n <PeerTransitRouterMulticastDomainId>tr-mcast-domain-91wpg6wbhchjeq****</PeerTransitRouterMulticastDomainId>\\n <Status>Registered</Status>\\n <GroupSource>false</GroupSource>\\n <GroupMember>true</GroupMember>\\n <MemberType>Static</MemberType>\\n <SourceType>Static</SourceType>\\n <ResourceType>VPC</ResourceType>\\n <ResourceOwnerId>253460731706911260</ResourceOwnerId>\\n <ResourceId>vpc-p0w9alkte4w2htrqe****</ResourceId>\\n </TransitRouterMulticastGroups>\\n</ListTransitRouterMulticastGroupsResponse>","errorExample":""}]',
+ 'title' => 'ListTransitRouterMulticastGroups',
+ 'summary' => 'Queries the detailed information about the multicast members and sources in a multicast domain.',
+ 'description' => 'You can call the `ListTransitRouterMulticastGroups` operation to query the multicast sources and members in a multicast domain. Multicast sources and members are also known as multicast resources.'."\n"
+ ."\n"
+ .'* If you set **GroupIpAddress**, the system queries multicast resources in the multicast domain by multicast group.'."\n"
+ .'* If you set **VSwitchIds**, the system queries multicast resources in the multicast domain by vSwitch.'."\n"
+ .'* If you set **PeerTransitRouterMulticastDomains**, the system queries multicast resources that are also deployed in a different region.'."\n"
+ .'* If you set **ResourceType**, the system queries the multicast resources of the specified type in the multicast domain.'."\n"
+ .'* If you set **ResourceId**, the system queries multicast resources by resource.'."\n"
+ .'* If you set only **TransitRouterMulticastDomainId**, the system queries all the multicast resources in the multicast domain.'."\n",
+ ],
+ 'ListGrantVSwitchEnis' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance to which the VPC is attached.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cen-a7syd349kne38g****',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vpc-p0w9alkte4w2htrqe****',
+ ],
+ ],
+ [
+ 'name' => 'VSwitchId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of a vSwitch in the VPC. You can specify only one vSwitch in each call.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vsw-p0w9s2ig1jnwgrbzl****',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of NextToken.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'AAAAAdDWBF2****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Valid values: 10 to 500.'."\n"
+ ."\n"
+ .'Default value:'."\n"
+ ."\n"
+ .'* If you do not specify a value, the default value is 20.'."\n"
+ .'* If this parameter is set to a value greater than 500, the default value is 500.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'NetworkInterfaceId',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The ID of ENI N. Valid values of N: 1 to 100.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ENI.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eni-wz9a2sgsskvw69v2****',
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'NetworkInterfaceName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the ENI.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test-eni-name',
+ ],
+ ],
+ [
+ 'name' => 'PrimaryIpAddress',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The primary private IPv4 address of the ENI.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.XX.XX',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.',
+ 'type' => 'string',
+ 'example' => 'DBFE1736-2F33-5309-9954-875B11E9519D',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n"
+ ."\n"
+ .'> If MaxResults and NextToken are sued to query results by page, ignore this parameter.'."\n",
+ 'type' => 'string',
+ 'example' => '6',
+ ],
+ 'GrantVSwitchEnis' => [
+ 'description' => 'The information about the ENI.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'VpcId' => [
+ 'description' => 'The VPC ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-p0w9alkte4w2htrqe****',
+ ],
+ 'VSwitchId' => [
+ 'description' => 'The vSwitch ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsw-p0w9s2ig1jnwgrbzl****',
+ ],
+ 'NetworkInterfaceId' => [
+ 'description' => 'The ENI ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'eni-p0w172vv82kxzb49****',
+ ],
+ 'Description' => [
+ 'description' => 'The ENI description.'."\n",
+ 'type' => 'string',
+ 'example' => 'created by CBN',
+ ],
+ 'TransitRouterFlag' => [
+ 'description' => 'Indicates whether the ENI is created by a transit router. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'ENIs that are created by transit routers cannot be used as multicast sources or members.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'NetworkInterfaceName' => [
+ 'description' => 'The ENI name.'."\n",
+ 'type' => 'string',
+ 'example' => 'my-eni-name',
+ ],
+ 'PrimaryIpAddress' => [
+ 'description' => 'The primary private IPv4 address of the ENI.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.XX.XX',
+ ],
+ ],
+ ],
+ ],
+ '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.'."\n",
+ 'type' => 'string',
+ 'example' => 'AAAAAdDWBF2****',
+ ],
+ 'MaxResults' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '20',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidCenId.NotFound',
+ 'errorMessage' => 'The specified CenId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidVpcId.NotFound',
+ 'errorMessage' => 'The specified VpcId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainAssociationNotExist',
+ 'errorMessage' => 'Operation is invalid because multicast association domain association not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"DBFE1736-2F33-5309-9954-875B11E9519D\\",\\n \\"TotalCount\\": \\"6\\",\\n \\"GrantVSwitchEnis\\": [\\n {\\n \\"VpcId\\": \\"vpc-p0w9alkte4w2htrqe****\\",\\n \\"VSwitchId\\": \\"vsw-p0w9s2ig1jnwgrbzl****\\",\\n \\"NetworkInterfaceId\\": \\"eni-p0w172vv82kxzb49****\\",\\n \\"Description\\": \\"created by CBN\\",\\n \\"TransitRouterFlag\\": false,\\n \\"NetworkInterfaceName\\": \\"my-eni-name\\",\\n \\"PrimaryIpAddress\\": \\"192.168.**.**\\"\\n }\\n ],\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"MaxResults\\": 20\\n}","errorExample":""},{"type":"xml","example":"<ListGrantVSwitchEnisResponse>\\n <RequestId>DBFE1736-2F33-5309-9954-875B11E9519D</RequestId>\\n <GrantVSwitchEnis>\\n <TransitRouterFlag>false</TransitRouterFlag>\\n <VpcId>vpc-p0w9alkte4w2htrqe****</VpcId>\\n <VSwitchId>vsw-p0w9s2ig1jnwgrbzl****</VSwitchId>\\n <NetworkInterfaceId>eni-p0w172vv82kxzb49****</NetworkInterfaceId>\\n </GrantVSwitchEnis>\\n <GrantVSwitchEnis>\\n <TransitRouterFlag>false</TransitRouterFlag>\\n <VpcId>vpc-p0w9alkte4w2htrqe****</VpcId>\\n <VSwitchId>vsw-p0w9s2ig1jnwgrbzl****</VSwitchId>\\n <NetworkInterfaceId>eni-p0weuda3lszwzjly****</NetworkInterfaceId>\\n </GrantVSwitchEnis>\\n <GrantVSwitchEnis>\\n <Description>created by CBN</Description>\\n <TransitRouterFlag>true</TransitRouterFlag>\\n <VpcId>vpc-p0w9alkte4w2htrqe****</VpcId>\\n <VSwitchId>vsw-p0w9s2ig1jnwgrbzl****</VSwitchId>\\n <NetworkInterfaceId>eni-p0wa06n9uz70ge2f****</NetworkInterfaceId>\\n </GrantVSwitchEnis>\\n <GrantVSwitchEnis>\\n <Description>created by CBN</Description>\\n <TransitRouterFlag>true</TransitRouterFlag>\\n <VpcId>vpc-p0w9alkte4w2htrqe****</VpcId>\\n <VSwitchId>vsw-p0w9s2ig1jnwgrbzl****</VSwitchId>\\n <NetworkInterfaceId>eni-p0wa06n9uz70ge2f****</NetworkInterfaceId>\\n </GrantVSwitchEnis>\\n <GrantVSwitchEnis>\\n <Description>created by CBN</Description>\\n <TransitRouterFlag>true</TransitRouterFlag>\\n <VpcId>vpc-p0w9alkte4w2htrqe****</VpcId>\\n <VSwitchId>vsw-p0w9s2ig1jnwgrbzl****</VSwitchId>\\n <NetworkInterfaceId>eni-p0wcaxqogaswq4d****</NetworkInterfaceId>\\n </GrantVSwitchEnis>\\n <GrantVSwitchEnis>\\n <Description>created by CBN</Description>\\n <TransitRouterFlag>true</TransitRouterFlag>\\n <VpcId>vpc-p0w9alkte4w2htrqe****</VpcId>\\n <VSwitchId>vsw-p0w9s2ig1jnwgrbzl****</VSwitchId>\\n <NetworkInterfaceId>eni-p0we87l7rv6e5m8k****</NetworkInterfaceId>\\n </GrantVSwitchEnis>\\n</ListGrantVSwitchEnisResponse>","errorExample":""}]',
+ 'title' => 'ListGrantVSwitchEnis',
+ 'summary' => 'Queries the elastic network interfaces (ENIs) that can be used as multicast sources or members in a specified virtual private cloud (VPC).',
+ 'description' => 'Before you call `ListGrantVSwitchEnis`, make sure that the VPC is attached to a Cloud Enterprise Network (CEN) instance. For more information, see [CreateTransitRouterVpcAttachment](~~468237~~).',
+ ],
+ 'DeregisterTransitRouterMulticastGroupMembers' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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 all requests. The token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain to which the multicast members belong.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ ],
+ [
+ 'name' => 'GroupIpAddress',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IP address of the multicast group to which the multicast members belong.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '239.XX.XX.2',
+ ],
+ ],
+ [
+ 'name' => 'NetworkInterfaceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of elastic network interfaces (ENIs).'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ENI.'."\n"
+ ."\n"
+ .'You can specify multiple ENIs. Make sure that the total number of specified ENIs and multicast domains does not exceed five.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eni-p0weuda3lszwzjly****',
+ ],
+ 'required' => false,
+ 'maxItems' => 1000,
+ ],
+ ],
+ [
+ 'name' => 'PeerTransitRouterMulticastDomains',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain that is in a different region.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the multicast domain that is in a different region.'."\n"
+ ."\n"
+ .'You can specify multiple multicast domains. Make sure that the total number of specified ENIs and multicast domains does not exceed five.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-mcast-domain-5mjb5gjb6dgu98****',
+ ],
+ 'required' => false,
+ 'maxItems' => 1000,
+ ],
+ ],
+ [
+ '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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse<String>',
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '61D0A553-5E4E-53B5-9DA3-01CBA076A286',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterMulticastDomainId.NotFound',
+ 'errorMessage' => 'The specified TransitRouterMulticastDomainId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainStatus',
+ 'errorMessage' => 'Operation is invalid, due to multicast domain not Active.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.MulticastGroup',
+ 'errorMessage' => 'The status of MulticastGroup is incorrect.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.NotAllowedDeleteIgmpv2Member',
+ 'errorMessage' => 'You cannot delete a multicast source or multicast member of the igmpv2 type.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"61D0A553-5E4E-53B5-9DA3-01CBA076A286\\"\\n}","errorExample":""},{"type":"xml","example":"<DeregisterTransitRouterMulticastGroupMembersResponse>\\n <RequestId>61D0A553-5E4E-53B5-9DA3-01CBA076A286</RequestId>\\n</DeregisterTransitRouterMulticastGroupMembersResponse>","errorExample":""}]',
+ 'title' => 'DeregisterTransitRouterMulticastGroupMembers',
+ 'summary' => 'Removes a multicast member from a multicast group.',
+ 'description' => '`DeregisterTransitRouterMulticastGroupMembers` 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 `ListTransitRouterMulticastGroups` operation to query the status of a multicast member.'."\n"
+ ."\n"
+ .'* If the multicast member is in the **Deregistering** state, the multicast member is being removed. In this case, you can query the multicast member but cannot perform other operations on the multicast member.'."\n"
+ .'* If a multicast member cannot be found, the multicast member is removed from the multicast group.``'."\n"
+ ."\n"
+ .'Before you call the DeregisterTransitRouterMulticastGroupMembers operation, make sure that all request parameters are valid. If a request parameter is invalid, a request ID is returned but the multicast member is not removed.'."\n",
+ ],
+ 'RegisterTransitRouterMulticastGroupSources' => [
+ 'summary' => 'Creates a multicast source for a one-to-many multicast network.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ '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 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 is different for each request.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-4266****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain to which the multicast source belongs.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-mcast-domain-5mjb5gjb6dgu98****',
+ ],
+ ],
+ [
+ 'name' => 'GroupIpAddress',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IP address of the multicast group to which the multicast source belongs. Valid values: **224.0.1.0** to **239.255.255.254**.'."\n"
+ ."\n"
+ .'> 224.0.0.0 to 224.0.0.255 are reserved by the system and cannot be used by multicast groups.'."\n"
+ ."\n"
+ .'If the multicast group does not exist in the multicast domain, the system automatically creates the multicast group in the multicast domain.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '239.XX.XX.2',
+ ],
+ ],
+ [
+ 'name' => 'NetworkInterfaceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the ENIs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ENI that you want to specify as a multicast source.'."\n"
+ ."\n"
+ .'You can specify at most five multicast sources for a multicast group.'."\n"
+ ."\n"
+ .'> This parameter is required.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eni-p0w92o2wupc3c05t****',
+ ],
+ 'required' => false,
+ 'maxItems' => 1000,
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run, without sending the actual request. Default 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',
+ 'default' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC to which the ENI belongs.'."\n"
+ ."\n"
+ .'* If the ENI belongs to the current Alibaba Cloud account, ignore this parameter.'."\n"
+ .'* If the ENI belongs to a different Alibaba Cloud account, you must set this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-wz9fusm6zq8uy7cfa****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse<String>',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '9C5D5D70-0AFF-5E5C-8D8A-E92C90C8FB08',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidOperation.PeerMulticastDomainSource',
+ 'errorMessage' => 'Operation is invalid because peer multicast domain can not be group source.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.GroupIpAddress',
+ 'errorMessage' => 'The specified GroupIpAddress is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidMulticastDomainId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.MulticastDomainId',
+ 'errorMessage' => 'The status of MulticastDomainId is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Cen',
+ 'errorMessage' => 'The status of Cen is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InstanceExist',
+ 'errorMessage' => 'The instance already exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.NetworkInterfaceNotExist',
+ 'errorMessage' => 'Operation is invalid bacause network interface not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.NTRNetworkInterfaceNotSupport',
+ 'errorMessage' => 'Operation is invalid, due to ntr eni not support.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainAssociationNotExist',
+ 'errorMessage' => 'Operation is invalid because multicast association domain association not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainAssociationStatus',
+ 'errorMessage' => 'Operation is invalid, due to multicast domain association not Active.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.MulticastGroupPerDomain',
+ 'errorMessage' => 'The number of multicast group has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.MulticastSourcePerGroup',
+ 'errorMessage' => 'The number of multicast group source has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.ConnectPeerIds',
+ 'errorMessage' => 'Connect Peer statuses are incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidConnectPeerIds.NotFound',
+ 'errorMessage' => 'The Connect Peer Ids are invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ExistsIgmpv2MemberOnEni',
+ 'errorMessage' => 'An igmpv2 multicast source or multicast member already exists on the ENI.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.SourceAndMemberPerTransitRouter',
+ 'errorMessage' => 'The number of multicast group members and sources has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9C5D5D70-0AFF-5E5C-8D8A-E92C90C8FB08\\"\\n}","errorExample":""},{"type":"xml","example":"<RegisterTransitRouterMulticastGroupSourcesResponse>\\n <RequestId>9C5D5D70-0AFF-5E5C-8D8A-E92C90C8FB08</RequestId>\\n</RegisterTransitRouterMulticastGroupSourcesResponse>","errorExample":""}]',
+ 'title' => 'RegisterTransitRouterMulticastGroupSources',
+ 'description' => '* You can specify only elastic network interfaces (ENIs) as multicast sources.'."\n"
+ ."\n"
+ .'* `RegisterTransitRouterMulticastGroupSources` 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 `ListTransitRouterMulticastGroups` operation to query the status of a multicast source.'."\n"
+ ."\n"
+ .' * If a multicast source is in the **Registering** state, the multicast source is being created. You can query the multicast source but cannot perform other operations on the multicast source.'."\n"
+ .' * If a multicast source is in the **Registered** state, the multicast source is created.'."\n"
+ ."\n"
+ .'### Prerequisite'."\n"
+ ."\n"
+ .'Before you call `RegisterTransitRouterMulticastGroupSources`, make sure that the vSwitch on which the ENI is created is associated with the multicast domain. For more information, see [AssociateTransitRouterMulticastDomain](~~429778~~).',
+ ],
+ 'DeregisterTransitRouterMulticastGroupSources' => [
+ 'summary' => 'Deletes a multicast source from a multicast group.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '129164',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnI6X1AL',
+ ],
+ ],
+ '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. The token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-4266****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain to which the multicast source belongs.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ ],
+ [
+ 'name' => 'GroupIpAddress',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IP address of the multicast group to which the multicast source belongs.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '239.XX.XX.2',
+ ],
+ ],
+ [
+ 'name' => 'NetworkInterfaceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'A list of multicast source IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The multicast source ID.'."\n"
+ ."\n"
+ .'You can delete at most five multicast sources from a multicast group in each call.'."\n"
+ ."\n"
+ .'> This parameter is required.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eni-p0weuda3lszwzjly****',
+ ],
+ 'required' => false,
+ 'maxItems' => 1000,
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform a dry run, without sending 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.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse<String>',
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '53E7E8BE-7F4E-5458-ACCA-9B5C1D6A642D',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidTransitRouterMulticastDomainId.NotFound',
+ 'errorMessage' => 'The specified TransitRouterMulticastDomainId is not found.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainStatus',
+ 'errorMessage' => 'Operation is invalid, due to multicast domain not Active.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.MulticastGroup',
+ 'errorMessage' => 'The status of MulticastGroup is incorrect.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.NotAllowedDeleteIgmpv2Member',
+ 'errorMessage' => 'You cannot delete a multicast source or multicast member of the igmpv2 type.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterMulticastGroups',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"53E7E8BE-7F4E-5458-ACCA-9B5C1D6A642D\\"\\n}","errorExample":""},{"type":"xml","example":"<DeregisterTransitRouterMulticastGroupSourcesResponse>\\n <RequestId>53E7E8BE-7F4E-5458-ACCA-9B5C1D6A642D</RequestId>\\n</DeregisterTransitRouterMulticastGroupSourcesResponse>","errorExample":""}]',
+ 'title' => 'DeregisterTransitRouterMulticastGroupSources',
+ 'description' => '`DeregisterTransitRouterMulticastGroupSources` is an asynchronous operation. After a request a sent, the system returns a **request ID** and runs the task in the background. You can call the `ListTransitRouterMulticastGroups` operation to query the status of a multicast source.'."\n"
+ ."\n"
+ .'* If a multicast source is in the **Deregistering** state, the multicast source is being deleted. You can query the multicast source but cannot perform other operations.'."\n"
+ .'* If a multicast source cannot be found, the multicast source is deleted.'."\n"
+ ."\n"
+ .'Before you call DeregisterTransitRouterMulticastGroupSources, make sure that all the request parameters are valid. If a request parameter is invalid, a request ID is returned but the multicast source is not deleted.',
+ ],
+ 'RegisterTransitRouterMulticastGroupMembers' => [
+ 'summary' => 'Creates or adds a multicast member.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '129161',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbn05IP8W',
+ 'FEATUREcbnI6X1AL',
+ ],
+ ],
+ '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-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterMulticastDomainId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the multicast domain to which the multicast members belong.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'tr-mcast-domain-91wpg6wbhchjeq****',
+ ],
+ ],
+ [
+ 'name' => 'GroupIpAddress',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The IP address of the multicast group to which the multicast members belong. Valid values: **224.0.0.1** to **239.255.255.254**.'."\n"
+ ."\n"
+ .'If the multicast group does not exist in the specified multicast domain, the system automatically creates the multicast group in the multicast domain.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '239.XX.XX.2',
+ ],
+ ],
+ [
+ 'name' => 'NetworkInterfaceIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the ENIs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ENI'."\n"
+ ."\n"
+ .'You can specify multiple ENIs in each call. Make sure that the sum of the number of ENIs and the number of inter-region multicast domains is not larger than five.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eni-p0weuda3lszwzjly****',
+ ],
+ 'required' => false,
+ 'maxItems' => 1000,
+ ],
+ ],
+ [
+ 'name' => 'PeerTransitRouterMulticastDomains',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of inter-region multicast domains.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the inter-region multicast domain.'."\n"
+ ."\n"
+ .'You can specify multiple inter-region multicast domains in each call. Make sure that the sum of the number of ENIs and the number of inter-region multicast domains is not larger than five.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-mcast-domain-5mjb5gjb6dgu98****',
+ ],
+ 'required' => false,
+ 'maxItems' => 1000,
+ ],
+ ],
+ [
+ '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 request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC to which the ENI belongs.'."\n"
+ ."\n"
+ .'* If the ENI belongs to the current Alibaba Cloud account, ignore this parameter.'."\n"
+ .'* If the ENI belongs to a different Alibaba Cloud account, you must set this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-wz9fusm6zq8uy7cfa****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'PlainResponse<String>',
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'EB985B7E-2CF8-5EC9-A7DB-F7C82ABD3ACE',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IllegalParam.GroupIpAddress',
+ 'errorMessage' => 'The specified GroupIpAddress is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidMulticastDomainId.NotFound',
+ 'errorMessage' => 'The specified AttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.MulticastDomainId',
+ 'errorMessage' => 'The status of MulticastDomainId is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Cen',
+ 'errorMessage' => 'The status of Cen is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InstanceNotExist',
+ 'errorMessage' => 'The instance is not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.PeerMulticastDomainRegion',
+ 'errorMessage' => 'Operation is invalid because to peer multicast domain in the same region with multicast domain.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainStatus',
+ 'errorMessage' => 'Operation is invalid, due to multicast domain not Active.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.BandwidthLimitNotExist',
+ 'errorMessage' => 'Operation is invalid because a bandwidth limit not exist.',
+ ],
+ [
+ 'errorCode' => 'AttachmentNotFound',
+ 'errorMessage' => '"The attachment does not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.AttachmentId',
+ 'errorMessage' => 'The status of AttachmentId is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InstanceExist',
+ 'errorMessage' => 'The instance already exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.NetworkInterfaceNotExist',
+ 'errorMessage' => 'Operation is invalid bacause network interface not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.NTRNetworkInterfaceNotSupport',
+ 'errorMessage' => 'Operation is invalid, due to ntr eni not support.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainAssociationNotExist',
+ 'errorMessage' => 'Operation is invalid because multicast association domain association not exist.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.MulticastDomainAssociationStatus',
+ 'errorMessage' => 'Operation is invalid, due to multicast domain association not Active.',
+ ],
+ [
+ 'errorCode' => 'InvalidPeerTrMulticastDomainId.NotFound',
+ 'errorMessage' => 'The specified PeerTrMulticastDomainId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.PeerTrMulticastDomainId',
+ 'errorMessage' => 'The status of PeerTrMulticastDomainId is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.PeerTrMulticastDomainId',
+ 'errorMessage' => 'The specified PeerTrMulticastDomainId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation',
+ 'errorMessage' => 'Operation is invalid.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.MulticastGroupPerDomain',
+ 'errorMessage' => 'The number of multicast group has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.MulticastMemberPerGroup',
+ 'errorMessage' => 'The number of multicast group member has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'QuotaFull.MulticastPeerMemberPerGroup',
+ 'errorMessage' => 'The number of multicast group member peer domain has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'DryRunOperation',
+ 'errorMessage' => 'Request validation has been passed with DryRun flag set.',
+ ],
+ [
+ 'errorCode' => 'InvalidConnectPeerIds.NotFound',
+ 'errorMessage' => 'The Connect Peer Ids are invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidVpcId.NotFound',
+ 'errorMessage' => 'The specified VpcId is not found.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.ExistsIgmpv2MemberOnEni',
+ 'errorMessage' => 'An igmpv2 multicast source or multicast member already exists on the ENI.',
+ ],
+ [
+ 'errorCode' => 'InvalidVpcId.NotValid',
+ 'errorMessage' => 'The specified Vpc is invalid.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.SourceAndMemberPerTransitRouter',
+ 'errorMessage' => 'The number of multicast group members and sources has exceed the maximum value that can be created.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::ListTransitRouterMulticastGroups',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"EB985B7E-2CF8-5EC9-A7DB-F7C82ABD3ACE\\"\\n}","errorExample":""},{"type":"xml","example":"<RegisterTransitRouterMulticastGroupMembersResponse>\\n <RequestId>EB985B7E-2CF8-5EC9-A7DB-F7C82ABD3ACE</RequestId>\\n</RegisterTransitRouterMulticastGroupMembersResponse>","errorExample":""}]',
+ 'title' => 'RegisterTransitRouterMulticastGroupMembers',
+ 'description' => 'Enterprise Edition transit routers support only elastic network interfaces (ENIs) as multicast members. You can call the `RegisterTransitRouterMulticastGroupMembers` operation to specify an ENI in the current region or a different region as a multicast member.'."\n"
+ ."\n"
+ .'* If you specify a value for the **NetworkInterfaceIds** parameter, an ENI in the current region is to be specified as a multicast member. Make sure that the ENI and vSwitch are associated with the multicast group. For more information, see [AssociateTransitRouterMulticastDomain](~~429778~~).'."\n"
+ ."\n"
+ .'* If you specify a value for the **PeerTransitRouterMulticastDomains**, a multicast member in a multicast group that belongs to another region but has the same IP address as the current multicast group is to be specified as a multicast member for the current multicast group. Make sure that an inter-region connection is established between the regions. For more information, see [CreateTransitRouterPeerAttachment](~~261363~~).'."\n"
+ ."\n"
+ .' For example, you created Multicast Group 1 in Multicast Domain 1, which is in the China (Hangzhou) region. You created Multicast Group 2 in Multicast Domain 2, which is in the China (Shanghai) region. Multicast Group 1 and Multicast Group 2 use the same multicast IP address, and Multicast Member 2 is in Multicast Group 2 in the China (Shanghai) region. If you call the `RegisterTransitRouterMulticastGroupMembers` operation to add multicast members to Multicast Group 1 in the China (Hangzhou) region and set **PeerTransitRouterMulticastDomains** to the ID of Multicast Group 2, which is in the China (Shanghai) region, Multicast Member 2, which is in Multicast Domain 2 in the China (Shanghai) region is added to Multicast Group 1 in the China (Hangzhou) region.'."\n"
+ ."\n"
+ .'* `RegisterTransitRouterMulticastGroupMembers` 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 `ListTransitRouterMulticastGroups` operation to query the status of a multicast member.'."\n"
+ ."\n"
+ .' * If the multicast member is in the **Registering**, the multicast member is being created. In this case, you can query the multicast member but cannot perform other operations on the multicast member.'."\n"
+ .' * If the multicast member is in the **Registered** state, the multicast member is created.'."\n",
+ ],
+ 'DisableCenVbrHealthCheck' => [
+ 'summary' => 'Disables the health check feature 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' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'docRequired' => true,
+ 'example' => 'cen-sjfoejfghhjgghjghkg****',
+ 'required' => true,
+ 'type' => 'string',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the VBR is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ 'required' => true,
+ 'type' => 'string',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VBR.'."\n",
+ 'docRequired' => true,
+ 'example' => 'vbr-wz95o9aylj181n5****',
+ 'required' => true,
+ 'type' => 'string',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs.'."\n"
+ ."\n"
+ .'> This parameter is required if the VBR and the CEN instance belong to different Alibaba Cloud accounts.'."\n",
+ 'example' => '1250123456123456',
+ 'format' => 'int64',
+ 'required' => false,
+ 'type' => 'integer',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'example' => 'A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A',
+ 'type' => 'string',
+ ],
+ ],
+ 'type' => 'object',
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A\\"\\n}","errorExample":""},{"type":"xml","example":"<DisableCenVbrHealthCheckResponse>\\n <RequestId>A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A</RequestId>\\n</DisableCenVbrHealthCheckResponse>","errorExample":""}]',
+ 'description' => '**DisableCenVbrHealthCheck** 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 **DescribeCenVbrHealthCheck** operation to query the status of health check configurations. If the health check configurations cannot be found, the health check configurations are deleted.'."\n",
+ 'extraInfo' => ' ',
+ 'title' => 'DisableCenVbrHealthCheck',
+ ],
+ 'EnableCenVbrHealthCheck' => [
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-hahhfskfkseig****',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the VBR is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-shenzhen',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VBR.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'vbr-wz95o9aylj181n5mzk****',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckSourceIp',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The source IP address for the health check. You can set the source IP address in the following ways:'."\n"
+ ."\n"
+ .'* **Automatic IP Address** (recommended): The system automatically assigns an IP address from the 100.96.0.0/16 CIDR block.'."\n"
+ .'* **Custom IP Address**: You must specify an idle IP address from the 10.0.0.0/8, 192.168.0.0/16, or 172.16.0.0/12 CIDR block. The specified IP address cannot be the IP address of the VBR on the Alibaba Cloud side, the IP address of the VBR on the customer side, or other IP addresses with which the VBR communicates through the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => true,
+ 'example' => '192.XX.XX.1',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTargetIp',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The destination IP address for the health check.'."\n"
+ ."\n"
+ .'Set the destination IP address to the IP address of the VBR on the customer side.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '10.XX.XX.1',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account to which the VBR belongs.'."\n"
+ ."\n"
+ .'> This parameter is required if the VBR and the CEN instance belong to different Alibaba Cloud accounts.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1250123456123456',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckInterval',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The time interval at which probe packets are sent during a health check. Unit: seconds. Default value: **2**. Valid values: **2 to 3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '3',
+ 'minimum' => '1',
+ 'example' => '2',
+ ],
+ ],
+ [
+ 'name' => 'HealthyThreshold',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of probe packets that are sent during a health check. Unit: packets. Valid values: **3 to 8**. Default value: **8**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '8',
+ 'minimum' => '3',
+ 'example' => '8',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckOnly',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable probing during the health check. Valid values:'."\n"
+ ."\n"
+ .'* **true**: yes'."\n"
+ ."\n"
+ .' If you enable probing, the system does not switch to another route if the detected route is not reachable. '."\n"
+ ."\n"
+ .' Make sure that a redundant route is available. Otherwise, network disconnections may occur. '."\n"
+ ."\n"
+ .'* **false** (default): no'."\n"
+ ."\n"
+ .' Probing is disabled by default. If a redundant route is specified, the system switches to the redundant route if the detected route is not reachable. '."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'fasle',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'description' => 'The description of the health check.'."\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' => 'testdesc',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '1F59F19C-EFD2-40B1-94D5-65B40CA8E34A',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'RouteConflict',
+ 'errorMessage' => 'The specified route already exists.',
+ ],
+ [
+ 'errorCode' => 'Illegal.SourceIpOrTargetIp',
+ 'errorMessage' => 'The specified source IP address or destination IP address is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.StatusNotSupport',
+ 'errorMessage' => 'The VBR or VPC instance to CBN attachment is not in a valid state for the operation.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.SourceIpUnSupported',
+ 'errorMessage' => 'The specified source IP address is unsupported.',
+ ],
+ [
+ 'errorCode' => 'InvalidStatus.HealthCheck',
+ 'errorMessage' => 'Can not modify, please delete health check config first.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.IpAddressExhausted',
+ 'errorMessage' => 'No IP addresses are available for allocation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1F59F19C-EFD2-40B1-94D5-65B40CA8E34A\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A\\",\\n \\"CenId\\": \\"Cen-atlpf6evc5kqchpma5\\",\\n \\"VbrId\\": \\"vbr-il7ldy0ux6rb15lc2snrw\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"SourceIp\\": \\"10.10.10.10\\",\\n \\"TargetIp\\": \\"10.10.10.11\\",\\n \\"PacketNum\\": \\"3\\",\\n \\"Status\\": \\"Enable\\"\\n}"},{"type":"xml","example":"<EnableCenVbrHealthCheckResponse>\\r\\n<RequestId>1F59F19C-EFD2-40B1-94D5-65B40CA8E34A</RequestId>\\r\\n</EnableCenVbrHealthCheckResponse>","errorExample":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<EnableCenVbrHealthCheckResponse>\\n <RequestId>A278B8A6-A5B8-4FDE-9F70-95F0F6A1D68A</RequestId>\\n <CenId>Cen-atlpf6evc5kqchpma5</CenId>\\n <VbrId>vbr-il7ldy0ux6rb15lc2snrw </VbrId>\\n <RegionId>cn-hangzhou</RegionId>\\n <SourceIp>10.10.10.10</SourceIp>\\n <TargetIp>10.10.10.11</TargetIp>\\n <PacketNum>3</PacketNum>\\n <Status>Enable </Status>\\n</EnableCenVbrHealthCheckResponse>"}]',
+ 'title' => 'EnableCenVbrHealthCheck',
+ 'summary' => 'Enables the health check feature for a virtual border router (VBR) to detect anomalies on Express Connect circuits. You can modify the health check configuration of a VBR based on business requirements.',
+ 'description' => 'You can enable the health check feature for a VBR to monitor the Express Connect circuit between your data center and Alibaba Cloud. This helps you detect connection issues in a timely manner.'."\n"
+ ."\n"
+ .'Before you use the health check feature, take note of the following information:'."\n"
+ ."\n"
+ .'* If your VBR uses static routing, you must add a static route for the data center that is connected to the VBR after you configure the health check feature. Set the destination CIDR block to the source IP address of health checks, set the mask length to 32, and set the next hop to the IP address of the VBR on the Alibaba Cloud side.'."\n"
+ .'* If your VBR uses dynamic Border Gateway Protocol (BGP) routing, you do not need to add routes for the data center.'."\n"
+ .'* **EnableCenVbrHealthCheck** 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 **DescribeCenVbrHealthCheck** operation to query the status of health check configurations. If health check configurations are returned, health check is configured or modified.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeCenVbrHealthCheck' => [
+ 'summary' => 'Queries the health check configurations of virtual border routers (VBRs) in a region.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-6hpdgj7ni6pz1k****',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceRegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the VBRs are deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VBR.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vbr-bp1kznorjeembsuhl****',
+ ],
+ ],
+ [
+ 'name' => 'VbrInstanceOwnerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Alibaba Cloud account that owns the VBRs.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1250123456123456',
+ ],
+ ],
+ [
+ '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. Valid values: **1** to **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' => [
+ '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' => 'B8C9702E-304A-4E18-AC89-BE2D91C2C176',
+ ],
+ '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',
+ ],
+ 'VbrHealthChecks' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'VbrHealthCheck' => [
+ 'description' => 'The health check configuration of the VBR.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckTargetIp' => [
+ 'description' => 'The destination IP address of the health check.'."\n",
+ 'type' => 'string',
+ 'example' => '192.XX.XX.1',
+ ],
+ 'VbrInstanceId' => [
+ 'description' => 'The VBR ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'vbr-bp1kznorjeembsuhl****',
+ ],
+ 'VbrInstanceRegionId' => [
+ 'description' => 'The ID of the region where the VBR is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-6hpdgj7ni6pz1k****',
+ ],
+ 'HealthyThreshold' => [
+ 'description' => 'The number of probe packets that are sent during the health check.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '8',
+ ],
+ 'HealthCheckInterval' => [
+ 'description' => 'The time interval at which probe packets are sent during the health check. Unit: seconds.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'HealthCheckSourceIp' => [
+ 'description' => 'The source IP address of the health check.'."\n",
+ 'type' => 'string',
+ 'example' => '172.XX.XX.1',
+ ],
+ 'HealthCheckOnly' => [
+ 'description' => 'Indicates whether probing is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**: Probing is enabled.'."\n"
+ ."\n"
+ .' If you enable probing, the system does not switch to another route if the detected route is not reachable.'."\n"
+ ."\n"
+ .'* **false**: Probing is disabled.'."\n"
+ ."\n"
+ .' If probing is disabled and a redundant route is specified, the system switches to the redundant route when the detected route is not reachable.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'Description' => [
+ 'description' => 'The description.'."\n",
+ 'type' => 'string',
+ 'example' => 'healthcheck_description',
+ ],
+ ],
+ 'description' => 'The health check configuration.',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"B8C9702E-304A-4E18-AC89-BE2D91C2C176\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"VbrHealthChecks\\": {\\n \\"VbrHealthCheck\\": [\\n {\\n \\"HealthCheckTargetIp\\": \\"192.XX.XX.1\\",\\n \\"VbrInstanceId\\": \\"vbr-bp1kznorjeembsuhl****\\",\\n \\"VbrInstanceRegionId\\": \\"cn-hangzhou\\",\\n \\"CenId\\": \\"cen-6hpdgj7ni6pz1k****\\",\\n \\"HealthyThreshold\\": 8,\\n \\"HealthCheckInterval\\": 2,\\n \\"HealthCheckSourceIp\\": \\"172.XX.XX.1\\",\\n \\"HealthCheckOnly\\": false,\\n \\"Description\\": \\"healthcheck_description\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeCenVbrHealthCheckResponse>\\n <PageSize>10</PageSize>\\n <RequestId>B8C9702E-304A-4E18-AC89-BE2D91C2C176</RequestId>\\n <PageNumber>1</PageNumber>\\n <TotalCount>1</TotalCount>\\n <VbrHealthChecks>\\n <HealthCheckTargetIp>192.XX.XX.1</HealthCheckTargetIp>\\n <VbrInstanceId>vbr-bp1kznorjeembsuhl****</VbrInstanceId>\\n <VbrInstanceRegionId>cn-hangzhou</VbrInstanceRegionId>\\n <CenId>cen-6hpdgj7ni6pz1k****</CenId>\\n <HealthyThreshold>8</HealthyThreshold>\\n <HealthCheckInterval>2</HealthCheckInterval>\\n <HealthCheckSourceIp>172.XX.XX.1</HealthCheckSourceIp>\\n <HealthCheckOnly>false</HealthCheckOnly>\\n </VbrHealthChecks>\\n</DescribeCenVbrHealthCheckResponse>","errorExample":""}]',
+ 'title' => 'DescribeCenVbrHealthCheck',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'CreateFlowlog' => [
+ 'summary' => 'Creates a flow log.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '72303',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnKD6E3I',
+ 'FEATUREcbnMGIE06',
+ ],
+ ],
+ '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. 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' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the flow log is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The flow log name.'."\n"
+ ."\n"
+ .'The name can be empty or 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 is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'myFlowlog',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'ProjectName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The project that stores the captured traffic data.'."\n"
+ ."\n"
+ .'* If a project is already created in the selected region, enter the name of the project.'."\n"
+ ."\n"
+ .'* If no projects are created in the selected region, enter a name and the system automatically creates a project.'."\n"
+ ."\n"
+ .' The project name must be unique in a region. You cannot change the name after the project is created. The name must meet the following requirements:'."\n"
+ ."\n"
+ .' * The name must be globally unique.'."\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,
+ 'docRequired' => false,
+ 'example' => 'FlowLogProject',
+ ],
+ ],
+ [
+ 'name' => 'LogStoreName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The Logstore that stores the captured traffic data.'."\n"
+ ."\n"
+ .'* If a Logstore is already created in the selected region, enter the name of the Logstore.'."\n"
+ ."\n"
+ .'* If no Logstores are created in the selected region, enter a name and the system automatically creates a Logstore. The name of the Logstore. The name must meet the following requirements:'."\n"
+ ."\n"
+ .' * The name must be unique in a project.'."\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,
+ 'docRequired' => false,
+ 'example' => 'FlowLogStore',
+ ],
+ ],
+ [
+ 'name' => 'Interval',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The time window for collecting log data. Unit: seconds. Valid values: **60** and **600**. Default value: **600**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '600',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the VPC connection, VPN connection, VBR connection, ECR connection, or inter-region connection.'."\n"
+ ."\n"
+ .'If you create the flow log for a transfer router, skip this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-r6g0m3epjehw57****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-bp1rmwxnk221e3fas****',
+ ],
+ ],
+ [
+ 'name' => 'LogFormatString',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The strings that define the fields in the flow log.'."\n"
+ ."\n"
+ .'Format: `${Field 1}${Field 2}${Field 3}...{Field n}`'."\n"
+ ."\n"
+ .'* If you do not configure this parameter, all fields are included in the flow log.'."\n"
+ .'* If you configure this parameter, start the string with `${srcaddr}${dstaddr}${bytes}` because `${srcaddr}${dstaddr}${bytes}` are required variables. For more information about the fields supported by flow logs, see [Configure a flow log](~~339822~~).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '${srcaddr}${dstaddr}${bytes}',
+ 'maxLength' => 1000,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag keys.'."\n"
+ ."\n"
+ .'The tag keys cannot be an empty string. The tag keys can be up to 64 characters in length. The tag keys cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag values.'."\n"
+ ."\n"
+ .'The tag values can be an empty string or up to 128 characters in length. The tag values cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each key-value must be unique. You can specify at most 20 tag values in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagValue',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B457',
+ ],
+ 'Success' => [
+ 'description' => 'Indicates whether the call 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' => 'flowlog-m5evbtbpt****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ProjectOrLogstoreNotExist',
+ 'errorMessage' => 'The specified project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'SourceProjectNotExist',
+ 'errorMessage' => 'The Source Project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.action',
+ 'errorMessage' => 'This action is not support.',
+ ],
+ [
+ 'errorCode' => 'RuleExist',
+ 'errorMessage' => 'The rule has already existed.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.FlowlogCount',
+ 'errorMessage' => 'This user has reached the maximum instance number of flowlog.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.exist',
+ 'errorMessage' => 'This cenId already has flowlog instance existed.',
+ ],
+ [
+ 'errorCode' => 'Flowlog.AlreayExist',
+ 'errorMessage' => 'This attachment already has existed flowlog instance.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TransitRouterAttachmentId',
+ 'errorMessage' => 'TransitRouterAttachmentId is illegal.',
+ ],
+ [
+ 'errorCode' => 'InvalidTransitRouterAttachmentId.NotFound',
+ 'errorMessage' => 'The TransitRouterAttachmentId is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.flowlog',
+ 'errorMessage' => 'This action is not allowed in the current flow log status.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.TransitRouterNotExist',
+ 'errorMessage' => 'Operation is invalid because the transit router not exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterAttachmentId',
+ 'errorMessage' => 'The resource is not in a valid state for the attachment operation.',
+ ],
+ [
+ 'errorCode' => 'ProjectExist',
+ 'errorMessage' => 'Project already exist, please try a different project name.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.ProjectName',
+ 'errorMessage' => 'Project name is invalid or does not belong to specified region.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrFlowlog',
+ 'errorMessage' => 'Flowlog status for specified TransitRouter is invalid for this operation.',
+ ],
+ [
+ 'errorCode' => 'OperationInvalid.IncompatibleFlowlogExist',
+ 'errorMessage' => 'Operation is invalid because incompatible flowlog config exists.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.LogFormatString',
+ 'errorMessage' => 'LogFormatString is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.LogStoreName',
+ 'errorMessage' => 'Specified LogStore name is invalid.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.InvalidLogInfo',
+ 'errorMessage' => 'The entered log service information is invalid. Check whether the ProjectName and LogStoreName are correct, and whether Log Service has been activated.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TransitRouterInstance',
+ 'errorMessage' => 'The status of TransitRouter is incorrect.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.CenId',
+ 'errorMessage' => 'The specified parameter CenId is invalid.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'NoPermission.AliyunServiceRoleForTRFlowLog',
+ 'errorMessage' => 'You are not authorized to create service linked role AliyunServiceRoleForTRFlowLog.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeFlowlogs',
+ 'callbackInterval' => 3000,
+ 'maxCallbackTimes' => 30,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B457\\",\\n \\"Success\\": \\"true\\",\\n \\"FlowLogId\\": \\"flowlog-m5evbtbpt****\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateFlowlogResponse>\\n <RequestId>54B48E3D-DF70-471B-AA93-08E683A1B457</RequestId>\\n <Success>true</Success>\\n <FlowLogId>flowlog-m5evbtbpt****</FlowLogId>\\n</CreateFlowlogResponse>","errorExample":""}]',
+ 'title' => 'CreateFlowlog',
+ 'description' => 'Flow logs can be used to capture traffic information about transit routers and network instance connections, including inter-region connections, virtual private cloud (VPC) connections, VPN connections, Express Connect Router (ECR) connections, and virtual border router (VBR) connections. Before you create a flow log, take note of the following items:'."\n"
+ ."\n"
+ .'* Flow logs are supported only by Enterprise Edition transit routers.'."\n"
+ ."\n"
+ .'* Flow logs are used to capture information about outbound traffic on transit routers. Information about inbound traffic on transit routers is not captured.'."\n"
+ ."\n"
+ .' For example, an Elastic Compute Service (ECS) instance in the US (Silicon Valley) region accesses an ECS instance in the US (Virginia) region through Cloud Enterprise Network (CEN). After you enable the flow log feature for the transit router in the US (Virginia) region, you can check the log entries about packets sent from the ECS instance in the US (Virginia) region to the ECS instance in the US (Silicon Valley) region. However, packets sent from the ECS instance in the US (Silicon Valley) region to the ECS instance in the US (Virginia) region are not recorded. If you want to record the packets sent from the ECS instance in the US (Silicon Valley) region to the ECS instance in the US (Virginia) region, you must also enable the flow log feature on the transit router that is in the US (Silicon Valley) region.'."\n"
+ ."\n"
+ .'* If you use a flow log to capture traffic information about VPC connections, the flow log captures information only about traffic on the elastic network interface (ENI) of the transit router. For more information about how to view traffic information about other ENIs in the VPC, see [VPC flow log overview](~~127150~~).'."\n"
+ ."\n"
+ .'* `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` operation to query the status of a flow log.'."\n"
+ ."\n"
+ .' * If the flow log is in the **Creating** state, the flow log is being created. In this case, you can query the flow log but cannot perform other operations.'."\n"
+ .' * If the flow log is in the **Active** state, the flow log is created.'."\n"
+ ."\n"
+ .'### [](#)Prerequisites'."\n"
+ ."\n"
+ .'Required resources are created. For more information about how to create resources, see the following topics:'."\n"
+ ."\n"
+ .'* [CreateTransitRouterVpcAttachment](~~468237~~)'."\n"
+ .'* [CreateTransitRouterEcrAttachment](~~2715446~~)'."\n"
+ .'* [CreateTransitRouterVpnAttachment](~~468249~~)'."\n"
+ .'* [CreateTransitRouterVbrAttachment](~~468243~~)'."\n"
+ .'* [CreateTransitRouterPeerAttachment](~~468270~~)'."\n"
+ .'* [CreateTransitRouter](~~468222~~)'."\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' => 'free',
+ 'abilityTreeCode' => '72323',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnKD6E3I',
+ 'FEATUREcbnMGIE06',
+ ],
+ ],
+ '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 set this parameter, ClientToken is set to the value of RequestId. The value of RequestId may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the flow log is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the flow log.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'flowlog-m5evbtbpt****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Success' => [
+ 'description' => 'Indicates whether the call is successful.'."\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' => 'ProjectOrLogstoreNotExist',
+ 'errorMessage' => 'The specified project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'SourceProjectNotExist',
+ 'errorMessage' => 'The Source Project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.action',
+ 'errorMessage' => 'This action is not support.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.FlowlogCount',
+ 'errorMessage' => 'This user has reached the maximum instance number of flowlog.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.exist',
+ 'errorMessage' => 'This cenId already has flowlog instance existed.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.NotFound',
+ 'errorMessage' => 'The specified flowlog id does not exist or does not match the cen Id.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.flowlog',
+ 'errorMessage' => 'Invalid flowlog status.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrFlowlog',
+ 'errorMessage' => 'Flowlog status for specified TransitRouter is invalid for this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.FlowLogId',
+ 'errorMessage' => 'The specified parameter FlowLogId is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.RelatedTrafficAnalyzerExists',
+ 'errorMessage' => 'The FlowLog has related Traffic Analyzer instance.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeFlowlogs',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteFlowlogResponse>\\n <Success>true</Success>\\n <RequestId>F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1</RequestId>\\n</DeleteFlowlogResponse>","errorExample":""}]',
+ 'title' => 'DeleteFlowlog',
+ 'description' => '`DeleteFlowlog` 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` operation to query the status of a flow log.'."\n"
+ ."\n"
+ .'* If a flow log is in the **Deleting** state, the flow log is being deleted. In this case, you can query the flow log but cannot perform other operations.'."\n"
+ .'* If a flow log cannot be found, the flow log is deleted.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ModifyFlowLogAttribute' => [
+ 'summary' => 'Modifies the name, description, and capture window of a flow log.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72413',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnKD6E3I',
+ 'FEATUREcbnMGIE06',
+ ],
+ ],
+ '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 client 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' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The new name of the flow log.'."\n"
+ ."\n"
+ .'The name can be empty or 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 can be empty or 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'myFlowlog',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the flow log is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the flow log.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'flowlog-m5evbtbpt****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The CEN instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'Interval',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The time window for collecting log data. Unit: seconds. Valid values: **60** or **600** Default value: **600**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '600',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ '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' => '9A411874-2EC8-4633-9D30-9012DCE89DD1',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'InvalidParameter.FlowLogId',
+ 'errorMessage' => 'The specified flowlog id does not exist or does not match the cen Id.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.flowlog',
+ 'errorMessage' => 'Invalid flowlog status.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidOperation.IntervalMismatch',
+ 'errorMessage' => 'The interval of FlowLog should be less than or equal to the interval of related Traffic Analyzer.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeFlowlogs',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"9A411874-2EC8-4633-9D30-9012DCE89DD1\\"\\n}","type":"json"}]',
+ '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` operation to query the status of a flow log.'."\n"
+ ."\n"
+ .'* If a flow log is in the **Modifying** state, the flow log is being modified. In this case, you can query the flow log but cannot perform other operations.'."\n"
+ .'* If a flow log is in the **Active** state, the flow log is modified.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DescribeFlowlogs' => [
+ 'summary' => 'Queries flow logs.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72360',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnKD6E3I',
+ 'FEATUREcbnMGIE06',
+ 'FEATUREcbnWRIR8E',
+ ],
+ ],
+ '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. 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' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the flow log is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the flow log.'."\n"
+ ."\n"
+ .'The name is optional. If you enter a name, it must be 1 to 128 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'myFlowlog',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the flow log.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'flowlog-m5evbtbpt****',
+ ],
+ ],
+ [
+ 'name' => 'Description',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The description of the flow log.'."\n"
+ ."\n"
+ .'The description is optional. If you enter a description, it must be 1 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'myFlowlog',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ [
+ 'name' => 'ProjectName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the project where the flow log is stored.'."\n"
+ ."\n"
+ .'The name must be 3 to 63 characters in length, and can contain lowercase letters, digits, and hyphens (-). It must start or end with a lowercase letter or a digit.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FlowLogProject',
+ ],
+ ],
+ [
+ 'name' => 'LogStoreName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The name of the Logstore where the flow log is stored.'."\n"
+ ."\n"
+ .'The name must be 3 to 63 characters in length, and can contain lowercase letters, digits, underscores (\\_), and hyphens (-). It must start or end with a lowercase letter or a digit.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FlowLogStore',
+ ],
+ ],
+ [
+ 'name' => 'Status',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The status of the flow log. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: The flow log is enabled.'."\n"
+ .'* **Inactive**: The flow log is disabled.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ [
+ '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',
+ ],
+ ],
+ [
+ 'name' => 'PageSize',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries per page. Minimum value: **1**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags.'."\n"
+ ."\n"
+ .'You can specify at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot be an empty string. The tag key can be up to 64 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be 0 to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'Each tag key must have a unique 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' => 20,
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterAttachmentId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the network instance connection.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-attach-qieks13jnt1cchy****',
+ ],
+ ],
+ [
+ 'name' => 'TransitRouterId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tr-uf654ttymmljlvh2x****',
+ ],
+ ],
+ [
+ 'name' => 'Interval',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The time window for collecting log data. Unit: seconds Valid values: **60** or **600** Default value: **600**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '600',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogVersion',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The flow log version.'."\n"
+ ."\n"
+ .'Flow logs are automatically created in the latest version, which is **3**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '3',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'PageSize' => [
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'string',
+ 'example' => '20',
+ ],
+ 'PageNumber' => [
+ 'description' => 'The page number of the returned page.'."\n",
+ 'type' => 'string',
+ 'example' => '1',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1',
+ ],
+ 'TotalCount' => [
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'string',
+ 'example' => '1',
+ ],
+ 'Success' => [
+ 'description' => 'Indicates whether the call is successful. Valid values:'."\n"
+ ."\n"
+ .'* **true**: yes'."\n"
+ .'* **false**: no'."\n",
+ 'type' => 'string',
+ 'example' => 'true',
+ ],
+ 'FlowLogs' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'FlowLog' => [
+ 'description' => 'The information about the flow log.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the flow log.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Status' => [
+ 'description' => 'The status of the flow log. Valid values:'."\n"
+ ."\n"
+ .'* **Active**: The flow log is enabled.'."\n"
+ .'* **Inactive**: The flow log is disabled.'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'CreationTime' => [
+ 'description' => 'The time when the flow log was created.'."\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-07-24T13:00:52Z',
+ ],
+ 'FlowLogName' => [
+ 'description' => 'The name of the flow log.'."\n",
+ 'type' => 'string',
+ 'example' => 'myFlowlog',
+ ],
+ 'Description' => [
+ 'description' => 'The description of the flow log.'."\n",
+ 'type' => 'string',
+ 'example' => 'myFlowlog',
+ ],
+ 'ProjectName' => [
+ 'description' => 'The name of the project that stores the captured traffic data.'."\n",
+ 'type' => 'string',
+ 'example' => 'FlowLogProject',
+ ],
+ 'CenId' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ 'LogStoreName' => [
+ 'description' => 'The Logstore that stores the captured traffic data.'."\n",
+ 'type' => 'string',
+ 'example' => 'FlowLogStore',
+ ],
+ 'RegionId' => [
+ 'description' => 'The region ID of the flow log.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'FlowLogId' => [
+ 'description' => 'The ID of the flow log.'."\n",
+ 'type' => 'string',
+ 'example' => 'flowlog-m5evbtbpt****',
+ ],
+ 'TransitRouterAttachmentId' => [
+ 'description' => 'The ID of the network instance connection'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-attach-5x4o4ynzuqbv6g****',
+ ],
+ 'TransitRouterId' => [
+ 'description' => 'The ID of the transit router.'."\n",
+ 'type' => 'string',
+ 'example' => 'tr-bp1g9313sx675zr1lajmj',
+ ],
+ 'LogFormatString' => [
+ 'description' => 'The string that defines the format of the flow log. Format:'."\n"
+ ."\n"
+ .'`${Field 1}${Field 2}${Field 3}`'."\n",
+ 'type' => 'string',
+ 'example' => '${srcaddr}${dstaddr}${bytes}',
+ ],
+ 'FlowLogVersion' => [
+ 'description' => 'The flow log version.'."\n"
+ ."\n"
+ .'Flow logs are automatically created in the latest version, which is **3**.'."\n",
+ 'type' => 'string',
+ 'example' => '3',
+ ],
+ 'Interval' => [
+ 'description' => 'The time window for collecting log data. Unit: seconds. Valid values: **60** or **600** Default value: **600**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '60',
+ ],
+ 'Tags' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'Tag' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'Tag N to add to the instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'TagValue',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationUnsupported.action',
+ 'errorMessage' => 'This action is not support.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.NotFound',
+ 'errorMessage' => 'The specified flowlog id does not exist or does not match the cen Id.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagValue',
+ 'errorMessage' => 'The tag values are not valid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.TagKey',
+ 'errorMessage' => 'The tag keys are not valid.',
+ ],
+ [
+ 'errorCode' => 'InvalidDescription',
+ 'errorMessage' => 'Description is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidName',
+ 'errorMessage' => 'Name is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.Interval',
+ 'errorMessage' => 'Interval is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.FlowLogVersion',
+ 'errorMessage' => 'Flowlog version is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ '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\\": \\"2021-07-24T13:00:52Z\\",\\n \\"FlowLogName\\": \\"myFlowlog\\",\\n \\"Description\\": \\"myFlowlog\\",\\n \\"ProjectName\\": \\"FlowLogProject\\",\\n \\"CenId\\": \\"cen-7qthudw0ll6jmc****\\",\\n \\"LogStoreName\\": \\"FlowLogStore\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"FlowLogId\\": \\"flowlog-m5evbtbpt****\\",\\n \\"TransitRouterAttachmentId\\": \\"tr-attach-5x4o4ynzuqbv6g****\\",\\n \\"TransitRouterId\\": \\"tr-bp1g9313sx675zr1lajmj\\",\\n \\"LogFormatString\\": \\"${srcaddr}${dstaddr}${bytes}\\",\\n \\"FlowLogVersion\\": \\"3\\",\\n \\"Interval\\": 60,\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"TagKey\\",\\n \\"Value\\": \\"TagValue\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<DescribeFlowlogsResponse>\\n <PageSize>20</PageSize>\\n <PageNumber>1</PageNumber>\\n <RequestId>F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1</RequestId>\\n <TotalCount>1</TotalCount>\\n <Success>true</Success>\\n <FlowLogs>\\n <Status>Active</Status>\\n <CreationTime>2021-07-24T13:00:52Z</CreationTime>\\n <FlowLogName>myFlowlog</FlowLogName>\\n <Description>myFlowlog</Description>\\n <ProjectName>FlowLogProject</ProjectName>\\n <CenId>cen-7qthudw0ll6jmc****</CenId>\\n <LogStoreName>FlowLogStore</LogStoreName>\\n <RegionId>cn-hangzhou</RegionId>\\n <FlowLogId>flowlog-m5evbtbpt****</FlowLogId>\\n <Tags>\\n <Key>TagKey</Key>\\n <Value>TagValue</Value>\\n </Tags>\\n </FlowLogs>\\n</DescribeFlowlogsResponse>","errorExample":""}]',
+ 'title' => 'DescribeFlowlogs',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ActiveFlowLog' => [
+ 'summary' => 'Enables a flow log. After the flow log is enabled, the system collects traffic information about a specified resource.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeCode' => '72280',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnKD6E3I',
+ 'FEATUREcbnMGIE06',
+ ],
+ ],
+ '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 client 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 may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the flow log is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the flow log.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'flowlog-m5evbtbpt****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the Cloud Enterprise Network (CEN) instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Success' => [
+ 'description' => 'Indicates whether the call is successful.'."\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' => 'ProjectOrLogstoreNotExist',
+ 'errorMessage' => 'The specified project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'SourceProjectNotExist',
+ 'errorMessage' => 'The Source Project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.action',
+ 'errorMessage' => 'This action is not support.',
+ ],
+ [
+ 'errorCode' => 'RuleExist',
+ 'errorMessage' => 'The rule has already existed.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.FlowlogCount',
+ 'errorMessage' => 'This user has reached the maximum instance number of flowlog.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.exist',
+ 'errorMessage' => 'This cenId already has flowlog instance existed.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.NotFound',
+ 'errorMessage' => 'The specified flowlog id does not exist or does not match the cen Id.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.flowlog',
+ 'errorMessage' => 'Invalid flowlog status.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrFlowlog',
+ 'errorMessage' => 'Flowlog status for specified TransitRouter is invalid for this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.FlowLogId',
+ 'errorMessage' => 'The specified parameter FlowLogId is invalid.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeFlowlogs',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","errorExample":""},{"type":"xml","example":"<ActiveFlowLogResponse>\\n <Success>true</Success>\\n <RequestId>F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1</RequestId>\\n</ActiveFlowLogResponse>","errorExample":""}]',
+ 'title' => 'ActiveFlowLog',
+ 'description' => '* After you create a flow log, it is enabled by default. You can call this operation to enable a disabled flow log.'."\n"
+ ."\n"
+ .'* `ActiveFlowLog` 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` operation to query the status of a flow log.'."\n"
+ ."\n"
+ .' * If a flow log is in the **Modifying** state, the flow log is being enabled. In this case, you can query the flow log but cannot perform other operations.'."\n"
+ .' * If a flow log is in the **Active** state, the flow log is enabled.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'DeactiveFlowLog' => [
+ 'summary' => 'Disables a flow log. A disabled flow log no longer captures information about network traffic.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '72312',
+ 'abilityTreeNodes' => [
+ 'FEATUREcbnKD6E3I',
+ 'FEATUREcbnMGIE06',
+ ],
+ ],
+ '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. 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 is different.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the flow log is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeChildInstanceRegions](~~132080~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'FlowLogId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the flow log.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'flowlog-m5evbtbpt****',
+ ],
+ ],
+ [
+ 'name' => 'CenId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ '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' => 'ProjectOrLogstoreNotExist',
+ 'errorMessage' => 'The specified project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'SourceProjectNotExist',
+ 'errorMessage' => 'The Source Project or logstore does not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationUnsupported.action',
+ 'errorMessage' => 'This action is not support.',
+ ],
+ [
+ 'errorCode' => 'RuleExist',
+ 'errorMessage' => 'The rule has already existed.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.FlowlogCount',
+ 'errorMessage' => 'This user has reached the maximum instance number of flowlog.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.exist',
+ 'errorMessage' => 'This cenId already has flowlog instance existed.',
+ ],
+ [
+ 'errorCode' => 'InvalidFlowlogId.NotFound',
+ 'errorMessage' => 'The specified flowlog id does not exist or does not match the cen Id.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.flowlog',
+ 'errorMessage' => 'Invalid flowlog status.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.TrFlowlog',
+ 'errorMessage' => 'Flowlog status for specified TransitRouter is invalid for this operation.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.FlowLogId',
+ 'errorMessage' => 'The specified parameter FlowLogId is invalid.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Cbn::2017-09-12::DescribeFlowlogs',
+ 'callbackInterval' => 5000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Success\\": \\"true\\",\\n \\"RequestId\\": \\"F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1\\"\\n}","errorExample":""},{"type":"xml","example":"<DeactiveFlowLogResponse>\\n <Success>true</Success>\\n <RequestId>F7DDDC17-FA06-4AC2-8F35-59D2470FCFC1</RequestId>\\n</DeactiveFlowLogResponse>","errorExample":""}]',
+ 'title' => 'DeactiveFlowLog',
+ 'description' => '`DeactiveFlowLog` 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` operation to query the status of a flow log.'."\n"
+ ."\n"
+ .'* If a flow log is in the **Modifying** state, the flow log is being disabled. You can query the flow log but cannot perform other operations.'."\n"
+ .'* If a flow log is in the **Inactive** state, the flow log is disabled.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'ListTagResources' => [
+ 'summary' => 'Queries the information about tags that are added to a Cloud Enterprise Network (CEN) instance.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the resource to which you want to add the tag. Valid values:'."\n"
+ ."\n"
+ .'**Cen**: CEN instance'."\n"
+ ."\n"
+ .'**BandwidthPackage**: bandwidth plan'."\n"
+ ."\n"
+ .'**TransitRouter**: transit router'."\n"
+ ."\n"
+ .'**TransitRouterVpcAttachment**: virtual private cloud (VPC) connection'."\n"
+ ."\n"
+ .'**TransitRouterVbrAttachment**: virtual border router (VBR) connection'."\n"
+ ."\n"
+ .'**TransitRouterPeerAttachment**: inter-region connection'."\n"
+ ."\n"
+ .'**TransitRouterVpnAttachment**: VPN connection'."\n"
+ ."\n"
+ .'**TransitRouterRouteTable**: route table'."\n"
+ ."\n"
+ .'**Flowlog**: flow log'."\n"
+ ."\n"
+ .'**TransitRouterMulticastDomain**: multicast domain'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the 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' => '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',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the CEN instances.'."\n"
+ ."\n"
+ .'You can specify at most 20 IDs in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the CEN instances.'."\n"
+ ."\n"
+ .'You can specify at most 20 IDs in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-8z69wtwqel33lq****',
+ ],
+ 'required' => false,
+ 'example' => 'cen-8z69wtwqel33lq****',
+ 'maxItems' => 21,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The information about the tags that are added to the CEN instance.'."\n"
+ ."\n"
+ .'You can query at most 20 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the tags that are added to the CEN instance.'."\n"
+ ."\n"
+ .'You can query at most 20 tags in each call.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key cannot exceed 64 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag keys.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value cannot exceed 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n"
+ ."\n"
+ .'You can specify at most 20 tag values.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Bp',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 21,
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region where the resource is deployed.'."\n"
+ ."\n"
+ .'You can ignore this parameter if ResourceType is set to Cen or BandwidthPackage.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => 'The response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'NextToken' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** was not returned, it indicates that no additional results exist.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '165B5C86-2033-5954-A89D-4CD83BA06C85',
+ ],
+ 'TagResources' => [
+ 'type' => 'object',
+ 'itemNode' => true,
+ 'properties' => [
+ 'TagResource' => [
+ 'description' => 'A list of resources and tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'ResourceType' => [
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'**Cen**: CEN instance'."\n"
+ ."\n"
+ .'**BandwidthPackage**: bandwidth plan'."\n"
+ ."\n"
+ .'**TransitRouter**: transit router'."\n"
+ ."\n"
+ .'**TransitRouterVpcAttachment**: virtual private cloud (VPC) connection'."\n"
+ ."\n"
+ .'**TransitRouterVbrAttachment**: virtual border router (VBR) connection'."\n"
+ ."\n"
+ .'**TransitRouterPeerAttachment**: inter-region connection'."\n"
+ ."\n"
+ .'**TransitRouterVpnAttachment**: VPN connection'."\n"
+ ."\n"
+ .'**TransitRouterRouteTable**: route table'."\n"
+ ."\n"
+ .'**Flowlog**: flow log'."\n"
+ ."\n"
+ .'**TransitRouterMulticastDomain**: multicast domain'."\n",
+ 'type' => 'string',
+ 'example' => 'CEN',
+ ],
+ 'TagValue' => [
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'Bp',
+ ],
+ 'ResourceId' => [
+ 'description' => 'The ID of the CEN instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cen-8z69wtwqel33lq****',
+ ],
+ 'TagKey' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ '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' => 'SizeLimitExceeded.ResourceIdNum',
+ 'errorMessage' => 'The ResourceIds parameter\'s number is exceed , Valid : 20',
+ ],
+ [
+ 'errorCode' => 'BothEmpty.TagsAndResources',
+ 'errorMessage' => 'Both of Tags and ResourceIds is empty.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.NextToken',
+ 'errorMessage' => 'The parameter NextToken is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified region is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"165B5C86-2033-5954-A89D-4CD83BA06C85\\",\\n \\"TagResources\\": {\\n \\"TagResource\\": [\\n {\\n \\"ResourceType\\": \\"CEN\\",\\n \\"TagValue\\": \\"Bp\\",\\n \\"ResourceId\\": \\"cen-8z69wtwqel33lq****\\",\\n \\"TagKey\\": \\"test\\"\\n }\\n ]\\n }\\n}","type":"json"}]',
+ 'title' => 'ListTagResources',
+ 'description' => 'To call this operation, you must set at least one of **ResourceId.N** and **Tag.N.Key**.'."\n"
+ ."\n"
+ .'* If you set only **ResourceId.N**, the tags that are added to the specified CEN instances are returned.'."\n"
+ ."\n"
+ .'* If you set only **Tag.N.Key**, the CEN instances that have the specified tags are returned.'."\n"
+ ."\n"
+ .'* If you set both **ResourceId.N** and **Tag.N.Key**, the specified tags that are added to the specified CEN instances are returned.'."\n"
+ ."\n"
+ .' * Make sure that the CEN instance specified by **ResourceId.N** has the tag specified by **Tag.N.Key**. Otherwise, the response returns null.'."\n"
+ .' * If multiple tag keys are specified, the logical operator among these tag keys is **AND**.'."\n",
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'TagResources' => [
+ 'summary' => 'Creates tags and adds them to a resource.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The type of the resource. Set the value to **cen**, which specifies a CEN instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'enumValueTitles' => [],
+ 'example' => 'cen',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The IDs of the resources. You can enter most at 20 resource IDs.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the resource.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-pfa6ugf3xl0qsd****',
+ ],
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ 'maxItems' => 21,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => 'The list of tags that you want to associate with the resources.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'You can enter multiple tag keys. Valid values of **N**: **1** to **20**.'."\n"
+ ."\n"
+ .'The key cannot exceed 64 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'TagKey',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'Each tag key corresponds to a tag value. Valid values of **N**: **1** to **20**.'."\n"
+ ."\n"
+ .'The value cannot exceed 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'TagValue',
+ ],
+ ],
+ 'required' => true,
+ 'docRequired' => true,
+ ],
+ 'required' => true,
+ 'docRequired' => true,
+ 'maxItems' => 21,
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the region.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The ID of the request.'."\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' => 'SizeLimitExceeded.ResourceIdNum',
+ 'errorMessage' => 'The ResourceIds parameter\'s number is exceed , Valid : 20',
+ ],
+ [
+ 'errorCode' => 'MissingParameter.TagValue',
+ 'errorMessage' => 'The specified parameter TagValue is missing',
+ ],
+ [
+ 'errorCode' => 'DuplicatedParam.TagKey',
+ 'errorMessage' => 'The parameter TagKey is duplicated.',
+ ],
+ [
+ 'errorCode' => 'IllegalParamLength.Tag',
+ 'errorMessage' => 'The specified length of Tag is invalid.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified region is invalid.',
+ ],
+ [
+ 'errorCode' => 'MissingParameter.TagKey',
+ 'errorMessage' => 'TagKey must be specified.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C46FF5A8-C5F0-4024-8262-B16B639225A0\\"\\n}","errorExample":""},{"type":"xml","example":"<TagResourcesResponse>\\r\\n <RequestId>C46FF5A8-C5F0-4024-8262-B16B639225A0</RequestId>\\r\\n</TagResourcesResponse>","errorExample":""}]',
+ 'title' => 'TagResources',
+ 'description' => '* Each tag consists of a tag key and a tag value. When you add a tag, you must specify the tag key and tag value.'."\n"
+ .'* If you want to add multiple tags to a Cloud Enterprise Network (CEN) instance, each tag key must be unique.'."\n"
+ .'* You can add at most 20 tags to a CEN instance.',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ 'UntagResources' => [
+ 'summary' => 'Remove 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' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'cen',
+ ],
+ ],
+ [
+ 'name' => 'All',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ ],
+ 'required' => true,
+ 'example' => 'cen-7qthudw0ll6jmc****',
+ 'maxItems' => 21,
+ ],
+ ],
+ [
+ 'name' => 'TagKey',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Name',
+ ],
+ 'required' => false,
+ 'example' => 'FinanceDept',
+ 'maxItems' => 21,
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => '',
+ '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' => 'SizeLimitExceeded.ResourceIdNum',
+ 'errorMessage' => 'The ResourceIds parameter\'s number is exceed , Valid : 20',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Region',
+ 'errorMessage' => 'The specified region is invalid.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter.',
+ ],
+ [
+ 'errorCode' => 'Unauthorized',
+ 'errorMessage' => 'The AccessKeyId is unauthorized.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter.TagKeyOrAll',
+ 'errorMessage' => 'The specified parameter TagKey or All is invalid.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C46FF5A8-C5F0-4024-8262-B16B639225A0\\\\t\\"\\n}","errorExample":""},{"type":"xml","example":"<UntagResourcesResponse>\\r\\n <RequestId>C46FF5A8-C5F0-4024-8262-B16B639225A0</RequestId>\\r\\n</UntagResourcesResponse>","errorExample":""}]',
+ 'title' => 'UntagResources',
+ 'requestParamsDescription' => ' ',
+ 'responseParamsDescription' => ' ',
+ 'extraInfo' => ' ',
+ ],
+ ],
+ 'endpoints' => [
+ [
+ 'regionId' => 'ap-southeast-8-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'rus-west-1',
+ 'endpoint' => 'cbn-share.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-beijing-finance-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'us-east-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-guangzhou',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'sa-east-1-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wulanchabu-test-5',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shanghai-cloudspe',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-5',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wuhan-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'me-central-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wulanchabu-test-2',
+ 'endpoint' => 'cbn-test-pre.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-beijing',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shanghai-ant',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-qingdao',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-zhangjiakou-spe',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-south-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-huhehaote-test-3',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-huhehaote-nebula-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wulanchabu',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wuhan',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-3',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-nantong',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shanghai-finance-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou-onebox-nebula',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-qingdao-acdr-ut-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wulanchabu-test-6',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-chengdu-ant',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shenzhen',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-taiyuan',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'us-west-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-heyuan',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-7-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-taiwan-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'rus-west-1-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'eu-central-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-huhehaote',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-xian',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'eu-west-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-zhangjiakou',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-6',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'rsa-north-1-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou-internal-test-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou-internal-test-2',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shanghai',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-north-2-gov-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou-acdr-ut-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-beijing-finance-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-2',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-northeast-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hongkong',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wulanchabu-acdr-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shenzhen-finance-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou-internal-test-3',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-6-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-northeast-2-pop',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-chengdu',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-chengdu-smarthosting-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-huhehaote-test-4',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'na-south-1',
+ 'endpoint' => 'cbn.aliyuncs.com',
+ ],
+ ],
+];