<?php
// This file was auto-generated from sdk-root/src/data/appmesh/2019-01-25/api-2.json
return [
	'version'    => '2.0',
	'metadata'   => [
		'apiVersion'       => '2019-01-25',
		'endpointPrefix'   => 'appmesh',
		'jsonVersion'      => '1.1',
		'protocol'         => 'rest-json',
		'serviceFullName'  => 'AWS App Mesh',
		'serviceId'        => 'App Mesh',
		'signatureVersion' => 'v4',
		'signingName'      => 'appmesh',
		'uid'              => 'appmesh-2019-01-25',
	],
	'operations' => [
		'CreateMesh'             => [
			'name'       => 'CreateMesh',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'CreateMeshInput', ],
			'output'     => [ 'shape' => 'CreateMeshOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'CreateRoute'            => [
			'name'       => 'CreateRoute',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'CreateRouteInput', ],
			'output'     => [ 'shape' => 'CreateRouteOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'CreateVirtualNode'      => [
			'name'       => 'CreateVirtualNode',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualNodes',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'CreateVirtualNodeInput', ],
			'output'     => [ 'shape' => 'CreateVirtualNodeOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'CreateVirtualRouter'    => [
			'name'       => 'CreateVirtualRouter',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouters',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'CreateVirtualRouterInput', ],
			'output'     => [ 'shape' => 'CreateVirtualRouterOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'CreateVirtualService'   => [
			'name'       => 'CreateVirtualService',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualServices',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'CreateVirtualServiceInput', ],
			'output'     => [ 'shape' => 'CreateVirtualServiceOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'DeleteMesh'             => [
			'name'       => 'DeleteMesh',
			'http'       => [
				'method'       => 'DELETE',
				'requestUri'   => '/v20190125/meshes/{meshName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'DeleteMeshInput', ],
			'output'     => [ 'shape' => 'DeleteMeshOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ResourceInUseException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'DeleteRoute'            => [
			'name'       => 'DeleteRoute',
			'http'       => [
				'method'       => 'DELETE',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'DeleteRouteInput', ],
			'output'     => [ 'shape' => 'DeleteRouteOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ResourceInUseException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'DeleteVirtualNode'      => [
			'name'       => 'DeleteVirtualNode',
			'http'       => [
				'method'       => 'DELETE',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'DeleteVirtualNodeInput', ],
			'output'     => [ 'shape' => 'DeleteVirtualNodeOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ResourceInUseException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'DeleteVirtualRouter'    => [
			'name'       => 'DeleteVirtualRouter',
			'http'       => [
				'method'       => 'DELETE',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'DeleteVirtualRouterInput', ],
			'output'     => [ 'shape' => 'DeleteVirtualRouterOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ResourceInUseException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'DeleteVirtualService'   => [
			'name'       => 'DeleteVirtualService',
			'http'       => [
				'method'       => 'DELETE',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'DeleteVirtualServiceInput', ],
			'output'     => [ 'shape' => 'DeleteVirtualServiceOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'DescribeMesh'           => [
			'name'   => 'DescribeMesh',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'DescribeMeshInput', ],
			'output' => [ 'shape' => 'DescribeMeshOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'DescribeRoute'          => [
			'name'   => 'DescribeRoute',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'DescribeRouteInput', ],
			'output' => [ 'shape' => 'DescribeRouteOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'DescribeVirtualNode'    => [
			'name'   => 'DescribeVirtualNode',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'DescribeVirtualNodeInput', ],
			'output' => [ 'shape' => 'DescribeVirtualNodeOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'DescribeVirtualRouter'  => [
			'name'   => 'DescribeVirtualRouter',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'DescribeVirtualRouterInput', ],
			'output' => [ 'shape' => 'DescribeVirtualRouterOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'DescribeVirtualService' => [
			'name'   => 'DescribeVirtualService',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'DescribeVirtualServiceInput', ],
			'output' => [ 'shape' => 'DescribeVirtualServiceOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'ListMeshes'             => [
			'name'   => 'ListMeshes',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'ListMeshesInput', ],
			'output' => [ 'shape' => 'ListMeshesOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'ListRoutes'             => [
			'name'   => 'ListRoutes',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'ListRoutesInput', ],
			'output' => [ 'shape' => 'ListRoutesOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'ListTagsForResource'    => [
			'name'   => 'ListTagsForResource',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/tags',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'ListTagsForResourceInput', ],
			'output' => [ 'shape' => 'ListTagsForResourceOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
			],
		],
		'ListVirtualNodes'       => [
			'name'   => 'ListVirtualNodes',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualNodes',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'ListVirtualNodesInput', ],
			'output' => [ 'shape' => 'ListVirtualNodesOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'ListVirtualRouters'     => [
			'name'   => 'ListVirtualRouters',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouters',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'ListVirtualRoutersInput', ],
			'output' => [ 'shape' => 'ListVirtualRoutersOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'ListVirtualServices'    => [
			'name'   => 'ListVirtualServices',
			'http'   => [
				'method'       => 'GET',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualServices',
				'responseCode' => 200,
			],
			'input'  => [ 'shape' => 'ListVirtualServicesInput', ],
			'output' => [ 'shape' => 'ListVirtualServicesOutput', ],
			'errors' => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
		],
		'TagResource'            => [
			'name'       => 'TagResource',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/tag',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'TagResourceInput', ],
			'output'     => [ 'shape' => 'TagResourceOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyTagsException', ],
			],
			'idempotent' => true,
		],
		'UntagResource'          => [
			'name'       => 'UntagResource',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/untag',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'UntagResourceInput', ],
			'output'     => [ 'shape' => 'UntagResourceOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
			],
			'idempotent' => true,
		],
		'UpdateMesh'             => [
			'name'       => 'UpdateMesh',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'UpdateMeshInput', ],
			'output'     => [ 'shape' => 'UpdateMeshOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'UpdateRoute'            => [
			'name'       => 'UpdateRoute',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'UpdateRouteInput', ],
			'output'     => [ 'shape' => 'UpdateRouteOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'UpdateVirtualNode'      => [
			'name'       => 'UpdateVirtualNode',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'UpdateVirtualNodeInput', ],
			'output'     => [ 'shape' => 'UpdateVirtualNodeOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'UpdateVirtualRouter'    => [
			'name'       => 'UpdateVirtualRouter',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'UpdateVirtualRouterInput', ],
			'output'     => [ 'shape' => 'UpdateVirtualRouterOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
		'UpdateVirtualService'   => [
			'name'       => 'UpdateVirtualService',
			'http'       => [
				'method'       => 'PUT',
				'requestUri'   => '/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}',
				'responseCode' => 200,
			],
			'input'      => [ 'shape' => 'UpdateVirtualServiceInput', ],
			'output'     => [ 'shape' => 'UpdateVirtualServiceOutput', ],
			'errors'     => [
				[ 'shape' => 'BadRequestException', ],
				[ 'shape' => 'ConflictException', ],
				[ 'shape' => 'ForbiddenException', ],
				[ 'shape' => 'InternalServerErrorException', ],
				[ 'shape' => 'LimitExceededException', ],
				[ 'shape' => 'NotFoundException', ],
				[ 'shape' => 'ServiceUnavailableException', ],
				[ 'shape' => 'TooManyRequestsException', ],
			],
			'idempotent' => true,
		],
	],
	'shapes'     => [
		'VirtualRouterListener'             => [
			'type'     => 'structure',
			'required' => [ 'portMapping', ],
			'members'  => [ 'portMapping' => [ 'shape' => 'PortMapping', ], ],
		],
		'UpdateVirtualNodeInput'            => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'spec', 'virtualNodeName', ],
			'members'  => [
				'clientToken'     => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'        => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'spec'            => [ 'shape' => 'VirtualNodeSpec', ],
				'virtualNodeName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualNodeName',
				],
			],
		],
		'DeleteMeshInput'                   => [
			'type'     => 'structure',
			'required' => [ 'meshName', ],
			'members'  => [
				'meshName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
			],
		],
		'CreateVirtualServiceInput'         => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'spec', 'virtualServiceName', ],
			'members'  => [
				'clientToken'        => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'           => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'spec'               => [ 'shape' => 'VirtualServiceSpec', ],
				'tags'               => [ 'shape' => 'TagList', ],
				'virtualServiceName' => [ 'shape' => 'ServiceName', ],
			],
		],
		'VirtualRouterStatusCode'           => [ 'type' => 'string', 'enum' => [ 'ACTIVE', 'DELETED', 'INACTIVE', ], ],
		'UpdateVirtualRouterInput'          => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'spec', 'virtualRouterName', ],
			'members'  => [
				'clientToken'       => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'spec'              => [ 'shape' => 'VirtualRouterSpec', ],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'TagKeyList'                        => [
			'type'   => 'list',
			'member' => [ 'shape' => 'TagKey', ],
			'min'    => 0,
			'max'    => 50,
		],
		'ListTagsForResourceInput'          => [
			'type'     => 'structure',
			'required' => [ 'resourceArn', ],
			'members'  => [
				'limit'       => [
					'shape'        => 'TagsLimit',
					'location'     => 'querystring',
					'locationName' => 'limit',
				],
				'nextToken'   => [
					'shape'        => 'String',
					'location'     => 'querystring',
					'locationName' => 'nextToken',
				],
				'resourceArn' => [
					'shape'        => 'Arn',
					'location'     => 'querystring',
					'locationName' => 'resourceArn',
				],
			],
		],
		'CreateVirtualNodeOutput'           => [
			'type'     => 'structure',
			'required' => [ 'virtualNode', ],
			'members'  => [ 'virtualNode' => [ 'shape' => 'VirtualNodeData', ], ],
			'payload'  => 'virtualNode',
		],
		'Logging'                           => [
			'type'    => 'structure',
			'members' => [ 'accessLog' => [ 'shape' => 'AccessLog', ], ],
		],
		'ServiceUnavailableException'       => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'ServiceUnavailableException',
				'httpStatusCode' => 503,
				'fault'          => true,
			],
		],
		'Long'                              => [ 'type' => 'long', 'box' => true, ],
		'UpdateVirtualRouterOutput'         => [
			'type'     => 'structure',
			'required' => [ 'virtualRouter', ],
			'members'  => [ 'virtualRouter' => [ 'shape' => 'VirtualRouterData', ], ],
			'payload'  => 'virtualRouter',
		],
		'DescribeMeshOutput'                => [
			'type'     => 'structure',
			'required' => [ 'mesh', ],
			'members'  => [ 'mesh' => [ 'shape' => 'MeshData', ], ],
			'payload'  => 'mesh',
		],
		'DeleteVirtualRouterInput'          => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'virtualRouterName', ],
			'members'  => [
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'ListVirtualRoutersOutput'          => [
			'type'     => 'structure',
			'required' => [ 'virtualRouters', ],
			'members'  => [
				'nextToken'      => [ 'shape' => 'String', ],
				'virtualRouters' => [ 'shape' => 'VirtualRouterList', ],
			],
		],
		'DescribeRouteInput'                => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'routeName', 'virtualRouterName', ],
			'members'  => [
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'routeName'         => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'routeName',
				],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'DeleteRouteOutput'                 => [
			'type'     => 'structure',
			'required' => [ 'route', ],
			'members'  => [ 'route' => [ 'shape' => 'RouteData', ], ],
			'payload'  => 'route',
		],
		'ResourceMetadata'                  => [
			'type'     => 'structure',
			'required' => [ 'arn', 'createdAt', 'lastUpdatedAt', 'uid', 'version', ],
			'members'  => [
				'arn'           => [ 'shape' => 'Arn', ],
				'createdAt'     => [ 'shape' => 'Timestamp', ],
				'lastUpdatedAt' => [ 'shape' => 'Timestamp', ],
				'uid'           => [ 'shape' => 'String', ],
				'version'       => [ 'shape' => 'Long', ],
			],
		],
		'Listeners'                         => [
			'type'   => 'list',
			'member' => [ 'shape' => 'Listener', ],
			'min'    => 0,
			'max'    => 1,
		],
		'Backends'                          => [
			'type'   => 'list',
			'member' => [ 'shape' => 'Backend', ],
			'min'    => 0,
			'max'    => 25,
		],
		'ResourceInUseException'            => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'ResourceInUseException',
				'httpStatusCode' => 409,
				'senderFault'    => true,
			],
		],
		'PortProtocol'                      => [ 'type' => 'string', 'enum' => [ 'http', 'tcp', ], ],
		'UpdateVirtualNodeOutput'           => [
			'type'     => 'structure',
			'required' => [ 'virtualNode', ],
			'members'  => [ 'virtualNode' => [ 'shape' => 'VirtualNodeData', ], ],
			'payload'  => 'virtualNode',
		],
		'ListRoutesOutput'                  => [
			'type'     => 'structure',
			'required' => [ 'routes', ],
			'members'  => [
				'nextToken' => [ 'shape' => 'String', ],
				'routes'    => [ 'shape' => 'RouteList', ],
			],
		],
		'VirtualServiceBackend'             => [
			'type'     => 'structure',
			'required' => [ 'virtualServiceName', ],
			'members'  => [ 'virtualServiceName' => [ 'shape' => 'ServiceName', ], ],
		],
		'VirtualNodeStatusCode'             => [ 'type' => 'string', 'enum' => [ 'ACTIVE', 'DELETED', 'INACTIVE', ], ],
		'ServiceName'                       => [ 'type' => 'string', ],
		'BadRequestException'               => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'BadRequestException',
				'httpStatusCode' => 400,
				'senderFault'    => true,
			],
		],
		'UpdateVirtualServiceInput'         => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'spec', 'virtualServiceName', ],
			'members'  => [
				'clientToken'        => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'           => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'spec'               => [ 'shape' => 'VirtualServiceSpec', ],
				'virtualServiceName' => [
					'shape'        => 'ServiceName',
					'location'     => 'uri',
					'locationName' => 'virtualServiceName',
				],
			],
		],
		'HealthCheckThreshold'              => [ 'type' => 'integer', 'min' => 2, 'max' => 10, ],
		'UpdateRouteOutput'                 => [
			'type'     => 'structure',
			'required' => [ 'route', ],
			'members'  => [ 'route' => [ 'shape' => 'RouteData', ], ],
			'payload'  => 'route',
		],
		'PercentInt'                        => [ 'type' => 'integer', 'min' => 0, 'max' => 100, ],
		'TagValue'                          => [ 'type' => 'string', 'min' => 0, 'max' => 256, ],
		'HttpRouteAction'                   => [
			'type'     => 'structure',
			'required' => [ 'weightedTargets', ],
			'members'  => [ 'weightedTargets' => [ 'shape' => 'WeightedTargets', ], ],
		],
		'ListRoutesInput'                   => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'virtualRouterName', ],
			'members'  => [
				'limit'             => [
					'shape'        => 'ListRoutesLimit',
					'location'     => 'querystring',
					'locationName' => 'limit',
				],
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'nextToken'         => [
					'shape'        => 'String',
					'location'     => 'querystring',
					'locationName' => 'nextToken',
				],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'HealthCheckPolicy'                 => [
			'type'     => 'structure',
			'required' => [
				'healthyThreshold',
				'intervalMillis',
				'protocol',
				'timeoutMillis',
				'unhealthyThreshold',
			],
			'members'  => [
				'healthyThreshold'   => [ 'shape' => 'HealthCheckThreshold', ],
				'intervalMillis'     => [ 'shape' => 'HealthCheckIntervalMillis', ],
				'path'               => [ 'shape' => 'String', ],
				'port'               => [ 'shape' => 'PortNumber', ],
				'protocol'           => [ 'shape' => 'PortProtocol', ],
				'timeoutMillis'      => [ 'shape' => 'HealthCheckTimeoutMillis', ],
				'unhealthyThreshold' => [ 'shape' => 'HealthCheckThreshold', ],
			],
		],
		'VirtualServiceRef'                 => [
			'type'     => 'structure',
			'required' => [ 'arn', 'meshName', 'virtualServiceName', ],
			'members'  => [
				'arn'                => [ 'shape' => 'Arn', ],
				'meshName'           => [ 'shape' => 'ResourceName', ],
				'virtualServiceName' => [ 'shape' => 'ServiceName', ],
			],
		],
		'EgressFilter'                      => [
			'type'     => 'structure',
			'required' => [ 'type', ],
			'members'  => [ 'type' => [ 'shape' => 'EgressFilterType', ], ],
		],
		'VirtualServiceList'                => [ 'type' => 'list', 'member' => [ 'shape' => 'VirtualServiceRef', ], ],
		'VirtualNodeStatus'                 => [
			'type'     => 'structure',
			'required' => [ 'status', ],
			'members'  => [ 'status' => [ 'shape' => 'VirtualNodeStatusCode', ], ],
		],
		'VirtualRouterRef'                  => [
			'type'     => 'structure',
			'required' => [ 'arn', 'meshName', 'virtualRouterName', ],
			'members'  => [
				'arn'               => [ 'shape' => 'Arn', ],
				'meshName'          => [ 'shape' => 'ResourceName', ],
				'virtualRouterName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'VirtualServiceData'                => [
			'type'     => 'structure',
			'required' => [
				'meshName',
				'metadata',
				'spec',
				'status',
				'virtualServiceName',
			],
			'members'  => [
				'meshName'           => [ 'shape' => 'ResourceName', ],
				'metadata'           => [ 'shape' => 'ResourceMetadata', ],
				'spec'               => [ 'shape' => 'VirtualServiceSpec', ],
				'status'             => [ 'shape' => 'VirtualServiceStatus', ],
				'virtualServiceName' => [ 'shape' => 'ServiceName', ],
			],
		],
		'DescribeVirtualServiceOutput'      => [
			'type'     => 'structure',
			'required' => [ 'virtualService', ],
			'members'  => [ 'virtualService' => [ 'shape' => 'VirtualServiceData', ], ],
			'payload'  => 'virtualService',
		],
		'FilePath'                          => [ 'type' => 'string', 'min' => 1, 'max' => 255, ],
		'AwsCloudMapInstanceAttributes'     => [
			'type'   => 'list',
			'member' => [ 'shape' => 'AwsCloudMapInstanceAttribute', ],
		],
		'VirtualNodeRef'                    => [
			'type'     => 'structure',
			'required' => [ 'arn', 'meshName', 'virtualNodeName', ],
			'members'  => [
				'arn'             => [ 'shape' => 'Arn', ],
				'meshName'        => [ 'shape' => 'ResourceName', ],
				'virtualNodeName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'CreateMeshInput'                   => [
			'type'     => 'structure',
			'required' => [ 'meshName', ],
			'members'  => [
				'clientToken' => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'    => [ 'shape' => 'ResourceName', ],
				'spec'        => [ 'shape' => 'MeshSpec', ],
				'tags'        => [ 'shape' => 'TagList', ],
			],
		],
		'DescribeVirtualNodeOutput'         => [
			'type'     => 'structure',
			'required' => [ 'virtualNode', ],
			'members'  => [ 'virtualNode' => [ 'shape' => 'VirtualNodeData', ], ],
			'payload'  => 'virtualNode',
		],
		'AwsCloudMapName'                   => [
			'type'    => 'string',
			'min'     => 1,
			'max'     => 1024,
			'pattern' => '((?=^.{1,127}$)^([a-zA-Z0-9_][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9_]|[a-zA-Z0-9])(.([a-zA-Z0-9_][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9_]|[a-zA-Z0-9]))*$)|(^.$)',
		],
		'LimitExceededException'            => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'LimitExceededException',
				'httpStatusCode' => 400,
				'senderFault'    => true,
			],
		],
		'UpdateMeshOutput'                  => [
			'type'     => 'structure',
			'required' => [ 'mesh', ],
			'members'  => [ 'mesh' => [ 'shape' => 'MeshData', ], ],
			'payload'  => 'mesh',
		],
		'CreateRouteOutput'                 => [
			'type'     => 'structure',
			'required' => [ 'route', ],
			'members'  => [ 'route' => [ 'shape' => 'RouteData', ], ],
			'payload'  => 'route',
		],
		'DnsServiceDiscovery'               => [
			'type'     => 'structure',
			'required' => [ 'hostname', ],
			'members'  => [ 'hostname' => [ 'shape' => 'Hostname', ], ],
		],
		'DescribeVirtualServiceInput'       => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'virtualServiceName', ],
			'members'  => [
				'meshName'           => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'virtualServiceName' => [
					'shape'        => 'ServiceName',
					'location'     => 'uri',
					'locationName' => 'virtualServiceName',
				],
			],
		],
		'ListVirtualServicesLimit'          => [ 'type' => 'integer', 'box' => true, 'min' => 1, 'max' => 100, ],
		'DeleteRouteInput'                  => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'routeName', 'virtualRouterName', ],
			'members'  => [
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'routeName'         => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'routeName',
				],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'VirtualNodeData'                   => [
			'type'     => 'structure',
			'required' => [
				'meshName',
				'metadata',
				'spec',
				'status',
				'virtualNodeName',
			],
			'members'  => [
				'meshName'        => [ 'shape' => 'ResourceName', ],
				'metadata'        => [ 'shape' => 'ResourceMetadata', ],
				'spec'            => [ 'shape' => 'VirtualNodeSpec', ],
				'status'          => [ 'shape' => 'VirtualNodeStatus', ],
				'virtualNodeName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'UntagResourceOutput'               => [ 'type' => 'structure', 'members' => [], ],
		'AwsCloudMapInstanceAttribute'      => [
			'type'     => 'structure',
			'required' => [ 'key', 'value', ],
			'members'  => [
				'key'   => [ 'shape' => 'AwsCloudMapInstanceAttributeKey', ],
				'value' => [ 'shape' => 'AwsCloudMapInstanceAttributeValue', ],
			],
		],
		'VirtualServiceSpec'                => [
			'type'    => 'structure',
			'members' => [ 'provider' => [ 'shape' => 'VirtualServiceProvider', ], ],
		],
		'Backend'                           => [
			'type'    => 'structure',
			'members' => [ 'virtualService' => [ 'shape' => 'VirtualServiceBackend', ], ],
		],
		'ListVirtualRoutersLimit'           => [ 'type' => 'integer', 'box' => true, 'min' => 1, 'max' => 100, ],
		'HealthCheckIntervalMillis'         => [ 'type' => 'long', 'box' => true, 'min' => 5000, 'max' => 300000, ],
		'VirtualRouterList'                 => [ 'type' => 'list', 'member' => [ 'shape' => 'VirtualRouterRef', ], ],
		'ListMeshesInput'                   => [
			'type'    => 'structure',
			'members' => [
				'limit'     => [
					'shape'        => 'ListMeshesLimit',
					'location'     => 'querystring',
					'locationName' => 'limit',
				],
				'nextToken' => [
					'shape'        => 'String',
					'location'     => 'querystring',
					'locationName' => 'nextToken',
				],
			],
		],
		'Arn'                               => [ 'type' => 'string', ],
		'TcpRoute'                          => [
			'type'     => 'structure',
			'required' => [ 'action', ],
			'members'  => [ 'action' => [ 'shape' => 'TcpRouteAction', ], ],
		],
		'VirtualNodeList'                   => [ 'type' => 'list', 'member' => [ 'shape' => 'VirtualNodeRef', ], ],
		'ListVirtualRoutersInput'           => [
			'type'     => 'structure',
			'required' => [ 'meshName', ],
			'members'  => [
				'limit'     => [
					'shape'        => 'ListVirtualRoutersLimit',
					'location'     => 'querystring',
					'locationName' => 'limit',
				],
				'meshName'  => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'nextToken' => [
					'shape'        => 'String',
					'location'     => 'querystring',
					'locationName' => 'nextToken',
				],
			],
		],
		'VirtualRouterData'                 => [
			'type'     => 'structure',
			'required' => [
				'meshName',
				'metadata',
				'spec',
				'status',
				'virtualRouterName',
			],
			'members'  => [
				'meshName'          => [ 'shape' => 'ResourceName', ],
				'metadata'          => [ 'shape' => 'ResourceMetadata', ],
				'spec'              => [ 'shape' => 'VirtualRouterSpec', ],
				'status'            => [ 'shape' => 'VirtualRouterStatus', ],
				'virtualRouterName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'UpdateMeshInput'                   => [
			'type'     => 'structure',
			'required' => [ 'meshName', ],
			'members'  => [
				'clientToken' => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'    => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'spec'        => [ 'shape' => 'MeshSpec', ],
			],
		],
		'ListVirtualServicesInput'          => [
			'type'     => 'structure',
			'required' => [ 'meshName', ],
			'members'  => [
				'limit'     => [
					'shape'        => 'ListVirtualServicesLimit',
					'location'     => 'querystring',
					'locationName' => 'limit',
				],
				'meshName'  => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'nextToken' => [
					'shape'        => 'String',
					'location'     => 'querystring',
					'locationName' => 'nextToken',
				],
			],
		],
		'CreateVirtualRouterInput'          => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'spec', 'virtualRouterName', ],
			'members'  => [
				'clientToken'       => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'spec'              => [ 'shape' => 'VirtualRouterSpec', ],
				'tags'              => [ 'shape' => 'TagList', ],
				'virtualRouterName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'AccessLog'                         => [
			'type'    => 'structure',
			'members' => [ 'file' => [ 'shape' => 'FileAccessLog', ], ],
		],
		'ListVirtualNodesInput'             => [
			'type'     => 'structure',
			'required' => [ 'meshName', ],
			'members'  => [
				'limit'     => [
					'shape'        => 'ListVirtualNodesLimit',
					'location'     => 'querystring',
					'locationName' => 'limit',
				],
				'meshName'  => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'nextToken' => [
					'shape'        => 'String',
					'location'     => 'querystring',
					'locationName' => 'nextToken',
				],
			],
		],
		'DescribeVirtualRouterOutput'       => [
			'type'     => 'structure',
			'required' => [ 'virtualRouter', ],
			'members'  => [ 'virtualRouter' => [ 'shape' => 'VirtualRouterData', ], ],
			'payload'  => 'virtualRouter',
		],
		'CreateMeshOutput'                  => [
			'type'     => 'structure',
			'required' => [ 'mesh', ],
			'members'  => [ 'mesh' => [ 'shape' => 'MeshData', ], ],
			'payload'  => 'mesh',
		],
		'CreateVirtualRouterOutput'         => [
			'type'     => 'structure',
			'required' => [ 'virtualRouter', ],
			'members'  => [ 'virtualRouter' => [ 'shape' => 'VirtualRouterData', ], ],
			'payload'  => 'virtualRouter',
		],
		'VirtualServiceStatus'              => [
			'type'     => 'structure',
			'required' => [ 'status', ],
			'members'  => [ 'status' => [ 'shape' => 'VirtualServiceStatusCode', ], ],
		],
		'ListVirtualNodesLimit'             => [ 'type' => 'integer', 'box' => true, 'min' => 1, 'max' => 100, ],
		'HealthCheckTimeoutMillis'          => [ 'type' => 'long', 'box' => true, 'min' => 2000, 'max' => 60000, ],
		'ListMeshesLimit'                   => [ 'type' => 'integer', 'box' => true, 'min' => 1, 'max' => 100, ],
		'ResourceName'                      => [ 'type' => 'string', 'min' => 1, 'max' => 255, ],
		'AwsCloudMapInstanceAttributeKey'   => [
			'type'    => 'string',
			'min'     => 1,
			'max'     => 255,
			'pattern' => '^[a-zA-Z0-9!-~]+$',
		],
		'VirtualRouterSpec'                 => [
			'type'    => 'structure',
			'members' => [ 'listeners' => [ 'shape' => 'VirtualRouterListeners', ], ],
		],
		'TooManyRequestsException'          => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'TooManyRequestsException',
				'httpStatusCode' => 429,
				'senderFault'    => true,
			],
		],
		'Timestamp'                         => [ 'type' => 'timestamp', ],
		'VirtualNodeSpec'                   => [
			'type'    => 'structure',
			'members' => [
				'backends'         => [ 'shape' => 'Backends', ],
				'listeners'        => [ 'shape' => 'Listeners', ],
				'logging'          => [ 'shape' => 'Logging', ],
				'serviceDiscovery' => [ 'shape' => 'ServiceDiscovery', ],
			],
		],
		'ListMeshesOutput'                  => [
			'type'     => 'structure',
			'required' => [ 'meshes', ],
			'members'  => [
				'meshes'    => [ 'shape' => 'MeshList', ],
				'nextToken' => [ 'shape' => 'String', ],
			],
		],
		'VirtualRouterListeners'            => [
			'type'   => 'list',
			'member' => [ 'shape' => 'VirtualRouterListener', ],
			'min'    => 1,
			'max'    => 1,
		],
		'ConflictException'                 => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'ConflictException',
				'httpStatusCode' => 409,
				'senderFault'    => true,
			],
		],
		'DescribeRouteOutput'               => [
			'type'     => 'structure',
			'required' => [ 'route', ],
			'members'  => [ 'route' => [ 'shape' => 'RouteData', ], ],
			'payload'  => 'route',
		],
		'HttpRouteMatch'                    => [
			'type'     => 'structure',
			'required' => [ 'prefix', ],
			'members'  => [ 'prefix' => [ 'shape' => 'String', ], ],
		],
		'MeshList'                          => [ 'type' => 'list', 'member' => [ 'shape' => 'MeshRef', ], ],
		'TagRef'                            => [
			'type'     => 'structure',
			'required' => [ 'key', ],
			'members'  => [
				'key'   => [ 'shape' => 'TagKey', ],
				'value' => [ 'shape' => 'TagValue', ],
			],
		],
		'MeshRef'                           => [
			'type'     => 'structure',
			'required' => [ 'arn', 'meshName', ],
			'members'  => [
				'arn'      => [ 'shape' => 'Arn', ],
				'meshName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'MeshStatusCode'                    => [ 'type' => 'string', 'enum' => [ 'ACTIVE', 'DELETED', 'INACTIVE', ], ],
		'PortMapping'                       => [
			'type'     => 'structure',
			'required' => [ 'port', 'protocol', ],
			'members'  => [
				'port'     => [ 'shape' => 'PortNumber', ],
				'protocol' => [ 'shape' => 'PortProtocol', ],
			],
		],
		'MeshData'                          => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'metadata', 'spec', 'status', ],
			'members'  => [
				'meshName' => [ 'shape' => 'ResourceName', ],
				'metadata' => [ 'shape' => 'ResourceMetadata', ],
				'spec'     => [ 'shape' => 'MeshSpec', ],
				'status'   => [ 'shape' => 'MeshStatus', ],
			],
		],
		'VirtualRouterStatus'               => [
			'type'     => 'structure',
			'required' => [ 'status', ],
			'members'  => [ 'status' => [ 'shape' => 'VirtualRouterStatusCode', ], ],
		],
		'ListVirtualServicesOutput'         => [
			'type'     => 'structure',
			'required' => [ 'virtualServices', ],
			'members'  => [
				'nextToken'       => [ 'shape' => 'String', ],
				'virtualServices' => [ 'shape' => 'VirtualServiceList', ],
			],
		],
		'AwsCloudMapInstanceAttributeValue' => [
			'type'    => 'string',
			'min'     => 1,
			'max'     => 1024,
			'pattern' => '^([a-zA-Z0-9!-~][ ta-zA-Z0-9!-~]*){0,1}[a-zA-Z0-9!-~]{0,1}$',
		],
		'WeightedTarget'                    => [
			'type'     => 'structure',
			'required' => [ 'virtualNode', 'weight', ],
			'members'  => [
				'virtualNode' => [ 'shape' => 'ResourceName', ],
				'weight'      => [ 'shape' => 'PercentInt', ],
			],
		],
		'TcpRouteAction'                    => [
			'type'     => 'structure',
			'required' => [ 'weightedTargets', ],
			'members'  => [ 'weightedTargets' => [ 'shape' => 'WeightedTargets', ], ],
		],
		'DescribeVirtualNodeInput'          => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'virtualNodeName', ],
			'members'  => [
				'meshName'        => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'virtualNodeName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualNodeName',
				],
			],
		],
		'RouteStatus'                       => [
			'type'     => 'structure',
			'required' => [ 'status', ],
			'members'  => [ 'status' => [ 'shape' => 'RouteStatusCode', ], ],
		],
		'RouteRef'                          => [
			'type'     => 'structure',
			'required' => [ 'arn', 'meshName', 'routeName', 'virtualRouterName', ],
			'members'  => [
				'arn'               => [ 'shape' => 'Arn', ],
				'meshName'          => [ 'shape' => 'ResourceName', ],
				'routeName'         => [ 'shape' => 'ResourceName', ],
				'virtualRouterName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'Listener'                          => [
			'type'     => 'structure',
			'required' => [ 'portMapping', ],
			'members'  => [
				'healthCheck' => [ 'shape' => 'HealthCheckPolicy', ],
				'portMapping' => [ 'shape' => 'PortMapping', ],
			],
		],
		'DeleteVirtualNodeInput'            => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'virtualNodeName', ],
			'members'  => [
				'meshName'        => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'virtualNodeName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualNodeName',
				],
			],
		],
		'RouteData'                         => [
			'type'     => 'structure',
			'required' => [
				'meshName',
				'metadata',
				'routeName',
				'spec',
				'status',
				'virtualRouterName',
			],
			'members'  => [
				'meshName'          => [ 'shape' => 'ResourceName', ],
				'metadata'          => [ 'shape' => 'ResourceMetadata', ],
				'routeName'         => [ 'shape' => 'ResourceName', ],
				'spec'              => [ 'shape' => 'RouteSpec', ],
				'status'            => [ 'shape' => 'RouteStatus', ],
				'virtualRouterName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'RouteStatusCode'                   => [ 'type' => 'string', 'enum' => [ 'ACTIVE', 'DELETED', 'INACTIVE', ], ],
		'ListRoutesLimit'                   => [ 'type' => 'integer', 'box' => true, 'min' => 1, 'max' => 100, ],
		'DeleteVirtualServiceOutput'        => [
			'type'     => 'structure',
			'required' => [ 'virtualService', ],
			'members'  => [ 'virtualService' => [ 'shape' => 'VirtualServiceData', ], ],
			'payload'  => 'virtualService',
		],
		'VirtualNodeServiceProvider'        => [
			'type'     => 'structure',
			'required' => [ 'virtualNodeName', ],
			'members'  => [ 'virtualNodeName' => [ 'shape' => 'ResourceName', ], ],
		],
		'InternalServerErrorException'      => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'InternalServerErrorException',
				'httpStatusCode' => 500,
				'fault'          => true,
			],
		],
		'TagList'                           => [
			'type'   => 'list',
			'member' => [ 'shape' => 'TagRef', ],
			'min'    => 0,
			'max'    => 50,
		],
		'DescribeVirtualRouterInput'        => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'virtualRouterName', ],
			'members'  => [
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'TagResourceOutput'                 => [ 'type' => 'structure', 'members' => [], ],
		'RouteList'                         => [ 'type' => 'list', 'member' => [ 'shape' => 'RouteRef', ], ],
		'ForbiddenException'                => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'ForbiddenException',
				'httpStatusCode' => 403,
				'senderFault'    => true,
			],
		],
		'TooManyTagsException'              => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'TooManyTagsException',
				'httpStatusCode' => 400,
				'senderFault'    => true,
			],
		],
		'DeleteMeshOutput'                  => [
			'type'     => 'structure',
			'required' => [ 'mesh', ],
			'members'  => [ 'mesh' => [ 'shape' => 'MeshData', ], ],
			'payload'  => 'mesh',
		],
		'EgressFilterType'                  => [ 'type' => 'string', 'enum' => [ 'ALLOW_ALL', 'DROP_ALL', ], ],
		'Hostname'                          => [ 'type' => 'string', ],
		'PortNumber'                        => [ 'type' => 'integer', 'min' => 1, 'max' => 65535, ],
		'TagResourceInput'                  => [
			'type'     => 'structure',
			'required' => [ 'resourceArn', 'tags', ],
			'members'  => [
				'resourceArn' => [
					'shape'        => 'Arn',
					'location'     => 'querystring',
					'locationName' => 'resourceArn',
				],
				'tags'        => [ 'shape' => 'TagList', ],
			],
		],
		'CreateRouteInput'                  => [
			'type'     => 'structure',
			'required' => [
				'meshName',
				'routeName',
				'spec',
				'virtualRouterName',
			],
			'members'  => [
				'clientToken'       => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'routeName'         => [ 'shape' => 'ResourceName', ],
				'spec'              => [ 'shape' => 'RouteSpec', ],
				'tags'              => [ 'shape' => 'TagList', ],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'WeightedTargets'                   => [
			'type'   => 'list',
			'member' => [ 'shape' => 'WeightedTarget', ],
			'min'    => 1,
			'max'    => 10,
		],
		'VirtualServiceProvider'            => [
			'type'    => 'structure',
			'members' => [
				'virtualNode'   => [ 'shape' => 'VirtualNodeServiceProvider', ],
				'virtualRouter' => [ 'shape' => 'VirtualRouterServiceProvider', ],
			],
		],
		'String'                            => [ 'type' => 'string', ],
		'AwsCloudMapServiceDiscovery'       => [
			'type'     => 'structure',
			'required' => [ 'namespaceName', 'serviceName', ],
			'members'  => [
				'attributes'    => [ 'shape' => 'AwsCloudMapInstanceAttributes', ],
				'namespaceName' => [ 'shape' => 'AwsCloudMapName', ],
				'serviceName'   => [ 'shape' => 'AwsCloudMapName', ],
			],
		],
		'UpdateVirtualServiceOutput'        => [
			'type'     => 'structure',
			'required' => [ 'virtualService', ],
			'members'  => [ 'virtualService' => [ 'shape' => 'VirtualServiceData', ], ],
			'payload'  => 'virtualService',
		],
		'UpdateRouteInput'                  => [
			'type'     => 'structure',
			'required' => [
				'meshName',
				'routeName',
				'spec',
				'virtualRouterName',
			],
			'members'  => [
				'clientToken'       => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'          => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'routeName'         => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'routeName',
				],
				'spec'              => [ 'shape' => 'RouteSpec', ],
				'virtualRouterName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'virtualRouterName',
				],
			],
		],
		'MeshStatus'                        => [
			'type'    => 'structure',
			'members' => [ 'status' => [ 'shape' => 'MeshStatusCode', ], ],
		],
		'CreateVirtualNodeInput'            => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'spec', 'virtualNodeName', ],
			'members'  => [
				'clientToken'     => [
					'shape'            => 'String',
					'idempotencyToken' => true,
				],
				'meshName'        => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'spec'            => [ 'shape' => 'VirtualNodeSpec', ],
				'tags'            => [ 'shape' => 'TagList', ],
				'virtualNodeName' => [ 'shape' => 'ResourceName', ],
			],
		],
		'NotFoundException'                 => [
			'type'      => 'structure',
			'members'   => [ 'message' => [ 'shape' => 'String', ], ],
			'exception' => true,
			'error'     => [
				'code'           => 'NotFoundException',
				'httpStatusCode' => 404,
				'senderFault'    => true,
			],
		],
		'RouteSpec'                         => [
			'type'    => 'structure',
			'members' => [
				'httpRoute' => [ 'shape' => 'HttpRoute', ],
				'tcpRoute'  => [ 'shape' => 'TcpRoute', ],
			],
		],
		'HttpRoute'                         => [
			'type'     => 'structure',
			'required' => [ 'action', 'match', ],
			'members'  => [
				'action' => [ 'shape' => 'HttpRouteAction', ],
				'match'  => [ 'shape' => 'HttpRouteMatch', ],
			],
		],
		'DescribeMeshInput'                 => [
			'type'     => 'structure',
			'required' => [ 'meshName', ],
			'members'  => [
				'meshName' => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
			],
		],
		'MeshSpec'                          => [
			'type'    => 'structure',
			'members' => [ 'egressFilter' => [ 'shape' => 'EgressFilter', ], ],
		],
		'CreateVirtualServiceOutput'        => [
			'type'     => 'structure',
			'required' => [ 'virtualService', ],
			'members'  => [ 'virtualService' => [ 'shape' => 'VirtualServiceData', ], ],
			'payload'  => 'virtualService',
		],
		'FileAccessLog'                     => [
			'type'     => 'structure',
			'required' => [ 'path', ],
			'members'  => [ 'path' => [ 'shape' => 'FilePath', ], ],
		],
		'VirtualRouterServiceProvider'      => [
			'type'     => 'structure',
			'required' => [ 'virtualRouterName', ],
			'members'  => [ 'virtualRouterName' => [ 'shape' => 'ResourceName', ], ],
		],
		'DeleteVirtualServiceInput'         => [
			'type'     => 'structure',
			'required' => [ 'meshName', 'virtualServiceName', ],
			'members'  => [
				'meshName'           => [
					'shape'        => 'ResourceName',
					'location'     => 'uri',
					'locationName' => 'meshName',
				],
				'virtualServiceName' => [
					'shape'        => 'ServiceName',
					'location'     => 'uri',
					'locationName' => 'virtualServiceName',
				],
			],
		],
		'ListTagsForResourceOutput'         => [
			'type'     => 'structure',
			'required' => [ 'tags', ],
			'members'  => [
				'nextToken' => [ 'shape' => 'String', ],
				'tags'      => [ 'shape' => 'TagList', ],
			],
		],
		'ServiceDiscovery'                  => [
			'type'    => 'structure',
			'members' => [
				'awsCloudMap' => [ 'shape' => 'AwsCloudMapServiceDiscovery', ],
				'dns'         => [ 'shape' => 'DnsServiceDiscovery', ],
			],
		],
		'ListVirtualNodesOutput'            => [
			'type'     => 'structure',
			'required' => [ 'virtualNodes', ],
			'members'  => [
				'nextToken'    => [ 'shape' => 'String', ],
				'virtualNodes' => [ 'shape' => 'VirtualNodeList', ],
			],
		],
		'UntagResourceInput'                => [
			'type'     => 'structure',
			'required' => [ 'resourceArn', 'tagKeys', ],
			'members'  => [
				'resourceArn' => [
					'shape'        => 'Arn',
					'location'     => 'querystring',
					'locationName' => 'resourceArn',
				],
				'tagKeys'     => [ 'shape' => 'TagKeyList', ],
			],
		],
		'DeleteVirtualRouterOutput'         => [
			'type'     => 'structure',
			'required' => [ 'virtualRouter', ],
			'members'  => [ 'virtualRouter' => [ 'shape' => 'VirtualRouterData', ], ],
			'payload'  => 'virtualRouter',
		],
		'TagsLimit'                         => [ 'type' => 'integer', 'box' => true, 'min' => 1, 'max' => 50, ],
		'TagKey'                            => [ 'type' => 'string', 'min' => 1, 'max' => 128, ],
		'VirtualServiceStatusCode'          => [ 'type' => 'string', 'enum' => [ 'ACTIVE', 'DELETED', 'INACTIVE', ], ],
		'DeleteVirtualNodeOutput'           => [
			'type'     => 'structure',
			'required' => [ 'virtualNode', ],
			'members'  => [ 'virtualNode' => [ 'shape' => 'VirtualNodeData', ], ],
			'payload'  => 'virtualNode',
		],
	],
];
