@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS App Mesh
@version 2019-01-25
@auth AWS SigV4
@endpoints 38
@hint download_for_search
@toc meshes(35), tags(1), tag(1), untag(1)

@group meshes
@endpoint PUT /v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes
@desc Creates a gateway route. A gateway route is attached to a virtual gateway and routes traffic to an existing virtual service. If a route matches a request, it can distribute traffic to a target virtual service. For more information about gateway routes, see Gateway routes.
@required {meshName: str, virtualGatewayName: str, gatewayRouteName: str, spec: GatewayRouteSpec}
@optional {meshOwner: str, clientToken: str, tags: [TagRef]}
@returns(200) {gatewayRoute: GatewayRouteData{gatewayRouteName: str, meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: GatewayRouteSpec{grpcRoute: GrpcGatewayRoute?{action: GrpcGatewayRouteAction, match: GrpcGatewayRouteMatch}, http2Route: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, httpRoute: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, priority: int?}, status: GatewayRouteStatus{status: str}, virtualGatewayName: str}}

@endpoint PUT /v20190125/meshes
@desc Creates a service mesh.  A service mesh is a logical boundary for network traffic between services that are represented by resources within the mesh. After you create your service mesh, you can create virtual services, virtual nodes, virtual routers, and routes to distribute traffic between the applications in your mesh. For more information about service meshes, see Service meshes.
@required {meshName: str}
@optional {clientToken: str, spec: MeshSpec, tags: [TagRef]}
@returns(200) {mesh: MeshData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: MeshSpec{egressFilter: EgressFilter?{type: str}, serviceDiscovery: MeshServiceDiscovery?{ipPreference: str?}}, status: MeshStatus{status: str?}}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes
@desc Creates a route that is associated with a virtual router.  You can route several different protocols and define a retry policy for a route. Traffic can be routed to one or more virtual nodes. For more information about routes, see Routes.
@required {meshName: str, virtualRouterName: str, routeName: str, spec: RouteSpec}
@optional {meshOwner: str, clientToken: str, tags: [TagRef]}
@returns(200) {route: RouteData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, routeName: str, spec: RouteSpec{grpcRoute: GrpcRoute?{action: GrpcRouteAction, match: GrpcRouteMatch, retryPolicy: GrpcRetryPolicy?, timeout: GrpcTimeout?}, http2Route: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, httpRoute: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, priority: int?, tcpRoute: TcpRoute?{action: TcpRouteAction, match: TcpRouteMatch?, timeout: TcpTimeout?}}, status: RouteStatus{status: str}, virtualRouterName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualGateways
@desc Creates a virtual gateway. A virtual gateway allows resources outside your mesh to communicate to resources that are inside your mesh. The virtual gateway represents an Envoy proxy running in an Amazon ECS task, in a Kubernetes service, or on an Amazon EC2 instance. Unlike a virtual node, which represents an Envoy running with an application, a virtual gateway represents Envoy deployed by itself. For more information about virtual gateways, see Virtual gateways.
@required {meshName: str, spec: VirtualGatewaySpec, virtualGatewayName: str}
@optional {meshOwner: str, clientToken: str, tags: [TagRef]}
@returns(200) {virtualGateway: VirtualGatewayData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualGatewaySpec{backendDefaults: VirtualGatewayBackendDefaults?{clientPolicy: VirtualGatewayClientPolicy?}, listeners: [VirtualGatewayListener], logging: VirtualGatewayLogging?{accessLog: VirtualGatewayAccessLog?}}, status: VirtualGatewayStatus{status: str}, virtualGatewayName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualNodes
@desc Creates a virtual node within a service mesh.  A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS service or a Kubernetes deployment. When you create a virtual node, you can specify the service discovery information for your task group, and whether the proxy running in a task group will communicate with other proxies using Transport Layer Security (TLS). You define a listener for any inbound traffic that your virtual node expects. Any virtual service that your virtual node expects to communicate to is specified as a backend. The response metadata for your new virtual node contains the arn that is associated with the virtual node. Set this value to the full ARN; for example, arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp) as the APPMESH_RESOURCE_ARN environment variable for your task group's Envoy proxy container in your task definition or pod spec. This is then mapped to the node.id and node.cluster Envoy parameters.  By default, App Mesh uses the name of the resource you specified in APPMESH_RESOURCE_ARN when Envoy is referring to itself in metrics and traces. You can override this behavior by setting the APPMESH_RESOURCE_CLUSTER environment variable with your own name.  For more information about virtual nodes, see Virtual nodes. You must be using 1.15.0 or later of the Envoy image when setting these variables. For more information aboutApp Mesh Envoy variables, see Envoy image in the App Mesh User Guide.
@required {meshName: str, spec: VirtualNodeSpec, virtualNodeName: str}
@optional {meshOwner: str, clientToken: str, tags: [TagRef]}
@returns(200) {virtualNode: VirtualNodeData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualNodeSpec{backendDefaults: BackendDefaults?{clientPolicy: ClientPolicy?}, backends: [Backend]?, listeners: [Listener]?, logging: Logging?{accessLog: AccessLog?}, serviceDiscovery: ServiceDiscovery?{awsCloudMap: AwsCloudMapServiceDiscovery?, dns: DnsServiceDiscovery?}}, status: VirtualNodeStatus{status: str}, virtualNodeName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualRouters
@desc Creates a virtual router within a service mesh. Specify a listener for any inbound traffic that your virtual router receives. Create a virtual router for each protocol and port that you need to route. Virtual routers handle traffic for one or more virtual services within your mesh. After you create your virtual router, create and associate routes for your virtual router that direct incoming requests to different virtual nodes. For more information about virtual routers, see Virtual routers.
@required {meshName: str, spec: VirtualRouterSpec, virtualRouterName: str}
@optional {meshOwner: str, clientToken: str, tags: [TagRef]}
@returns(200) {virtualRouter: VirtualRouterData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualRouterSpec{listeners: [VirtualRouterListener]?}, status: VirtualRouterStatus{status: str}, virtualRouterName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualServices
@desc Creates a virtual service within a service mesh. A virtual service is an abstraction of a real service that is provided by a virtual node directly or indirectly by means of a virtual router. Dependent services call your virtual service by its virtualServiceName, and those requests are routed to the virtual node or virtual router that is specified as the provider for the virtual service. For more information about virtual services, see Virtual services.
@required {meshName: str, spec: VirtualServiceSpec, virtualServiceName: str}
@optional {meshOwner: str, clientToken: str, tags: [TagRef]}
@returns(200) {virtualService: VirtualServiceData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualServiceSpec{provider: VirtualServiceProvider?{virtualNode: VirtualNodeServiceProvider?, virtualRouter: VirtualRouterServiceProvider?}}, status: VirtualServiceStatus{status: str}, virtualServiceName: str}}

@endpoint DELETE /v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}
@desc Deletes an existing gateway route.
@required {gatewayRouteName: str, meshName: str, virtualGatewayName: str}
@optional {meshOwner: str}
@returns(200) {gatewayRoute: GatewayRouteData{gatewayRouteName: str, meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: GatewayRouteSpec{grpcRoute: GrpcGatewayRoute?{action: GrpcGatewayRouteAction, match: GrpcGatewayRouteMatch}, http2Route: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, httpRoute: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, priority: int?}, status: GatewayRouteStatus{status: str}, virtualGatewayName: str}}

@endpoint DELETE /v20190125/meshes/{meshName}
@desc Deletes an existing service mesh. You must delete all resources (virtual services, routes, virtual routers, and virtual nodes) in the service mesh before you can delete the mesh itself.
@required {meshName: str}
@returns(200) {mesh: MeshData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: MeshSpec{egressFilter: EgressFilter?{type: str}, serviceDiscovery: MeshServiceDiscovery?{ipPreference: str?}}, status: MeshStatus{status: str?}}}

