{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2022-11-30",
    "auth":["aws.auth#sigv4"],
    "endpointPrefix":"vpc-lattice",
    "protocol":"rest-json",
    "protocols":["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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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> <p> <b>Required permissions:</b> <code>vpc-lattice:UpdateRule</code> </p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/security_iam_service-with-iam.html\">How Amazon VPC Lattice works with IAM</a> in the <i>Amazon VPC Lattice User Guide</i>.</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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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 can 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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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
    },
    "CreateResourceConfiguration":{
      "name":"CreateResourceConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/resourceconfigurations",
        "responseCode":201
      },
      "input":{"shape":"CreateResourceConfigurationRequest"},
      "output":{"shape":"CreateResourceConfigurationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a resource configuration. A resource configuration defines a specific resource. You can associate a resource configuration with a service network or a VPC endpoint.</p>",
      "idempotent":true
    },
    "CreateResourceGateway":{
      "name":"CreateResourceGateway",
      "http":{
        "method":"POST",
        "requestUri":"/resourcegateways",
        "responseCode":201
      },
      "input":{"shape":"CreateResourceGatewayRequest"},
      "output":{"shape":"CreateResourceGatewayResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>A resource gateway is a point of ingress into the VPC where a resource resides. It spans multiple Availability Zones. For your resource to be accessible from all Availability Zones, you should create your resource gateways to span as many Availability Zones as possible. A VPC can have multiple resource gateways.</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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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
    },
    "CreateServiceNetworkResourceAssociation":{
      "name":"CreateServiceNetworkResourceAssociation",
      "http":{
        "method":"POST",
        "requestUri":"/servicenetworkresourceassociations",
        "responseCode":201
      },
      "input":{"shape":"CreateServiceNetworkResourceAssociationRequest"},
      "output":{"shape":"CreateServiceNetworkResourceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Associates the specified service network with the specified resource configuration. This allows the resource configuration to receive connections through the service network, including through a service network VPC endpoint.</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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Associates the specified service with the specified service network. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-network-associations.html#service-network-service-associations\">Manage service associations</a> in the <i>Amazon VPC Lattice User Guide</i>.</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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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>If you add a security group to the service network and VPC association, the association must continue to always have at least one security group. You can add or edit security groups at any time. However, to remove all security groups, you must first delete the association and recreate it without security groups.</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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified auth policy. If an auth is set to <code>AWS_IAM</code> and the auth policy is deleted, all requests are denied. 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 are denied.</p>",
      "idempotent":true
    },
    "DeleteDomainVerification":{
      "name":"DeleteDomainVerification",
      "http":{
        "method":"DELETE",
        "requestUri":"/domainverifications/{domainVerificationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteDomainVerificationRequest"},
      "output":{"shape":"DeleteDomainVerificationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p> Deletes the specified domain verification. </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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified listener.</p>",
      "idempotent":true
    },
    "DeleteResourceConfiguration":{
      "name":"DeleteResourceConfiguration",
      "http":{
        "method":"DELETE",
        "requestUri":"/resourceconfigurations/{resourceConfigurationIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteResourceConfigurationRequest"},
      "output":{"shape":"DeleteResourceConfigurationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified resource configuration.</p>",
      "idempotent":true
    },
    "DeleteResourceEndpointAssociation":{
      "name":"DeleteResourceEndpointAssociation",
      "http":{
        "method":"DELETE",
        "requestUri":"/resourceendpointassociations/{resourceEndpointAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteResourceEndpointAssociationRequest"},
      "output":{"shape":"DeleteResourceEndpointAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Disassociates the resource configuration from the resource VPC endpoint.</p>",
      "idempotent":true
    },
    "DeleteResourceGateway":{
      "name":"DeleteResourceGateway",
      "http":{
        "method":"DELETE",
        "requestUri":"/resourcegateways/{resourceGatewayIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteResourceGatewayRequest"},
      "output":{"shape":"DeleteResourceGatewayResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified resource gateway.</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":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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
    },
    "DeleteServiceNetworkResourceAssociation":{
      "name":"DeleteServiceNetworkResourceAssociation",
      "http":{
        "method":"DELETE",
        "requestUri":"/servicenetworkresourceassociations/{serviceNetworkResourceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteServiceNetworkResourceAssociationRequest"},
      "output":{"shape":"DeleteServiceNetworkResourceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the association between a service network and a resource configuration.</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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the association between a service and a service network. This operation fails 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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified access log subscription.</p>",
      "readonly":true
    },
    "GetAuthPolicy":{
      "name":"GetAuthPolicy",
      "http":{
        "method":"GET",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetAuthPolicyRequest"},
      "output":{"shape":"GetAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the auth policy for the specified service or service network.</p>",
      "readonly":true
    },
    "GetDomainVerification":{
      "name":"GetDomainVerification",
      "http":{
        "method":"GET",
        "requestUri":"/domainverifications/{domainVerificationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetDomainVerificationRequest"},
      "output":{"shape":"GetDomainVerificationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p> Retrieves information about a domain verification.ß </p>",
      "readonly":true
    },
    "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":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified listener for the specified service.</p>",
      "readonly":true
    },
    "GetResourceConfiguration":{
      "name":"GetResourceConfiguration",
      "http":{
        "method":"GET",
        "requestUri":"/resourceconfigurations/{resourceConfigurationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetResourceConfigurationRequest"},
      "output":{"shape":"GetResourceConfigurationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified resource configuration.</p>",
      "readonly":true
    },
    "GetResourceGateway":{
      "name":"GetResourceGateway",
      "http":{
        "method":"GET",
        "requestUri":"/resourcegateways/{resourceGatewayIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetResourceGatewayRequest"},
      "output":{"shape":"GetResourceGatewayResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified resource gateway.</p>",
      "readonly":true
    },
    "GetResourcePolicy":{
      "name":"GetResourcePolicy",
      "http":{
        "method":"GET",
        "requestUri":"/resourcepolicy/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"GetResourcePolicyRequest"},
      "output":{"shape":"GetResourcePolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified resource policy. The resource policy is an IAM policy created on behalf of the resource owner when they share a resource.</p>",
      "readonly":true
    },
    "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":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified 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>",
      "readonly":true
    },
    "GetService":{
      "name":"GetService",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceRequest"},
      "output":{"shape":"GetServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified service.</p>",
      "readonly":true
    },
    "GetServiceNetwork":{
      "name":"GetServiceNetwork",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworks/{serviceNetworkIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkRequest"},
      "output":{"shape":"GetServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified service network.</p>",
      "readonly":true
    },
    "GetServiceNetworkResourceAssociation":{
      "name":"GetServiceNetworkResourceAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkresourceassociations/{serviceNetworkResourceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkResourceAssociationRequest"},
      "output":{"shape":"GetServiceNetworkResourceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified association between a service network and a resource configuration.</p>",
      "readonly":true
    },
    "GetServiceNetworkServiceAssociation":{
      "name":"GetServiceNetworkServiceAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkserviceassociations/{serviceNetworkServiceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkServiceAssociationRequest"},
      "output":{"shape":"GetServiceNetworkServiceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified association between a service network and a service.</p>",
      "readonly":true
    },
    "GetServiceNetworkVpcAssociation":{
      "name":"GetServiceNetworkVpcAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkvpcassociations/{serviceNetworkVpcAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkVpcAssociationRequest"},
      "output":{"shape":"GetServiceNetworkVpcAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified association between a service network and a VPC.</p>",
      "readonly":true
    },
    "GetTargetGroup":{
      "name":"GetTargetGroup",
      "http":{
        "method":"GET",
        "requestUri":"/targetgroups/{targetGroupIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetTargetGroupRequest"},
      "output":{"shape":"GetTargetGroupResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified target group.</p>",
      "readonly":true
    },
    "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 the access log subscriptions for the specified service network or service.</p>",
      "readonly":true
    },
    "ListDomainVerifications":{
      "name":"ListDomainVerifications",
      "http":{
        "method":"GET",
        "requestUri":"/domainverifications",
        "responseCode":200
      },
      "input":{"shape":"ListDomainVerificationsRequest"},
      "output":{"shape":"ListDomainVerificationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p> Lists the domain verifications. </p>",
      "readonly":true
    },
    "ListListeners":{
      "name":"ListListeners",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners",
        "responseCode":200
      },
      "input":{"shape":"ListListenersRequest"},
      "output":{"shape":"ListListenersResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the listeners for the specified service.</p>",
      "readonly":true
    },
    "ListResourceConfigurations":{
      "name":"ListResourceConfigurations",
      "http":{
        "method":"GET",
        "requestUri":"/resourceconfigurations",
        "responseCode":200
      },
      "input":{"shape":"ListResourceConfigurationsRequest"},
      "output":{"shape":"ListResourceConfigurationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the resource configurations owned by or shared with this account.</p>",
      "readonly":true
    },
    "ListResourceEndpointAssociations":{
      "name":"ListResourceEndpointAssociations",
      "http":{
        "method":"GET",
        "requestUri":"/resourceendpointassociations",
        "responseCode":200
      },
      "input":{"shape":"ListResourceEndpointAssociationsRequest"},
      "output":{"shape":"ListResourceEndpointAssociationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the associations for the specified VPC endpoint.</p>",
      "readonly":true
    },
    "ListResourceGateways":{
      "name":"ListResourceGateways",
      "http":{
        "method":"GET",
        "requestUri":"/resourcegateways",
        "responseCode":200
      },
      "input":{"shape":"ListResourceGatewaysRequest"},
      "output":{"shape":"ListResourceGatewaysResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the resource gateways that you own or that were shared with you.</p>",
      "readonly":true
    },
    "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":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the rules for the specified listener.</p>",
      "readonly":true
    },
    "ListServiceNetworkResourceAssociations":{
      "name":"ListServiceNetworkResourceAssociations",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkresourceassociations",
        "responseCode":200
      },
      "input":{"shape":"ListServiceNetworkResourceAssociationsRequest"},
      "output":{"shape":"ListServiceNetworkResourceAssociationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the associations between a service network and a resource configuration.</p>",
      "readonly":true
    },
    "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 a service network and a 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 has 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 is shared with another account, the association includes the local account ID as the prefix in the ARN.</p>",
      "readonly":true
    },
    "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 associations between a service network and a VPC. You can filter the list either by VPC or service network. You must provide either the ID of the service network identifier or the ID of the VPC.</p>",
      "readonly":true
    },
    "ListServiceNetworkVpcEndpointAssociations":{
      "name":"ListServiceNetworkVpcEndpointAssociations",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkvpcendpointassociations",
        "responseCode":200
      },
      "input":{"shape":"ListServiceNetworkVpcEndpointAssociationsRequest"},
      "output":{"shape":"ListServiceNetworkVpcEndpointAssociationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the associations between a service network and a VPC endpoint.</p>",
      "readonly":true
    },
    "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 or shared with this account. The account ID in the ARN shows which account owns the service network.</p>",
      "readonly":true
    },
    "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>",
      "readonly":true
    },
    "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>",
      "readonly":true
    },
    "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>",
      "readonly":true
    },
    "ListTargets":{
      "name":"ListTargets",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups/{targetGroupIdentifier}/listtargets",
        "responseCode":200
      },
      "input":{"shape":"ListTargetsRequest"},
      "output":{"shape":"ListTargetsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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>",
      "readonly":true
    },
    "PutAuthPolicy":{
      "name":"PutAuthPolicy",
      "http":{
        "method":"PUT",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"PutAuthPolicyRequest"},
      "output":{"shape":"PutAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates or updates the auth policy. The policy string in JSON must not contain newlines or blank lines.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/auth-policies.html\">Auth policies</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>"
    },
    "PutResourcePolicy":{
      "name":"PutResourcePolicy",
      "http":{
        "method":"PUT",
        "requestUri":"/resourcepolicy/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"PutResourcePolicyRequest"},
      "output":{"shape":"PutResourcePolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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>"
    },
    "StartDomainVerification":{
      "name":"StartDomainVerification",
      "http":{
        "method":"POST",
        "requestUri":"/domainverifications",
        "responseCode":201
      },
      "input":{"shape":"StartDomainVerificationRequest"},
      "output":{"shape":"StartDomainVerificationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p> Starts the domain verification process for a custom domain name. </p>",
      "idempotent":true
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified listener for the specified service.</p>",
      "idempotent":true
    },
    "UpdateResourceConfiguration":{
      "name":"UpdateResourceConfiguration",
      "http":{
        "method":"PATCH",
        "requestUri":"/resourceconfigurations/{resourceConfigurationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateResourceConfigurationRequest"},
      "output":{"shape":"UpdateResourceConfigurationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified resource configuration.</p>"
    },
    "UpdateResourceGateway":{
      "name":"UpdateResourceGateway",
      "http":{
        "method":"PATCH",
        "requestUri":"/resourcegateways/{resourceGatewayIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateResourceGatewayRequest"},
      "output":{"shape":"UpdateResourceGatewayResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified resource gateway.</p>"
    },
    "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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates a specified 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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the service network and VPC association. If you add a security group to the service network and VPC association, the association must continue to have at least one security group. You can add or edit security groups at any time. However, to remove all security groups, you must first delete the association and then recreate it without security groups.</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":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"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":[
        "id",
        "arn",
        "resourceId",
        "resourceArn",
        "destinationArn",
        "createdAt",
        "lastUpdatedAt"
      ],
      "members":{
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service or service network.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service or service network.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the destination.</p>"
        },
        "serviceNetworkLogType":{
          "shape":"ServiceNetworkLogType",
          "documentation":"<p>Log type of the service network.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was last updated, in ISO-8601 format.</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}"
    },
    "ArnResource":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"WildcardArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
        }
      },
      "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
    },
    "AuthPolicyState":{
      "type":"string",
      "enum":[
        "Active",
        "Inactive"
      ]
    },
    "AuthPolicyString":{
      "type":"string",
      "max":36864,
      "min":0
    },
    "AuthType":{
      "type":"string",
      "enum":[
        "NONE",
        "AWS_IAM"
      ]
    },
    "BatchUpdateRuleRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "listenerIdentifier",
        "rules"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "rules":{
          "shape":"RuleUpdateList",
          "documentation":"<p>The rules for the specified listener.</p>"
        }
      }
    },
    "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":[
        "resourceIdentifier",
        "destinationArn"
      ],
      "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
        },
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or ARN of the service network or service.</p>"
        },
        "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>"
        },
        "serviceNetworkLogType":{
          "shape":"ServiceNetworkLogType",
          "documentation":"<p>The type of log that monitors your Amazon VPC Lattice service networks.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the access log subscription.</p>"
        }
      }
    },
    "CreateAccessLogSubscriptionResponse":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "resourceId",
        "resourceArn",
        "destinationArn"
      ],
      "members":{
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service network or service.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>"
        },
        "serviceNetworkLogType":{
          "shape":"ServiceNetworkLogType",
          "documentation":"<p>The type of log that monitors your Amazon VPC Lattice service networks.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the log destination.</p>"
        }
      }
    },
    "CreateListenerRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "name",
        "protocol",
        "defaultAction"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "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>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port. You can specify a value from 1 to 65535. For HTTP, the default is 80. For HTTPS, the default is 443.</p>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule. Each listener has a default rule. The default rule is used if no other rules match.</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
        },
        "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>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The protocol of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port number 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>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        }
      }
    },
    "CreateResourceConfigurationRequest":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration. 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>"
        },
        "type":{
          "shape":"ResourceConfigurationType",
          "documentation":"<p>The type of resource configuration. A resource configuration can be one of the following types:</p> <ul> <li> <p> <b>SINGLE</b> - A single resource.</p> </li> <li> <p> <b>GROUP</b> - A group of resources. You must create a group resource configuration before you create a child resource configuration.</p> </li> <li> <p> <b>CHILD</b> - A single resource that is part of a group resource configuration.</p> </li> <li> <p> <b>ARN</b> - An Amazon Web Services resource.</p> </li> </ul>"
        },
        "portRanges":{
          "shape":"PortRangeList",
          "documentation":"<p>(SINGLE, GROUP, CHILD) The TCP port ranges that a consumer can use to access a resource configuration (for example: 1-65535). You can separate port ranges using commas (for example: 1,2,22-30).</p>"
        },
        "protocol":{
          "shape":"ProtocolType",
          "documentation":"<p>(SINGLE, GROUP) The protocol accepted by the resource configuration.</p>"
        },
        "resourceGatewayIdentifier":{
          "shape":"ResourceGatewayIdentifier",
          "documentation":"<p>(SINGLE, GROUP, ARN) The ID or ARN of the resource gateway used to connect to the resource configuration. For a child resource configuration, this value is inherited from the parent resource configuration.</p>"
        },
        "resourceConfigurationGroupIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>(CHILD) The ID or ARN of the parent resource configuration of type <code>GROUP</code>. This is used to associate a child resource configuration with a group resource configuration.</p>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>Identifies the resource configuration in one of the following ways:</p> <ul> <li> <p> <b>Amazon Resource Name (ARN)</b> - Supported resource-types that are provisioned by Amazon Web Services services, such as RDS databases, can be identified by their ARN.</p> </li> <li> <p> <b>Domain name</b> - Any domain name that is publicly resolvable.</p> </li> <li> <p> <b>IP address</b> - For IPv4 and IPv6, only IP addresses in the VPC are supported.</p> </li> </ul>"
        },
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>(SINGLE, GROUP, ARN) Specifies whether the resource configuration can be associated with a sharable service network. The default is false.</p>"
        },
        "customDomainName":{
          "shape":"DomainName",
          "documentation":"<p> A custom domain name for your resource configuration. Additionally, provide a DomainVerificationID to prove your ownership of a domain. </p>"
        },
        "groupDomain":{
          "shape":"DomainName",
          "documentation":"<p> (GROUP) The group domain for a group resource configuration. Any domains that you create for the child resource are subdomains of the group domain. Child resources inherit the verification status of the domain. </p>"
        },
        "domainVerificationIdentifier":{
          "shape":"DomainVerificationIdentifier",
          "documentation":"<p> The domain verification ID of your verified custom domain name. If you don't provide an ID, you must configure the DNS settings yourself. </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
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the resource configuration.</p>"
        }
      }
    },
    "CreateResourceConfigurationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "resourceGatewayId":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway associated with the resource configuration.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the parent resource configuration of type <code>GROUP</code>.</p>"
        },
        "type":{
          "shape":"ResourceConfigurationType",
          "documentation":"<p>The type of resource configuration. A resource configuration can be one of the following types:</p> <ul> <li> <p> <b>SINGLE</b> - A single resource.</p> </li> <li> <p> <b>GROUP</b> - A group of resources. You must create a group resource configuration before you create a child resource configuration.</p> </li> <li> <p> <b>CHILD</b> - A single resource that is part of a group resource configuration.</p> </li> <li> <p> <b>ARN</b> - An Amazon Web Services resource.</p> </li> </ul>"
        },
        "portRanges":{
          "shape":"PortRangeList",
          "documentation":"<p>The port range.</p>"
        },
        "protocol":{
          "shape":"ProtocolType",
          "documentation":"<p>The protocol.</p>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The current status of the resource configuration.</p>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>Identifies the resource configuration in one of the following ways:</p> <ul> <li> <p> <b>Amazon Resource Name (ARN)</b> - Supported resource-types that are provisioned by Amazon Web Services services, such as RDS databases, can be identified by their ARN.</p> </li> <li> <p> <b>Domain name</b> - Any domain name that is publicly resolvable.</p> </li> <li> <p> <b>IP address</b> - For IPv4 and IPv6, only IP addresses in the VPC are supported.</p> </li> </ul>"
        },
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether the resource configuration can be associated with a sharable service network.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource configuration was created, in ISO-8601 format.</p>"
        },
        "failureReason":{
          "shape":"String",
          "documentation":"<p>The reason that the request failed.</p>"
        },
        "customDomainName":{
          "shape":"DomainName",
          "documentation":"<p> The custom domain name for your resource configuration. </p>"
        },
        "domainVerificationId":{
          "shape":"DomainVerificationId",
          "documentation":"<p> The domain name verification ID. </p>"
        },
        "groupDomain":{
          "shape":"DomainName",
          "documentation":"<p> (GROUP) The group domain for a group resource configuration. Any domains that you create for the child resource are subdomains of the group domain. Child resources inherit the verification status of the domain. </p>"
        },
        "domainVerificationArn":{
          "shape":"DomainVerificationArn",
          "documentation":"<p> The verification ID ARN </p>"
        }
      }
    },
    "CreateResourceGatewayRequest":{
      "type":"structure",
      "required":["name"],
      "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
        },
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets in which to create the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"CreateResourceGatewayRequestSecurityGroupIdsList",
          "documentation":"<p>The IDs of the security groups to apply to the resource gateway. The security groups must be in the same VPC.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>A resource gateway can have IPv4, IPv6 or dualstack addresses. The IP address type of a resource gateway must be compatible with the subnets of the resource gateway and the IP address type of the resource, as described here: </p> <ul> <li> <p> <b>IPv4</b>Assign IPv4 addresses to your resource gateway network interfaces. This option is supported only if all selected subnets have IPv4 address ranges, and the resource also has an IPv4 address.</p> </li> <li> <p> <b>IPv6</b>Assign IPv6 addresses to your resource gateway network interfaces. This option is supported only if all selected subnets are IPv6 only subnets, and the resource also has an IPv6 address.</p> </li> <li> <p> <b>Dualstack</b>Assign both IPv4 and IPv6 addresses to your resource gateway network interfaces. This option is supported only if all selected subnets have both IPv4 and IPv6 address ranges, and the resource either has an IPv4 or IPv6 address.</p> </li> </ul> <p>The IP address type of the resource gateway is independent of the IP address type of the client or the VPC endpoint through which the resource is accessed.</p>"
        },
        "ipv4AddressesPerEni":{
          "shape":"Ipv4AddressesPerEni",
          "documentation":"<p>The number of IPv4 addresses in each ENI for the resource gateway.</p>"
        },
        "resourceConfigDnsResolution":{
          "shape":"ResourceConfigDnsResolution",
          "documentation":"<p>Indicates how DNS is resolved for resource configurations associated to this resource gateway. ResourceConfigDnsResolution is set at creation time and cannot be changed.</p> <ul> <li> <p> <code>IN_VPC</code> - DNS resolution occurs privately within the resource gateway's VPC. DNS queries for resources behind this resource gateway resolve using the DNS resolvers defined in the VPC's DHCP option sets. Use this when your resource domain names are hosted in private Route 53 hosted zones or on-premises DNS servers reachable from the VPC.</p> </li> <li> <p> <code>PUBLIC</code> - DNS resolution occurs against public DNS resolvers. DNS queries for resources behind this resource gateway resolve using standard public DNS. Use this when your resource domain names are publicly resolvable.</p> </li> </ul>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the resource gateway.</p>"
        }
      }
    },
    "CreateResourceGatewayRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":0
    },
    "CreateResourceGatewayResponse":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The status of the resource gateway.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the resource gateway subnets.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups for the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>The type of IP address for the resource gateway.</p>"
        },
        "ipv4AddressesPerEni":{
          "shape":"Ipv4AddressesPerEni",
          "documentation":"<p>The number of IPv4 addresses in each ENI for the resource gateway.</p>"
        },
        "resourceConfigDnsResolution":{
          "shape":"ResourceConfigDnsResolution",
          "documentation":"<p>The DNS resolution type for resource configurations that are associated with this resource gateway.</p>"
        }
      }
    },
    "CreateRuleRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "listenerIdentifier",
        "name",
        "match",
        "priority",
        "action"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "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>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</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>"
        },
        "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
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the rule.</p>"
        }
      }
    },
    "CreateRuleResponse":{
      "type":"structure",
      "members":{
        "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>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name 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>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority assigned to the rule. The lower the priority number the higher the priority.</p>"
        },
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The rule action.</p>"
        }
      }
    },
    "CreateServiceNetworkRequest":{
      "type":"structure",
      "required":["name"],
      "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
        },
        "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>"
        },
        "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>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the service network.</p>"
        },
        "sharingConfig":{
          "shape":"SharingConfig",
          "documentation":"<p>Specify if the service network should be enabled for sharing.</p>"
        }
      }
    },
    "CreateServiceNetworkResourceAssociationRequest":{
      "type":"structure",
      "required":[
        "resourceConfigurationIdentifier",
        "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
        },
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the resource configuration to associate with the service network.</p>"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifierWithoutRegex",
          "documentation":"<p>The ID of the service network to associate with the resource configuration.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is enabled for the service network resource association. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A key-value pair to associate with a resource.</p>"
        }
      }
    },
    "CreateServiceNetworkResourceAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkResourceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The ID of the account that created the association.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is is enabled for the service network resource association. </p>"
        }
      }
    },
    "CreateServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "sharingConfig":{
          "shape":"SharingConfig",
          "documentation":"<p>Specifies if the service network is enabled for sharing.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</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 ARN of the service.</p>"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network. You must use an ARN if the resources are in different accounts.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the association.</p>"
        }
      }
    },
    "CreateServiceNetworkServiceAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The association status.</p>"
        },
        "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>"
        }
      }
    },
    "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
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network. You must use an ARN if the resources are in different accounts.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is enabled for the VPC association. </p>"
        },
        "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>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the association.</p>"
        },
        "dnsOptions":{
          "shape":"DnsOptions",
          "documentation":"<p> DNS options for the service network VPC association. </p>"
        }
      }
    },
    "CreateServiceNetworkVpcAssociationRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":0
    },
    "CreateServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The association status.</p>"
        },
        "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>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is enabled for the VPC association. </p>"
        },
        "dnsOptions":{"shape":"DnsOptions"}
      }
    },
    "CreateServiceRequest":{
      "type":"structure",
      "required":["name"],
      "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
        },
        "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>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "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>"
        }
      }
    },
    "CreateServiceResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status. If the status is <code>CREATE_FAILED</code>, you must delete and recreate the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The public DNS name of the service.</p>"
        }
      }
    },
    "CreateTargetGroupRequest":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "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>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The type of target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</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
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the target group.</p>"
        }
      }
    },
    "CreateTargetGroupResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The type of target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The 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>"
        }
      }
    },
    "DeleteAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":["accessLogSubscriptionIdentifier"],
      "members":{
        "accessLogSubscriptionIdentifier":{
          "shape":"AccessLogSubscriptionIdentifier",
          "documentation":"<p>The ID or 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 ARN of the resource.</p>",
          "location":"uri",
          "locationName":"resourceIdentifier"
        }
      }
    },
    "DeleteAuthPolicyResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteDomainVerificationRequest":{
      "type":"structure",
      "required":["domainVerificationIdentifier"],
      "members":{
        "domainVerificationIdentifier":{
          "shape":"DomainVerificationIdentifier",
          "documentation":"<p> The ID of the domain verification to delete. </p>",
          "location":"uri",
          "locationName":"domainVerificationIdentifier"
        }
      }
    },
    "DeleteDomainVerificationResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteListenerRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "listenerIdentifier"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        }
      }
    },
    "DeleteListenerResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteResourceConfigurationRequest":{
      "type":"structure",
      "required":["resourceConfigurationIdentifier"],
      "members":{
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID or ARN of the resource configuration.</p>",
          "location":"uri",
          "locationName":"resourceConfigurationIdentifier"
        }
      }
    },
    "DeleteResourceConfigurationResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteResourceEndpointAssociationRequest":{
      "type":"structure",
      "required":["resourceEndpointAssociationIdentifier"],
      "members":{
        "resourceEndpointAssociationIdentifier":{
          "shape":"ResourceEndpointAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"resourceEndpointAssociationIdentifier"
        }
      }
    },
    "DeleteResourceEndpointAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ResourceEndpointAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "arn":{
          "shape":"ResourceEndpointAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration associated with the VPC endpoint of type resource.</p>"
        },
        "vpcEndpointId":{
          "shape":"VpcEndpointId",
          "documentation":"<p>The ID of the resource VPC endpoint that is associated with the resource configuration.</p>"
        }
      }
    },
    "DeleteResourceGatewayRequest":{
      "type":"structure",
      "required":["resourceGatewayIdentifier"],
      "members":{
        "resourceGatewayIdentifier":{
          "shape":"ResourceGatewayIdentifier",
          "documentation":"<p>The ID or ARN of the resource gateway.</p>",
          "location":"uri",
          "locationName":"resourceGatewayIdentifier"
        }
      }
    },
    "DeleteResourceGatewayResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The status of the resource gateway.</p>"
        }
      }
    },
    "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":[
        "serviceIdentifier",
        "listenerIdentifier",
        "ruleIdentifier"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the rule.</p>",
          "location":"uri",
          "locationName":"ruleIdentifier"
        }
      }
    },
    "DeleteRuleResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteServiceNetworkRequest":{
      "type":"structure",
      "required":["serviceNetworkIdentifier"],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network.</p>",
          "location":"uri",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "DeleteServiceNetworkResourceAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkResourceAssociationIdentifier"],
      "members":{
        "serviceNetworkResourceAssociationIdentifier":{
          "shape":"ServiceNetworkResourceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkResourceAssociationIdentifier"
        }
      }
    },
    "DeleteServiceNetworkResourceAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkResourceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        }
      }
    },
    "DeleteServiceNetworkResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteServiceNetworkServiceAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkServiceAssociationIdentifier"],
      "members":{
        "serviceNetworkServiceAssociationIdentifier":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkServiceAssociationIdentifier"
        }
      }
    },
    "DeleteServiceNetworkServiceAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "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>"
        },
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        }
      }
    },
    "DeleteServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkVpcAssociationIdentifier"],
      "members":{
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "DeleteServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "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 while the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        }
      }
    },
    "DeleteServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "DeleteServiceResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) 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 ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "DeleteTargetGroupResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) 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 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>"
    },
    "DnsOptions":{
      "type":"structure",
      "members":{
        "privateDnsPreference":{
          "shape":"PrivateDnsPreference",
          "documentation":"<p> The preference for which private domains have a private hosted zone created for and associated with the specified VPC. Only supported when private DNS is enabled and when the VPC endpoint type is ServiceNetwork or Resource. </p> <ul> <li> <p> <code>ALL_DOMAINS</code> - VPC Lattice provisions private hosted zones for all custom domain names.</p> </li> <li> <p> <code>VERIFIED_DOMAINS_ONLY</code> - VPC Lattice provisions a private hosted zone only if custom domain name has been verified by the provider.</p> </li> <li> <p> <code>VERIFIED_DOMAINS_AND_SPECIFIED_DOMAINS</code> - VPC Lattice provisions private hosted zones for all verified custom domain names and other domain names that the resource consumer specifies. The resource consumer specifies the domain names in the privateDnsSpecifiedDomains parameter.</p> </li> <li> <p> <code>SPECIFIED_DOMAINS_ONLY</code> - VPC Lattice provisions a private hosted zone for domain names specified by the resource consumer. The resource consumer specifies the domain names in the privateDnsSpecifiedDomains parameter.</p> </li> </ul>"
        },
        "privateDnsSpecifiedDomains":{
          "shape":"PrivateDnsSpecifiedDomainsList",
          "documentation":"<p> Indicates which of the private domains to create private hosted zones for and associate with the specified VPC. Only supported when private DNS is enabled and the private DNS preference is <code>VERIFIED_DOMAINS_AND_SPECIFIED_DOMAINS</code> or <code>SPECIFIED_DOMAINS_ONLY</code>. </p>"
        }
      },
      "documentation":"<p> The DNS configuration options. </p>"
    },
    "DnsResource":{
      "type":"structure",
      "members":{
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p>The domain name of the resource.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceConfigurationIpAddressType",
          "documentation":"<p>The type of IP address. Dualstack is currently not supported.</p>"
        }
      },
      "documentation":"<p>The DNS name of the resource.</p>"
    },
    "DomainName":{
      "type":"string",
      "max":255,
      "min":3
    },
    "DomainVerificationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:domainverification/dv-[a-fA-F0-9]{17}"
    },
    "DomainVerificationId":{
      "type":"string",
      "max":20,
      "min":20,
      "pattern":"dv-[a-fA-F0-9]{17}"
    },
    "DomainVerificationIdentifier":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"((dv-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:domainverification/dv-[a-fA-F0-9]{17}))"
    },
    "DomainVerificationList":{
      "type":"list",
      "member":{"shape":"DomainVerificationSummary"}
    },
    "DomainVerificationSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "domainName",
        "status",
        "createdAt"
      ],
      "members":{
        "id":{
          "shape":"DomainVerificationId",
          "documentation":"<p> The ID of the domain verification. </p>"
        },
        "arn":{
          "shape":"DomainVerificationArn",
          "documentation":"<p> The Amazon Resource Name (ARN) of the domain verification. </p>"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> The domain name being verified. </p>"
        },
        "status":{
          "shape":"VerificationStatus",
          "documentation":"<p> The current status of the domain verification process. </p>"
        },
        "txtMethodConfig":{
          "shape":"TxtMethodConfig",
          "documentation":"<p> The TXT record configuration used for domain verification. </p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p> The date and time that the domain verification was created, in ISO-8601 format. </p>"
        },
        "lastVerifiedTime":{
          "shape":"Timestamp",
          "documentation":"<p> The date and time that the domain was last successfully verified, in ISO-8601 format. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> The tags associated with the domain verification. </p>"
        }
      },
      "documentation":"<p> Summary information about a domain verification. </p>"
    },
    "FailureCode":{"type":"string"},
    "FailureMessage":{"type":"string"},
    "FixedResponseAction":{
      "type":"structure",
      "required":["statusCode"],
      "members":{
        "statusCode":{
          "shape":"HttpStatusCode",
          "documentation":"<p>The HTTP response code. Only <code>404</code> and <code>500</code> status codes are supported.</p>"
        }
      },
      "documentation":"<p>Describes 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 the traffic goes 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 ARN of the access log subscription.</p>",
          "location":"uri",
          "locationName":"accessLogSubscriptionIdentifier"
        }
      }
    },
    "GetAccessLogSubscriptionResponse":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "resourceId",
        "resourceArn",
        "destinationArn",
        "createdAt",
        "lastUpdatedAt"
      ],
      "members":{
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service network or service.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log destination.</p>"
        },
        "serviceNetworkLogType":{
          "shape":"ServiceNetworkLogType",
          "documentation":"<p>The log type for the service network.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was last updated, in ISO-8601 format.</p>"
        }
      }
    },
    "GetAuthPolicyRequest":{
      "type":"structure",
      "required":["resourceIdentifier"],
      "members":{
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or ARN of the service network or service.</p>",
          "location":"uri",
          "locationName":"resourceIdentifier"
        }
      }
    },
    "GetAuthPolicyResponse":{
      "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>AWS_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 that you provide remains 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>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the auth policy was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the auth policy was last updated, in ISO-8601 format.</p>"
        }
      }
    },
    "GetDomainVerificationRequest":{
      "type":"structure",
      "required":["domainVerificationIdentifier"],
      "members":{
        "domainVerificationIdentifier":{
          "shape":"DomainVerificationIdentifier",
          "documentation":"<p> The ID or ARN of the domain verification to retrieve. </p>",
          "location":"uri",
          "locationName":"domainVerificationIdentifier"
        }
      }
    },
    "GetDomainVerificationResponse":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "domainName",
        "status",
        "createdAt"
      ],
      "members":{
        "id":{
          "shape":"DomainVerificationId",
          "documentation":"<p> The ID of the domain verification. </p>"
        },
        "arn":{
          "shape":"DomainVerificationArn",
          "documentation":"<p> The Amazon Resource Name (ARN) of the domain verification. </p>"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> The domain name being verified. </p>"
        },
        "status":{
          "shape":"VerificationStatus",
          "documentation":"<p> The current status of the domain verification process. </p>"
        },
        "txtMethodConfig":{
          "shape":"TxtMethodConfig",
          "documentation":"<p> The TXT record configuration used for domain verification. </p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p> The date and time that the domain verification was created, in ISO-8601 format. </p>"
        },
        "lastVerifiedTime":{
          "shape":"Timestamp",
          "documentation":"<p> The date and time that the domain was last successfully verified, in ISO-8601 format. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> The tags associated with the domain verification. </p>"
        }
      }
    },
    "GetListenerRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "listenerIdentifier"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        }
      }
    },
    "GetListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</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>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The actions for the default listener rule.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was last updated, in ISO-8601 format.</p>"
        }
      }
    },
    "GetResourceConfigurationRequest":{
      "type":"structure",
      "required":["resourceConfigurationIdentifier"],
      "members":{
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the resource configuration.</p>",
          "location":"uri",
          "locationName":"resourceConfigurationIdentifier"
        }
      }
    },
    "GetResourceConfigurationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "resourceGatewayId":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway used to connect to the resource configuration in a given VPC. You can specify the resource gateway identifier only for resource configurations with type SINGLE, GROUP, or ARN.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the group resource configuration.</p>"
        },
        "type":{
          "shape":"ResourceConfigurationType",
          "documentation":"<p>The type of resource configuration.</p> <ul> <li> <p> <code>SINGLE</code> - A single resource.</p> </li> <li> <p> <code>GROUP</code> - A group of resources.</p> </li> <li> <p> <code>CHILD</code> - A single resource that is part of a group resource configuration.</p> </li> <li> <p> <code>ARN</code> - An Amazon Web Services resource.</p> </li> </ul>"
        },
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether the resource configuration is associated with a sharable service network.</p>"
        },
        "portRanges":{
          "shape":"PortRangeList",
          "documentation":"<p>The TCP port ranges that a consumer can use to access a resource configuration. You can separate port ranges with a comma. Example: 1-65535 or 1,2,22-30</p>"
        },
        "protocol":{
          "shape":"ProtocolType",
          "documentation":"<p>The TCP protocol accepted by the specified resource configuration.</p>"
        },
        "customDomainName":{
          "shape":"DomainName",
          "documentation":"<p>The custom domain name of the resource configuration.</p>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The status of the resource configuration.</p>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>The resource configuration.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource configuration was created, in ISO-8601 format.</p>"
        },
        "amazonManaged":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the resource configuration was created and is managed by Amazon.</p>"
        },
        "failureReason":{
          "shape":"String",
          "documentation":"<p>The reason the create-resource-configuration request failed.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The most recent date and time that the resource configuration was updated, in ISO-8601 format.</p>"
        },
        "domainVerificationId":{
          "shape":"DomainVerificationId",
          "documentation":"<p> The domain verification ID. </p>"
        },
        "domainVerificationArn":{
          "shape":"DomainVerificationArn",
          "documentation":"<p> The ARN of the domain verification. </p>"
        },
        "domainVerificationStatus":{
          "shape":"VerificationStatus",
          "documentation":"<p> The domain verification status. </p>"
        },
        "groupDomain":{
          "shape":"DomainName",
          "documentation":"<p> (GROUP) The group domain for a group resource configuration. Any domains that you create for the child resource are subdomains of the group domain. Child resources inherit the verification status of the domain. </p>"
        }
      }
    },
    "GetResourceGatewayRequest":{
      "type":"structure",
      "required":["resourceGatewayIdentifier"],
      "members":{
        "resourceGatewayIdentifier":{
          "shape":"ResourceGatewayIdentifier",
          "documentation":"<p>The ID of the resource gateway.</p>",
          "location":"uri",
          "locationName":"resourceGatewayIdentifier"
        }
      }
    },
    "GetResourceGatewayResponse":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The status for the resource gateway.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets for resource gateway.</p>"
        },
        "serviceManaged":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the resource gateway is managed by an AWS service.</p>"
        },
        "managedBy":{
          "shape":"String",
          "documentation":"<p>The AWS service that manages the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The security group IDs associated with the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>The type of IP address for the resource gateway.</p>"
        },
        "ipv4AddressesPerEni":{
          "shape":"Ipv4AddressesPerEni",
          "documentation":"<p>The number of IPv4 addresses in each ENI for the resource gateway.</p>"
        },
        "resourceConfigDnsResolution":{
          "shape":"ResourceConfigDnsResolution",
          "documentation":"<p>The DNS resolution type for resource configurations that are associated with this resource gateway.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource gateway was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource gateway was last updated, in ISO-8601 format.</p>"
        }
      }
    },
    "GetResourcePolicyRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "GetResourcePolicyResponse":{
      "type":"structure",
      "members":{
        "policy":{
          "shape":"PolicyString",
          "documentation":"<p>An IAM policy.</p>"
        }
      }
    },
    "GetRuleRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "listenerIdentifier",
        "ruleIdentifier"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the listener rule.</p>",
          "location":"uri",
          "locationName":"ruleIdentifier"
        }
      }
    },
    "GetRuleResponse":{
      "type":"structure",
      "members":{
        "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>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name 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>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority level for the specified rule.</p>"
        },
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was last updated, in ISO-8601 format.</p>"
        }
      }
    },
    "GetServiceNetworkRequest":{
      "type":"structure",
      "required":["serviceNetworkIdentifier"],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network.</p>",
          "location":"uri",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "GetServiceNetworkResourceAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkResourceAssociationIdentifier"],
      "members":{
        "serviceNetworkResourceAssociationIdentifier":{
          "shape":"ServiceNetworkResourceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkResourceAssociationIdentifier"
        }
      }
    },
    "GetServiceNetworkResourceAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkResourceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration that is associated with the service network.</p>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "resourceConfigurationName":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration that is associated with the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkIdentifierWithoutRegex",
          "documentation":"<p>The ID of the service network that is associated with the resource configuration.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkIdentifierWithoutRegex",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network that is associated with the resource configuration.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkNameWithoutRegex",
          "documentation":"<p>The name of the service network that is associated with the resource configuration.</p>"
        },
        "failureReason":{
          "shape":"String",
          "documentation":"<p>The reason the association request failed.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The most recent date and time that the association was updated, in ISO-8601 format.</p>"
        },
        "privateDnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The private DNS entry for the service.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is enabled in the service network resource association. </p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS entry for the service.</p>"
        },
        "isManagedAssociation":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the association is managed by Amazon.</p>"
        },
        "domainVerificationStatus":{
          "shape":"VerificationStatus",
          "documentation":"<p> The domain verification status in the service network resource association. </p>"
        }
      }
    },
    "GetServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time of the last update, in ISO-8601 format.</p>"
        },
        "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>"
        },
        "sharingConfig":{
          "shape":"SharingConfig",
          "documentation":"<p>Specifies if the service network is enabled for sharing.</p>"
        },
        "numberOfAssociatedVPCs":{
          "shape":"Long",
          "documentation":"<p>The number of VPCs associated with the service network.</p>"
        },
        "numberOfAssociatedServices":{
          "shape":"Long",
          "documentation":"<p>The number of services associated with the service network.</p>"
        }
      }
    },
    "GetServiceNetworkServiceAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkServiceAssociationIdentifier"],
      "members":{
        "serviceNetworkServiceAssociationIdentifier":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkServiceAssociationIdentifier"
        }
      }
    },
    "GetServiceNetworkServiceAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the service network and service association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        },
        "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>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "serviceName":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</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>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        }
      }
    },
    "GetServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkVpcAssociationIdentifier"],
      "members":{
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "GetServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        },
        "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>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</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>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is enabled in the VPC association. </p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was last updated, in ISO-8601 format.</p>"
        },
        "dnsOptions":{
          "shape":"DnsOptions",
          "documentation":"<p> DNS options for the service network VPC association. </p>"
        }
      }
    },
    "GetServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "GetServiceResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "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, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was last updated, in ISO-8601 format.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status of the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "failureCode":{
          "shape":"FailureCode",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"FailureMessage",
          "documentation":"<p>The failure message.</p>"
        }
      }
    },
    "GetTargetGroupRequest":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "GetTargetGroupResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</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, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was last updated, in ISO-8601 format.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "serviceArns":{
          "shape":"ServiceArnList",
          "documentation":"<p>The Amazon Resource Names (ARNs) of the service.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        }
      }
    },
    "HeaderMatch":{
      "type":"structure",
      "required":[
        "name",
        "match"
      ],
      "members":{
        "name":{
          "shape":"HeaderMatchName",
          "documentation":"<p>The name of the header.</p>"
        },
        "match":{
          "shape":"HeaderMatchType",
          "documentation":"<p>The header match type.</p>"
        },
        "caseSensitive":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the match is case sensitive.</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":{
        "exact":{
          "shape":"HeaderMatchExact",
          "documentation":"<p>An exact type match.</p>"
        },
        "prefix":{
          "shape":"HeaderMatchPrefix",
          "documentation":"<p>A prefix type match. Matches the value with the prefix.</p>"
        },
        "contains":{
          "shape":"HeaderMatchContains",
          "documentation":"<p>A contains type match.</p>"
        }
      },
      "documentation":"<p>Describes a header match type.</p>",
      "union":true
    },
    "HealthCheckConfig":{
      "type":"structure",
      "members":{
        "enabled":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether health checking is enabled.</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>"
        },
        "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>"
        },
        "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>"
        },
        "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>"
        },
        "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>"
        },
        "matcher":{
          "shape":"Matcher",
          "documentation":"<p>The codes to use when checking for a successful response from a target.</p>"
        }
      },
      "documentation":"<p>Describes the health check configuration of a target group. Health check configurations aren't used for target groups of type <code>LAMBDA</code> or <code>ALB</code>.</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":{
        "method":{
          "shape":"HttpMethod",
          "documentation":"<p>The HTTP method type.</p>"
        },
        "pathMatch":{
          "shape":"PathMatch",
          "documentation":"<p>The path match.</p>"
        },
        "headerMatches":{
          "shape":"HeaderMatchList",
          "documentation":"<p>The header matches. Matches incoming requests with rule based on request header value before applying rule action.</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}
    },
    "IpAddress":{
      "type":"string",
      "max":39,
      "min":4
    },
    "IpAddressType":{
      "type":"string",
      "enum":[
        "IPV4",
        "IPV6"
      ]
    },
    "IpResource":{
      "type":"structure",
      "members":{
        "ipAddress":{
          "shape":"IpAddress",
          "documentation":"<p>The IP address of the IP resource.</p>"
        }
      },
      "documentation":"<p>Describes an IP resource.</p>"
    },
    "Ipv4AddressesPerEni":{
      "type":"integer",
      "box":true,
      "max":62,
      "min":1
    },
    "LambdaEventStructureVersion":{
      "type":"string",
      "enum":[
        "V1",
        "V2"
      ]
    },
    "ListAccessLogSubscriptionsRequest":{
      "type":"structure",
      "required":["resourceIdentifier"],
      "members":{
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or ARN of the service network or service.</p>",
          "location":"querystring",
          "locationName":"resourceIdentifier"
        },
        "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"
        }
      }
    },
    "ListAccessLogSubscriptionsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"AccessLogSubscriptionList",
          "documentation":"<p>Information about the access log subscriptions.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>"
        }
      }
    },
    "ListDomainVerificationsRequest":{
      "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"
        }
      }
    },
    "ListDomainVerificationsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"DomainVerificationList",
          "documentation":"<p> Information about the domain verifications. </p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> A pagination token for the next page of results. </p>"
        }
      }
    },
    "ListListenersRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "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"
        }
      }
    },
    "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>"
        }
      }
    },
    "ListResourceConfigurationsRequest":{
      "type":"structure",
      "members":{
        "resourceGatewayIdentifier":{
          "shape":"ResourceGatewayIdentifier",
          "documentation":"<p>The ID of the resource gateway for the resource configuration.</p>",
          "location":"querystring",
          "locationName":"resourceGatewayIdentifier"
        },
        "resourceConfigurationGroupIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the resource configuration of type <code>Group</code>.</p>",
          "location":"querystring",
          "locationName":"resourceConfigurationGroupIdentifier"
        },
        "domainVerificationIdentifier":{
          "shape":"DomainVerificationIdentifier",
          "documentation":"<p> The domain verification ID. </p>",
          "location":"querystring",
          "locationName":"domainVerificationIdentifier"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum page size.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListResourceConfigurationsResponse":{
      "type":"structure",
      "members":{
        "items":{
          "shape":"ResourceConfigurationSummaryList",
          "documentation":"<p>Information about the resource configurations.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListResourceEndpointAssociationsRequest":{
      "type":"structure",
      "required":["resourceConfigurationIdentifier"],
      "members":{
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID for the resource configuration associated with the VPC endpoint.</p>",
          "location":"querystring",
          "locationName":"resourceConfigurationIdentifier"
        },
        "resourceEndpointAssociationIdentifier":{
          "shape":"ResourceEndpointAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>",
          "location":"querystring",
          "locationName":"resourceEndpointAssociationIdentifier"
        },
        "vpcEndpointId":{
          "shape":"VpcEndpointId",
          "documentation":"<p>The ID of the VPC endpoint in the association.</p>",
          "location":"querystring",
          "locationName":"vpcEndpointId"
        },
        "vpcEndpointOwner":{
          "shape":"VpcEndpointOwner",
          "documentation":"<p>The owner of the VPC endpoint in the association.</p>",
          "location":"querystring",
          "locationName":"vpcEndpointOwner"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum page size.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListResourceEndpointAssociationsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ResourceEndpointAssociationList",
          "documentation":"<p>Information about the VPC endpoint associations.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListResourceGatewaysRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum page size.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListResourceGatewaysResponse":{
      "type":"structure",
      "members":{
        "items":{
          "shape":"ResourceGatewayList",
          "documentation":"<p>Information about the resource gateways.</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":[
        "serviceIdentifier",
        "listenerIdentifier"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or 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"
        }
      }
    },
    "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>"
        }
      }
    },
    "ListServiceNetworkResourceAssociationsRequest":{
      "type":"structure",
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID of the service network.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        },
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the resource configuration.</p>",
          "location":"querystring",
          "locationName":"resourceConfigurationIdentifier"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum page size.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "includeChildren":{
          "shape":"Boolean",
          "documentation":"<p>Include service network resource associations of the child resource configuration with the grouped resource configuration.</p> <p>The type is boolean and the default value is false.</p>",
          "location":"querystring",
          "locationName":"includeChildren"
        }
      }
    },
    "ListServiceNetworkResourceAssociationsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ServiceNetworkResourceAssociationList",
          "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>"
        }
      }
    },
    "ListServiceNetworkServiceAssociationsRequest":{
      "type":"structure",
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"querystring",
          "locationName":"serviceIdentifier"
        },
        "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"
        }
      }
    },
    "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":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID or ARN of the VPC.</p>",
          "location":"querystring",
          "locationName":"vpcIdentifier"
        },
        "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"
        }
      }
    },
    "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>"
        }
      }
    },
    "ListServiceNetworkVpcEndpointAssociationsRequest":{
      "type":"structure",
      "required":["serviceNetworkIdentifier"],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID of the service network associated with the VPC endpoint.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum page size.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListServiceNetworkVpcEndpointAssociationsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ServiceNetworkVpcEndpointAssociationList",
          "documentation":"<p>Information about the association between the VPC endpoint and service network.</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>Information about 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>Information about 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"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID or ARN of the VPC.</p>",
          "location":"querystring",
          "locationName":"vpcIdentifier"
        },
        "targetGroupType":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>",
          "location":"querystring",
          "locationName":"targetGroupType"
        }
      }
    },
    "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":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        },
        "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"
        },
        "targets":{
          "shape":"ListTargetsRequestTargetsList",
          "documentation":"<p>The targets.</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",
        "TLS_PASSTHROUGH"
      ]
    },
    "ListenerSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was last updated, in ISO-8601 format.</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>Describes 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":{
        "match":{
          "shape":"PathMatchType",
          "documentation":"<p>The type of path match.</p>"
        },
        "caseSensitive":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the match is case sensitive.</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
    },
    "PortRange":{
      "type":"string",
      "max":11,
      "min":1,
      "pattern":"((\\d{1,5}\\-\\d{1,5})|(\\d+))"
    },
    "PortRangeList":{
      "type":"list",
      "member":{"shape":"PortRange"}
    },
    "PrivateDnsPreference":{
      "type":"string",
      "enum":[
        "VERIFIED_DOMAINS_ONLY",
        "ALL_DOMAINS",
        "VERIFIED_DOMAINS_AND_SPECIFIED_DOMAINS",
        "SPECIFIED_DOMAINS_ONLY"
      ]
    },
    "PrivateDnsSpecifiedDomain":{
      "type":"string",
      "max":255,
      "min":1
    },
    "PrivateDnsSpecifiedDomainsList":{
      "type":"list",
      "member":{"shape":"PrivateDnsSpecifiedDomain"},
      "max":10,
      "min":1
    },
    "ProtocolType":{
      "type":"string",
      "enum":["TCP"]
    },
    "PutAuthPolicyRequest":{
      "type":"structure",
      "required":[
        "resourceIdentifier",
        "policy"
      ],
      "members":{
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or ARN of the service network or service for which the policy is created.</p>",
          "location":"uri",
          "locationName":"resourceIdentifier"
        },
        "policy":{
          "shape":"AuthPolicyString",
          "documentation":"<p>The auth policy. The policy string in JSON must not contain newlines or blank lines.</p>"
        }
      }
    },
    "PutAuthPolicyResponse":{
      "type":"structure",
      "members":{
        "policy":{
          "shape":"AuthPolicyString",
          "documentation":"<p>The auth policy. The policy string in JSON must not contain newlines or blank lines.</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>AWS_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 that you provide remains 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":[
        "resourceArn",
        "policy"
      ],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The ID or ARN of the service network or service for which the policy is created.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "policy":{
          "shape":"PolicyString",
          "documentation":"<p>An IAM policy. The policy string in JSON must not contain newlines or blank lines.</p>"
        }
      }
    },
    "PutResourcePolicyResponse":{
      "type":"structure",
      "members":{}
    },
    "RegisterTargetsRequest":{
      "type":"structure",
      "required":[
        "targetGroupIdentifier",
        "targets"
      ],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or 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)|(resourceconfiguration/rcfg))-[0-9a-z]{17}"
    },
    "ResourceConfigDnsResolution":{
      "type":"string",
      "enum":[
        "IN_VPC",
        "PUBLIC"
      ]
    },
    "ResourceConfigurationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}"
    },
    "ResourceConfigurationDefinition":{
      "type":"structure",
      "members":{
        "dnsResource":{
          "shape":"DnsResource",
          "documentation":"<p>The DNS name of the resource.</p>"
        },
        "ipResource":{
          "shape":"IpResource",
          "documentation":"<p>The IP resource.</p>"
        },
        "arnResource":{
          "shape":"ArnResource",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
        }
      },
      "documentation":"<p>Describes a resource configuration.</p>",
      "union":true
    },
    "ResourceConfigurationId":{
      "type":"string",
      "max":22,
      "min":22,
      "pattern":"rcfg-[0-9a-z]{17}"
    },
    "ResourceConfigurationIdentifier":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"((rcfg-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}))"
    },
    "ResourceConfigurationIpAddressType":{
      "type":"string",
      "enum":[
        "IPV4",
        "IPV6",
        "DUALSTACK"
      ]
    },
    "ResourceConfigurationName":{
      "type":"string",
      "max":40,
      "min":3,
      "pattern":"(?!rcfg-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+"
    },
    "ResourceConfigurationStatus":{
      "type":"string",
      "enum":[
        "ACTIVE",
        "CREATE_IN_PROGRESS",
        "UPDATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "UPDATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "ResourceConfigurationSummary":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "resourceGatewayId":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the group resource configuration.</p>"
        },
        "type":{
          "shape":"ResourceConfigurationType",
          "documentation":"<p>The type of resource configuration.</p> <ul> <li> <p> <code>SINGLE</code> - A single resource.</p> </li> <li> <p> <code>GROUP</code> - A group of resources. You must create a group resource configuration before you create a child resource configuration.</p> </li> <li> <p> <code>CHILD</code> - A single resource that is part of a group resource configuration.</p> </li> <li> <p> <code>ARN</code> - An Amazon Web Services resource.</p> </li> </ul>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The status of the resource configuration.</p>"
        },
        "amazonManaged":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the resource configuration was created and is managed by Amazon.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource configuration was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The most recent date and time that the resource configuration was updated, in ISO-8601 format.</p>"
        },
        "customDomainName":{
          "shape":"DomainName",
          "documentation":"<p> The custom domain name. </p>"
        },
        "domainVerificationId":{
          "shape":"DomainVerificationId",
          "documentation":"<p> The domain verification ID. </p>"
        },
        "groupDomain":{
          "shape":"DomainName",
          "documentation":"<p> (GROUP) The group domain for a group resource configuration. Any domains that you create for the child resource are subdomains of the group domain. Child resources inherit the verification status of the domain. </p>"
        }
      },
      "documentation":"<p>Summary information about a resource configuration.</p>"
    },
    "ResourceConfigurationSummaryList":{
      "type":"list",
      "member":{"shape":"ResourceConfigurationSummary"}
    },
    "ResourceConfigurationType":{
      "type":"string",
      "enum":[
        "GROUP",
        "CHILD",
        "SINGLE",
        "ARN"
      ]
    },
    "ResourceEndpointAssociationArn":{
      "type":"string",
      "max":2048,
      "min":21,
      "pattern":"arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceendpointassociation/rea-[0-9a-f]{17}"
    },
    "ResourceEndpointAssociationId":{
      "type":"string",
      "max":21,
      "min":21,
      "pattern":"rea-[0-9a-f]{17}"
    },
    "ResourceEndpointAssociationIdentifier":{
      "type":"string",
      "max":2048,
      "min":21,
      "pattern":"((rea-[0-9a-f]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceendpointassociation/rea-[0-9a-f]{17}))"
    },
    "ResourceEndpointAssociationList":{
      "type":"list",
      "member":{"shape":"ResourceEndpointAssociationSummary"}
    },
    "ResourceEndpointAssociationSummary":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ResourceEndpointAssociationId",
          "documentation":"<p>The ID of the VPC endpoint association.</p>"
        },
        "arn":{
          "shape":"ResourceEndpointAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the VPC endpoint association.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "resourceConfigurationName":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</p>"
        },
        "vpcEndpointId":{
          "shape":"VpcEndpointId",
          "documentation":"<p>The ID of the VPC endpoint.</p>"
        },
        "vpcEndpointOwner":{
          "shape":"VpcEndpointOwner",
          "documentation":"<p>The owner of the VPC endpoint.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the VPC endpoint association was created, in ISO-8601 format.</p>"
        }
      },
      "documentation":"<p>Summary information about a VPC endpoint association.</p>"
    },
    "ResourceGatewayArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourcegateway/rgw-[0-9a-z]{17}"
    },
    "ResourceGatewayId":{
      "type":"string",
      "max":21,
      "min":21,
      "pattern":"rgw-[0-9a-z]{17}"
    },
    "ResourceGatewayIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"((rgw-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourcegateway/rgw-[0-9a-z]{17}))"
    },
    "ResourceGatewayIpAddressType":{
      "type":"string",
      "enum":[
        "IPV4",
        "IPV6",
        "DUALSTACK"
      ]
    },
    "ResourceGatewayList":{
      "type":"list",
      "member":{"shape":"ResourceGatewaySummary"}
    },
    "ResourceGatewayName":{
      "type":"string",
      "max":40,
      "min":3,
      "pattern":"(?!rgw-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+"
    },
    "ResourceGatewayStatus":{
      "type":"string",
      "enum":[
        "ACTIVE",
        "CREATE_IN_PROGRESS",
        "UPDATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "UPDATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "ResourceGatewaySummary":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets for the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups applied to the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>The type of IP address used by the resource gateway.</p>"
        },
        "ipv4AddressesPerEni":{
          "shape":"Ipv4AddressesPerEni",
          "documentation":"<p>The number of IPv4 addresses in each ENI for the resource gateway.</p>"
        },
        "resourceConfigDnsResolution":{
          "shape":"ResourceConfigDnsResolution",
          "documentation":"<p>The DNS resolution type for resource configurations that are associated with this resource gateway.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the VPC endpoint association was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The most recent date and time that the resource gateway was updated, in ISO-8601 format.</p>"
        }
      },
      "documentation":"<p>Summary information about a resource gateway.</p>"
    },
    "ResourceId":{
      "type":"string",
      "max":50,
      "min":20,
      "pattern":"((sn)|(svc))-[0-9a-z]{17}"
    },
    "ResourceIdentifier":{
      "type":"string",
      "max":200,
      "min":17,
      "pattern":"((((sn)|(svc)|(rcfg))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(resourceconfiguration/rcfg)|(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":{
        "forward":{
          "shape":"ForwardAction",
          "documentation":"<p>The forward action. Traffic that matches the rule is forwarded to the specified target groups.</p>"
        },
        "fixedResponse":{
          "shape":"FixedResponseAction",
          "documentation":"<p>The fixed response action. The rule returns a custom HTTP response.</p>"
        }
      },
      "documentation":"<p>Describes the action for a rule.</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":2000,
      "min":1
    },
    "RuleSummary":{
      "type":"structure",
      "members":{
        "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>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the rule.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default listener rule.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority of the rule.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was created, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was last updated, in ISO-8601 format.</p>"
        }
      },
      "documentation":"<p>Summary information about a listener rule.</p>"
    },
    "RuleSummaryList":{
      "type":"list",
      "member":{"shape":"RuleSummary"}
    },
    "RuleUpdate":{
      "type":"structure",
      "required":["ruleIdentifier"],
      "members":{
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the rule.</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>"
        },
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The rule action.</p>"
        }
      },
      "documentation":"<p>Describes a rule update.</p>"
    },
    "RuleUpdateFailure":{
      "type":"structure",
      "members":{
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the rule.</p>"
        },
        "failureCode":{
          "shape":"FailureCode",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"FailureMessage",
          "documentation":"<p>The failure message.</p>"
        }
      },
      "documentation":"<p>Describes a rule update that failed.</p>"
    },
    "RuleUpdateFailureList":{
      "type":"list",
      "member":{"shape":"RuleUpdateFailure"}
    },
    "RuleUpdateList":{
      "type":"list",
      "member":{"shape":"RuleUpdate"},
      "max":10,
      "min":1
    },
    "RuleUpdateSuccess":{
      "type":"structure",
      "members":{
        "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>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name 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>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority.</p>"
        },
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the rule.</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}"
    },
    "ServiceNetworkArnWithoutRegex":{
      "type":"string",
      "max":2048,
      "min":10
    },
    "ServiceNetworkEndpointAssociation":{
      "type":"structure",
      "members":{
        "vpcEndpointId":{
          "shape":"String",
          "documentation":"<p>The ID of the VPC endpoint associated with the service network.</p>"
        },
        "vpcId":{
          "shape":"String",
          "documentation":"<p>The ID of the VPC for the association.</p>"
        },
        "vpcEndpointOwnerId":{
          "shape":"String",
          "documentation":"<p>The owner of the VPC endpoint associated with the service network.</p>"
        },
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the association.</p>"
        },
        "state":{
          "shape":"String",
          "documentation":"<p>The state of the association.</p>"
        },
        "serviceNetworkArn":{
          "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 association was created, in ISO-8601 format.</p>"
        }
      },
      "documentation":"<p>Describes the association between a service network and a VPC endpoint.</p>"
    },
    "ServiceNetworkId":{
      "type":"string",
      "max":20,
      "min":20,
      "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}))"
    },
    "ServiceNetworkIdentifierWithoutRegex":{
      "type":"string",
      "max":2048,
      "min":3
    },
    "ServiceNetworkList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkSummary"}
    },
    "ServiceNetworkLogType":{
      "type":"string",
      "enum":[
        "SERVICE",
        "RESOURCE"
      ]
    },
    "ServiceNetworkName":{
      "type":"string",
      "max":63,
      "min":3,
      "pattern":"(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+"
    },
    "ServiceNetworkNameWithoutRegex":{
      "type":"string",
      "max":100,
      "min":3
    },
    "ServiceNetworkResourceAssociationArn":{
      "type":"string",
      "max":2048,
      "min":22,
      "pattern":"arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-f]{17}"
    },
    "ServiceNetworkResourceAssociationId":{
      "type":"string",
      "max":22,
      "min":22,
      "pattern":"snra-[0-9a-f]{17}"
    },
    "ServiceNetworkResourceAssociationIdentifier":{
      "type":"string",
      "max":2048,
      "min":22,
      "pattern":"((snra-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-f]{17}))"
    },
    "ServiceNetworkResourceAssociationList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkResourceAssociationSummary"}
    },
    "ServiceNetworkResourceAssociationStatus":{
      "type":"string",
      "enum":[
        "CREATE_IN_PROGRESS",
        "ACTIVE",
        "PARTIAL",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "ServiceNetworkResourceAssociationSummary":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID of the association between the service network and resource configuration.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkResourceAssociationStatus",
          "documentation":"<p>The status of the service network’s association with the resource configuration. If the deletion fails, try to delete again. </p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration associated with the service network.</p>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "resourceConfigurationName":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration associated with the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkIdentifierWithoutRegex",
          "documentation":"<p>The ID of the service network associated with the resource configuration.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArnWithoutRegex",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network associated with the resource configuration.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkNameWithoutRegex",
          "documentation":"<p>The name of the service network associated with the resource configuration.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS entry for the service.</p>"
        },
        "privateDnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The private DNS entry for the service.</p>"
        },
        "isManagedAssociation":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether the association is managed by Amazon.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is enabled for the service network resource association. </p>"
        }
      },
      "documentation":"<p>Summary information about an association between a service network and a resource configuration.</p>"
    },
    "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":{
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The status of the service network’s association with the service. If the deletion fails, try to delete again.</p>"
        },
        "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>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "serviceName":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</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>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS information.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        }
      },
      "documentation":"<p>Summary information about an association between a service network and a service.</p>"
    },
    "ServiceNetworkSummary":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "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, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was last updated, in ISO-8601 format.</p>"
        },
        "numberOfAssociatedVPCs":{
          "shape":"Long",
          "documentation":"<p>The number of VPCs associated with the service network.</p>"
        },
        "numberOfAssociatedServices":{
          "shape":"Long",
          "documentation":"<p>The number of services associated with the service network.</p>"
        },
        "numberOfAssociatedResourceConfigurations":{
          "shape":"Long",
          "documentation":"<p>The number of resource configurations associated with a 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":{
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</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>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "privateDnsEnabled":{
          "shape":"Boolean",
          "documentation":"<p> Indicates if private DNS is enabled for the service network VPC association. </p>"
        },
        "dnsOptions":{
          "shape":"DnsOptions",
          "documentation":"<p> The DNS options for the service network VPC association. </p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was last updated, in ISO-8601 format.</p>"
        }
      },
      "documentation":"<p>Summary information about an association between a service network and a VPC.</p>"
    },
    "ServiceNetworkVpcEndpointAssociationList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkEndpointAssociation"}
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "required":[
        "message",
        "resourceType",
        "serviceCode",
        "quotaCode"
      ],
      "members":{
        "message":{"shape":"String"},
        "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>"
        },
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>The ID of the service quota that was exceeded.</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":{
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "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, in ISO-8601 format.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was last updated, in ISO-8601 format.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS information.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status.</p>"
        }
      },
      "documentation":"<p>Summary information about a service.</p>"
    },
    "SharingConfig":{
      "type":"structure",
      "members":{
        "enabled":{
          "shape":"Boolean",
          "documentation":"<p>Specifies if the service network is enabled for sharing.</p>"
        }
      },
      "documentation":"<p>Specifies if the service network should be enabled for sharing.</p>"
    },
    "StartDomainVerificationRequest":{
      "type":"structure",
      "required":["domainName"],
      "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
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> The domain name to verify ownership for. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> The tags for the domain verification. </p>"
        }
      }
    },
    "StartDomainVerificationResponse":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "domainName",
        "status"
      ],
      "members":{
        "id":{
          "shape":"DomainVerificationId",
          "documentation":"<p> The ID of the domain verification. </p>"
        },
        "arn":{
          "shape":"DomainVerificationArn",
          "documentation":"<p> The Amazon Resource Name (ARN) of the domain verification. </p>"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> The domain name being verified. </p>"
        },
        "status":{
          "shape":"VerificationStatus",
          "documentation":"<p> The current status of the domain verification process. </p>"
        },
        "txtMethodConfig":{
          "shape":"TxtMethodConfig",
          "documentation":"<p> The TXT record configuration used for domain verification. </p>"
        }
      }
    },
    "String":{"type":"string"},
    "SubnetId":{
      "type":"string",
      "max":200,
      "min":5
    },
    "SubnetList":{
      "type":"list",
      "member":{"shape":"SubnetId"}
    },
    "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 group type is <code>INSTANCE</code>, this is an instance ID. If the target group type is <code>IP</code>, this is an IP address. If the target group type is <code>LAMBDA</code>, this is the ARN of a Lambda function. If the target group type is <code>ALB</code>, this is the ARN of an Application Load Balancer.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port on which the target is listening. For HTTP, the default is 80. For HTTPS, the default is 443.</p>"
        }
      },
      "documentation":"<p>Describes a target.</p>"
    },
    "TargetFailure":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the target. If the target group type is <code>INSTANCE</code>, this is an instance ID. If the target group type is <code>IP</code>, this is an IP address. If the target group type is <code>LAMBDA</code>, this is the ARN of a Lambda function. If the target group type is <code>ALB</code>, this is the ARN of an 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>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</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":{
        "port":{
          "shape":"Port",
          "documentation":"<p>The port on which the targets are listening. For HTTP, the default is 80. For HTTPS, the default is 443. Not supported if the target group type is <code>LAMBDA</code>.</p>"
        },
        "protocol":{
          "shape":"TargetGroupProtocol",
          "documentation":"<p>The protocol to use for routing traffic to the targets. The default is the protocol of the target group. Not supported if the target group type is <code>LAMBDA</code>.</p>"
        },
        "protocolVersion":{
          "shape":"TargetGroupProtocolVersion",
          "documentation":"<p>The protocol version. The default is <code>HTTP1</code>. Not supported if the target group type is <code>LAMBDA</code>.</p>"
        },
        "ipAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The type of IP address used for the target group. Supported only if the target group type is <code>IP</code>. The default is <code>IPV4</code>.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC. Not supported if the target group type is <code>LAMBDA</code>.</p>"
        },
        "healthCheck":{
          "shape":"HealthCheckConfig",
          "documentation":"<p>The health check configuration. Not supported if the target group type is <code>LAMBDA</code> or <code>ALB</code>.</p>"
        },
        "lambdaEventStructureVersion":{
          "shape":"LambdaEventStructureVersion",
          "documentation":"<p>The version of the event structure that your Lambda function receives. Supported only if the target group type is <code>LAMBDA</code>. The default is <code>V1</code>.</p>"
        }
      },
      "documentation":"<p>Describes the configuration of a target group.</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>"
    },
    "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",
        "TCP"
      ]
    },
    "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":{
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The ARN (Amazon Resource Name) of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was created, in ISO-8601 format.</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>"
        },
        "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 default is <code>IPV4</code>.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC of the target group.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was last updated, in ISO-8601 format.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "serviceArns":{
          "shape":"ServiceArnList",
          "documentation":"<p>The Amazon Resource Names (ARNs) of the service.</p>"
        },
        "lambdaEventStructureVersion":{
          "shape":"LambdaEventStructureVersion",
          "documentation":"<p>The version of the event structure that your Lambda function receives. Supported only if the target group type is <code>LAMBDA</code>.</p>"
        }
      },
      "documentation":"<p>Summary information about a target group.</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>"
    },
    "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 group type is <code>INSTANCE</code>, this is an instance ID. If the target group type is <code>IP</code>, this is an IP address. If the target group type is <code>LAMBDA</code>, this is the ARN of a Lambda function. If the target type is <code>ALB</code>, this is the ARN of an Application Load Balancer.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port on which the target is listening.</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 are sent to this target while current connections are being drained. The default draining time is 1 minute.</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>"
        },
        "reasonCode":{
          "shape":"String",
          "documentation":"<p>The code for why the target status is what it is.</p>"
        }
      },
      "documentation":"<p>Summary information about a target.</p>"
    },
    "TargetSummaryList":{
      "type":"list",
      "member":{"shape":"TargetSummary"}
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>The service code.</p>"
        },
        "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"
        }
      },
      "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"
    },
    "TxtMethodConfig":{
      "type":"structure",
      "required":[
        "value",
        "name"
      ],
      "members":{
        "value":{
          "shape":"String",
          "documentation":"<p> The value that must be added to the TXT record for domain verification. </p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p> The name of the TXT record that must be created for domain verification. </p>"
        }
      },
      "documentation":"<p> Configuration for TXT record-based domain verification method. </p>"
    },
    "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 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":[
        "id",
        "arn",
        "resourceId",
        "resourceArn",
        "destinationArn"
      ],
      "members":{
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "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>"
        }
      }
    },
    "UpdateListenerRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "listenerIdentifier",
        "defaultAction"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        }
      }
    },
    "UpdateListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The protocol of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</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>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        }
      }
    },
    "UpdateResourceConfigurationRequest":{
      "type":"structure",
      "required":["resourceConfigurationIdentifier"],
      "members":{
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the resource configuration.</p>",
          "location":"uri",
          "locationName":"resourceConfigurationIdentifier"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>Identifies the resource configuration in one of the following ways:</p> <ul> <li> <p> <b>Amazon Resource Name (ARN)</b> - Supported resource-types that are provisioned by Amazon Web Services services, such as RDS databases, can be identified by their ARN.</p> </li> <li> <p> <b>Domain name</b> - Any domain name that is publicly resolvable.</p> </li> <li> <p> <b>IP address</b> - For IPv4 and IPv6, only IP addresses in the VPC are supported.</p> </li> </ul>"
        },
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether to add the resource configuration to service networks that are shared with other accounts.</p>"
        },
        "portRanges":{
          "shape":"PortRangeList",
          "documentation":"<p>The TCP port ranges that a consumer can use to access a resource configuration. You can separate port ranges with a comma. Example: 1-65535 or 1,2,22-30</p>"
        }
      }
    },
    "UpdateResourceConfigurationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "resourceGatewayId":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway associated with the resource configuration.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the group resource configuration.</p>"
        },
        "type":{
          "shape":"ResourceConfigurationType",
          "documentation":"<p>The type of resource configuration.</p> <ul> <li> <p> <code>SINGLE</code> - A single resource.</p> </li> <li> <p> <code>GROUP</code> - A group of resources.</p> </li> <li> <p> <code>CHILD</code> - A single resource that is part of a group resource configuration.</p> </li> <li> <p> <code>ARN</code> - An Amazon Web Services resource.</p> </li> </ul>"
        },
        "portRanges":{
          "shape":"PortRangeList",
          "documentation":"<p>The TCP port ranges that a consumer can use to access a resource configuration. You can separate port ranges with a comma. Example: 1-65535 or 1,2,22-30</p>"
        },
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether to add the resource configuration to service networks that are shared with other accounts.</p>"
        },
        "protocol":{
          "shape":"ProtocolType",
          "documentation":"<p>The TCP protocol accepted by the specified resource configuration.</p>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The status of the resource configuration.</p>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>The resource configuration.</p>"
        }
      }
    },
    "UpdateResourceGatewayRequest":{
      "type":"structure",
      "required":["resourceGatewayIdentifier"],
      "members":{
        "resourceGatewayIdentifier":{
          "shape":"ResourceGatewayIdentifier",
          "documentation":"<p>The ID or ARN of the resource gateway.</p>",
          "location":"uri",
          "locationName":"resourceGatewayIdentifier"
        },
        "securityGroupIds":{
          "shape":"UpdateResourceGatewayRequestSecurityGroupIdsList",
          "documentation":"<p>The IDs of the security groups associated with the resource gateway.</p>"
        }
      }
    },
    "UpdateResourceGatewayRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":0
    },
    "UpdateResourceGatewayResponse":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The status of the resource gateway.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets for the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups associated with the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The type of IP address used by the resource gateway.</p>"
        }
      }
    },
    "UpdateRuleRequest":{
      "type":"structure",
      "required":[
        "serviceIdentifier",
        "listenerIdentifier",
        "ruleIdentifier"
      ],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the rule.</p>",
          "location":"uri",
          "locationName":"ruleIdentifier"
        },
        "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>"
        },
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>Information about the action for the specified listener rule.</p>"
        }
      }
    },
    "UpdateRuleResponse":{
      "type":"structure",
      "members":{
        "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>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name 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>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority.</p>"
        },
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>Information about the action for the specified listener rule.</p>"
        }
      }
    },
    "UpdateServiceNetworkRequest":{
      "type":"structure",
      "required":[
        "serviceNetworkIdentifier",
        "authType"
      ],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network.</p>",
          "location":"uri",
          "locationName":"serviceNetworkIdentifier"
        },
        "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>"
        }
      }
    },
    "UpdateServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "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>"
        }
      }
    },
    "UpdateServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":[
        "serviceNetworkVpcAssociationIdentifier",
        "securityGroupIds"
      ],
      "members":{
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        },
        "securityGroupIds":{
          "shape":"UpdateServiceNetworkVpcAssociationRequestSecurityGroupIdsList",
          "documentation":"<p>The IDs of the security groups.</p>"
        }
      }
    },
    "UpdateServiceNetworkVpcAssociationRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":1
    },
    "UpdateServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) 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 while the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        }
      }
    },
    "UpdateServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "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>"
        }
      }
    },
    "UpdateServiceResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        }
      }
    },
    "UpdateTargetGroupRequest":{
      "type":"structure",
      "required":[
        "targetGroupIdentifier",
        "healthCheck"
      ],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        },
        "healthCheck":{
          "shape":"HealthCheckConfig",
          "documentation":"<p>The health check configuration.</p>"
        }
      }
    },
    "UpdateTargetGroupResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "required":[
        "message",
        "reason"
      ],
      "members":{
        "message":{"shape":"String"},
        "reason":{
          "shape":"ValidationExceptionReason",
          "documentation":"<p>The reason.</p>"
        },
        "fieldList":{
          "shape":"ValidationExceptionFieldList",
          "documentation":"<p>The fields that failed validation.</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":[
        "name",
        "message"
      ],
      "members":{
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the validation exception.</p>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p>Additional information about why the validation failed.</p>"
        }
      },
      "documentation":"<p>Describes a validation failure.</p>"
    },
    "ValidationExceptionFieldList":{
      "type":"list",
      "member":{"shape":"ValidationExceptionField"}
    },
    "ValidationExceptionReason":{
      "type":"string",
      "enum":[
        "unknownOperation",
        "cannotParse",
        "fieldValidationFailed",
        "other"
      ]
    },
    "VerificationStatus":{
      "type":"string",
      "enum":[
        "VERIFIED",
        "PENDING",
        "VERIFICATION_TIMED_OUT"
      ]
    },
    "VpcEndpointId":{
      "type":"string",
      "max":22,
      "min":22,
      "pattern":"vpce-[0-9a-f]{17}"
    },
    "VpcEndpointOwner":{
      "type":"string",
      "max":12,
      "min":12,
      "pattern":"\\d{12}"
    },
    "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 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":10,
      "min":1
    },
    "WildcardArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[a-z0-9][-.a-z0-9]{0,62}:[a-z0-9][-.a-z0-9]{0,62}:([a-z0-9][-.a-z0-9]{0,62})?:\\d{12}?:[^/].{0,1023}"
    }
  },
  "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>"
}
