{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2022-11-30",
    "endpointPrefix":"vpc-lattice",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceFullName":"Amazon VPC Lattice",
    "serviceId":"VPC Lattice",
    "signatureVersion":"v4",
    "signingName":"vpc-lattice",
    "uid":"vpc-lattice-2022-11-30"
  },
  "operations":{
    "BatchUpdateRule":{
      "name":"BatchUpdateRule",
      "http":{
        "method":"PATCH",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules",
        "responseCode":200
      },
      "input":{"shape":"BatchUpdateRuleRequest"},
      "output":{"shape":"BatchUpdateRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the listener rules in a batch. You can use this operation to change the priority of listener rules. This can be useful when bulk updating or swapping rule priority. </p>",
      "idempotent":true
    },
    "CreateAccessLogSubscription":{
      "name":"CreateAccessLogSubscription",
      "http":{
        "method":"POST",
        "requestUri":"/accesslogsubscriptions",
        "responseCode":201
      },
      "input":{"shape":"CreateAccessLogSubscriptionRequest"},
      "output":{"shape":"CreateAccessLogSubscriptionResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Enables access logs to be sent to Amazon CloudWatch, Amazon S3, and Amazon Kinesis Data Firehose. The service network owner can use the access logs to audit the services in the network. The service network owner will only see access logs from clients and services that are associated with their service network. Access log entries represent traffic originated from VPCs associated with that network. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/monitoring-access-logs.html\">Access logs</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateListener":{
      "name":"CreateListener",
      "http":{
        "method":"POST",
        "requestUri":"/services/{serviceIdentifier}/listeners",
        "responseCode":201
      },
      "input":{"shape":"CreateListenerRequest"},
      "output":{"shape":"CreateListenerResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a listener for a service. Before you start using your Amazon VPC Lattice service, you must add one or more listeners. A listener is a process that checks for connection requests to your services. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/listeners.html\">Listeners</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateRule":{
      "name":"CreateRule",
      "http":{
        "method":"POST",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules",
        "responseCode":201
      },
      "input":{"shape":"CreateRuleRequest"},
      "output":{"shape":"CreateRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a listener rule. Each listener has a default rule for checking connection requests, but you can define additional rules. Each rule consists of a priority, one or more actions, and one or more conditions. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/listeners.html#listener-rules\">Listener rules</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateService":{
      "name":"CreateService",
      "http":{
        "method":"POST",
        "requestUri":"/services",
        "responseCode":201
      },
      "input":{"shape":"CreateServiceRequest"},
      "output":{"shape":"CreateServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a service. A service is any software application that can run on instances containers, or serverless functions within an account or virtual private cloud (VPC).</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/services.html\">Services</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateServiceNetwork":{
      "name":"CreateServiceNetwork",
      "http":{
        "method":"POST",
        "requestUri":"/servicenetworks",
        "responseCode":201
      },
      "input":{"shape":"CreateServiceNetworkRequest"},
      "output":{"shape":"CreateServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a service network. A service network is a logical boundary for a collection of services. You can associate services and VPCs with a service network.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-networks.html\">Service networks</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateServiceNetworkServiceAssociation":{
      "name":"CreateServiceNetworkServiceAssociation",
      "http":{
        "method":"POST",
        "requestUri":"/servicenetworkserviceassociations",
        "responseCode":200
      },
      "input":{"shape":"CreateServiceNetworkServiceAssociationRequest"},
      "output":{"shape":"CreateServiceNetworkServiceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Associates a service with a service network.</p> <p>You can't use this operation if the service and service network are already associated or if there is a disassociation or deletion in progress. If the association fails, you can retry the operation by deleting the association and recreating it.</p> <p>You cannot associate a service and service network that are shared with a caller. The caller must own either the service or the service network.</p> <p>As a result of this operation, the association is created in the service network account and the association owner account.</p>",
      "idempotent":true
    },
    "CreateServiceNetworkVpcAssociation":{
      "name":"CreateServiceNetworkVpcAssociation",
      "http":{
        "method":"POST",
        "requestUri":"/servicenetworkvpcassociations",
        "responseCode":200
      },
      "input":{"shape":"CreateServiceNetworkVpcAssociationRequest"},
      "output":{"shape":"CreateServiceNetworkVpcAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Associates a VPC with a service network. When you associate a VPC with the service network, it enables all the resources within that VPC to be clients and communicate with other services in the service network. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-network-associations.html#service-network-vpc-associations\">Manage VPC associations</a> in the <i>Amazon VPC Lattice User Guide</i>.</p> <p>You can't use this operation if there is a disassociation in progress. If the association fails, retry by deleting the association and recreating it.</p> <p>As a result of this operation, the association gets created in the service network account and the VPC owner account.</p> <p>Once a security group is added to the VPC association it cannot be removed. You can add or update the security groups being used for the VPC association once a security group is attached. To remove all security groups you must reassociate the VPC.</p>",
      "idempotent":true
    },
    "CreateTargetGroup":{
      "name":"CreateTargetGroup",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups",
        "responseCode":201
      },
      "input":{"shape":"CreateTargetGroupRequest"},
      "output":{"shape":"CreateTargetGroupResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a target group. A target group is a collection of targets, or compute resources, that run your application or service. A target group can only be used by a single service.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/target-groups.html\">Target groups</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteAccessLogSubscription":{
      "name":"DeleteAccessLogSubscription",
      "http":{
        "method":"DELETE",
        "requestUri":"/accesslogsubscriptions/{accessLogSubscriptionIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteAccessLogSubscriptionRequest"},
      "output":{"shape":"DeleteAccessLogSubscriptionResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified access log subscription.</p>",
      "idempotent":true
    },
    "DeleteAuthPolicy":{
      "name":"DeleteAuthPolicy",
      "http":{
        "method":"DELETE",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteAuthPolicyRequest"},
      "output":{"shape":"DeleteAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified auth policy. If an auth is set to <code>Amazon Web Services_IAM</code> and the auth policy is deleted, all requests will be denied by default. If you are trying to remove the auth policy completely, you must set the auth_type to <code>NONE</code>. If auth is enabled on the resource, but no auth policy is set, all requests will be denied.</p>",
      "idempotent":true
    },
    "DeleteListener":{
      "name":"DeleteListener",
      "http":{
        "method":"DELETE",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteListenerRequest"},
      "output":{"shape":"DeleteListenerResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified listener.</p>",
      "idempotent":true
    },
    "DeleteResourcePolicy":{
      "name":"DeleteResourcePolicy",
      "http":{
        "method":"DELETE",
        "requestUri":"/resourcepolicy/{resourceArn}",
        "responseCode":204
      },
      "input":{"shape":"DeleteResourcePolicyRequest"},
      "output":{"shape":"DeleteResourcePolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified resource policy.</p>",
      "idempotent":true
    },
    "DeleteRule":{
      "name":"DeleteRule",
      "http":{
        "method":"DELETE",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules/{ruleIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteRuleRequest"},
      "output":{"shape":"DeleteRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a listener rule. Each listener has a default rule for checking connection requests, but you can define additional rules. Each rule consists of a priority, one or more actions, and one or more conditions. You can delete additional listener rules, but you cannot delete the default rule.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/listeners.html#listener-rules\">Listener rules</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteService":{
      "name":"DeleteService",
      "http":{
        "method":"DELETE",
        "requestUri":"/services/{serviceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteServiceRequest"},
      "output":{"shape":"DeleteServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a service. A service can't be deleted if it's associated with a service network. If you delete a service, all resources related to the service, such as the resource policy, auth policy, listeners, listener rules, and access log subscriptions, are also deleted. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/services.html#delete-service\">Delete a service</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteServiceNetwork":{
      "name":"DeleteServiceNetwork",
      "http":{
        "method":"DELETE",
        "requestUri":"/servicenetworks/{serviceNetworkIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteServiceNetworkRequest"},
      "output":{"shape":"DeleteServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a service network. You can only delete the service network if there is no service or VPC associated with it. If you delete a service network, all resources related to the service network, such as the resource policy, auth policy, and access log subscriptions, are also deleted. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-networks.html#delete-service-network\">Delete a service network</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteServiceNetworkServiceAssociation":{
      "name":"DeleteServiceNetworkServiceAssociation",
      "http":{
        "method":"DELETE",
        "requestUri":"/servicenetworkserviceassociations/{serviceNetworkServiceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteServiceNetworkServiceAssociationRequest"},
      "output":{"shape":"DeleteServiceNetworkServiceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the association between a specified service and the specific service network. This request will fail if an association is still in progress.</p>",
      "idempotent":true
    },
    "DeleteServiceNetworkVpcAssociation":{
      "name":"DeleteServiceNetworkVpcAssociation",
      "http":{
        "method":"DELETE",
        "requestUri":"/servicenetworkvpcassociations/{serviceNetworkVpcAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteServiceNetworkVpcAssociationRequest"},
      "output":{"shape":"DeleteServiceNetworkVpcAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Disassociates the VPC from the service network. You can't disassociate the VPC if there is a create or update association in progress.</p>",
      "idempotent":true
    },
    "DeleteTargetGroup":{
      "name":"DeleteTargetGroup",
      "http":{
        "method":"DELETE",
        "requestUri":"/targetgroups/{targetGroupIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteTargetGroupRequest"},
      "output":{"shape":"DeleteTargetGroupResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a target group. You can't delete a target group if it is used in a listener rule or if the target group creation is in progress.</p>",
      "idempotent":true
    },
    "DeregisterTargets":{
      "name":"DeregisterTargets",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups/{targetGroupIdentifier}/deregistertargets",
        "responseCode":200
      },
      "input":{"shape":"DeregisterTargetsRequest"},
      "output":{"shape":"DeregisterTargetsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deregisters the specified targets from the specified target group.</p>",
      "idempotent":true
    },
    "GetAccessLogSubscription":{
      "name":"GetAccessLogSubscription",
      "http":{
        "method":"GET",
        "requestUri":"/accesslogsubscriptions/{accessLogSubscriptionIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetAccessLogSubscriptionRequest"},
      "output":{"shape":"GetAccessLogSubscriptionResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified access log subscription.</p>"
    },
    "GetAuthPolicy":{
      "name":"GetAuthPolicy",
      "http":{
        "method":"GET",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetAuthPolicyRequest"},
      "output":{"shape":"GetAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the auth policy for the specified service or service network.</p>"
    },
    "GetListener":{
      "name":"GetListener",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetListenerRequest"},
      "output":{"shape":"GetListenerResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified listener for the specified service.</p>"
    },
    "GetResourcePolicy":{
      "name":"GetResourcePolicy",
      "http":{
        "method":"GET",
        "requestUri":"/resourcepolicy/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"GetResourcePolicyRequest"},
      "output":{"shape":"GetResourcePolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the resource policy. The resource policy is an IAM policy created by AWS RAM on behalf of the resource owner when they share a resource.</p>"
    },
    "GetRule":{
      "name":"GetRule",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules/{ruleIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetRuleRequest"},
      "output":{"shape":"GetRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about listener rules. You can also retrieve information about the default listener rule. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/listeners.html#listener-rules\">Listener rules</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>"
    },
    "GetService":{
      "name":"GetService",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceRequest"},
      "output":{"shape":"GetServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified service.</p>"
    },
    "GetServiceNetwork":{
      "name":"GetServiceNetwork",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworks/{serviceNetworkIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkRequest"},
      "output":{"shape":"GetServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified service network.</p>"
    },
    "GetServiceNetworkServiceAssociation":{
      "name":"GetServiceNetworkServiceAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkserviceassociations/{serviceNetworkServiceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkServiceAssociationRequest"},
      "output":{"shape":"GetServiceNetworkServiceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified association between a service network and a service.</p>"
    },
    "GetServiceNetworkVpcAssociation":{
      "name":"GetServiceNetworkVpcAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkvpcassociations/{serviceNetworkVpcAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkVpcAssociationRequest"},
      "output":{"shape":"GetServiceNetworkVpcAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the association between a service network and a VPC.</p>"
    },
    "GetTargetGroup":{
      "name":"GetTargetGroup",
      "http":{
        "method":"GET",
        "requestUri":"/targetgroups/{targetGroupIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetTargetGroupRequest"},
      "output":{"shape":"GetTargetGroupResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified target group.</p>"
    },
    "ListAccessLogSubscriptions":{
      "name":"ListAccessLogSubscriptions",
      "http":{
        "method":"GET",
        "requestUri":"/accesslogsubscriptions",
        "responseCode":200
      },
      "input":{"shape":"ListAccessLogSubscriptionsRequest"},
      "output":{"shape":"ListAccessLogSubscriptionsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists all access log subscriptions for the specified service network or service.</p>"
    },
    "ListListeners":{
      "name":"ListListeners",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners",
        "responseCode":200
      },
      "input":{"shape":"ListListenersRequest"},
      "output":{"shape":"ListListenersResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the listeners for the specified service.</p>"
    },
    "ListRules":{
      "name":"ListRules",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules",
        "responseCode":200
      },
      "input":{"shape":"ListRulesRequest"},
      "output":{"shape":"ListRulesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the rules for the listener.</p>"
    },
    "ListServiceNetworkServiceAssociations":{
      "name":"ListServiceNetworkServiceAssociations",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkserviceassociations",
        "responseCode":200
      },
      "input":{"shape":"ListServiceNetworkServiceAssociationsRequest"},
      "output":{"shape":"ListServiceNetworkServiceAssociationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the associations between the service network and the service. You can filter the list either by service or service network. You must provide either the service network identifier or the service identifier.</p> <p>Every association in Amazon VPC Lattice is given a unique Amazon Resource Name (ARN), such as when a service network is associated with a VPC or when a service is associated with a service network. If the association is for a resource that is shared with another account, the association will include the local account ID as the prefix in the ARN for each account the resource is shared with.</p>"
    },
    "ListServiceNetworkVpcAssociations":{
      "name":"ListServiceNetworkVpcAssociations",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkvpcassociations",
        "responseCode":200
      },
      "input":{"shape":"ListServiceNetworkVpcAssociationsRequest"},
      "output":{"shape":"ListServiceNetworkVpcAssociationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the service network and VPC associations. You can filter the list either by VPC or service network. You must provide either the service network identifier or the VPC identifier.</p>"
    },
    "ListServiceNetworks":{
      "name":"ListServiceNetworks",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworks",
        "responseCode":200
      },
      "input":{"shape":"ListServiceNetworksRequest"},
      "output":{"shape":"ListServiceNetworksResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the service networks owned by the caller account or shared with the caller account. Also includes the account ID in the ARN to show which account owns the service network.</p>"
    },
    "ListServices":{
      "name":"ListServices",
      "http":{
        "method":"GET",
        "requestUri":"/services",
        "responseCode":200
      },
      "input":{"shape":"ListServicesRequest"},
      "output":{"shape":"ListServicesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the services owned by the caller account or shared with the caller account.</p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the tags for the specified resource.</p>"
    },
    "ListTargetGroups":{
      "name":"ListTargetGroups",
      "http":{
        "method":"GET",
        "requestUri":"/targetgroups",
        "responseCode":200
      },
      "input":{"shape":"ListTargetGroupsRequest"},
      "output":{"shape":"ListTargetGroupsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists your target groups. You can narrow your search by using the filters below in your request.</p>"
    },
    "ListTargets":{
      "name":"ListTargets",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups/{targetGroupIdentifier}/listtargets",
        "responseCode":200
      },
      "input":{"shape":"ListTargetsRequest"},
      "output":{"shape":"ListTargetsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the targets for the target group. By default, all targets are included. You can use this API to check the health status of targets. You can also ﬁlter the results by target. </p>"
    },
    "PutAuthPolicy":{
      "name":"PutAuthPolicy",
      "http":{
        "method":"PUT",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"PutAuthPolicyRequest"},
      "output":{"shape":"PutAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates or updates the auth policy.</p>"
    },
    "PutResourcePolicy":{
      "name":"PutResourcePolicy",
      "http":{
        "method":"PUT",
        "requestUri":"/resourcepolicy/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"PutResourcePolicyRequest"},
      "output":{"shape":"PutResourcePolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Attaches a resource-based permission policy to a service or service network. The policy must contain the same actions and condition statements as the Amazon Web Services Resource Access Manager permission for sharing services and service networks.</p>",
      "idempotent":true
    },
    "RegisterTargets":{
      "name":"RegisterTargets",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups/{targetGroupIdentifier}/registertargets",
        "responseCode":200
      },
      "input":{"shape":"RegisterTargetsRequest"},
      "output":{"shape":"RegisterTargetsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Registers the targets with the target group. If it's a Lambda target, you can only have one target in a target group.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Adds the specified tags to the specified resource.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Removes the specified tags from the specified resource.</p>",
      "idempotent":true
    },
    "UpdateAccessLogSubscription":{
      "name":"UpdateAccessLogSubscription",
      "http":{
        "method":"PATCH",
        "requestUri":"/accesslogsubscriptions/{accessLogSubscriptionIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateAccessLogSubscriptionRequest"},
      "output":{"shape":"UpdateAccessLogSubscriptionResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified access log subscription.</p>",
      "idempotent":true
    },
    "UpdateListener":{
      "name":"UpdateListener",
      "http":{
        "method":"PATCH",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateListenerRequest"},
      "output":{"shape":"UpdateListenerResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified listener for the specified service.</p>",
      "idempotent":true
    },
    "UpdateRule":{
      "name":"UpdateRule",
      "http":{
        "method":"PATCH",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules/{ruleIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateRuleRequest"},
      "output":{"shape":"UpdateRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates a rule for the listener. You can't modify a default listener rule. To modify a default listener rule, use <code>UpdateListener</code>.</p>",
      "idempotent":true
    },
    "UpdateService":{
      "name":"UpdateService",
      "http":{
        "method":"PATCH",
        "requestUri":"/services/{serviceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateServiceRequest"},
      "output":{"shape":"UpdateServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified service.</p>"
    },
    "UpdateServiceNetwork":{
      "name":"UpdateServiceNetwork",
      "http":{
        "method":"PATCH",
        "requestUri":"/servicenetworks/{serviceNetworkIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateServiceNetworkRequest"},
      "output":{"shape":"UpdateServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified service network.</p>",
      "idempotent":true
    },
    "UpdateServiceNetworkVpcAssociation":{
      "name":"UpdateServiceNetworkVpcAssociation",
      "http":{
        "method":"PATCH",
        "requestUri":"/servicenetworkvpcassociations/{serviceNetworkVpcAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateServiceNetworkVpcAssociationRequest"},
      "output":{"shape":"UpdateServiceNetworkVpcAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the service network and VPC association. Once you add a security group, it cannot be removed.</p>",
      "idempotent":true
    },
    "UpdateTargetGroup":{
      "name":"UpdateTargetGroup",
      "http":{
        "method":"PATCH",
        "requestUri":"/targetgroups/{targetGroupIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateTargetGroupRequest"},
      "output":{"shape":"UpdateTargetGroupResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified target group.</p>",
      "idempotent":true
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The user does not have sufficient access to perform this action.</p>",
      "error":{
        "httpStatusCode":403,
        "senderFault":true
      },
      "exception":true
    },
    "AccessLogDestinationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$"
    },
    "AccessLogSubscriptionArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:accesslogsubscription/als-[0-9a-z]{17}$"
    },
    "AccessLogSubscriptionId":{
      "type":"string",
      "max":21,
      "min":21,
      "pattern":"^als-[0-9a-z]{17}$"
    },
    "AccessLogSubscriptionIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"^((als-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:accesslogsubscription/als-[0-9a-z]{17}))$"
    },
    "AccessLogSubscriptionList":{
      "type":"list",
      "member":{"shape":"AccessLogSubscriptionSummary"}
    },
    "AccessLogSubscriptionSummary":{
      "type":"structure",
      "required":[
        "arn",
        "createdAt",
        "destinationArn",
        "id",
        "lastUpdatedAt",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was created, specified in ISO-8601 format.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was last updated, specified in ISO-8601 format.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service or service network.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service or service network.</p>"
        }
      },
      "documentation":"<p>Summary information about an access log subscription.</p>"
    },
    "AccountId":{
      "type":"string",
      "max":12,
      "min":1,
      "pattern":"^[0-9]{12}$"
    },
    "Arn":{
      "type":"string",
      "max":1224,
      "min":0,
      "pattern":"^arn:[a-z0-9][-.a-z0-9]{0,62}:vpc-lattice:([a-z0-9][-.a-z0-9]{0,62})?:\\d{12}?:[^/].{0,1023}$"
    },
    "AuthPolicyState":{
      "type":"string",
      "enum":[
        "Active",
        "Inactive"
      ]
    },
    "AuthPolicyString":{
      "type":"string",
      "max":10000,
      "min":0
    },
    "AuthType":{
      "type":"string",
      "enum":[
        "NONE",
        "AWS_IAM"
      ]
    },
    "BatchUpdateRuleRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "rules",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "rules":{
          "shape":"RuleUpdateList",
          "documentation":"<p>The rules for the specified listener.</p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "BatchUpdateRuleResponse":{
      "type":"structure",
      "members":{
        "successful":{
          "shape":"RuleUpdateSuccessList",
          "documentation":"<p>The rules that were successfully updated.</p>"
        },
        "unsuccessful":{
          "shape":"RuleUpdateFailureList",
          "documentation":"<p>The rules that the operation couldn't update.</p>"
        }
      }
    },
    "Boolean":{
      "type":"boolean",
      "box":true
    },
    "CertificateArn":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"^(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:certificate/[0-9a-z-]+)?$"
    },
    "ClientToken":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"[!-~]+"
    },
    "ConflictException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceType"
      ],
      "members":{
        "message":{"shape":"String"},
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The resource ID.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The resource type.</p>"
        }
      },
      "documentation":"<p>The request conflicts with the current state of the resource. Updating or deleting a resource can cause an inconsistent state.</p>",
      "error":{
        "httpStatusCode":409,
        "senderFault":true
      },
      "exception":true
    },
    "CreateAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":[
        "destinationArn",
        "resourceIdentifier"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the destination. The supported destination types are CloudWatch Log groups, Kinesis Data Firehose delivery streams, and Amazon S3 buckets.</p>"
        },
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network or service.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the access log subscription.</p>"
        }
      }
    },
    "CreateAccessLogSubscriptionResponse":{
      "type":"structure",
      "required":[
        "arn",
        "destinationArn",
        "id",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the log destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service network or service.</p>"
        }
      }
    },
    "CreateListenerRequest":{
      "type":"structure",
      "required":[
        "defaultAction",
        "name",
        "protocol",
        "serviceIdentifier"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule. Each listener has a default rule. Each rule consists of a priority, one or more actions, and one or more conditions. The default rule is the rule that's used if no other rules match. Each rule must include exactly one of the following types of actions: <code>forward </code>or <code>fixed-response</code>, and it must be the last action to be performed. </p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener. A listener name must be unique within a service. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port. You can specify a value from <code>1</code> to <code>65535</code>. For HTTP, the default is <code>80</code>. For HTTPS, the default is <code>443</code>.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol HTTP or HTTPS.</p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the listener.</p>"
        }
      }
    },
    "CreateListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port number of the listener.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The protocol of the listener.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        }
      }
    },
    "CreateRuleRequest":{
      "type":"structure",
      "required":[
        "action",
        "listenerIdentifier",
        "match",
        "name",
        "priority",
        "serviceIdentifier"
      ],
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the rule. The name must be unique within the listener. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority assigned to the rule. Each rule for a specific listener must have a unique priority. The lower the priority number the higher the priority.</p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the rule.</p>"
        }
      }
    },
    "CreateRuleResponse":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The rule action. Each rule must include exactly one of the following types of actions: <code>forward </code>or <code>fixed-response</code>, and it must be the last action to be performed.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the rule.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the rule.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match. The <code>RuleMatch</code> must be an <code>HttpMatch</code>. This means that the rule should be an exact match on HTTP constraints which are made up of the HTTP method, path, and header.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the rule.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority assigned to the rule. The lower the priority number the higher the priority.</p>"
        }
      }
    },
    "CreateServiceNetworkRequest":{
      "type":"structure",
      "required":["name"],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network. The name must be unique to the account. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the service network.</p>"
        }
      }
    },
    "CreateServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        }
      }
    },
    "CreateServiceNetworkServiceAssociationRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "serviceNetworkIdentifier"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network. You must use the ARN if the resources specified in the operation are in different accounts.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the association.</p>"
        }
      }
    },
    "CreateServiceNetworkServiceAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The operation's status.</p>"
        }
      }
    },
    "CreateServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":[
        "serviceNetworkIdentifier",
        "vpcIdentifier"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "securityGroupIds":{
          "shape":"CreateServiceNetworkVpcAssociationRequestSecurityGroupIdsList",
          "documentation":"<p>The IDs of the security groups. Security groups aren't added by default. You can add a security group to apply network level controls to control which resources in a VPC are allowed to access the service network and its services. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html\">Control traffic to resources using security groups</a> in the <i>Amazon VPC User Guide</i>.</p>"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network. You must use the ARN when the resources specified in the operation are in different accounts.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the association.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      }
    },
    "CreateServiceNetworkVpcAssociationRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":0
    },
    "CreateServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The operation's status.</p>"
        }
      }
    },
    "CreateServiceRequest":{
      "type":"structure",
      "required":["name"],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service. The name must be unique within the account. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the service.</p>"
        }
      }
    },
    "CreateServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The public DNS name of the service.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status. If the status is <code>CREATE_FAILED</code>, you will have to delete and recreate the service.</p>"
        }
      }
    },
    "CreateTargetGroupRequest":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration. If <code>type</code> is set to <code>LAMBDA</code>, this parameter doesn't apply.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group. The name must be unique within the account. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the target group.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The type of target group.</p>"
        }
      }
    },
    "CreateTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration. If <code>type</code> is set to <code>LAMBDA</code>, this parameter doesn't apply.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The operation's status. You can retry the operation if the status is <code>CREATE_FAILED</code>. However, if you retry it while the status is <code>CREATE_IN_PROGRESS</code>, there is no change in the status. </p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The type of target group.</p>"
        }
      }
    },
    "DeleteAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":["accessLogSubscriptionIdentifier"],
      "members":{
        "accessLogSubscriptionIdentifier":{
          "shape":"AccessLogSubscriptionIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the access log subscription.</p>",
          "location":"uri",
          "locationName":"accessLogSubscriptionIdentifier"
        }
      }
    },
    "DeleteAccessLogSubscriptionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteAuthPolicyRequest":{
      "type":"structure",
      "required":["resourceIdentifier"],
      "members":{
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"resourceIdentifier"
        }
      }
    },
    "DeleteAuthPolicyResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteListenerRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "DeleteListenerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteResourcePolicyRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "DeleteResourcePolicyResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteRuleRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "ruleIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the rule.</p>",
          "location":"uri",
          "locationName":"ruleIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "DeleteRuleResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteServiceNetworkRequest":{
      "type":"structure",
      "required":["serviceNetworkIdentifier"],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The Amazon Resource Name (ARN) or ID of the service network.</p>",
          "location":"uri",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "DeleteServiceNetworkResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteServiceNetworkServiceAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkServiceAssociationIdentifier"],
      "members":{
        "serviceNetworkServiceAssociationIdentifier":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkServiceAssociationIdentifier"
        }
      }
    },
    "DeleteServiceNetworkServiceAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The operation's status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it when the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        }
      }
    },
    "DeleteServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkVpcAssociationIdentifier"],
      "members":{
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "DeleteServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it when the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        }
      }
    },
    "DeleteServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "DeleteServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it while the status is <code>DELETE_IN_PROGRESS</code>, the status doesn't change.</p>"
        }
      }
    },
    "DeleteTargetGroupRequest":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "DeleteTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it while the status is <code>DELETE_IN_PROGRESS</code>, the status doesn't change.</p>"
        }
      }
    },
    "DeregisterTargetsRequest":{
      "type":"structure",
      "required":[
        "targetGroupIdentifier",
        "targets"
      ],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        },
        "targets":{
          "shape":"DeregisterTargetsRequestTargetsList",
          "documentation":"<p>The targets to deregister.</p>"
        }
      }
    },
    "DeregisterTargetsRequestTargetsList":{
      "type":"list",
      "member":{"shape":"Target"},
      "max":100,
      "min":1
    },
    "DeregisterTargetsResponse":{
      "type":"structure",
      "members":{
        "successful":{
          "shape":"TargetList",
          "documentation":"<p>The targets that were successfully deregistered.</p>"
        },
        "unsuccessful":{
          "shape":"TargetFailureList",
          "documentation":"<p>The targets that the operation couldn't deregister.</p>"
        }
      }
    },
    "DnsEntry":{
      "type":"structure",
      "members":{
        "domainName":{
          "shape":"String",
          "documentation":"<p>The domain name of the service.</p>"
        },
        "hostedZoneId":{
          "shape":"String",
          "documentation":"<p>The ID of the hosted zone.</p>"
        }
      },
      "documentation":"<p>Describes the DNS information of a service.</p>"
    },
    "FailureCode":{"type":"string"},
    "FailureMessage":{"type":"string"},
    "FixedResponseAction":{
      "type":"structure",
      "required":["statusCode"],
      "members":{
        "statusCode":{
          "shape":"HttpStatusCode",
          "documentation":"<p>The HTTP response code.</p>"
        }
      },
      "documentation":"<p>Information about an action that returns a custom HTTP response. </p>"
    },
    "ForwardAction":{
      "type":"structure",
      "required":["targetGroups"],
      "members":{
        "targetGroups":{
          "shape":"WeightedTargetGroupList",
          "documentation":"<p>The target groups. Traffic matching the rule is forwarded to the specified target groups. With forward actions, you can assign a weight that controls the prioritization and selection of each target group. This means that requests are distributed to individual target groups based on their weights. For example, if two target groups have the same weight, each target group receives half of the traffic.</p> <p>The default value is 1. This means that if only one target group is provided, there is no need to set the weight; 100% of traffic will go to that target group.</p>"
        }
      },
      "documentation":"<p>Describes a forward action. You can use forward actions to route requests to one or more target groups. </p>"
    },
    "GetAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":["accessLogSubscriptionIdentifier"],
      "members":{
        "accessLogSubscriptionIdentifier":{
          "shape":"AccessLogSubscriptionIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the access log subscription.</p>",
          "location":"uri",
          "locationName":"accessLogSubscriptionIdentifier"
        }
      }
    },
    "GetAccessLogSubscriptionResponse":{
      "type":"structure",
      "required":[
        "arn",
        "createdAt",
        "destinationArn",
        "id",
        "lastUpdatedAt",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was created, specified in ISO-8601 format.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was last updated, specified in ISO-8601 format.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service network or service.</p>"
        }
      }
    },
    "GetAuthPolicyRequest":{
      "type":"structure",
      "required":["resourceIdentifier"],
      "members":{
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network or service.</p>",
          "location":"uri",
          "locationName":"resourceIdentifier"
        }
      }
    },
    "GetAuthPolicyResponse":{
      "type":"structure",
      "members":{
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the auth policy was created, specified in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the auth policy was last updated, specified in ISO-8601 format.</p>"
        },
        "policy":{
          "shape":"AuthPolicyString",
          "documentation":"<p>The auth policy.</p>"
        },
        "state":{
          "shape":"AuthPolicyState",
          "documentation":"<p>The state of the auth policy. The auth policy is only active when the auth type is set to <code>Amazon Web Services_IAM</code>. If you provide a policy, then authentication and authorization decisions are made based on this policy and the client's IAM policy. If the auth type is <code>NONE</code>, then any auth policy you provide will remain inactive. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-networks.html#create-service-network\">Create a service network</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>"
        }
      }
    },
    "GetListenerRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "GetListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was created, specified in ISO-8601 format.</p>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The actions for the default listener rule.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was last updated, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        }
      }
    },
    "GetResourcePolicyRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>An IAM policy.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "GetResourcePolicyResponse":{
      "type":"structure",
      "members":{
        "policy":{
          "shape":"PolicyString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>"
        }
      }
    },
    "GetRuleRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "ruleIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener rule.</p>",
          "location":"uri",
          "locationName":"ruleIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "GetRuleResponse":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was created, specified in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default rule.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was last updated, specified in ISO-8601 format.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority level for the specified rule.</p>"
        }
      }
    },
    "GetServiceNetworkRequest":{
      "type":"structure",
      "required":["serviceNetworkIdentifier"],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network.</p>",
          "location":"uri",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "GetServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was created, specified in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time of the last update, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "numberOfAssociatedServices":{
          "shape":"Long",
          "documentation":"<p>The number of services associated with the service network.</p>"
        },
        "numberOfAssociatedVPCs":{
          "shape":"Long",
          "documentation":"<p>The number of VPCs associated with the service network.</p>"
        }
      }
    },
    "GetServiceNetworkServiceAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkServiceAssociationIdentifier"],
      "members":{
        "serviceNetworkServiceAssociationIdentifier":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkServiceAssociationIdentifier"
        }
      }
    },
    "GetServiceNetworkServiceAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, specified in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service. </p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the service network and service association.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "serviceName":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        }
      }
    },
    "GetServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkVpcAssociationIdentifier"],
      "members":{
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "GetServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, specified in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the specified association between the service network and the VPC.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was last updated, specified in ISO-8601 format.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      }
    },
    "GetServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "GetServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was created, specified in ISO-8601 format.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "failureCode":{
          "shape":"FailureCode",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"FailureMessage",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was last updated, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status of the service.</p>"
        }
      }
    },
    "GetTargetGroupRequest":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "GetTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was created, specified in ISO-8601 format.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was last updated, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "serviceArns":{
          "shape":"ServiceArnList",
          "documentation":"<p>The Amazon Resource Names (ARNs) of the service.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        }
      }
    },
    "HeaderMatch":{
      "type":"structure",
      "required":[
        "match",
        "name"
      ],
      "members":{
        "caseSensitive":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the match is case sensitive. Defaults to false.</p>"
        },
        "match":{
          "shape":"HeaderMatchType",
          "documentation":"<p>The header match type.</p>"
        },
        "name":{
          "shape":"HeaderMatchName",
          "documentation":"<p>The name of the header.</p>"
        }
      },
      "documentation":"<p>Describes the constraints for a header match. Matches incoming requests with rule based on request header value before applying rule action.</p>"
    },
    "HeaderMatchContains":{
      "type":"string",
      "max":200,
      "min":1
    },
    "HeaderMatchExact":{
      "type":"string",
      "max":200,
      "min":1
    },
    "HeaderMatchList":{
      "type":"list",
      "member":{"shape":"HeaderMatch"},
      "max":5,
      "min":1
    },
    "HeaderMatchName":{
      "type":"string",
      "max":100,
      "min":1
    },
    "HeaderMatchPrefix":{
      "type":"string",
      "max":200,
      "min":1
    },
    "HeaderMatchType":{
      "type":"structure",
      "members":{
        "contains":{
          "shape":"HeaderMatchContains",
          "documentation":"<p>Specifies a contains type match.</p>"
        },
        "exact":{
          "shape":"HeaderMatchExact",
          "documentation":"<p>Specifies an exact type match.</p>"
        },
        "prefix":{
          "shape":"HeaderMatchPrefix",
          "documentation":"<p>Specifies a prefix type match. Matches the value with the prefix.</p>"
        }
      },
      "documentation":"<p>Describes a header match type. Only one can be provided.</p>",
      "union":true
    },
    "HealthCheckConfig":{
      "type":"structure",
      "members":{
        "enabled":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether health checking is enabled.</p>"
        },
        "healthCheckIntervalSeconds":{
          "shape":"HealthCheckIntervalSeconds",
          "documentation":"<p>The approximate amount of time, in seconds, between health checks of an individual target. The range is 5–300 seconds. The default is 30 seconds.</p>"
        },
        "healthCheckTimeoutSeconds":{
          "shape":"HealthCheckTimeoutSeconds",
          "documentation":"<p>The amount of time, in seconds, to wait before reporting a target as unhealthy. The range is 1–120 seconds. The default is 5 seconds.</p>"
        },
        "healthyThresholdCount":{
          "shape":"HealthyThresholdCount",
          "documentation":"<p>The number of consecutive successful health checks required before considering an unhealthy target healthy. The range is 2–10. The default is 5.</p>"
        },
        "matcher":{
          "shape":"Matcher",
          "documentation":"<p>The codes to use when checking for a successful response from a target. These are called <i>Success codes</i> in the console.</p>"
        },
        "path":{
          "shape":"HealthCheckPath",
          "documentation":"<p>The destination for health checks on the targets. If the protocol version is <code>HTTP/1.1</code> or <code>HTTP/2</code>, specify a valid URI (for example, <code>/path?query</code>). The default path is <code>/</code>. Health checks are not supported if the protocol version is <code>gRPC</code>, however, you can choose <code>HTTP/1.1</code> or <code>HTTP/2</code> and specify a valid URI.</p>"
        },
        "port":{
          "shape":"HealthCheckPort",
          "documentation":"<p>The port used when performing health checks on targets. The default setting is the port that a target receives traffic on.</p>"
        },
        "protocol":{
          "shape":"TargetGroupProtocol",
          "documentation":"<p>The protocol used when performing health checks on targets. The possible protocols are <code>HTTP</code> and <code>HTTPS</code>. The default is <code>HTTP</code>.</p>"
        },
        "protocolVersion":{
          "shape":"HealthCheckProtocolVersion",
          "documentation":"<p>The protocol version used when performing health checks on targets. The possible protocol versions are <code>HTTP1</code> and <code>HTTP2</code>.</p>"
        },
        "unhealthyThresholdCount":{
          "shape":"UnhealthyThresholdCount",
          "documentation":"<p>The number of consecutive failed health checks required before considering a target unhealthy. The range is 2–10. The default is 2.</p>"
        }
      },
      "documentation":"<p>The health check configuration of a target group. Health check configurations aren't used for <code>LAMBDA</code> and <code>ALB</code> target groups.</p>"
    },
    "HealthCheckIntervalSeconds":{
      "type":"integer",
      "box":true,
      "max":300,
      "min":0
    },
    "HealthCheckPath":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"(^/[a-zA-Z0-9@:%_+.~#?&/=-]*$|(^$))"
    },
    "HealthCheckPort":{
      "type":"integer",
      "box":true,
      "max":65535,
      "min":0
    },
    "HealthCheckProtocolVersion":{
      "type":"string",
      "enum":[
        "HTTP1",
        "HTTP2"
      ]
    },
    "HealthCheckTimeoutSeconds":{
      "type":"integer",
      "box":true,
      "max":120,
      "min":0
    },
    "HealthyThresholdCount":{
      "type":"integer",
      "box":true,
      "max":10,
      "min":0
    },
    "HttpCodeMatcher":{
      "type":"string",
      "max":2000,
      "min":0,
      "pattern":"(^[0-9-,]+$|(^$))"
    },
    "HttpMatch":{
      "type":"structure",
      "members":{
        "headerMatches":{
          "shape":"HeaderMatchList",
          "documentation":"<p>The header matches. Matches incoming requests with rule based on request header value before applying rule action.</p>"
        },
        "method":{
          "shape":"HttpMethod",
          "documentation":"<p>The HTTP method type.</p>"
        },
        "pathMatch":{
          "shape":"PathMatch",
          "documentation":"<p>The path match.</p>"
        }
      },
      "documentation":"<p>Describes criteria that can be applied to incoming requests.</p>"
    },
    "HttpMethod":{
      "type":"string",
      "max":16,
      "min":0
    },
    "HttpStatusCode":{
      "type":"integer",
      "box":true,
      "max":599,
      "min":100
    },
    "Integer":{
      "type":"integer",
      "box":true
    },
    "InternalServerException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>The number of seconds to wait before retrying.</p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p>An unexpected error occurred while processing the request.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true,
      "retryable":{"throttling":false}
    },
    "IpAddressType":{
      "type":"string",
      "enum":[
        "IPV4",
        "IPV6"
      ]
    },
    "LambdaEventStructureVersion":{
      "type":"string",
      "enum":[
        "V1",
        "V2"
      ]
    },
    "ListAccessLogSubscriptionsRequest":{
      "type":"structure",
      "required":["resourceIdentifier"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network or service.</p>",
          "location":"querystring",
          "locationName":"resourceIdentifier"
        }
      }
    },
    "ListAccessLogSubscriptionsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"AccessLogSubscriptionList",
          "documentation":"<p>The access log subscriptions.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>"
        }
      }
    },
    "ListListenersRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "ListListenersResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ListenerSummaryList",
          "documentation":"<p>Information about the listeners.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListRulesRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "ListRulesResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"RuleSummaryList",
          "documentation":"<p>Information about the rules.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListServiceNetworkServiceAssociationsRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"querystring",
          "locationName":"serviceIdentifier"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "ListServiceNetworkServiceAssociationsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ServiceNetworkServiceAssociationList",
          "documentation":"<p>Information about the associations.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListServiceNetworkVpcAssociationsRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the VPC.</p>",
          "location":"querystring",
          "locationName":"vpcIdentifier"
        }
      }
    },
    "ListServiceNetworkVpcAssociationsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ServiceNetworkVpcAssociationList",
          "documentation":"<p>Information about the associations.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListServiceNetworksRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListServiceNetworksResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ServiceNetworkList",
          "documentation":"<p>Information about the service networks.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListServicesRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListServicesResponse":{
      "type":"structure",
      "members":{
        "items":{
          "shape":"ServiceList",
          "documentation":"<p>The services.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags.</p>"
        }
      }
    },
    "ListTargetGroupsRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "targetGroupType":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>",
          "location":"querystring",
          "locationName":"targetGroupType"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"querystring",
          "locationName":"vpcIdentifier"
        }
      }
    },
    "ListTargetGroupsResponse":{
      "type":"structure",
      "members":{
        "items":{
          "shape":"TargetGroupList",
          "documentation":"<p>Information about the target groups.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListTargetsRequest":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        },
        "targets":{
          "shape":"ListTargetsRequestTargetsList",
          "documentation":"<p>The targets to list.</p>"
        }
      }
    },
    "ListTargetsRequestTargetsList":{
      "type":"list",
      "member":{"shape":"Target"},
      "max":20,
      "min":0
    },
    "ListTargetsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"TargetSummaryList",
          "documentation":"<p>Information about the targets.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListenerArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}$"
    },
    "ListenerId":{
      "type":"string",
      "max":26,
      "min":26,
      "pattern":"^listener-[0-9a-z]{17}$"
    },
    "ListenerIdentifier":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^((listener-[0-9a-z]{17})|(^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}$))$"
    },
    "ListenerName":{
      "type":"string",
      "max":63,
      "min":3,
      "pattern":"^(?!listener-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$"
    },
    "ListenerProtocol":{
      "type":"string",
      "enum":[
        "HTTP",
        "HTTPS"
      ]
    },
    "ListenerSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was created, specified in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was last updated, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        }
      },
      "documentation":"<p>Summary information about a listener.</p>"
    },
    "ListenerSummaryList":{
      "type":"list",
      "member":{"shape":"ListenerSummary"}
    },
    "Long":{
      "type":"long",
      "box":true
    },
    "Matcher":{
      "type":"structure",
      "members":{
        "httpCode":{
          "shape":"HttpCodeMatcher",
          "documentation":"<p>The HTTP code to use when checking for a successful response from a target.</p>"
        }
      },
      "documentation":"<p>The codes to use when checking for a successful response from a target for health checks.</p>",
      "union":true
    },
    "MaxResults":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "NextToken":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "PathMatch":{
      "type":"structure",
      "required":["match"],
      "members":{
        "caseSensitive":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the match is case sensitive. Defaults to false.</p>"
        },
        "match":{
          "shape":"PathMatchType",
          "documentation":"<p>The type of path match.</p>"
        }
      },
      "documentation":"<p>Describes the conditions that can be applied when matching a path for incoming requests.</p>"
    },
    "PathMatchExact":{
      "type":"string",
      "max":200,
      "min":1,
      "pattern":"^/[a-zA-Z0-9@:%_+.~#?&/=-]*$"
    },
    "PathMatchPrefix":{
      "type":"string",
      "max":200,
      "min":1,
      "pattern":"^/[a-zA-Z0-9@:%_+.~#?&/=-]*$"
    },
    "PathMatchType":{
      "type":"structure",
      "members":{
        "exact":{
          "shape":"PathMatchExact",
          "documentation":"<p>An exact match of the path.</p>"
        },
        "prefix":{
          "shape":"PathMatchPrefix",
          "documentation":"<p>A prefix match of the path.</p>"
        }
      },
      "documentation":"<p>Describes a path match type. Each rule can include only one of the following types of paths.</p>",
      "union":true
    },
    "PolicyString":{
      "type":"string",
      "max":10000,
      "min":1,
      "pattern":"^.*\\S.*$"
    },
    "Port":{
      "type":"integer",
      "box":true,
      "max":65535,
      "min":1
    },
    "PutAuthPolicyRequest":{
      "type":"structure",
      "required":[
        "policy",
        "resourceIdentifier"
      ],
      "members":{
        "policy":{
          "shape":"AuthPolicyString",
          "documentation":"<p>The auth policy.</p>"
        },
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created.</p>",
          "location":"uri",
          "locationName":"resourceIdentifier"
        }
      }
    },
    "PutAuthPolicyResponse":{
      "type":"structure",
      "members":{
        "policy":{
          "shape":"AuthPolicyString",
          "documentation":"<p>The auth policy.</p>"
        },
        "state":{
          "shape":"AuthPolicyState",
          "documentation":"<p>The state of the auth policy. The auth policy is only active when the auth type is set to <code>Amazon Web Services_IAM</code>. If you provide a policy, then authentication and authorization decisions are made based on this policy and the client's IAM policy. If the Auth type is <code>NONE</code>, then, any auth policy you provide will remain inactive. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-networks.html#create-service-network\">Create a service network</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>"
        }
      }
    },
    "PutResourcePolicyRequest":{
      "type":"structure",
      "required":[
        "policy",
        "resourceArn"
      ],
      "members":{
        "policy":{
          "shape":"PolicyString",
          "documentation":"<p>An IAM policy.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "PutResourcePolicyResponse":{
      "type":"structure",
      "members":{
      }
    },
    "RegisterTargetsRequest":{
      "type":"structure",
      "required":[
        "targetGroupIdentifier",
        "targets"
      ],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        },
        "targets":{
          "shape":"RegisterTargetsRequestTargetsList",
          "documentation":"<p>The targets.</p>"
        }
      }
    },
    "RegisterTargetsRequestTargetsList":{
      "type":"list",
      "member":{"shape":"Target"},
      "max":100,
      "min":1
    },
    "RegisterTargetsResponse":{
      "type":"structure",
      "members":{
        "successful":{
          "shape":"TargetList",
          "documentation":"<p>The targets that were successfully registered.</p>"
        },
        "unsuccessful":{
          "shape":"TargetFailureList",
          "documentation":"<p>The targets that were not registered.</p>"
        }
      }
    },
    "ResourceArn":{
      "type":"string",
      "max":200,
      "min":20,
      "pattern":"^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}$"
    },
    "ResourceId":{
      "type":"string",
      "max":50,
      "min":20,
      "pattern":"^((sn)|(svc))-[0-9a-z]{17}$"
    },
    "ResourceIdentifier":{
      "type":"string",
      "max":200,
      "min":17,
      "pattern":"^((((sn)|(svc))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}))$"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceType"
      ],
      "members":{
        "message":{"shape":"String"},
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The resource ID.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The resource type.</p>"
        }
      },
      "documentation":"<p>The request references a resource that does not exist.</p>",
      "error":{
        "httpStatusCode":404,
        "senderFault":true
      },
      "exception":true
    },
    "RuleAction":{
      "type":"structure",
      "members":{
        "fixedResponse":{
          "shape":"FixedResponseAction",
          "documentation":"<p> Describes the rule action that returns a custom HTTP response. </p>"
        },
        "forward":{
          "shape":"ForwardAction",
          "documentation":"<p>The forward action. Traffic that matches the rule is forwarded to the specified target groups.</p>"
        }
      },
      "documentation":"<p>Describes the action for a rule. Each rule must include exactly one of the following types of actions: <code>forward </code>or <code>fixed-response</code>, and it must be the last action to be performed.</p>",
      "union":true
    },
    "RuleArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}/rule/rule-[0-9a-z]{17}$"
    },
    "RuleId":{
      "type":"string",
      "max":22,
      "min":5,
      "pattern":"^rule-[0-9a-z]{17}$"
    },
    "RuleIdentifier":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^((rule-[0-9a-z]{17})|(^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}/rule/rule-[0-9a-z]{17}$))$"
    },
    "RuleMatch":{
      "type":"structure",
      "members":{
        "httpMatch":{
          "shape":"HttpMatch",
          "documentation":"<p>The HTTP criteria that a rule must match.</p>"
        }
      },
      "documentation":"<p>Describes a rule match.</p>",
      "union":true
    },
    "RuleName":{
      "type":"string",
      "max":63,
      "min":3,
      "pattern":"^(?!rule-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$"
    },
    "RulePriority":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "RuleSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the rule.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was created, specified in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the rule.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default rule. Listener rules are created when you create a listener. Each listener has a default rule for checking connection requests. </p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was last updated, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the rule.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p> The priority of the rule. </p>"
        }
      },
      "documentation":"<p>Summary information about the listener rule.</p>"
    },
    "RuleSummaryList":{
      "type":"list",
      "member":{"shape":"RuleSummary"}
    },
    "RuleUpdate":{
      "type":"structure",
      "required":["ruleIdentifier"],
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The rule action.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority. A listener can't have multiple rules with the same priority.</p>"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the rule.</p>"
        }
      },
      "documentation":"<p>Represents an object when updating a rule.</p>"
    },
    "RuleUpdateFailure":{
      "type":"structure",
      "members":{
        "failureCode":{
          "shape":"FailureCode",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"FailureMessage",
          "documentation":"<p>The failure message.</p>"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the rule.</p>"
        }
      },
      "documentation":"<p>Describes a rule update that failed.</p>"
    },
    "RuleUpdateFailureList":{
      "type":"list",
      "member":{"shape":"RuleUpdateFailure"}
    },
    "RuleUpdateList":{
      "type":"list",
      "member":{"shape":"RuleUpdate"},
      "max":5,
      "min":1
    },
    "RuleUpdateSuccess":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default rule.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority.</p>"
        }
      },
      "documentation":"<p>Describes a successful rule update.</p>"
    },
    "RuleUpdateSuccessList":{
      "type":"list",
      "member":{"shape":"RuleUpdateSuccess"}
    },
    "SecurityGroupId":{
      "type":"string",
      "max":200,
      "min":5,
      "pattern":"^sg-(([0-9a-z]{8})|([0-9a-z]{17}))$"
    },
    "SecurityGroupList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"}
    },
    "ServiceArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$"
    },
    "ServiceArnList":{
      "type":"list",
      "member":{"shape":"ServiceArn"}
    },
    "ServiceCustomDomainName":{
      "type":"string",
      "max":255,
      "min":3
    },
    "ServiceId":{
      "type":"string",
      "max":21,
      "min":21,
      "pattern":"^svc-[0-9a-z]{17}$"
    },
    "ServiceIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$"
    },
    "ServiceList":{
      "type":"list",
      "member":{"shape":"ServiceSummary"}
    },
    "ServiceName":{
      "type":"string",
      "max":40,
      "min":3,
      "pattern":"^(?!svc-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$"
    },
    "ServiceNetworkArn":{
      "type":"string",
      "max":2048,
      "min":32,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$"
    },
    "ServiceNetworkId":{
      "type":"string",
      "max":32,
      "min":32,
      "pattern":"^sn-[0-9a-z]{17}$"
    },
    "ServiceNetworkIdentifier":{
      "type":"string",
      "max":2048,
      "min":3,
      "pattern":"^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$"
    },
    "ServiceNetworkList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkSummary"}
    },
    "ServiceNetworkName":{
      "type":"string",
      "max":63,
      "min":3,
      "pattern":"^(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$"
    },
    "ServiceNetworkServiceAssociationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkserviceassociation/snsa-[0-9a-z]{17}$"
    },
    "ServiceNetworkServiceAssociationIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"^((snsa-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkserviceassociation/snsa-[0-9a-z]{17}))$"
    },
    "ServiceNetworkServiceAssociationList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkServiceAssociationSummary"}
    },
    "ServiceNetworkServiceAssociationStatus":{
      "type":"string",
      "enum":[
        "CREATE_IN_PROGRESS",
        "ACTIVE",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "ServiceNetworkServiceAssociationSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, specified in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p> The custom domain name of the service. </p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>DNS information about the service.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "serviceName":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The status. If the deletion fails, try to delete again.</p>"
        }
      },
      "documentation":"<p>Summary information about the association between a service network and a service.</p>"
    },
    "ServiceNetworkSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was created, specified in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was last updated, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "numberOfAssociatedServices":{
          "shape":"Long",
          "documentation":"<p>The number of services associated with the service network.</p>"
        },
        "numberOfAssociatedVPCs":{
          "shape":"Long",
          "documentation":"<p>The number of VPCs associated with the service network.</p>"
        }
      },
      "documentation":"<p>Summary information about a service network.</p>"
    },
    "ServiceNetworkVpcAssociationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkvpcassociation/snva-[0-9a-z]{17}$"
    },
    "ServiceNetworkVpcAssociationId":{
      "type":"string",
      "max":22,
      "min":22,
      "pattern":"^snva-[0-9a-z]{17}$"
    },
    "ServiceNetworkVpcAssociationIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"^((snva-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkvpcassociation/snva-[0-9a-z]{17}))$"
    },
    "ServiceNetworkVpcAssociationList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkVpcAssociationSummary"}
    },
    "ServiceNetworkVpcAssociationStatus":{
      "type":"string",
      "enum":[
        "CREATE_IN_PROGRESS",
        "ACTIVE",
        "UPDATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_FAILED",
        "UPDATE_FAILED"
      ]
    },
    "ServiceNetworkVpcAssociationSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, specified in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was last updated, specified in ISO-8601 format.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      },
      "documentation":"<p>Summary information about an association between a service network and a VPC.</p>"
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "required":[
        "message",
        "quotaCode",
        "resourceType",
        "serviceCode"
      ],
      "members":{
        "message":{"shape":"String"},
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>The ID of the service quota that was exceeded.</p>"
        },
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The resource ID.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The resource type.</p>"
        },
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>The service code.</p>"
        }
      },
      "documentation":"<p>The request would cause a service quota to be exceeded.</p>",
      "error":{
        "httpStatusCode":402,
        "senderFault":true
      },
      "exception":true
    },
    "ServiceStatus":{
      "type":"string",
      "enum":[
        "ACTIVE",
        "CREATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "ServiceSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was created, specified in ISO-8601 format.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p> The custom domain name of the service. </p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>DNS information about the service.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was last updated. The format is ISO-8601.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status.</p>"
        }
      },
      "documentation":"<p>Summary information about a service.</p>"
    },
    "String":{"type":"string"},
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "TagKeys":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":200,
      "min":0
    },
    "TagMap":{
      "type":"map",
      "key":{
        "shape":"TagKey",
        "documentation":"<p>The key of the tag.</p> <p>Constraints: Tag keys are case-sensitive and accept a maximum of 128 Unicode characters. Valid characters are Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @ May not begin with <code>aws:</code>.</p>"
      },
      "value":{
        "shape":"TagValue",
        "documentation":"<p>The value of the tag.</p> <p>Constraints: Tag values are case-sensitive and accept a maximum of 256 Unicode characters. Valid characters are Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @</p>"
      },
      "max":200,
      "min":0
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tags"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the resource.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "Target":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"TargetIdString",
          "documentation":"<p>The ID of the target. If the target type of the target group is <code>INSTANCE</code>, this is an instance ID. If the target type is <code>IP</code> , this is an IP address. If the target type is <code>LAMBDA</code>, this is the ARN of the Lambda function. If the target type is <code>ALB</code>, this is the ARN of the Application Load Balancer.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port on which the target is listening. For HTTP, the default is <code>80</code>. For HTTPS, the default is <code>443</code>.</p>"
        }
      },
      "documentation":"<p>Describes a target.</p>"
    },
    "TargetFailure":{
      "type":"structure",
      "members":{
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the target. If the target type of the target group is <code>INSTANCE</code>, this is an instance ID. If the target type is <code>IP</code> , this is an IP address. If the target type is <code>LAMBDA</code>, this is the ARN of the Lambda function. If the target type is <code>ALB</code>, this is the ARN of the Application Load Balancer.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port on which the target is listening. This parameter doesn't apply if the target is a Lambda function.</p>"
        }
      },
      "documentation":"<p>Describes a target failure.</p>"
    },
    "TargetFailureList":{
      "type":"list",
      "member":{"shape":"TargetFailure"}
    },
    "TargetGroupArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}$"
    },
    "TargetGroupConfig":{
      "type":"structure",
      "members":{
        "healthCheck":{
          "shape":"HealthCheckConfig",
          "documentation":"<p>The health check configuration.</p>"
        },
        "ipAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The type of IP address used for the target group. The possible values are <code>ipv4</code> and <code>ipv6</code>. This is an optional parameter. If not specified, the IP address type defaults to <code>ipv4</code>.</p>"
        },
        "lambdaEventStructureVersion":{
          "shape":"LambdaEventStructureVersion",
          "documentation":"<p>Lambda event structure version</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port on which the targets are listening. For HTTP, the default is <code>80</code>. For HTTPS, the default is <code>443</code> </p>"
        },
        "protocol":{
          "shape":"TargetGroupProtocol",
          "documentation":"<p>The protocol to use for routing traffic to the targets. Default is the protocol of a target group.</p>"
        },
        "protocolVersion":{
          "shape":"TargetGroupProtocolVersion",
          "documentation":"<p>The protocol version. Default value is <code>HTTP1</code>.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      },
      "documentation":"<p>Describes the configuration of a target group. Lambda functions don't support target group configuration.</p>"
    },
    "TargetGroupId":{
      "type":"string",
      "max":20,
      "min":20,
      "pattern":"^tg-[0-9a-z]{17}$"
    },
    "TargetGroupIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"^((tg-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}))$"
    },
    "TargetGroupList":{
      "type":"list",
      "member":{"shape":"TargetGroupSummary"}
    },
    "TargetGroupName":{
      "type":"string",
      "max":128,
      "min":3,
      "pattern":"^(?!tg-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$"
    },
    "TargetGroupProtocol":{
      "type":"string",
      "enum":[
        "HTTP",
        "HTTPS"
      ]
    },
    "TargetGroupProtocolVersion":{
      "type":"string",
      "enum":[
        "HTTP1",
        "HTTP2",
        "GRPC"
      ]
    },
    "TargetGroupStatus":{
      "type":"string",
      "enum":[
        "CREATE_IN_PROGRESS",
        "ACTIVE",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "TargetGroupSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The ARN (Amazon Resource Name) of the target group.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was created, specified in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "ipAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The type of IP address used for the target group. The possible values are <code>ipv4</code> and <code>ipv6</code>. This is an optional parameter. If not specified, the IP address type defaults to <code>ipv4</code>.</p>"
        },
        "lambdaEventStructureVersion":{
          "shape":"LambdaEventStructureVersion",
          "documentation":"<p>Lambda event structure version</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was last updated, specified in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port of the target group.</p>"
        },
        "protocol":{
          "shape":"TargetGroupProtocol",
          "documentation":"<p>The protocol of the target group.</p>"
        },
        "serviceArns":{
          "shape":"ServiceArnList",
          "documentation":"<p>The list of Amazon Resource Names (ARNs) of the service.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC of the target group.</p>"
        }
      },
      "documentation":"<p>Summary information about a target group.</p>"
    },
    "TargetGroupType":{
      "type":"string",
      "enum":[
        "IP",
        "LAMBDA",
        "INSTANCE",
        "ALB"
      ]
    },
    "TargetGroupWeight":{
      "type":"integer",
      "box":true,
      "max":999,
      "min":0
    },
    "TargetIdString":{
      "type":"string",
      "max":200,
      "min":1
    },
    "TargetList":{
      "type":"list",
      "member":{"shape":"Target"}
    },
    "TargetStatus":{
      "type":"string",
      "enum":[
        "DRAINING",
        "UNAVAILABLE",
        "HEALTHY",
        "UNHEALTHY",
        "INITIAL",
        "UNUSED"
      ]
    },
    "TargetSummary":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the target. If the target type of the target group is <code>INSTANCE</code>, this is an instance ID. If the target type is <code>IP</code> , this is an IP address. If the target type is <code>LAMBDA</code>, this is the ARN of the Lambda function. If the target type is <code>ALB</code>, this is the ARN of the Application Load Balancer.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port on which the target is listening.</p>"
        },
        "reasonCode":{
          "shape":"String",
          "documentation":"<p>The code for why the target status is what it is.</p>"
        },
        "status":{
          "shape":"TargetStatus",
          "documentation":"<p>The status of the target.</p> <ul> <li> <p> <code>Draining</code>: The target is being deregistered. No new connections will be sent to this target while current connections are being drained. Default draining time is 5 minutes.</p> </li> <li> <p> <code>Unavailable</code>: Health checks are unavailable for the target group.</p> </li> <li> <p> <code>Healthy</code>: The target is healthy. </p> </li> <li> <p> <code>Unhealthy</code>: The target is unhealthy.</p> </li> <li> <p> <code>Initial</code>: Initial health checks on the target are being performed.</p> </li> <li> <p> <code>Unused</code>: Target group is not used in a service.</p> </li> </ul>"
        }
      },
      "documentation":"<p>Summary information about a target.</p>"
    },
    "TargetSummaryList":{
      "type":"list",
      "member":{"shape":"TargetSummary"}
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>The ID of the service quota that was exceeded.</p>"
        },
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>The number of seconds to wait before retrying.</p>",
          "location":"header",
          "locationName":"Retry-After"
        },
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>The service code.</p>"
        }
      },
      "documentation":"<p>The limit on the number of requests per second was exceeded.</p>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true,
      "retryable":{"throttling":true}
    },
    "Timestamp":{
      "type":"timestamp",
      "timestampFormat":"iso8601"
    },
    "UnhealthyThresholdCount":{
      "type":"integer",
      "box":true,
      "max":10,
      "min":0
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeys",
          "documentation":"<p>The tag keys of the tags to remove.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":[
        "accessLogSubscriptionIdentifier",
        "destinationArn"
      ],
      "members":{
        "accessLogSubscriptionIdentifier":{
          "shape":"AccessLogSubscriptionIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the access log subscription.</p>",
          "location":"uri",
          "locationName":"accessLogSubscriptionIdentifier"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log destination.</p>"
        }
      }
    },
    "UpdateAccessLogSubscriptionResponse":{
      "type":"structure",
      "required":[
        "arn",
        "destinationArn",
        "id",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource.</p>"
        }
      }
    },
    "UpdateListenerRequest":{
      "type":"structure",
      "required":[
        "defaultAction",
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "UpdateListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The protocol of the listener.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        }
      }
    },
    "UpdateRuleRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "ruleIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>Information about the action for the specified listener rule.</p>"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority. A listener can't have multiple rules with the same priority.</p>"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the rule.</p>",
          "location":"uri",
          "locationName":"ruleIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "UpdateRuleResponse":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>Information about the action for the specified listener rule.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default rule.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority.</p>"
        }
      }
    },
    "UpdateServiceNetworkRequest":{
      "type":"structure",
      "required":[
        "authType",
        "serviceNetworkIdentifier"
      ],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service network.</p>",
          "location":"uri",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "UpdateServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        }
      }
    },
    "UpdateServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":[
        "securityGroupIds",
        "serviceNetworkVpcAssociationIdentifier"
      ],
      "members":{
        "securityGroupIds":{
          "shape":"UpdateServiceNetworkVpcAssociationRequestSecurityGroupIdsList",
          "documentation":"<p>The IDs of the security groups. Once you add a security group, it cannot be removed.</p>"
        },
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "UpdateServiceNetworkVpcAssociationRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":1
    },
    "UpdateServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it while the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        }
      }
    },
    "UpdateServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate. </p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "UpdateServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate. </p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        }
      }
    },
    "UpdateTargetGroupRequest":{
      "type":"structure",
      "required":[
        "healthCheck",
        "targetGroupIdentifier"
      ],
      "members":{
        "healthCheck":{
          "shape":"HealthCheckConfig",
          "documentation":"<p>The health check configuration.</p>"
        },
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "UpdateTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "required":[
        "message",
        "reason"
      ],
      "members":{
        "fieldList":{
          "shape":"ValidationExceptionFieldList",
          "documentation":"<p>The fields that failed validation.</p>"
        },
        "message":{"shape":"String"},
        "reason":{
          "shape":"ValidationExceptionReason",
          "documentation":"<p>The reason.</p>"
        }
      },
      "documentation":"<p>The input does not satisfy the constraints specified by an Amazon Web Services service.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "ValidationExceptionField":{
      "type":"structure",
      "required":[
        "message",
        "name"
      ],
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>Additional details about why the validation failed.</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the validation exception.</p>"
        }
      },
      "documentation":"<p>Describes a validation failure.</p>"
    },
    "ValidationExceptionFieldList":{
      "type":"list",
      "member":{"shape":"ValidationExceptionField"}
    },
    "ValidationExceptionReason":{
      "type":"string",
      "enum":[
        "unknownOperation",
        "cannotParse",
        "fieldValidationFailed",
        "other"
      ]
    },
    "VpcId":{
      "type":"string",
      "max":50,
      "min":5,
      "pattern":"^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$"
    },
    "WeightedTargetGroup":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or Amazon Resource Name (ARN) of the target group.</p>"
        },
        "weight":{
          "shape":"TargetGroupWeight",
          "documentation":"<p>Only required if you specify multiple target groups for a forward action. The \"weight\" determines how requests are distributed to the target group. For example, if you specify two target groups, each with a weight of 10, each target group receives half the requests. If you specify two target groups, one with a weight of 10 and the other with a weight of 20, the target group with a weight of 20 receives twice as many requests as the other target group. If there's only one target group specified, then the default value is 100.</p>"
        }
      },
      "documentation":"<p>Describes the weight of a target group.</p>"
    },
    "WeightedTargetGroupList":{
      "type":"list",
      "member":{"shape":"WeightedTargetGroup"},
      "max":2,
      "min":1
    }
  },
  "documentation":"<p>Amazon VPC Lattice is a fully managed application networking service that you use to connect, secure, and monitor all of your services across multiple accounts and virtual private clouds (VPCs). Amazon VPC Lattice interconnects your microservices and legacy services within a logical boundary, so that you can discover and manage them more efficiently. For more information, see the <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/\">Amazon VPC Lattice User Guide</a> </p>"
}