@endpoint DELETE /v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}
@desc Deletes an existing route.
@required {meshName: str, routeName: str, virtualRouterName: str}
@optional {meshOwner: str}
@returns(200) {route: RouteData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, routeName: str, spec: RouteSpec{grpcRoute: GrpcRoute?{action: GrpcRouteAction, match: GrpcRouteMatch, retryPolicy: GrpcRetryPolicy?, timeout: GrpcTimeout?}, http2Route: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, httpRoute: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, priority: int?, tcpRoute: TcpRoute?{action: TcpRouteAction, match: TcpRouteMatch?, timeout: TcpTimeout?}}, status: RouteStatus{status: str}, virtualRouterName: str}}

@endpoint DELETE /v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}
@desc Deletes an existing virtual gateway. You cannot delete a virtual gateway if any gateway routes are associated to it.
@required {meshName: str, virtualGatewayName: str}
@optional {meshOwner: str}
@returns(200) {virtualGateway: VirtualGatewayData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualGatewaySpec{backendDefaults: VirtualGatewayBackendDefaults?{clientPolicy: VirtualGatewayClientPolicy?}, listeners: [VirtualGatewayListener], logging: VirtualGatewayLogging?{accessLog: VirtualGatewayAccessLog?}}, status: VirtualGatewayStatus{status: str}, virtualGatewayName: str}}

