@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
@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
@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
@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
@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
@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
@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
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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}
@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
@required {meshName: str, virtualGatewayName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {gatewayRoutes: [GatewayRouteRef], nextToken: str?}

@endpoint GET /v20190125/meshes
@optional {limit: int, nextToken: str}
@returns(200) {meshes: [MeshRef], nextToken: str?}

@endpoint GET /v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes
@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
@required {resourceArn: str}
@optional {limit: int, nextToken: str}
@returns(200) {nextToken: str?, tags: [TagRef]}

@endgroup

@group meshes
@endpoint GET /v20190125/meshes/{meshName}/virtualGateways
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualGateways: [VirtualGatewayRef]}

@endpoint GET /v20190125/meshes/{meshName}/virtualNodes
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualNodes: [VirtualNodeRef]}

@endpoint GET /v20190125/meshes/{meshName}/virtualRouters
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualRouters: [VirtualRouterRef]}

@endpoint GET /v20190125/meshes/{meshName}/virtualServices
@required {meshName: str}
@optional {limit: int, meshOwner: str, nextToken: str}
@returns(200) {nextToken: str?, virtualServices: [VirtualServiceRef]}

@endgroup

@group tag
@endpoint PUT /v20190125/tag
@required {resourceArn: str, tags: [TagRef]}

@endgroup

@group untag
@endpoint PUT /v20190125/untag
@required {resourceArn: str, tagKeys: [str]}

@endgroup

@group meshes
@endpoint PUT /v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}
@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}
@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}
@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}
@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}
@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}
@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}
@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
