{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2022-11-30",
    "endpointPrefix":"vpc-lattice",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "protocols":["rest-json"],
    "serviceFullName":"Amazon VPC Lattice",
    "serviceId":"VPC Lattice",
    "signatureVersion":"v4",
    "signingName":"vpc-lattice",
    "uid":"vpc-lattice-2022-11-30",
    "auth":["aws.auth#sigv4"]
  },
  "operations":{
    "BatchUpdateRule":{
      "name":"BatchUpdateRule",
      "http":{
        "method":"PATCH",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules",
        "responseCode":200
      },
      "input":{"shape":"BatchUpdateRuleRequest"},
      "output":{"shape":"BatchUpdateRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the listener rules in a batch. You can use this operation to change the priority of listener rules. This can be useful when bulk updating or swapping rule priority.</p> <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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Enables access logs to be sent to Amazon CloudWatch, Amazon S3, and Amazon Kinesis Data Firehose. The service network owner can use the access logs to audit the services in the network. The service network owner 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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a listener for a service. Before you start using your Amazon VPC Lattice service, you must add one or more listeners. A listener is a process that checks for connection requests to your services. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/listeners.html\">Listeners</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateResourceConfiguration":{
      "name":"CreateResourceConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/resourceconfigurations",
        "responseCode":201
      },
      "input":{"shape":"CreateResourceConfigurationRequest"},
      "output":{"shape":"CreateResourceConfigurationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a resource gateway.</p>",
      "idempotent":true
    },
    "CreateRule":{
      "name":"CreateRule",
      "http":{
        "method":"POST",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules",
        "responseCode":201
      },
      "input":{"shape":"CreateRuleRequest"},
      "output":{"shape":"CreateRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a listener rule. Each listener has a default rule for checking connection requests, but you can define additional rules. Each rule consists of a priority, one or more actions, and one or more conditions. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/listeners.html#listener-rules\">Listener rules</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateService":{
      "name":"CreateService",
      "http":{
        "method":"POST",
        "requestUri":"/services",
        "responseCode":201
      },
      "input":{"shape":"CreateServiceRequest"},
      "output":{"shape":"CreateServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a service. A service is any software application that can run on instances containers, or serverless functions within an account or virtual private cloud (VPC).</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/services.html\">Services</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateServiceNetwork":{
      "name":"CreateServiceNetwork",
      "http":{
        "method":"POST",
        "requestUri":"/servicenetworks",
        "responseCode":201
      },
      "input":{"shape":"CreateServiceNetworkRequest"},
      "output":{"shape":"CreateServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a service network. A service network is a logical boundary for a collection of services. You can associate services and VPCs with a service network.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-networks.html\">Service networks</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "CreateServiceNetworkResourceAssociation":{
      "name":"CreateServiceNetworkResourceAssociation",
      "http":{
        "method":"POST",
        "requestUri":"/servicenetworkresourceassociations",
        "responseCode":201
      },
      "input":{"shape":"CreateServiceNetworkResourceAssociationRequest"},
      "output":{"shape":"CreateServiceNetworkResourceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Associates a VPC with a service network. When you associate a VPC with the service network, it enables all the resources within that VPC to be clients and communicate with other services in the service network. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-network-associations.html#service-network-vpc-associations\">Manage VPC associations</a> in the <i>Amazon VPC Lattice User Guide</i>.</p> <p>You can't use this operation if there is a disassociation in progress. If the association fails, retry by deleting the association and recreating it.</p> <p>As a result of this operation, the association gets created in the service network account and the VPC owner account.</p> <p>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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a target group. A target group is a collection of targets, or compute resources, that run your application or service. A target group can only be used by a single service.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/target-groups.html\">Target groups</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteAccessLogSubscription":{
      "name":"DeleteAccessLogSubscription",
      "http":{
        "method":"DELETE",
        "requestUri":"/accesslogsubscriptions/{accessLogSubscriptionIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteAccessLogSubscriptionRequest"},
      "output":{"shape":"DeleteAccessLogSubscriptionResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified access log subscription.</p>",
      "idempotent":true
    },
    "DeleteAuthPolicy":{
      "name":"DeleteAuthPolicy",
      "http":{
        "method":"DELETE",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteAuthPolicyRequest"},
      "output":{"shape":"DeleteAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified auth policy. If an auth is set to <code>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
    },
    "DeleteListener":{
      "name":"DeleteListener",
      "http":{
        "method":"DELETE",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteListenerRequest"},
      "output":{"shape":"DeleteListenerResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified listener.</p>",
      "idempotent":true
    },
    "DeleteResourceConfiguration":{
      "name":"DeleteResourceConfiguration",
      "http":{
        "method":"DELETE",
        "requestUri":"/resourceconfigurations/{resourceConfigurationIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteResourceConfigurationRequest"},
      "output":{"shape":"DeleteResourceConfigurationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified resource policy.</p>",
      "idempotent":true
    },
    "DeleteRule":{
      "name":"DeleteRule",
      "http":{
        "method":"DELETE",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules/{ruleIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteRuleRequest"},
      "output":{"shape":"DeleteRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a listener rule. Each listener has a default rule for checking connection requests, but you can define additional rules. Each rule consists of a priority, one or more actions, and one or more conditions. You can delete additional listener rules, but you cannot delete the default rule.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/listeners.html#listener-rules\">Listener rules</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteService":{
      "name":"DeleteService",
      "http":{
        "method":"DELETE",
        "requestUri":"/services/{serviceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteServiceRequest"},
      "output":{"shape":"DeleteServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a service. A service can't be deleted if it's associated with a service network. If you delete a service, all resources related to the service, such as the resource policy, auth policy, listeners, listener rules, and access log subscriptions, are also deleted. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/services.html#delete-service\">Delete a service</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteServiceNetwork":{
      "name":"DeleteServiceNetwork",
      "http":{
        "method":"DELETE",
        "requestUri":"/servicenetworks/{serviceNetworkIdentifier}",
        "responseCode":204
      },
      "input":{"shape":"DeleteServiceNetworkRequest"},
      "output":{"shape":"DeleteServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a service network. You can only delete the service network if there is no service or VPC associated with it. If you delete a service network, all resources related to the service network, such as the resource policy, auth policy, and access log subscriptions, are also deleted. For more information, see <a href=\"https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-networks.html#delete-service-network\">Delete a service network</a> in the <i>Amazon VPC Lattice User Guide</i>.</p>",
      "idempotent":true
    },
    "DeleteServiceNetworkResourceAssociation":{
      "name":"DeleteServiceNetworkResourceAssociation",
      "http":{
        "method":"DELETE",
        "requestUri":"/servicenetworkresourceassociations/{serviceNetworkResourceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteServiceNetworkResourceAssociationRequest"},
      "output":{"shape":"DeleteServiceNetworkResourceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Disassociates the VPC from the service network. You can't disassociate the VPC if there is a create or update association in progress.</p>",
      "idempotent":true
    },
    "DeleteTargetGroup":{
      "name":"DeleteTargetGroup",
      "http":{
        "method":"DELETE",
        "requestUri":"/targetgroups/{targetGroupIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"DeleteTargetGroupRequest"},
      "output":{"shape":"DeleteTargetGroupResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes a target group. You can't delete a target group if it is used in a listener rule or if the target group creation is in progress.</p>",
      "idempotent":true
    },
    "DeregisterTargets":{
      "name":"DeregisterTargets",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups/{targetGroupIdentifier}/deregistertargets",
        "responseCode":200
      },
      "input":{"shape":"DeregisterTargetsRequest"},
      "output":{"shape":"DeregisterTargetsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deregisters the specified targets from the specified target group.</p>",
      "idempotent":true
    },
    "GetAccessLogSubscription":{
      "name":"GetAccessLogSubscription",
      "http":{
        "method":"GET",
        "requestUri":"/accesslogsubscriptions/{accessLogSubscriptionIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetAccessLogSubscriptionRequest"},
      "output":{"shape":"GetAccessLogSubscriptionResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified access log subscription.</p>"
    },
    "GetAuthPolicy":{
      "name":"GetAuthPolicy",
      "http":{
        "method":"GET",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetAuthPolicyRequest"},
      "output":{"shape":"GetAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the auth policy for the specified service or service network.</p>"
    },
    "GetListener":{
      "name":"GetListener",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetListenerRequest"},
      "output":{"shape":"GetListenerResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified listener for the specified service.</p>"
    },
    "GetResourceConfiguration":{
      "name":"GetResourceConfiguration",
      "http":{
        "method":"GET",
        "requestUri":"/resourceconfigurations/{resourceConfigurationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetResourceConfigurationRequest"},
      "output":{"shape":"GetResourceConfigurationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified resource configuration.</p>"
    },
    "GetResourceGateway":{
      "name":"GetResourceGateway",
      "http":{
        "method":"GET",
        "requestUri":"/resourcegateways/{resourceGatewayIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetResourceGatewayRequest"},
      "output":{"shape":"GetResourceGatewayResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified resource gateway.</p>"
    },
    "GetResourcePolicy":{
      "name":"GetResourcePolicy",
      "http":{
        "method":"GET",
        "requestUri":"/resourcepolicy/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"GetResourcePolicyRequest"},
      "output":{"shape":"GetResourcePolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified resource policy. The resource policy is an IAM policy created on behalf of the resource owner when they share a resource.</p>"
    },
    "GetRule":{
      "name":"GetRule",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules/{ruleIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetRuleRequest"},
      "output":{"shape":"GetRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about 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>"
    },
    "GetService":{
      "name":"GetService",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceRequest"},
      "output":{"shape":"GetServiceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified service.</p>"
    },
    "GetServiceNetwork":{
      "name":"GetServiceNetwork",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworks/{serviceNetworkIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkRequest"},
      "output":{"shape":"GetServiceNetworkResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified service network.</p>"
    },
    "GetServiceNetworkResourceAssociation":{
      "name":"GetServiceNetworkResourceAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkresourceassociations/{serviceNetworkResourceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkResourceAssociationRequest"},
      "output":{"shape":"GetServiceNetworkResourceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified association between a service network and a resource configuration.</p>"
    },
    "GetServiceNetworkServiceAssociation":{
      "name":"GetServiceNetworkServiceAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkserviceassociations/{serviceNetworkServiceAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkServiceAssociationRequest"},
      "output":{"shape":"GetServiceNetworkServiceAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified association between a service network and a service.</p>"
    },
    "GetServiceNetworkVpcAssociation":{
      "name":"GetServiceNetworkVpcAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/servicenetworkvpcassociations/{serviceNetworkVpcAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetServiceNetworkVpcAssociationRequest"},
      "output":{"shape":"GetServiceNetworkVpcAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified association between a service network and a VPC.</p>"
    },
    "GetTargetGroup":{
      "name":"GetTargetGroup",
      "http":{
        "method":"GET",
        "requestUri":"/targetgroups/{targetGroupIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetTargetGroupRequest"},
      "output":{"shape":"GetTargetGroupResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves information about the specified target group.</p>"
    },
    "ListAccessLogSubscriptions":{
      "name":"ListAccessLogSubscriptions",
      "http":{
        "method":"GET",
        "requestUri":"/accesslogsubscriptions",
        "responseCode":200
      },
      "input":{"shape":"ListAccessLogSubscriptionsRequest"},
      "output":{"shape":"ListAccessLogSubscriptionsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the access log subscriptions for the specified service network or service.</p>"
    },
    "ListListeners":{
      "name":"ListListeners",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners",
        "responseCode":200
      },
      "input":{"shape":"ListListenersRequest"},
      "output":{"shape":"ListListenersResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the listeners for the specified service.</p>"
    },
    "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>"
    },
    "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>"
    },
    "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>"
    },
    "ListRules":{
      "name":"ListRules",
      "http":{
        "method":"GET",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}/rules",
        "responseCode":200
      },
      "input":{"shape":"ListRulesRequest"},
      "output":{"shape":"ListRulesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the rules for the specified listener.</p>"
    },
    "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>"
    },
    "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>"
    },
    "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>"
    },
    "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>"
    },
    "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>"
    },
    "ListServices":{
      "name":"ListServices",
      "http":{
        "method":"GET",
        "requestUri":"/services",
        "responseCode":200
      },
      "input":{"shape":"ListServicesRequest"},
      "output":{"shape":"ListServicesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the services owned by the caller account or shared with the caller account.</p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the tags for the specified resource.</p>"
    },
    "ListTargetGroups":{
      "name":"ListTargetGroups",
      "http":{
        "method":"GET",
        "requestUri":"/targetgroups",
        "responseCode":200
      },
      "input":{"shape":"ListTargetGroupsRequest"},
      "output":{"shape":"ListTargetGroupsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists your target groups. You can narrow your search by using the filters below in your request.</p>"
    },
    "ListTargets":{
      "name":"ListTargets",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups/{targetGroupIdentifier}/listtargets",
        "responseCode":200
      },
      "input":{"shape":"ListTargetsRequest"},
      "output":{"shape":"ListTargetsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the targets for the target group. By default, all targets are included. You can use this API to check the health status of targets. You can also ﬁlter the results by target.</p>"
    },
    "PutAuthPolicy":{
      "name":"PutAuthPolicy",
      "http":{
        "method":"PUT",
        "requestUri":"/authpolicy/{resourceIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"PutAuthPolicyRequest"},
      "output":{"shape":"PutAuthPolicyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates or updates the auth policy. 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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Attaches a resource-based permission policy to a service or service network. The policy must contain the same actions and condition statements as the Amazon Web Services Resource Access Manager permission for sharing services and service networks.</p>",
      "idempotent":true
    },
    "RegisterTargets":{
      "name":"RegisterTargets",
      "http":{
        "method":"POST",
        "requestUri":"/targetgroups/{targetGroupIdentifier}/registertargets",
        "responseCode":200
      },
      "input":{"shape":"RegisterTargetsRequest"},
      "output":{"shape":"RegisterTargetsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Registers the targets with the target group. If it's a Lambda target, you can only have one target in a target group.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Adds the specified tags to the specified resource.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Removes the specified tags from the specified resource.</p>",
      "idempotent":true
    },
    "UpdateAccessLogSubscription":{
      "name":"UpdateAccessLogSubscription",
      "http":{
        "method":"PATCH",
        "requestUri":"/accesslogsubscriptions/{accessLogSubscriptionIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateAccessLogSubscriptionRequest"},
      "output":{"shape":"UpdateAccessLogSubscriptionResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified access log subscription.</p>",
      "idempotent":true
    },
    "UpdateListener":{
      "name":"UpdateListener",
      "http":{
        "method":"PATCH",
        "requestUri":"/services/{serviceIdentifier}/listeners/{listenerIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateListenerRequest"},
      "output":{"shape":"UpdateListenerResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the specified service network.</p>",
      "idempotent":true
    },
    "UpdateServiceNetworkVpcAssociation":{
      "name":"UpdateServiceNetworkVpcAssociation",
      "http":{
        "method":"PATCH",
        "requestUri":"/servicenetworkvpcassociations/{serviceNetworkVpcAssociationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"UpdateServiceNetworkVpcAssociationRequest"},
      "output":{"shape":"UpdateServiceNetworkVpcAssociationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates the service network and VPC association. 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":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"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":[
        "arn",
        "createdAt",
        "destinationArn",
        "id",
        "lastUpdatedAt",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was created, in ISO-8601 format.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was last updated, in ISO-8601 format.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service or service network.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service or service network.</p>"
        },
        "serviceNetworkLogType":{
          "shape":"ServiceNetworkLogType",
          "documentation":"<p>Log type of the service network.</p>"
        }
      },
      "documentation":"<p>Summary information about an access log subscription.</p>"
    },
    "AccountId":{
      "type":"string",
      "max":12,
      "min":1,
      "pattern":"^[0-9]{12}$"
    },
    "Arn":{
      "type":"string",
      "max":1224,
      "min":0,
      "pattern":"^arn:[a-z0-9][-.a-z0-9]{0,62}:vpc-lattice:([a-z0-9][-.a-z0-9]{0,62})?:\\d{12}?:[^/].{0,1023}$"
    },
    "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":10000,
      "min":0
    },
    "AuthType":{
      "type":"string",
      "enum":[
        "NONE",
        "AWS_IAM"
      ]
    },
    "BatchUpdateRuleRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "rules",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "rules":{
          "shape":"RuleUpdateList",
          "documentation":"<p>The rules for the specified listener.</p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "BatchUpdateRuleResponse":{
      "type":"structure",
      "members":{
        "successful":{
          "shape":"RuleUpdateSuccessList",
          "documentation":"<p>The rules that were successfully updated.</p>"
        },
        "unsuccessful":{
          "shape":"RuleUpdateFailureList",
          "documentation":"<p>The rules that the operation couldn't update.</p>"
        }
      }
    },
    "Boolean":{
      "type":"boolean",
      "box":true
    },
    "CertificateArn":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"^(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:certificate/[0-9a-z-]+)?$"
    },
    "ClientToken":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"[!-~]+"
    },
    "ConflictException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceType"
      ],
      "members":{
        "message":{"shape":"String"},
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The resource ID.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The resource type.</p>"
        }
      },
      "documentation":"<p>The request conflicts with the current state of the resource. Updating or deleting a resource can cause an inconsistent state.</p>",
      "error":{
        "httpStatusCode":409,
        "senderFault":true
      },
      "exception":true
    },
    "CreateAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":[
        "destinationArn",
        "resourceIdentifier"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the destination. The supported destination types are CloudWatch Log groups, Kinesis Data Firehose delivery streams, and Amazon S3 buckets.</p>"
        },
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or 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>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the access log subscription.</p>"
        }
      }
    },
    "CreateAccessLogSubscriptionResponse":{
      "type":"structure",
      "required":[
        "arn",
        "destinationArn",
        "id",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the log destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service network or service.</p>"
        },
        "serviceNetworkLogType":{
          "shape":"ServiceNetworkLogType",
          "documentation":"<p>The type of log that monitors your Amazon VPC Lattice service networks.</p>"
        }
      }
    },
    "CreateListenerRequest":{
      "type":"structure",
      "required":[
        "defaultAction",
        "name",
        "protocol",
        "serviceIdentifier"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule. Each listener has a default rule. The default rule is used if no other rules match.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener. A listener name must be unique within a service. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port. You can specify a value from 1 to 65535. For HTTP, the default is 80. For HTTPS, the default is 443.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the listener.</p>"
        }
      }
    },
    "CreateListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port number of the listener.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The protocol of the listener.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        }
      }
    },
    "CreateResourceConfigurationRequest":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "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>"
        },
        "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":"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>"
        },
        "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>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>(SINGLE, CHILD, ARN) The resource configuration.</p>"
        },
        "resourceConfigurationGroupIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>(CHILD) The ID or ARN of the parent resource configuration (type is <code>GROUP</code>). This is used to associate a child resource configuration with a group 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>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the 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>"
        }
      }
    },
    "CreateResourceConfigurationResponse":{
      "type":"structure",
      "members":{
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether the resource configuration can be associated with a sharable service network.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</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>"
        },
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</p>"
        },
        "portRanges":{
          "shape":"PortRangeList",
          "documentation":"<p>The port range.</p>"
        },
        "protocol":{
          "shape":"ProtocolType",
          "documentation":"<p>The protocol.</p>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>The resource configuration.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the parent resource configuration (type is GROUP).</p>"
        },
        "resourceGatewayId":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway associated with the resource configuration.</p>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The current status of the resource configuration.</p>"
        },
        "type":{
          "shape":"ResourceConfigurationType",
          "documentation":"<p>The type of resource configuration.</p>"
        }
      }
    },
    "CreateResourceGatewayRequest":{
      "type":"structure",
      "required":[
        "name",
        "subnetIds",
        "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
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>The type of IP address used by the resource gateway.</p>"
        },
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of 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>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets in which to create the resource gateway.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the resource gateway.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</p>"
        }
      }
    },
    "CreateResourceGatewayRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":0
    },
    "CreateResourceGatewayResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>The type of IP address for the resource gateway.</p>"
        },
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups for the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The status of the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the resource gateway subnets.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      }
    },
    "CreateRuleRequest":{
      "type":"structure",
      "required":[
        "action",
        "listenerIdentifier",
        "match",
        "name",
        "priority",
        "serviceIdentifier"
      ],
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the rule. The name must be unique within the listener. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority assigned to the rule. Each rule for a specific listener must have a unique priority. The lower the priority number the higher the priority.</p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the rule.</p>"
        }
      }
    },
    "CreateRuleResponse":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The rule action.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the rule.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the rule.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match. The <code>RuleMatch</code> must be an <code>HttpMatch</code>. This means that the rule should be an exact match on HTTP constraints which are made up of the HTTP method, path, and header.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the rule.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority assigned to the rule. The lower the priority number the higher the priority.</p>"
        }
      }
    },
    "CreateServiceNetworkRequest":{
      "type":"structure",
      "required":["name"],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network. The name must be unique to the account. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "sharingConfig":{
          "shape":"SharingConfig",
          "documentation":"<p>Specify if the service network should be enabled for sharing.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the service network.</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>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the association.</p>"
        }
      }
    },
    "CreateServiceNetworkResourceAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The ID of the account that created the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkResourceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        }
      }
    },
    "CreateServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "sharingConfig":{
          "shape":"SharingConfig",
          "documentation":"<p>Specifies if the service network is enabled for sharing.</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":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The association status.</p>"
        }
      }
    },
    "CreateServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":[
        "serviceNetworkIdentifier",
        "vpcIdentifier"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "securityGroupIds":{
          "shape":"CreateServiceNetworkVpcAssociationRequestSecurityGroupIdsList",
          "documentation":"<p>The IDs of the security groups. Security groups aren't added by default. You can add a security group to apply network level controls to control which resources in a VPC are allowed to access the service network and its services. For more information, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html\">Control traffic to resources using security groups</a> in the <i>Amazon VPC User Guide</i>.</p>"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or 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>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      }
    },
    "CreateServiceNetworkVpcAssociationRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":0
    },
    "CreateServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The association status.</p>"
        }
      }
    },
    "CreateServiceRequest":{
      "type":"structure",
      "required":["name"],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service. The name must be unique within the account. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the service.</p>"
        }
      }
    },
    "CreateServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The public DNS name of the service.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status. If the status is <code>CREATE_FAILED</code>, you must delete and recreate the service.</p>"
        }
      }
    },
    "CreateTargetGroupRequest":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token and parameters, the retry succeeds without performing any actions. If the parameters aren't identical, the retry fails.</p>",
          "idempotencyToken":true
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group. The name must be unique within the account. The valid characters are a-z, 0-9, and hyphens (-). You can't use a hyphen as the first or last character, or immediately after another hyphen.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags for the target group.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The type of target group.</p>"
        }
      }
    },
    "CreateTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>CREATE_FAILED</code>. However, if you retry it while the status is <code>CREATE_IN_PROGRESS</code>, there is no change in the status.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The type of target group.</p>"
        }
      }
    },
    "DeleteAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":["accessLogSubscriptionIdentifier"],
      "members":{
        "accessLogSubscriptionIdentifier":{
          "shape":"AccessLogSubscriptionIdentifier",
          "documentation":"<p>The ID or 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":{
      }
    },
    "DeleteListenerRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "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":{
        "arn":{
          "shape":"ResourceEndpointAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "id":{
          "shape":"ResourceEndpointAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration associated with the VPC endpoint of type resource.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</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":{
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID 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":[
        "listenerIdentifier",
        "ruleIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "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"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "DeleteRuleResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteServiceNetworkRequest":{
      "type":"structure",
      "required":["serviceNetworkIdentifier"],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The 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":{
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID 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":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it when the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        }
      }
    },
    "DeleteServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkVpcAssociationIdentifier"],
      "members":{
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "DeleteServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it while the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        }
      }
    },
    "DeleteServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "DeleteServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it while the status is <code>DELETE_IN_PROGRESS</code>, the status doesn't change.</p>"
        }
      }
    },
    "DeleteTargetGroupRequest":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "DeleteTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it while the status is <code>DELETE_IN_PROGRESS</code>, the status doesn't change.</p>"
        }
      }
    },
    "DeregisterTargetsRequest":{
      "type":"structure",
      "required":[
        "targetGroupIdentifier",
        "targets"
      ],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or 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>"
    },
    "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.</p>"
        }
      },
      "documentation":"<p>The DNS name of the resource.</p>"
    },
    "DomainName":{
      "type":"string",
      "max":255,
      "min":3
    },
    "FailureCode":{"type":"string"},
    "FailureMessage":{"type":"string"},
    "FixedResponseAction":{
      "type":"structure",
      "required":["statusCode"],
      "members":{
        "statusCode":{
          "shape":"HttpStatusCode",
          "documentation":"<p>The HTTP response code.</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":[
        "arn",
        "createdAt",
        "destinationArn",
        "id",
        "lastUpdatedAt",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was created, in ISO-8601 format.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the access log subscription was last updated, in ISO-8601 format.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network or service.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the service network or service.</p>"
        },
        "serviceNetworkLogType":{
          "shape":"ServiceNetworkLogType",
          "documentation":"<p>The log type for the service network.</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":{
        "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>"
        },
        "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>"
        }
      }
    },
    "GetListenerRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "GetListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was created, in ISO-8601 format.</p>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The actions for the default listener rule.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        }
      }
    },
    "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":{
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether the resource configuration is associated with a sharable service network.</p>"
        },
        "amazonManaged":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the resource configuration was created and is managed by Amazon.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource configuration was created, in ISO-8601 format.</p>"
        },
        "customDomainName":{
          "shape":"DomainName",
          "documentation":"<p>The custom domain name of the resource configuration.</p>"
        },
        "failureReason":{
          "shape":"String",
          "documentation":"<p>The reason the create-resource-configuration request failed.</p>"
        },
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The most recent date and time that the resource configuration was updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</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>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>The resource configuration.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the group 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>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The status of the 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>"
        }
      }
    },
    "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":{
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource gateway was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>The type of IP address for the resource gateway.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource gateway was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The security group IDs associated with the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The status for the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets for resource gateway.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</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":[
        "listenerIdentifier",
        "ruleIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "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"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "GetRuleResponse":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default rule.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was last updated, in ISO-8601 format.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority level for the specified rule.</p>"
        }
      }
    },
    "GetServiceNetworkRequest":{
      "type":"structure",
      "required":["serviceNetworkIdentifier"],
      "members":{
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or 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":{
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS entry for the service.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureReason":{
          "shape":"String",
          "documentation":"<p>The reason the association request failed.</p>"
        },
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "isManagedAssociation":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the association is managed by Amazon.</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>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration that is associated with the service network.</p>"
        },
        "resourceConfigurationName":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration that is associated with the service network.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkIdentifierWithoutRegex",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network that is associated with the resource configuration.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkIdentifierWithoutRegex",
          "documentation":"<p>The ID 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>"
        },
        "status":{
          "shape":"ServiceNetworkResourceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        }
      }
    },
    "GetServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time of the last update, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "numberOfAssociatedServices":{
          "shape":"Long",
          "documentation":"<p>The number of services associated with the service network.</p>"
        },
        "numberOfAssociatedVPCs":{
          "shape":"Long",
          "documentation":"<p>The number of VPCs associated with the service network.</p>"
        },
        "sharingConfig":{
          "shape":"SharingConfig",
          "documentation":"<p>Specifies if the service network is enabled for sharing.</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":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the service network and service association.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "serviceName":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        }
      }
    },
    "GetServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":["serviceNetworkVpcAssociationIdentifier"],
      "members":{
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "GetServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was last updated, in ISO-8601 format.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status of the association.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      }
    },
    "GetServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "GetServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was created, in ISO-8601 format.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS name of the service.</p>"
        },
        "failureCode":{
          "shape":"FailureCode",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"FailureMessage",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status of the service.</p>"
        }
      }
    },
    "GetTargetGroupRequest":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "GetTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was created, in ISO-8601 format.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "serviceArns":{
          "shape":"ServiceArnList",
          "documentation":"<p>The Amazon Resource Names (ARNs) of the service.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        }
      }
    },
    "HeaderMatch":{
      "type":"structure",
      "required":[
        "match",
        "name"
      ],
      "members":{
        "caseSensitive":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the match is case sensitive.</p>"
        },
        "match":{
          "shape":"HeaderMatchType",
          "documentation":"<p>The header match type.</p>"
        },
        "name":{
          "shape":"HeaderMatchName",
          "documentation":"<p>The name of the header.</p>"
        }
      },
      "documentation":"<p>Describes the constraints for a header match. Matches incoming requests with rule based on request header value before applying rule action.</p>"
    },
    "HeaderMatchContains":{
      "type":"string",
      "max":200,
      "min":1
    },
    "HeaderMatchExact":{
      "type":"string",
      "max":200,
      "min":1
    },
    "HeaderMatchList":{
      "type":"list",
      "member":{"shape":"HeaderMatch"},
      "max":5,
      "min":1
    },
    "HeaderMatchName":{
      "type":"string",
      "max":100,
      "min":1
    },
    "HeaderMatchPrefix":{
      "type":"string",
      "max":200,
      "min":1
    },
    "HeaderMatchType":{
      "type":"structure",
      "members":{
        "contains":{
          "shape":"HeaderMatchContains",
          "documentation":"<p>A contains type match.</p>"
        },
        "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>"
        }
      },
      "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>"
        },
        "healthCheckIntervalSeconds":{
          "shape":"HealthCheckIntervalSeconds",
          "documentation":"<p>The approximate amount of time, in seconds, between health checks of an individual target. The range is 5–300 seconds. The default is 30 seconds.</p>"
        },
        "healthCheckTimeoutSeconds":{
          "shape":"HealthCheckTimeoutSeconds",
          "documentation":"<p>The amount of time, in seconds, to wait before reporting a target as unhealthy. The range is 1–120 seconds. The default is 5 seconds.</p>"
        },
        "healthyThresholdCount":{
          "shape":"HealthyThresholdCount",
          "documentation":"<p>The number of consecutive successful health checks required before considering an unhealthy target healthy. The range is 2–10. The default is 5.</p>"
        },
        "matcher":{
          "shape":"Matcher",
          "documentation":"<p>The codes to use when checking for a successful response from a target.</p>"
        },
        "path":{
          "shape":"HealthCheckPath",
          "documentation":"<p>The destination for health checks on the targets. If the protocol version is <code>HTTP/1.1</code> or <code>HTTP/2</code>, specify a valid URI (for example, <code>/path?query</code>). The default path is <code>/</code>. Health checks are not supported if the protocol version is <code>gRPC</code>, however, you can choose <code>HTTP/1.1</code> or <code>HTTP/2</code> and specify a valid URI.</p>"
        },
        "port":{
          "shape":"HealthCheckPort",
          "documentation":"<p>The port used when performing health checks on targets. The default setting is the port that a target receives traffic on.</p>"
        },
        "protocol":{
          "shape":"TargetGroupProtocol",
          "documentation":"<p>The protocol used when performing health checks on targets. The possible protocols are <code>HTTP</code> and <code>HTTPS</code>. The default is <code>HTTP</code>.</p>"
        },
        "protocolVersion":{
          "shape":"HealthCheckProtocolVersion",
          "documentation":"<p>The protocol version used when performing health checks on targets. The possible protocol versions are <code>HTTP1</code> and <code>HTTP2</code>.</p>"
        },
        "unhealthyThresholdCount":{
          "shape":"UnhealthyThresholdCount",
          "documentation":"<p>The number of consecutive failed health checks required before considering a target unhealthy. The range is 2–10. The default is 2.</p>"
        }
      },
      "documentation":"<p>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":{
        "headerMatches":{
          "shape":"HeaderMatchList",
          "documentation":"<p>The header matches. Matches incoming requests with rule based on request header value before applying rule action.</p>"
        },
        "method":{
          "shape":"HttpMethod",
          "documentation":"<p>The HTTP method type.</p>"
        },
        "pathMatch":{
          "shape":"PathMatch",
          "documentation":"<p>The path match.</p>"
        }
      },
      "documentation":"<p>Describes criteria that can be applied to incoming requests.</p>"
    },
    "HttpMethod":{
      "type":"string",
      "max":16,
      "min":0
    },
    "HttpStatusCode":{
      "type":"integer",
      "box":true,
      "max":599,
      "min":100
    },
    "Integer":{
      "type":"integer",
      "box":true
    },
    "InternalServerException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>The number of seconds to wait before retrying.</p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p>An unexpected error occurred while processing the request.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true,
      "retryable":{"throttling":false}
    },
    "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>"
    },
    "LambdaEventStructureVersion":{
      "type":"string",
      "enum":[
        "V1",
        "V2"
      ]
    },
    "ListAccessLogSubscriptionsRequest":{
      "type":"structure",
      "required":["resourceIdentifier"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "resourceIdentifier":{
          "shape":"ResourceIdentifier",
          "documentation":"<p>The ID or ARN of the service network or service.</p>",
          "location":"querystring",
          "locationName":"resourceIdentifier"
        }
      }
    },
    "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>"
        }
      }
    },
    "ListListenersRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "ListListenersResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ListenerSummaryList",
          "documentation":"<p>Information about the listeners.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListResourceConfigurationsRequest":{
      "type":"structure",
      "members":{
        "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"
        },
        "resourceConfigurationGroupIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the group resource configuration.</p>",
          "location":"querystring",
          "locationName":"resourceConfigurationGroupIdentifier"
        },
        "resourceGatewayIdentifier":{
          "shape":"ResourceGatewayIdentifier",
          "documentation":"<p>The ID of the resource gateway for the resource configuration.</p>",
          "location":"querystring",
          "locationName":"resourceGatewayIdentifier"
        }
      }
    },
    "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":{
        "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"
        },
        "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"
        }
      }
    },
    "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":[
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "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"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "ListRulesResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"RuleSummaryList",
          "documentation":"<p>Information about the rules.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListServiceNetworkResourceAssociationsRequest":{
      "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"
        },
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the resource configurationk.</p>",
          "location":"querystring",
          "locationName":"resourceConfigurationIdentifier"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID of the service network.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "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":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"querystring",
          "locationName":"serviceIdentifier"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "ListServiceNetworkServiceAssociationsResponse":{
      "type":"structure",
      "required":["items"],
      "members":{
        "items":{
          "shape":"ServiceNetworkServiceAssociationList",
          "documentation":"<p>Information about the associations.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListServiceNetworkVpcAssociationsRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or 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"
        }
      }
    },
    "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":{
        "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"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID of the service network associated with the VPC endpoint.</p>",
          "location":"querystring",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "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"
        },
        "targetGroupType":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>",
          "location":"querystring",
          "locationName":"targetGroupType"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID or ARN of the VPC.</p>",
          "location":"querystring",
          "locationName":"vpcIdentifier"
        }
      }
    },
    "ListTargetGroupsResponse":{
      "type":"structure",
      "members":{
        "items":{
          "shape":"TargetGroupList",
          "documentation":"<p>Information about the target groups.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>If there are additional results, a pagination token for the next page of results.</p>"
        }
      }
    },
    "ListTargetsRequest":{
      "type":"structure",
      "required":["targetGroupIdentifier"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>A pagination token for the next page of results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        },
        "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>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The listener protocol.</p>"
        }
      },
      "documentation":"<p>Summary information about a listener.</p>"
    },
    "ListenerSummaryList":{
      "type":"list",
      "member":{"shape":"ListenerSummary"}
    },
    "Long":{
      "type":"long",
      "box":true
    },
    "Matcher":{
      "type":"structure",
      "members":{
        "httpCode":{
          "shape":"HttpCodeMatcher",
          "documentation":"<p>The HTTP code to use when checking for a successful response from a target.</p>"
        }
      },
      "documentation":"<p>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":{
        "caseSensitive":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the match is case sensitive.</p>"
        },
        "match":{
          "shape":"PathMatchType",
          "documentation":"<p>The type of path match.</p>"
        }
      },
      "documentation":"<p>Describes the conditions that can be applied when matching a path for incoming requests.</p>"
    },
    "PathMatchExact":{
      "type":"string",
      "max":200,
      "min":1,
      "pattern":"^/[a-zA-Z0-9@:%_+.~#?&/=-]*$"
    },
    "PathMatchPrefix":{
      "type":"string",
      "max":200,
      "min":1,
      "pattern":"^/[a-zA-Z0-9@:%_+.~#?&/=-]*$"
    },
    "PathMatchType":{
      "type":"structure",
      "members":{
        "exact":{
          "shape":"PathMatchExact",
          "documentation":"<p>An exact match of the path.</p>"
        },
        "prefix":{
          "shape":"PathMatchPrefix",
          "documentation":"<p>A prefix match of the path.</p>"
        }
      },
      "documentation":"<p>Describes a path match type. Each rule can include only one of the following types of paths.</p>",
      "union":true
    },
    "PolicyString":{
      "type":"string",
      "max":10000,
      "min":1,
      "pattern":"^.*\\S.*$"
    },
    "Port":{
      "type":"integer",
      "box":true,
      "max":65535,
      "min":1
    },
    "PortRange":{
      "type":"string",
      "max":11,
      "min":1,
      "pattern":"^((\\d{1,5}\\-\\d{1,5})|(\\d+))$"
    },
    "PortRangeList":{
      "type":"list",
      "member":{"shape":"PortRange"}
    },
    "ProtocolType":{
      "type":"string",
      "enum":["TCP"]
    },
    "PutAuthPolicyRequest":{
      "type":"structure",
      "required":[
        "policy",
        "resourceIdentifier"
      ],
      "members":{
        "policy":{
          "shape":"AuthPolicyString",
          "documentation":"<p>The auth policy. The policy string in JSON must not contain newlines or blank lines.</p>"
        },
        "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"
        }
      }
    },
    "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":[
        "policy",
        "resourceArn"
      ],
      "members":{
        "policy":{
          "shape":"PolicyString",
          "documentation":"<p>An IAM policy. The policy string in JSON must not contain newlines or blank lines.</p>"
        },
        "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"
        }
      }
    },
    "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}$"
    },
    "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":{
        "arnResource":{
          "shape":"ArnResource",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
        },
        "dnsResource":{
          "shape":"DnsResource",
          "documentation":"<p>The DNS name of the resource.</p>"
        },
        "ipResource":{
          "shape":"IpResource",
          "documentation":"<p>The IP 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":{
        "amazonManaged":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the resource configuration was created and is managed by Amazon.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the resource configuration was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The most recent date and time that the resource configuration was updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the group resource configuration.</p>"
        },
        "resourceGatewayId":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The status of the 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>"
        }
      },
      "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":{
        "arn":{
          "shape":"ResourceEndpointAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the VPC endpoint association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the VPC endpoint association was created, in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "id":{
          "shape":"ResourceEndpointAssociationId",
          "documentation":"<p>The ID of the VPC endpoint association.</p>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID 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>"
        }
      },
      "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":{
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the VPC endpoint association was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"ResourceGatewayIpAddressType",
          "documentation":"<p>The type of IP address used by the resource gateway.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The most recent date and time that the resource gateway was updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups applied to the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets for the resource gateway.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</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":{
        "fixedResponse":{
          "shape":"FixedResponseAction",
          "documentation":"<p>The fixed response action. The rule returns a custom HTTP response.</p>"
        },
        "forward":{
          "shape":"ForwardAction",
          "documentation":"<p>The forward action. Traffic that matches the rule is forwarded to the specified target groups.</p>"
        }
      },
      "documentation":"<p>Describes the action for a rule.</p>",
      "union":true
    },
    "RuleArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}/rule/rule-[0-9a-z]{17}$"
    },
    "RuleId":{
      "type":"string",
      "max":22,
      "min":5,
      "pattern":"^rule-[0-9a-z]{17}$"
    },
    "RuleIdentifier":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^((rule-[0-9a-z]{17})|(^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}/rule/rule-[0-9a-z]{17}$))$"
    },
    "RuleMatch":{
      "type":"structure",
      "members":{
        "httpMatch":{
          "shape":"HttpMatch",
          "documentation":"<p>The HTTP criteria that a rule must match.</p>"
        }
      },
      "documentation":"<p>Describes a rule match.</p>",
      "union":true
    },
    "RuleName":{
      "type":"string",
      "max":63,
      "min":3,
      "pattern":"^(?!rule-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$"
    },
    "RulePriority":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "RuleSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the rule.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the rule.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default listener rule.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the listener rule was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the rule.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The priority of the rule.</p>"
        }
      },
      "documentation":"<p>Summary information about a listener rule.</p>"
    },
    "RuleSummaryList":{
      "type":"list",
      "member":{"shape":"RuleSummary"}
    },
    "RuleUpdate":{
      "type":"structure",
      "required":["ruleIdentifier"],
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The rule action.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority. A listener can't have multiple rules with the same priority.</p>"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the rule.</p>"
        }
      },
      "documentation":"<p>Describes a rule update.</p>"
    },
    "RuleUpdateFailure":{
      "type":"structure",
      "members":{
        "failureCode":{
          "shape":"FailureCode",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"FailureMessage",
          "documentation":"<p>The failure message.</p>"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the rule.</p>"
        }
      },
      "documentation":"<p>Describes a rule update that failed.</p>"
    },
    "RuleUpdateFailureList":{
      "type":"list",
      "member":{"shape":"RuleUpdateFailure"}
    },
    "RuleUpdateList":{
      "type":"list",
      "member":{"shape":"RuleUpdate"},
      "max":5,
      "min":1
    },
    "RuleUpdateSuccess":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the rule.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default rule.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority.</p>"
        }
      },
      "documentation":"<p>Describes a successful rule update.</p>"
    },
    "RuleUpdateSuccessList":{
      "type":"list",
      "member":{"shape":"RuleUpdateSuccess"}
    },
    "SecurityGroupId":{
      "type":"string",
      "max":200,
      "min":5,
      "pattern":"^sg-(([0-9a-z]{8})|([0-9a-z]{17}))$"
    },
    "SecurityGroupList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"}
    },
    "ServiceArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$"
    },
    "ServiceArnList":{
      "type":"list",
      "member":{"shape":"ServiceArn"}
    },
    "ServiceCustomDomainName":{
      "type":"string",
      "max":255,
      "min":3
    },
    "ServiceId":{
      "type":"string",
      "max":21,
      "min":21,
      "pattern":"^svc-[0-9a-z]{17}$"
    },
    "ServiceIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$"
    },
    "ServiceList":{
      "type":"list",
      "member":{"shape":"ServiceSummary"}
    },
    "ServiceName":{
      "type":"string",
      "max":40,
      "min":3,
      "pattern":"^(?!svc-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$"
    },
    "ServiceNetworkArn":{
      "type":"string",
      "max":2048,
      "min":32,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$"
    },
    "ServiceNetworkArnWithoutRegex":{
      "type":"string",
      "max":2048,
      "min":10
    },
    "ServiceNetworkEndpointAssociation":{
      "type":"structure",
      "members":{
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the association.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "state":{
          "shape":"String",
          "documentation":"<p>The state of the association.</p>"
        },
        "vpcEndpointId":{
          "shape":"String",
          "documentation":"<p>The ID of the VPC endpoint associated with the service network.</p>"
        },
        "vpcEndpointOwnerId":{
          "shape":"String",
          "documentation":"<p>The owner of the VPC endpoint associated with the service network.</p>"
        },
        "vpcId":{
          "shape":"String",
          "documentation":"<p>The ID of the VPC for the association.</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":{
        "arn":{
          "shape":"ServiceNetworkResourceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS entry for the service.</p>"
        },
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "id":{
          "shape":"ServiceNetworkResourceAssociationId",
          "documentation":"<p>The ID of the association between the service network and resource configuration.</p>"
        },
        "isManagedAssociation":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether the association is managed by Amazon.</p>"
        },
        "privateDnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The private DNS entry for the service.</p>"
        },
        "resourceConfigurationArn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "resourceConfigurationId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration associated with the service network.</p>"
        },
        "resourceConfigurationName":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration associated with the service network.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArnWithoutRegex",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network associated with the resource configuration.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkIdentifierWithoutRegex",
          "documentation":"<p>The ID 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>"
        },
        "status":{
          "shape":"ServiceNetworkResourceAssociationStatus",
          "documentation":"<p>The status of the service network associated with the resource configuration.</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":{
        "arn":{
          "shape":"ServiceNetworkServiceAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS information.</p>"
        },
        "id":{
          "shape":"ServiceNetworkServiceAssociationIdentifier",
          "documentation":"<p>The ID of the association.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "serviceName":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkServiceAssociationStatus",
          "documentation":"<p>The status. If the deletion fails, try to delete again.</p>"
        }
      },
      "documentation":"<p>Summary information about an association between a service network and a service.</p>"
    },
    "ServiceNetworkSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service network was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "numberOfAssociatedResourceConfigurations":{
          "shape":"Long",
          "documentation":"<p>The number of resource configurations associated with a service network.</p>"
        },
        "numberOfAssociatedServices":{
          "shape":"Long",
          "documentation":"<p>The number of services associated with the service network.</p>"
        },
        "numberOfAssociatedVPCs":{
          "shape":"Long",
          "documentation":"<p>The number of VPCs associated with the service network.</p>"
        }
      },
      "documentation":"<p>Summary information about a service network.</p>"
    },
    "ServiceNetworkVpcAssociationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkvpcassociation/snva-[0-9a-z]{17}$"
    },
    "ServiceNetworkVpcAssociationId":{
      "type":"string",
      "max":22,
      "min":22,
      "pattern":"^snva-[0-9a-z]{17}$"
    },
    "ServiceNetworkVpcAssociationIdentifier":{
      "type":"string",
      "max":2048,
      "min":17,
      "pattern":"^((snva-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkvpcassociation/snva-[0-9a-z]{17}))$"
    },
    "ServiceNetworkVpcAssociationList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkVpcAssociationSummary"}
    },
    "ServiceNetworkVpcAssociationStatus":{
      "type":"string",
      "enum":[
        "CREATE_IN_PROGRESS",
        "ACTIVE",
        "UPDATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_FAILED",
        "UPDATE_FAILED"
      ]
    },
    "ServiceNetworkVpcAssociationSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was created, in ISO-8601 format.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the association was last updated, in ISO-8601 format.</p>"
        },
        "serviceNetworkArn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "serviceNetworkId":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "serviceNetworkName":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC.</p>"
        }
      },
      "documentation":"<p>Summary information about an association between a service network and a VPC.</p>"
    },
    "ServiceNetworkVpcEndpointAssociationList":{
      "type":"list",
      "member":{"shape":"ServiceNetworkEndpointAssociation"}
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "required":[
        "message",
        "quotaCode",
        "resourceType",
        "serviceCode"
      ],
      "members":{
        "message":{"shape":"String"},
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>The ID of the service quota that was exceeded.</p>"
        },
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The resource ID.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The resource type.</p>"
        },
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>The service code.</p>"
        }
      },
      "documentation":"<p>The request would cause a service quota to be exceeded.</p>",
      "error":{
        "httpStatusCode":402,
        "senderFault":true
      },
      "exception":true
    },
    "ServiceStatus":{
      "type":"string",
      "enum":[
        "ACTIVE",
        "CREATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "ServiceSummary":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was created, in ISO-8601 format.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "dnsEntry":{
          "shape":"DnsEntry",
          "documentation":"<p>The DNS information.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the service was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        },
        "status":{
          "shape":"ServiceStatus",
          "documentation":"<p>The status.</p>"
        }
      },
      "documentation":"<p>Summary information about a service.</p>"
    },
    "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>"
    },
    "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":{
        "failureCode":{
          "shape":"String",
          "documentation":"<p>The failure code.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>The failure message.</p>"
        },
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the target. If the target 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>"
        }
      },
      "documentation":"<p>Describes a target failure.</p>"
    },
    "TargetFailureList":{
      "type":"list",
      "member":{"shape":"TargetFailure"}
    },
    "TargetGroupArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}$"
    },
    "TargetGroupConfig":{
      "type":"structure",
      "members":{
        "healthCheck":{
          "shape":"HealthCheckConfig",
          "documentation":"<p>The health check configuration. Not supported if the target group type is <code>LAMBDA</code> or <code>ALB</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>"
        },
        "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>"
        },
        "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>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC. Not supported if the target group type is <code>LAMBDA</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":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The ARN (Amazon Resource Name) of the target group.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was created, in ISO-8601 format.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "ipAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The type of IP address used for the target group. The possible values are <code>IPV4</code> and <code>IPV6</code>. This is an optional parameter. If not specified, the default is <code>IPV4</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>.</p>"
        },
        "lastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the target group was last updated, in ISO-8601 format.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The port of the target group.</p>"
        },
        "protocol":{
          "shape":"TargetGroupProtocol",
          "documentation":"<p>The protocol of the target group.</p>"
        },
        "serviceArns":{
          "shape":"ServiceArnList",
          "documentation":"<p>The Amazon Resource Names (ARNs) of the service.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        },
        "vpcIdentifier":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC of the target group.</p>"
        }
      },
      "documentation":"<p>Summary information about a target group.</p> <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>"
        },
        "reasonCode":{
          "shape":"String",
          "documentation":"<p>The code for why the target status is what it is.</p>"
        },
        "status":{
          "shape":"TargetStatus",
          "documentation":"<p>The status of the target.</p> <ul> <li> <p> <code>DRAINING</code>: The target is being deregistered. No new connections are sent to this target while current connections are being drained. The default draining time is 5 minutes.</p> </li> <li> <p> <code>UNAVAILABLE</code>: Health checks are unavailable for the target group.</p> </li> <li> <p> <code>HEALTHY</code>: The target is healthy.</p> </li> <li> <p> <code>UNHEALTHY</code>: The target is unhealthy.</p> </li> <li> <p> <code>INITIAL</code>: Initial health checks on the target are being performed.</p> </li> <li> <p> <code>UNUSED</code>: Target group is not used in a service.</p> </li> </ul>"
        }
      },
      "documentation":"<p>Summary information about a target.</p>"
    },
    "TargetSummaryList":{
      "type":"list",
      "member":{"shape":"TargetSummary"}
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>The ID of the service quota that was exceeded.</p>"
        },
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>The number of seconds to wait before retrying.</p>",
          "location":"header",
          "locationName":"Retry-After"
        },
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>The service code.</p>"
        }
      },
      "documentation":"<p>The limit on the number of requests per second was exceeded.</p>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true,
      "retryable":{"throttling":true}
    },
    "Timestamp":{
      "type":"timestamp",
      "timestampFormat":"iso8601"
    },
    "UnhealthyThresholdCount":{
      "type":"integer",
      "box":true,
      "max":10,
      "min":0
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeys",
          "documentation":"<p>The tag keys of the tags to remove.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateAccessLogSubscriptionRequest":{
      "type":"structure",
      "required":[
        "accessLogSubscriptionIdentifier",
        "destinationArn"
      ],
      "members":{
        "accessLogSubscriptionIdentifier":{
          "shape":"AccessLogSubscriptionIdentifier",
          "documentation":"<p>The ID or ARN of the access log subscription.</p>",
          "location":"uri",
          "locationName":"accessLogSubscriptionIdentifier"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log destination.</p>"
        }
      }
    },
    "UpdateAccessLogSubscriptionResponse":{
      "type":"structure",
      "required":[
        "arn",
        "destinationArn",
        "id",
        "resourceArn",
        "resourceId"
      ],
      "members":{
        "arn":{
          "shape":"AccessLogSubscriptionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "destinationArn":{
          "shape":"AccessLogDestinationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log destination.</p>"
        },
        "id":{
          "shape":"AccessLogSubscriptionId",
          "documentation":"<p>The ID of the access log subscription.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the access log subscription.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource.</p>"
        }
      }
    },
    "UpdateListenerRequest":{
      "type":"structure",
      "required":[
        "defaultAction",
        "listenerIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "UpdateListenerResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ListenerArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "defaultAction":{
          "shape":"RuleAction",
          "documentation":"<p>The action for the default rule.</p>"
        },
        "id":{
          "shape":"ListenerId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "name":{
          "shape":"ListenerName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "port":{
          "shape":"Port",
          "documentation":"<p>The listener port.</p>"
        },
        "protocol":{
          "shape":"ListenerProtocol",
          "documentation":"<p>The protocol of the listener.</p>"
        },
        "serviceArn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "serviceId":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        }
      }
    },
    "UpdateResourceConfigurationRequest":{
      "type":"structure",
      "required":["resourceConfigurationIdentifier"],
      "members":{
        "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>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>The resource configuration.</p>"
        },
        "resourceConfigurationIdentifier":{
          "shape":"ResourceConfigurationIdentifier",
          "documentation":"<p>The ID of the resource configuration.</p>",
          "location":"uri",
          "locationName":"resourceConfigurationIdentifier"
        }
      }
    },
    "UpdateResourceConfigurationResponse":{
      "type":"structure",
      "members":{
        "allowAssociationToShareableServiceNetwork":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether to add the resource configuration to service networks that are shared with other accounts.</p>"
        },
        "arn":{
          "shape":"ResourceConfigurationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource configuration.</p>"
        },
        "id":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the resource configuration.</p>"
        },
        "name":{
          "shape":"ResourceConfigurationName",
          "documentation":"<p>The name of the resource configuration.</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>"
        },
        "resourceConfigurationDefinition":{
          "shape":"ResourceConfigurationDefinition",
          "documentation":"<p>The resource configuration.</p>"
        },
        "resourceConfigurationGroupId":{
          "shape":"ResourceConfigurationId",
          "documentation":"<p>The ID of the group resource configuration.</p>"
        },
        "resourceGatewayId":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway associated with the resource configuration.</p>"
        },
        "status":{
          "shape":"ResourceConfigurationStatus",
          "documentation":"<p>The status of the 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>"
        }
      }
    },
    "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":{
        "arn":{
          "shape":"ResourceGatewayArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource gateway.</p>"
        },
        "id":{
          "shape":"ResourceGatewayId",
          "documentation":"<p>The ID of the resource gateway.</p>"
        },
        "ipAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The type of IP address used by the resource gateway.</p>"
        },
        "name":{
          "shape":"ResourceGatewayName",
          "documentation":"<p>The name of the resource gateway.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups associated with the resource gateway.</p>"
        },
        "status":{
          "shape":"ResourceGatewayStatus",
          "documentation":"<p>The status of the resource gateway.</p>"
        },
        "subnetIds":{
          "shape":"SubnetList",
          "documentation":"<p>The IDs of the VPC subnets for the resource gateway.</p>"
        },
        "vpcId":{
          "shape":"VpcId",
          "documentation":"<p>The ID of the VPC for the resource gateway.</p>"
        }
      }
    },
    "UpdateRuleRequest":{
      "type":"structure",
      "required":[
        "listenerIdentifier",
        "ruleIdentifier",
        "serviceIdentifier"
      ],
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>Information about the action for the specified listener rule.</p>"
        },
        "listenerIdentifier":{
          "shape":"ListenerIdentifier",
          "documentation":"<p>The ID or ARN of the listener.</p>",
          "location":"uri",
          "locationName":"listenerIdentifier"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority. A listener can't have multiple rules with the same priority.</p>"
        },
        "ruleIdentifier":{
          "shape":"RuleIdentifier",
          "documentation":"<p>The ID or ARN of the rule.</p>",
          "location":"uri",
          "locationName":"ruleIdentifier"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "UpdateRuleResponse":{
      "type":"structure",
      "members":{
        "action":{
          "shape":"RuleAction",
          "documentation":"<p>Information about the action for the specified listener rule.</p>"
        },
        "arn":{
          "shape":"RuleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "id":{
          "shape":"RuleId",
          "documentation":"<p>The ID of the listener.</p>"
        },
        "isDefault":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this is the default rule.</p>"
        },
        "match":{
          "shape":"RuleMatch",
          "documentation":"<p>The rule match.</p>"
        },
        "name":{
          "shape":"RuleName",
          "documentation":"<p>The name of the listener.</p>"
        },
        "priority":{
          "shape":"RulePriority",
          "documentation":"<p>The rule priority.</p>"
        }
      }
    },
    "UpdateServiceNetworkRequest":{
      "type":"structure",
      "required":[
        "authType",
        "serviceNetworkIdentifier"
      ],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "serviceNetworkIdentifier":{
          "shape":"ServiceNetworkIdentifier",
          "documentation":"<p>The ID or ARN of the service network.</p>",
          "location":"uri",
          "locationName":"serviceNetworkIdentifier"
        }
      }
    },
    "UpdateServiceNetworkResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service network.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "id":{
          "shape":"ServiceNetworkId",
          "documentation":"<p>The ID of the service network.</p>"
        },
        "name":{
          "shape":"ServiceNetworkName",
          "documentation":"<p>The name of the service network.</p>"
        }
      }
    },
    "UpdateServiceNetworkVpcAssociationRequest":{
      "type":"structure",
      "required":[
        "securityGroupIds",
        "serviceNetworkVpcAssociationIdentifier"
      ],
      "members":{
        "securityGroupIds":{
          "shape":"UpdateServiceNetworkVpcAssociationRequestSecurityGroupIdsList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "serviceNetworkVpcAssociationIdentifier":{
          "shape":"ServiceNetworkVpcAssociationIdentifier",
          "documentation":"<p>The ID or ARN of the association.</p>",
          "location":"uri",
          "locationName":"serviceNetworkVpcAssociationIdentifier"
        }
      }
    },
    "UpdateServiceNetworkVpcAssociationRequestSecurityGroupIdsList":{
      "type":"list",
      "member":{"shape":"SecurityGroupId"},
      "max":5,
      "min":1
    },
    "UpdateServiceNetworkVpcAssociationResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceNetworkVpcAssociationArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the association.</p>"
        },
        "createdBy":{
          "shape":"AccountId",
          "documentation":"<p>The account that created the association.</p>"
        },
        "id":{
          "shape":"ServiceNetworkVpcAssociationId",
          "documentation":"<p>The ID of the association.</p>"
        },
        "securityGroupIds":{
          "shape":"SecurityGroupList",
          "documentation":"<p>The IDs of the security groups.</p>"
        },
        "status":{
          "shape":"ServiceNetworkVpcAssociationStatus",
          "documentation":"<p>The status. You can retry the operation if the status is <code>DELETE_FAILED</code>. However, if you retry it while the status is <code>DELETE_IN_PROGRESS</code>, there is no change in the status.</p>"
        }
      }
    },
    "UpdateServiceRequest":{
      "type":"structure",
      "required":["serviceIdentifier"],
      "members":{
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p> <ul> <li> <p> <code>NONE</code>: The resource does not use an IAM policy. This is the default.</p> </li> <li> <p> <code>AWS_IAM</code>: The resource uses an IAM policy. When this type is used, auth is enabled and an auth policy is required.</p> </li> </ul>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "serviceIdentifier":{
          "shape":"ServiceIdentifier",
          "documentation":"<p>The ID or ARN of the service.</p>",
          "location":"uri",
          "locationName":"serviceIdentifier"
        }
      }
    },
    "UpdateServiceResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"ServiceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the service.</p>"
        },
        "authType":{
          "shape":"AuthType",
          "documentation":"<p>The type of IAM policy.</p>"
        },
        "certificateArn":{
          "shape":"CertificateArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the certificate.</p>"
        },
        "customDomainName":{
          "shape":"ServiceCustomDomainName",
          "documentation":"<p>The custom domain name of the service.</p>"
        },
        "id":{
          "shape":"ServiceId",
          "documentation":"<p>The ID of the service.</p>"
        },
        "name":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the service.</p>"
        }
      }
    },
    "UpdateTargetGroupRequest":{
      "type":"structure",
      "required":[
        "healthCheck",
        "targetGroupIdentifier"
      ],
      "members":{
        "healthCheck":{
          "shape":"HealthCheckConfig",
          "documentation":"<p>The health check configuration.</p>"
        },
        "targetGroupIdentifier":{
          "shape":"TargetGroupIdentifier",
          "documentation":"<p>The ID or ARN of the target group.</p>",
          "location":"uri",
          "locationName":"targetGroupIdentifier"
        }
      }
    },
    "UpdateTargetGroupResponse":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"TargetGroupArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the target group.</p>"
        },
        "config":{
          "shape":"TargetGroupConfig",
          "documentation":"<p>The target group configuration.</p>"
        },
        "id":{
          "shape":"TargetGroupId",
          "documentation":"<p>The ID of the target group.</p>"
        },
        "name":{
          "shape":"TargetGroupName",
          "documentation":"<p>The name of the target group.</p>"
        },
        "status":{
          "shape":"TargetGroupStatus",
          "documentation":"<p>The status.</p>"
        },
        "type":{
          "shape":"TargetGroupType",
          "documentation":"<p>The target group type.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "required":[
        "message",
        "reason"
      ],
      "members":{
        "fieldList":{
          "shape":"ValidationExceptionFieldList",
          "documentation":"<p>The fields that failed validation.</p>"
        },
        "message":{"shape":"String"},
        "reason":{
          "shape":"ValidationExceptionReason",
          "documentation":"<p>The reason.</p>"
        }
      },
      "documentation":"<p>The input does not satisfy the constraints specified by an Amazon Web Services service.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "ValidationExceptionField":{
      "type":"structure",
      "required":[
        "message",
        "name"
      ],
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>Additional information about why the validation failed.</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the validation exception.</p>"
        }
      },
      "documentation":"<p>Describes a validation failure.</p>"
    },
    "ValidationExceptionFieldList":{
      "type":"list",
      "member":{"shape":"ValidationExceptionField"}
    },
    "ValidationExceptionReason":{
      "type":"string",
      "enum":[
        "unknownOperation",
        "cannotParse",
        "fieldValidationFailed",
        "other"
      ]
    },
    "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>"
}