@endpoint DELETE /v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}
@desc Deletes an existing virtual node. You must delete any virtual services that list a virtual node as a service provider before you can delete the virtual node itself.
@required {meshName: str, virtualNodeName: str}
@optional {meshOwner: str}
@returns(200) {virtualNode: VirtualNodeData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualNodeSpec{backendDefaults: BackendDefaults?{clientPolicy: ClientPolicy?}, backends: [Backend]?, listeners: [Listener]?, logging: Logging?{accessLog: AccessLog?}, serviceDiscovery: ServiceDiscovery?{awsCloudMap: AwsCloudMapServiceDiscovery?, dns: DnsServiceDiscovery?}}, status: VirtualNodeStatus{status: str}, virtualNodeName: str}}

@endpoint DELETE /v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}
@desc Deletes an existing virtual router. You must delete any routes associated with the virtual router before you can delete the router itself.
@required {meshName: str, virtualRouterName: str}
@optional {meshOwner: str}
@returns(200) {virtualRouter: VirtualRouterData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualRouterSpec{listeners: [VirtualRouterListener]?}, status: VirtualRouterStatus{status: str}, virtualRouterName: str}}

@endpoint DELETE /v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}
@desc Deletes an existing virtual service.
@required {meshName: str, virtualServiceName: str}
@optional {meshOwner: str}
@returns(200) {virtualService: VirtualServiceData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualServiceSpec{provider: VirtualServiceProvider?{virtualNode: VirtualNodeServiceProvider?, virtualRouter: VirtualRouterServiceProvider?}}, status: VirtualServiceStatus{status: str}, virtualServiceName: str}}

@endpoint GET /v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}
@desc Describes an existing gateway route.
@required {gatewayRouteName: str, meshName: str, virtualGatewayName: str}
@optional {meshOwner: str}
@returns(200) {gatewayRoute: GatewayRouteData{gatewayRouteName: str, meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: GatewayRouteSpec{grpcRoute: GrpcGatewayRoute?{action: GrpcGatewayRouteAction, match: GrpcGatewayRouteMatch}, http2Route: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, httpRoute: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, priority: int?}, status: GatewayRouteStatus{status: str}, virtualGatewayName: str}}

@endpoint GET /v20190125/meshes/{meshName}
@desc Describes an existing service mesh.
@required {meshName: str}
@optional {meshOwner: str}
@returns(200) {mesh: MeshData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: MeshSpec{egressFilter: EgressFilter?{type: str}, serviceDiscovery: MeshServiceDiscovery?{ipPreference: str?}}, status: MeshStatus{status: str?}}}

@endpoint GET /v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}
@desc Describes an existing route.
@required {meshName: str, routeName: str, virtualRouterName: str}
@optional {meshOwner: str}
@returns(200) {route: RouteData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, routeName: str, spec: RouteSpec{grpcRoute: GrpcRoute?{action: GrpcRouteAction, match: GrpcRouteMatch, retryPolicy: GrpcRetryPolicy?, timeout: GrpcTimeout?}, http2Route: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, httpRoute: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, priority: int?, tcpRoute: TcpRoute?{action: TcpRouteAction, match: TcpRouteMatch?, timeout: TcpTimeout?}}, status: RouteStatus{status: str}, virtualRouterName: str}}

@endpoint GET /v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}
@desc Describes an existing virtual gateway.
@required {meshName: str, virtualGatewayName: str}
@optional {meshOwner: str}
@returns(200) {virtualGateway: VirtualGatewayData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualGatewaySpec{backendDefaults: VirtualGatewayBackendDefaults?{clientPolicy: VirtualGatewayClientPolicy?}, listeners: [VirtualGatewayListener], logging: VirtualGatewayLogging?{accessLog: VirtualGatewayAccessLog?}}, status: VirtualGatewayStatus{status: str}, virtualGatewayName: str}}

@endpoint GET /v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}
@desc Describes an existing virtual node.
@required {meshName: str, virtualNodeName: str}
@optional {meshOwner: str}
@returns(200) {virtualNode: VirtualNodeData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualNodeSpec{backendDefaults: BackendDefaults?{clientPolicy: ClientPolicy?}, backends: [Backend]?, listeners: [Listener]?, logging: Logging?{accessLog: AccessLog?}, serviceDiscovery: ServiceDiscovery?{awsCloudMap: AwsCloudMapServiceDiscovery?, dns: DnsServiceDiscovery?}}, status: VirtualNodeStatus{status: str}, virtualNodeName: str}}

@endpoint GET /v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}
@desc Describes an existing virtual router.
@required {meshName: str, virtualRouterName: str}
@optional {meshOwner: str}
@returns(200) {virtualRouter: VirtualRouterData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualRouterSpec{listeners: [VirtualRouterListener]?}, status: VirtualRouterStatus{status: str}, virtualRouterName: str}}

@endpoint GET /v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}
@desc Describes an existing virtual service.
@required {meshName: str, virtualServiceName: str}
@optional {meshOwner: str}
@returns(200) {virtualService: VirtualServiceData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualServiceSpec{provider: VirtualServiceProvider?{virtualNode: VirtualNodeServiceProvider?, virtualRouter: VirtualRouterServiceProvider?}}, status: VirtualServiceStatus{status: str}, virtualServiceName: str}}

@endpoint GET /v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes
@desc Returns a list of existing gateway routes that are associated to a virtual gateway.
@required {meshName: str, virtualGatewayName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {gatewayRoutes: [GatewayRouteRef], nextToken: str?}

@endpoint GET /v20190125/meshes
@desc Returns a list of existing service meshes.
@optional {limit: int, nextToken: str}
@returns(200) {meshes: [MeshRef], nextToken: str?}

@endpoint GET /v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes
@desc Returns a list of existing routes in a service mesh.
@required {meshName: str, virtualRouterName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, routes: [RouteRef]}

@endgroup

@group tags
@endpoint GET /v20190125/tags
@desc List the tags for an App Mesh resource.
@required {resourceArn: str}
@optional {limit: int, nextToken: str}
@returns(200) {nextToken: str?, tags: [TagRef]}

@endgroup

@group meshes
@endpoint GET /v20190125/meshes/{meshName}/virtualGateways
@desc Returns a list of existing virtual gateways in a service mesh.
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualGateways: [VirtualGatewayRef]}

@endpoint GET /v20190125/meshes/{meshName}/virtualNodes
@desc Returns a list of existing virtual nodes.
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualNodes: [VirtualNodeRef]}

@endpoint GET /v20190125/meshes/{meshName}/virtualRouters
@desc Returns a list of existing virtual routers in a service mesh.
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualRouters: [VirtualRouterRef]}

@endpoint GET /v20190125/meshes/{meshName}/virtualServices
@desc Returns a list of existing virtual services in a service mesh.
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualServices: [VirtualServiceRef]}

@endgroup

@group tag
@endpoint PUT /v20190125/tag
@desc Associates the specified tags to a resource with the specified resourceArn. If existing tags on a resource aren't specified in the request parameters, they aren't changed. When a resource is deleted, the tags associated with that resource are also deleted.
@required {resourceArn: str, tags: [TagRef]}

@endgroup

@group untag
@endpoint PUT /v20190125/untag
@desc Deletes specified tags from a resource.
@required {resourceArn: str, tagKeys: [str]}

@endgroup

@group meshes
@endpoint PUT /v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}
@desc Updates an existing gateway route that is associated to a specified virtual gateway in a service mesh.
@required {gatewayRouteName: str, meshName: str, virtualGatewayName: str, spec: GatewayRouteSpec}
@optional {meshOwner: str, clientToken: str}
@returns(200) {gatewayRoute: GatewayRouteData{gatewayRouteName: str, meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: GatewayRouteSpec{grpcRoute: GrpcGatewayRoute?{action: GrpcGatewayRouteAction, match: GrpcGatewayRouteMatch}, http2Route: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, httpRoute: HttpGatewayRoute?{action: HttpGatewayRouteAction, match: HttpGatewayRouteMatch}, priority: int?}, status: GatewayRouteStatus{status: str}, virtualGatewayName: str}}

@endpoint PUT /v20190125/meshes/{meshName}
@desc Updates an existing service mesh.
@required {meshName: str}
@optional {clientToken: str, spec: MeshSpec}
@returns(200) {mesh: MeshData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: MeshSpec{egressFilter: EgressFilter?{type: str}, serviceDiscovery: MeshServiceDiscovery?{ipPreference: str?}}, status: MeshStatus{status: str?}}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}
@desc Updates an existing route for a specified service mesh and virtual router.
@required {meshName: str, routeName: str, virtualRouterName: str, spec: RouteSpec}
@optional {meshOwner: str, clientToken: str}
@returns(200) {route: RouteData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, routeName: str, spec: RouteSpec{grpcRoute: GrpcRoute?{action: GrpcRouteAction, match: GrpcRouteMatch, retryPolicy: GrpcRetryPolicy?, timeout: GrpcTimeout?}, http2Route: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, httpRoute: HttpRoute?{action: HttpRouteAction, match: HttpRouteMatch, retryPolicy: HttpRetryPolicy?, timeout: HttpTimeout?}, priority: int?, tcpRoute: TcpRoute?{action: TcpRouteAction, match: TcpRouteMatch?, timeout: TcpTimeout?}}, status: RouteStatus{status: str}, virtualRouterName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}
@desc Updates an existing virtual gateway in a specified service mesh.
@required {meshName: str, virtualGatewayName: str, spec: VirtualGatewaySpec}
@optional {meshOwner: str, clientToken: str}
@returns(200) {virtualGateway: VirtualGatewayData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualGatewaySpec{backendDefaults: VirtualGatewayBackendDefaults?{clientPolicy: VirtualGatewayClientPolicy?}, listeners: [VirtualGatewayListener], logging: VirtualGatewayLogging?{accessLog: VirtualGatewayAccessLog?}}, status: VirtualGatewayStatus{status: str}, virtualGatewayName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}
@desc Updates an existing virtual node in a specified service mesh.
@required {meshName: str, virtualNodeName: str, spec: VirtualNodeSpec}
@optional {meshOwner: str, clientToken: str}
@returns(200) {virtualNode: VirtualNodeData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualNodeSpec{backendDefaults: BackendDefaults?{clientPolicy: ClientPolicy?}, backends: [Backend]?, listeners: [Listener]?, logging: Logging?{accessLog: AccessLog?}, serviceDiscovery: ServiceDiscovery?{awsCloudMap: AwsCloudMapServiceDiscovery?, dns: DnsServiceDiscovery?}}, status: VirtualNodeStatus{status: str}, virtualNodeName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}
@desc Updates an existing virtual router in a specified service mesh.
@required {meshName: str, virtualRouterName: str, spec: VirtualRouterSpec}
@optional {meshOwner: str, clientToken: str}
@returns(200) {virtualRouter: VirtualRouterData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualRouterSpec{listeners: [VirtualRouterListener]?}, status: VirtualRouterStatus{status: str}, virtualRouterName: str}}

@endpoint PUT /v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}
@desc Updates an existing virtual service in a specified service mesh.
@required {meshName: str, virtualServiceName: str, spec: VirtualServiceSpec}
@optional {meshOwner: str, clientToken: str}
@returns(200) {virtualService: VirtualServiceData{meshName: str, metadata: ResourceMetadata{arn: str, createdAt: str(timestamp), lastUpdatedAt: str(timestamp), meshOwner: str, resourceOwner: str, uid: str, version: int(i64)}, spec: VirtualServiceSpec{provider: VirtualServiceProvider?{virtualNode: VirtualNodeServiceProvider?, virtualRouter: VirtualRouterServiceProvider?}}, status: VirtualServiceStatus{status: str}, virtualServiceName: str}}

@endgroup

@end
