{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2018-08-08",
    "endpointPrefix":"globalaccelerator",
    "jsonVersion":"1.1",
    "protocol":"json",
    "serviceFullName":"AWS Global Accelerator",
    "serviceId":"Global Accelerator",
    "signatureVersion":"v4",
    "signingName":"globalaccelerator",
    "targetPrefix":"GlobalAccelerator_V20180706",
    "uid":"globalaccelerator-2018-08-08"
  },
  "operations":{
    "CreateAccelerator":{
      "name":"CreateAccelerator",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateAcceleratorRequest"},
      "output":{"shape":"CreateAcceleratorResponse"},
      "errors":[
        {"shape":"InternalServiceErrorException"},
        {"shape":"InvalidArgumentException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Create an accelerator. An accelerator includes one or more listeners that process inbound connections and direct traffic to one or more endpoint groups, each of which includes endpoints, such as Network Load Balancers. To see an AWS CLI example of creating an accelerator, scroll down to <b>Example</b>.</p>"
    },
    "CreateEndpointGroup":{
      "name":"CreateEndpointGroup",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateEndpointGroupRequest"},
      "output":{"shape":"CreateEndpointGroupResponse"},
      "errors":[
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"EndpointGroupAlreadyExistsException"},
        {"shape":"ListenerNotFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"InvalidArgumentException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Create an endpoint group for the specified listener. An endpoint group is a collection of endpoints in one AWS Region. To see an AWS CLI example of creating an endpoint group, scroll down to <b>Example</b>.</p>"
    },
    "CreateListener":{
      "name":"CreateListener",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateListenerRequest"},
      "output":{"shape":"CreateListenerResponse"},
      "errors":[
        {"shape":"InvalidArgumentException"},
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"InvalidPortRangeException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Create a listener to process inbound connections from clients to an accelerator. Connections arrive to assigned static IP addresses on a port, port range, or list of port ranges that you specify. To see an AWS CLI example of creating a listener, scroll down to <b>Example</b>.</p>"
    },
    "DeleteAccelerator":{
      "name":"DeleteAccelerator",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteAcceleratorRequest"},
      "errors":[
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"AcceleratorNotDisabledException"},
        {"shape":"AssociatedListenerFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"InvalidArgumentException"}
      ],
      "documentation":"<p>Delete an accelerator. Note: before you can delete an accelerator, you must disable it and remove all dependent resources (listeners and endpoint groups).</p>"
    },
    "DeleteEndpointGroup":{
      "name":"DeleteEndpointGroup",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteEndpointGroupRequest"},
      "errors":[
        {"shape":"EndpointGroupNotFoundException"},
        {"shape":"InternalServiceErrorException"}
      ],
      "documentation":"<p>Delete an endpoint group from a listener.</p>"
    },
    "DeleteListener":{
      "name":"DeleteListener",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteListenerRequest"},
      "errors":[
        {"shape":"ListenerNotFoundException"},
        {"shape":"AssociatedEndpointGroupFoundException"},
        {"shape":"InternalServiceErrorException"}
      ],
      "documentation":"<p>Delete a listener from an accelerator.</p>"
    },
    "DescribeAccelerator":{
      "name":"DescribeAccelerator",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeAcceleratorRequest"},
      "output":{"shape":"DescribeAcceleratorResponse"},
      "errors":[
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"InvalidArgumentException"}
      ],
      "documentation":"<p>Describe an accelerator. To see an AWS CLI example of describing an accelerator, scroll down to <b>Example</b>.</p>"
    },
    "DescribeAcceleratorAttributes":{
      "name":"DescribeAcceleratorAttributes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeAcceleratorAttributesRequest"},
      "output":{"shape":"DescribeAcceleratorAttributesResponse"},
      "errors":[
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"InvalidArgumentException"}
      ],
      "documentation":"<p>Describe the attributes of an accelerator.</p>"
    },
    "DescribeEndpointGroup":{
      "name":"DescribeEndpointGroup",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeEndpointGroupRequest"},
      "output":{"shape":"DescribeEndpointGroupResponse"},
      "errors":[
        {"shape":"EndpointGroupNotFoundException"},
        {"shape":"InternalServiceErrorException"}
      ],
      "documentation":"<p>Describe an endpoint group.</p>"
    },
    "DescribeListener":{
      "name":"DescribeListener",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeListenerRequest"},
      "output":{"shape":"DescribeListenerResponse"},
      "errors":[
        {"shape":"InvalidArgumentException"},
        {"shape":"ListenerNotFoundException"},
        {"shape":"InternalServiceErrorException"}
      ],
      "documentation":"<p>Describe a listener.</p>"
    },
    "ListAccelerators":{
      "name":"ListAccelerators",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListAcceleratorsRequest"},
      "output":{"shape":"ListAcceleratorsResponse"},
      "errors":[
        {"shape":"InvalidNextTokenException"},
        {"shape":"InternalServiceErrorException"}
      ],
      "documentation":"<p>List the accelerators for an AWS account.</p>"
    },
    "ListEndpointGroups":{
      "name":"ListEndpointGroups",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListEndpointGroupsRequest"},
      "output":{"shape":"ListEndpointGroupsResponse"},
      "errors":[
        {"shape":"ListenerNotFoundException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidArgumentException"},
        {"shape":"InternalServiceErrorException"}
      ],
      "documentation":"<p>List the endpoint groups that are associated with a listener.</p>"
    },
    "ListListeners":{
      "name":"ListListeners",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListListenersRequest"},
      "output":{"shape":"ListListenersResponse"},
      "errors":[
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InternalServiceErrorException"}
      ],
      "documentation":"<p>List the listeners for an accelerator.</p>"
    },
    "UpdateAccelerator":{
      "name":"UpdateAccelerator",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateAcceleratorRequest"},
      "output":{"shape":"UpdateAcceleratorResponse"},
      "errors":[
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"InvalidArgumentException"}
      ],
      "documentation":"<p>Update an accelerator.</p>"
    },
    "UpdateAcceleratorAttributes":{
      "name":"UpdateAcceleratorAttributes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateAcceleratorAttributesRequest"},
      "output":{"shape":"UpdateAcceleratorAttributesResponse"},
      "errors":[
        {"shape":"AcceleratorNotFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"InvalidArgumentException"}
      ],
      "documentation":"<p>Update the attributes for an accelerator. To see an AWS CLI example of updating an accelerator to enable flow logs, scroll down to <b>Example</b>.</p>"
    },
    "UpdateEndpointGroup":{
      "name":"UpdateEndpointGroup",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateEndpointGroupRequest"},
      "output":{"shape":"UpdateEndpointGroupResponse"},
      "errors":[
        {"shape":"InvalidArgumentException"},
        {"shape":"EndpointGroupNotFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Update an endpoint group. To see an AWS CLI example of updating an endpoint group, scroll down to <b>Example</b>.</p>"
    },
    "UpdateListener":{
      "name":"UpdateListener",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateListenerRequest"},
      "output":{"shape":"UpdateListenerResponse"},
      "errors":[
        {"shape":"InvalidArgumentException"},
        {"shape":"InvalidPortRangeException"},
        {"shape":"ListenerNotFoundException"},
        {"shape":"InternalServiceErrorException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Update a listener.</p>"
    }
  },
  "shapes":{
    "Accelerator":{
      "type":"structure",
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the accelerator.</p>"
        },
        "Name":{
          "shape":"GenericString",
          "documentation":"<p>The name of the accelerator. The name can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens (-), and must not begin or end with a hyphen.</p>"
        },
        "IpAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The value for the address type must be IPv4. </p>"
        },
        "Enabled":{
          "shape":"GenericBoolean",
          "documentation":"<p>Indicates whether theaccelerator is enabled. The value is true or false. The default value is true. </p> <p>If the value is set to true, the accelerator cannot be deleted. If set to false, accelerator can be deleted.</p>"
        },
        "IpSets":{
          "shape":"IpSets",
          "documentation":"<p>IP address set associated with the accelerator.</p>"
        },
        "Status":{
          "shape":"AcceleratorStatus",
          "documentation":"<p>Describes the deployment status of the accelerator.</p>"
        },
        "CreatedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the accelerator was created.</p>"
        },
        "LastModifiedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that the accelerator was last modified.</p>"
        }
      },
      "documentation":"<p>An accelerator is a complex type that includes one or more listeners that process inbound connections and then direct traffic to one or more endpoint groups, each of which includes endpoints, such as load balancers.</p>"
    },
    "AcceleratorAttributes":{
      "type":"structure",
      "members":{
        "FlowLogsEnabled":{
          "shape":"GenericBoolean",
          "documentation":"<p>Indicates whether flow logs are enabled. The default value is false. If the value is true, <code>FlowLogsS3Bucket</code> and <code>FlowLogsS3Prefix</code> must be specified.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html\">Flow Logs</a> in the <i>AWS Global Accelerator Developer Guide</i>.</p>"
        },
        "FlowLogsS3Bucket":{
          "shape":"GenericString",
          "documentation":"<p>The name of the Amazon S3 bucket for the flow logs. Attribute is required if <code>FlowLogsEnabled</code> is <code>true</code>. The bucket must exist and have a bucket policy that grants AWS Global Accelerator permission to write to the bucket.</p>"
        },
        "FlowLogsS3Prefix":{
          "shape":"GenericString",
          "documentation":"<p>The prefix for the location in the Amazon S3 bucket for the flow logs. Attribute is required if <code>FlowLogsEnabled</code> is <code>true</code>. If you don’t specify a prefix, the flow logs are stored in the root of the bucket.</p>"
        }
      },
      "documentation":"<p>Attributes of an accelerator.</p>"
    },
    "AcceleratorNotDisabledException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The accelerator that you specified could not be disabled.</p>",
      "exception":true
    },
    "AcceleratorNotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The accelerator that you specified doesn't exist.</p>",
      "exception":true
    },
    "AcceleratorStatus":{
      "type":"string",
      "enum":[
        "DEPLOYED",
        "IN_PROGRESS"
      ]
    },
    "Accelerators":{
      "type":"list",
      "member":{"shape":"Accelerator"}
    },
    "AssociatedEndpointGroupFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The listener that you specified has an endpoint group associated with it. You must remove all dependent resources from a listener before you can delete it.</p>",
      "exception":true
    },
    "AssociatedListenerFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The accelerator that you specified has a listener associated with it. You must remove all dependent resources from an accelerator before you can delete it.</p>",
      "exception":true
    },
    "ClientAffinity":{
      "type":"string",
      "enum":[
        "NONE",
        "SOURCE_IP"
      ]
    },
    "CreateAcceleratorRequest":{
      "type":"structure",
      "required":[
        "Name",
        "IdempotencyToken"
      ],
      "members":{
        "Name":{
          "shape":"GenericString",
          "documentation":"<p>The name of an accelerator. The name can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens (-), and must not begin or end with a hyphen.</p>"
        },
        "IpAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The value for the address type must be IPv4. </p>"
        },
        "Enabled":{
          "shape":"GenericBoolean",
          "documentation":"<p>Indicates whether an accelerator is enabled. The value is true or false. The default value is true. </p> <p>If the value is set to true, an accelerator cannot be deleted. If set to false, the accelerator can be deleted.</p>"
        },
        "IdempotencyToken":{
          "shape":"IdempotencyToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency—that is, the uniqueness—of an accelerator.</p>"
        }
      }
    },
    "CreateAcceleratorResponse":{
      "type":"structure",
      "members":{
        "Accelerator":{
          "shape":"Accelerator",
          "documentation":"<p>The accelerator that is created by specifying a listener and the supported IP address types.</p>"
        }
      }
    },
    "CreateEndpointGroupRequest":{
      "type":"structure",
      "required":[
        "ListenerArn",
        "EndpointGroupRegion",
        "IdempotencyToken"
      ],
      "members":{
        "ListenerArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "EndpointGroupRegion":{
          "shape":"GenericString",
          "documentation":"<p>The name of the AWS Region where the endpoint group is located. A listener can have only one endpoint group in a specific Region.</p>"
        },
        "EndpointConfigurations":{
          "shape":"EndpointConfigurations",
          "documentation":"<p>The list of endpoint objects.</p>"
        },
        "TrafficDialPercentage":{
          "shape":"TrafficDialPercentage",
          "documentation":"<p>The percentage of traffic to send to an AWS Region. Additional traffic is distributed to other endpoint groups for this listener. </p> <p>Use this action to increase (dial up) or decrease (dial down) traffic to a specific Region. The percentage is applied to the traffic that would otherwise have been routed to the Region based on optimal routing.</p> <p>The default value is 100.</p>"
        },
        "HealthCheckPort":{
          "shape":"HealthCheckPort",
          "documentation":"<p>The port that AWS Global Accelerator uses to check the health of endpoints that are part of this endpoint group. The default port is the listener port that this endpoint group is associated with. If listener port is a list of ports, Global Accelerator uses the first port in the list.</p>"
        },
        "HealthCheckProtocol":{
          "shape":"HealthCheckProtocol",
          "documentation":"<p>The protocol that AWS Global Accelerator uses to check the health of endpoints that are part of this endpoint group. The default value is TCP.</p>"
        },
        "HealthCheckPath":{
          "shape":"GenericString",
          "documentation":"<p>If the protocol is HTTP/S, then this specifies the path that is the destination for health check targets. The default value is slash (/).</p>"
        },
        "HealthCheckIntervalSeconds":{
          "shape":"HealthCheckIntervalSeconds",
          "documentation":"<p>The time—10 seconds or 30 seconds—between each health check for an endpoint. The default value is 30.</p>"
        },
        "ThresholdCount":{
          "shape":"ThresholdCount",
          "documentation":"<p>The number of consecutive health checks required to set the state of a healthy endpoint to unhealthy, or to set an unhealthy endpoint to healthy. The default value is 3.</p>"
        },
        "IdempotencyToken":{
          "shape":"IdempotencyToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency—that is, the uniqueness—of the request.</p>"
        }
      }
    },
    "CreateEndpointGroupResponse":{
      "type":"structure",
      "members":{
        "EndpointGroup":{
          "shape":"EndpointGroup",
          "documentation":"<p>The information about the endpoint group that was created.</p>"
        }
      }
    },
    "CreateListenerRequest":{
      "type":"structure",
      "required":[
        "AcceleratorArn",
        "PortRanges",
        "Protocol",
        "IdempotencyToken"
      ],
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of your accelerator.</p>"
        },
        "PortRanges":{
          "shape":"PortRanges",
          "documentation":"<p>The list of port ranges to support for connections from clients to your accelerator.</p>"
        },
        "Protocol":{
          "shape":"Protocol",
          "documentation":"<p>The protocol for connections from clients to your accelerator.</p>"
        },
        "ClientAffinity":{
          "shape":"ClientAffinity",
          "documentation":"<p>Client affinity lets you direct all requests from a user to the same endpoint, if you have stateful applications, regardless of the port and protocol of the client request. Clienty affinity gives you control over whether to always route each client to the same specific endpoint.</p> <p>AWS Global Accelerator uses a consistent-flow hashing algorithm to choose the optimal endpoint for a connection. If client affinity is <code>NONE</code>, Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source IP address, source port, destination IP address, destination port, and protocol—to select the hash value, and then chooses the best endpoint. However, with this setting, if someone uses different ports to connect to Global Accelerator, their connections might not be always routed to the same endpoint because the hash value changes. </p> <p>If you want a given client to always be routed to the same endpoint, set client affinity to <code>SOURCE_IP</code> instead. When you use the <code>SOURCE_IP</code> setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties— source (client) IP address and destination IP address—to select the hash value.</p> <p>The default value is <code>NONE</code>.</p>"
        },
        "IdempotencyToken":{
          "shape":"IdempotencyToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency—that is, the uniqueness—of the request.</p>"
        }
      }
    },
    "CreateListenerResponse":{
      "type":"structure",
      "members":{
        "Listener":{
          "shape":"Listener",
          "documentation":"<p>The listener that you've created.</p>"
        }
      }
    },
    "DeleteAcceleratorRequest":{
      "type":"structure",
      "required":["AcceleratorArn"],
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of an accelerator.</p>"
        }
      }
    },
    "DeleteEndpointGroupRequest":{
      "type":"structure",
      "required":["EndpointGroupArn"],
      "members":{
        "EndpointGroupArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the endpoint group to delete.</p>"
        }
      }
    },
    "DeleteListenerRequest":{
      "type":"structure",
      "required":["ListenerArn"],
      "members":{
        "ListenerArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        }
      }
    },
    "DescribeAcceleratorAttributesRequest":{
      "type":"structure",
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the accelerator with the attributes that you want to describe. Value is required.</p>"
        }
      }
    },
    "DescribeAcceleratorAttributesResponse":{
      "type":"structure",
      "members":{
        "AcceleratorAttributes":{
          "shape":"AcceleratorAttributes",
          "documentation":"<p>The attributes of the accelerator.</p>"
        }
      }
    },
    "DescribeAcceleratorRequest":{
      "type":"structure",
      "required":["AcceleratorArn"],
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the accelerator to describe.</p>"
        }
      }
    },
    "DescribeAcceleratorResponse":{
      "type":"structure",
      "members":{
        "Accelerator":{
          "shape":"Accelerator",
          "documentation":"<p>The description of the accelerator.</p>"
        }
      }
    },
    "DescribeEndpointGroupRequest":{
      "type":"structure",
      "required":["EndpointGroupArn"],
      "members":{
        "EndpointGroupArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the endpoint group to describe.</p>"
        }
      }
    },
    "DescribeEndpointGroupResponse":{
      "type":"structure",
      "members":{
        "EndpointGroup":{
          "shape":"EndpointGroup",
          "documentation":"<p>The description of an endpoint group.</p>"
        }
      }
    },
    "DescribeListenerRequest":{
      "type":"structure",
      "required":["ListenerArn"],
      "members":{
        "ListenerArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener to describe.</p>"
        }
      }
    },
    "DescribeListenerResponse":{
      "type":"structure",
      "members":{
        "Listener":{
          "shape":"Listener",
          "documentation":"<p>The description of a listener.</p>"
        }
      }
    },
    "EndpointConfiguration":{
      "type":"structure",
      "members":{
        "EndpointId":{
          "shape":"GenericString",
          "documentation":"<p>An ID for the endpoint. If the endpoint is a Network Load Balancer or Application Load Balancer, this is the Amazon Resource Name (ARN) of the resource. If the endpoint is an Elastic IP address, this is the Elastic IP address allocation ID.</p>"
        },
        "Weight":{
          "shape":"EndpointWeight",
          "documentation":"<p>The weight associated with the endpoint. When you add weights to endpoints, you configure AWS Global Accelerator to route traffic based on proportions that you specify. For example, you might specify endpoint weights of 4, 5, 5, and 6 (sum=20). The result is that 4/20 of your traffic, on average, is routed to the first endpoint, 5/20 is routed both to the second and third endpoints, and 6/20 is routed to the last endpoint. For more information, see <a href=\"https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html\">Endpoint Weights</a> in the <i>AWS Global Accelerator Developer Guide</i>.</p>"
        }
      },
      "documentation":"<p>A complex type for endpoints.</p>"
    },
    "EndpointConfigurations":{
      "type":"list",
      "member":{"shape":"EndpointConfiguration"},
      "max":10,
      "min":0
    },
    "EndpointDescription":{
      "type":"structure",
      "members":{
        "EndpointId":{
          "shape":"GenericString",
          "documentation":"<p>An ID for the endpoint. If the endpoint is a Network Load Balancer or Application Load Balancer, this is the Amazon Resource Name (ARN) of the resource. If the endpoint is an Elastic IP address, this is the Elastic IP address allocation ID.</p>"
        },
        "Weight":{
          "shape":"EndpointWeight",
          "documentation":"<p>The weight associated with the endpoint. When you add weights to endpoints, you configure AWS Global Accelerator to route traffic based on proportions that you specify. For example, you might specify endpoint weights of 4, 5, 5, and 6 (sum=20). The result is that 4/20 of your traffic, on average, is routed to the first endpoint, 5/20 is routed both to the second and third endpoints, and 6/20 is routed to the last endpoint. For more information, see <a href=\"https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html\">Endpoint Weights</a> in the <i>AWS Global Accelerator Developer Guide</i>. </p>"
        },
        "HealthState":{
          "shape":"HealthState",
          "documentation":"<p>The health status of the endpoint.</p>"
        },
        "HealthReason":{
          "shape":"GenericString",
          "documentation":"<p>The reason code associated with why the endpoint is not healthy. If the endpoint state is healthy, a reason code is not provided.</p> <p>If the endpoint state is <b>unhealthy</b>, the reason code can be one of the following values:</p> <ul> <li> <p> <b>Timeout</b>: The health check requests to the endpoint are timing out before returning a status.</p> </li> <li> <p> <b>Failed</b>: The health check failed, for example because the endpoint response was invalid (malformed).</p> </li> </ul> <p>If the endpoint state is <b>initial</b>, the reason code can be one of the following values:</p> <ul> <li> <p> <b>ProvisioningInProgress</b>: The endpoint is in the process of being provisioned.</p> </li> <li> <p> <b>InitialHealthChecking</b>: Global Accelerator is still setting up the minimum number of health checks for the endpoint that are required to determine its health status.</p> </li> </ul>"
        }
      },
      "documentation":"<p>A complex type for an endpoint. Each endpoint group can include one or more endpoints, such as load balancers.</p>"
    },
    "EndpointDescriptions":{
      "type":"list",
      "member":{"shape":"EndpointDescription"}
    },
    "EndpointGroup":{
      "type":"structure",
      "members":{
        "EndpointGroupArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the endpoint group.</p>"
        },
        "EndpointGroupRegion":{
          "shape":"GenericString",
          "documentation":"<p>The AWS Region that this endpoint group belongs.</p>"
        },
        "EndpointDescriptions":{
          "shape":"EndpointDescriptions",
          "documentation":"<p>The list of endpoint objects.</p>"
        },
        "TrafficDialPercentage":{
          "shape":"TrafficDialPercentage",
          "documentation":"<p>The percentage of traffic to send to an AWS Region. Additional traffic is distributed to other endpoint groups for this listener. </p> <p>Use this action to increase (dial up) or decrease (dial down) traffic to a specific Region. The percentage is applied to the traffic that would otherwise have been routed to the Region based on optimal routing.</p> <p>The default value is 100.</p>"
        },
        "HealthCheckPort":{
          "shape":"HealthCheckPort",
          "documentation":"<p>The port that Global Accelerator uses to perform health checks on endpoints that are part of this endpoint group. </p> <p>The default port is the port for the listener that this endpoint group is associated with. If the listener port is a list, Global Accelerator uses the first specified port in the list of ports.</p>"
        },
        "HealthCheckProtocol":{
          "shape":"HealthCheckProtocol",
          "documentation":"<p>The protocol that Global Accelerator uses to perform health checks on endpoints that are part of this endpoint group. The default value is TCP.</p>"
        },
        "HealthCheckPath":{
          "shape":"GenericString",
          "documentation":"<p>If the protocol is HTTP/S, then this value provides the ping path that Global Accelerator uses for the destination on the endpoints for health checks. The default is slash (/).</p>"
        },
        "HealthCheckIntervalSeconds":{
          "shape":"HealthCheckIntervalSeconds",
          "documentation":"<p>The time—10 seconds or 30 seconds—between health checks for each endpoint. The default value is 30.</p>"
        },
        "ThresholdCount":{
          "shape":"ThresholdCount",
          "documentation":"<p>The number of consecutive health checks required to set the state of a healthy endpoint to unhealthy, or to set an unhealthy endpoint to healthy. The default value is 3.</p>"
        }
      },
      "documentation":"<p>A complex type for the endpoint group. An AWS Region can have only one endpoint group for a specific listener. </p>"
    },
    "EndpointGroupAlreadyExistsException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The endpoint group that you specified already exists.</p>",
      "exception":true
    },
    "EndpointGroupNotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The endpoint group that you specified doesn't exist.</p>",
      "exception":true
    },
    "EndpointGroups":{
      "type":"list",
      "member":{"shape":"EndpointGroup"}
    },
    "EndpointWeight":{
      "type":"integer",
      "max":255,
      "min":0
    },
    "ErrorMessage":{"type":"string"},
    "GenericBoolean":{"type":"boolean"},
    "GenericString":{
      "type":"string",
      "max":255
    },
    "HealthCheckIntervalSeconds":{
      "type":"integer",
      "max":30,
      "min":10
    },
    "HealthCheckPort":{
      "type":"integer",
      "max":65535,
      "min":1
    },
    "HealthCheckProtocol":{
      "type":"string",
      "enum":[
        "TCP",
        "HTTP",
        "HTTPS"
      ]
    },
    "HealthState":{
      "type":"string",
      "enum":[
        "INITIAL",
        "HEALTHY",
        "UNHEALTHY"
      ]
    },
    "IdempotencyToken":{
      "type":"string",
      "max":255
    },
    "InternalServiceErrorException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>There was an internal error for AWS Global Accelerator.</p>",
      "exception":true
    },
    "InvalidArgumentException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>An argument that you specified is invalid.</p>",
      "exception":true
    },
    "InvalidNextTokenException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>There isn't another item to return.</p>",
      "exception":true
    },
    "InvalidPortRangeException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The port numbers that you specified are not valid numbers or are not unique for this accelerator.</p>",
      "exception":true
    },
    "IpAddress":{"type":"string"},
    "IpAddressType":{
      "type":"string",
      "enum":["IPV4"]
    },
    "IpAddresses":{
      "type":"list",
      "member":{"shape":"IpAddress"},
      "max":2,
      "min":0
    },
    "IpSet":{
      "type":"structure",
      "members":{
        "IpFamily":{
          "shape":"GenericString",
          "documentation":"<p>The types of IP addresses included in this IP set.</p>"
        },
        "IpAddresses":{
          "shape":"IpAddresses",
          "documentation":"<p>The array of IP addresses in the IP address set. An IP address set can have a maximum of two IP addresses.</p>"
        }
      },
      "documentation":"<p>A complex type for the set of IP addresses for an accelerator.</p>"
    },
    "IpSets":{
      "type":"list",
      "member":{"shape":"IpSet"}
    },
    "LimitExceededException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>Processing your request would cause you to exceed an AWS Global Accelerator limit.</p>",
      "exception":true
    },
    "ListAcceleratorsRequest":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The number of Global Accelerator objects that you want to return with this call. The default value is 10.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>The token for the next set of results. You receive this token from a previous call.</p>"
        }
      }
    },
    "ListAcceleratorsResponse":{
      "type":"structure",
      "members":{
        "Accelerators":{
          "shape":"Accelerators",
          "documentation":"<p>The list of accelerators for a customer account.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>The token for the next set of results. You receive this token from a previous call.</p>"
        }
      }
    },
    "ListEndpointGroupsRequest":{
      "type":"structure",
      "required":["ListenerArn"],
      "members":{
        "ListenerArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The number of endpoint group objects that you want to return with this call. The default value is 10.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>The token for the next set of results. You receive this token from a previous call.</p>"
        }
      }
    },
    "ListEndpointGroupsResponse":{
      "type":"structure",
      "members":{
        "EndpointGroups":{
          "shape":"EndpointGroups",
          "documentation":"<p>The list of the endpoint groups associated with a listener.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>The token for the next set of results. You receive this token from a previous call.</p>"
        }
      }
    },
    "ListListenersRequest":{
      "type":"structure",
      "required":["AcceleratorArn"],
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the accelerator for which you want to list listener objects.</p>"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The number of listener objects that you want to return with this call. The default value is 10.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>The token for the next set of results. You receive this token from a previous call.</p>"
        }
      }
    },
    "ListListenersResponse":{
      "type":"structure",
      "members":{
        "Listeners":{
          "shape":"Listeners",
          "documentation":"<p>The list of listeners for an accelerator.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>The token for the next set of results. You receive this token from a previous call.</p>"
        }
      }
    },
    "Listener":{
      "type":"structure",
      "members":{
        "ListenerArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener.</p>"
        },
        "PortRanges":{
          "shape":"PortRanges",
          "documentation":"<p>The list of port ranges for the connections from clients to the accelerator.</p>"
        },
        "Protocol":{
          "shape":"Protocol",
          "documentation":"<p>The protocol for the connections from clients to the accelerator.</p>"
        },
        "ClientAffinity":{
          "shape":"ClientAffinity",
          "documentation":"<p>Client affinity lets you direct all requests from a user to the same endpoint, if you have stateful applications, regardless of the port and protocol of the client request. Clienty affinity gives you control over whether to always route each client to the same specific endpoint.</p> <p>AWS Global Accelerator uses a consistent-flow hashing algorithm to choose the optimal endpoint for a connection. If client affinity is <code>NONE</code>, Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source IP address, source port, destination IP address, destination port, and protocol—to select the hash value, and then chooses the best endpoint. However, with this setting, if someone uses different ports to connect to Global Accelerator, their connections might not be always routed to the same endpoint because the hash value changes. </p> <p>If you want a given client to always be routed to the same endpoint, set client affinity to <code>SOURCE_IP</code> instead. When you use the <code>SOURCE_IP</code> setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties— source (client) IP address and destination IP address—to select the hash value.</p> <p>The default value is <code>NONE</code>.</p>"
        }
      },
      "documentation":"<p>A complex type for a listener.</p>"
    },
    "ListenerNotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The listener that you specified doesn't exist.</p>",
      "exception":true
    },
    "Listeners":{
      "type":"list",
      "member":{"shape":"Listener"}
    },
    "MaxResults":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "PortNumber":{
      "type":"integer",
      "max":65535,
      "min":1
    },
    "PortRange":{
      "type":"structure",
      "members":{
        "FromPort":{
          "shape":"PortNumber",
          "documentation":"<p>The first port in the range of ports, inclusive.</p>"
        },
        "ToPort":{
          "shape":"PortNumber",
          "documentation":"<p>The last port in the range of ports, inclusive.</p>"
        }
      },
      "documentation":"<p>A complex type for a range of ports for a listener.</p>"
    },
    "PortRanges":{
      "type":"list",
      "member":{"shape":"PortRange"},
      "max":10,
      "min":1
    },
    "Protocol":{
      "type":"string",
      "enum":[
        "TCP",
        "UDP"
      ]
    },
    "ThresholdCount":{
      "type":"integer",
      "max":10,
      "min":1
    },
    "Timestamp":{"type":"timestamp"},
    "TrafficDialPercentage":{
      "type":"float",
      "max":100,
      "min":0
    },
    "UpdateAcceleratorAttributesRequest":{
      "type":"structure",
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the accelerator that you want to update. Attribute is required.</p>"
        },
        "FlowLogsEnabled":{
          "shape":"GenericBoolean",
          "documentation":"<p>Update whether flow logs are enabled. The default value is false. If the value is true, <code>FlowLogsS3Bucket</code> and <code>FlowLogsS3Prefix</code> must be specified.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html\">Flow Logs</a> in the <i>AWS Global Accelerator Developer Guide</i>.</p>"
        },
        "FlowLogsS3Bucket":{
          "shape":"GenericString",
          "documentation":"<p>The name of the Amazon S3 bucket for the flow logs. Attribute is required if <code>FlowLogsEnabled</code> is <code>true</code>. The bucket must exist and have a bucket policy that grants AWS Global Accelerator permission to write to the bucket.</p>"
        },
        "FlowLogsS3Prefix":{
          "shape":"GenericString",
          "documentation":"<p>Update the prefix for the location in the Amazon S3 bucket for the flow logs. Attribute is required if <code>FlowLogsEnabled</code> is <code>true</code>. If you don’t specify a prefix, the flow logs are stored in the root of the bucket.</p>"
        }
      }
    },
    "UpdateAcceleratorAttributesResponse":{
      "type":"structure",
      "members":{
        "AcceleratorAttributes":{
          "shape":"AcceleratorAttributes",
          "documentation":"<p>Updated attributes for the accelerator.</p>"
        }
      }
    },
    "UpdateAcceleratorRequest":{
      "type":"structure",
      "required":["AcceleratorArn"],
      "members":{
        "AcceleratorArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the accelerator to update.</p>"
        },
        "Name":{
          "shape":"GenericString",
          "documentation":"<p>The name of the accelerator. The name can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens (-), and must not begin or end with a hyphen.</p>"
        },
        "IpAddressType":{
          "shape":"IpAddressType",
          "documentation":"<p>The value for the address type must be IPv4. </p>"
        },
        "Enabled":{
          "shape":"GenericBoolean",
          "documentation":"<p>Indicates whether an accelerator is enabled. The value is true or false. The default value is true. </p> <p>If the value is set to true, the accelerator cannot be deleted. If set to false, the accelerator can be deleted.</p>"
        }
      }
    },
    "UpdateAcceleratorResponse":{
      "type":"structure",
      "members":{
        "Accelerator":{
          "shape":"Accelerator",
          "documentation":"<p>Information about the updated accelerator.</p>"
        }
      }
    },
    "UpdateEndpointGroupRequest":{
      "type":"structure",
      "required":["EndpointGroupArn"],
      "members":{
        "EndpointGroupArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the endpoint group.</p>"
        },
        "EndpointConfigurations":{
          "shape":"EndpointConfigurations",
          "documentation":"<p>The list of endpoint objects.</p>"
        },
        "TrafficDialPercentage":{
          "shape":"TrafficDialPercentage",
          "documentation":"<p>The percentage of traffic to send to an AWS Region. Additional traffic is distributed to other endpoint groups for this listener. </p> <p>Use this action to increase (dial up) or decrease (dial down) traffic to a specific Region. The percentage is applied to the traffic that would otherwise have been routed to the Region based on optimal routing.</p> <p>The default value is 100.</p>"
        },
        "HealthCheckPort":{
          "shape":"HealthCheckPort",
          "documentation":"<p>The port that AWS Global Accelerator uses to check the health of endpoints that are part of this endpoint group. The default port is the listener port that this endpoint group is associated with. If the listener port is a list of ports, Global Accelerator uses the first port in the list.</p>"
        },
        "HealthCheckProtocol":{
          "shape":"HealthCheckProtocol",
          "documentation":"<p>The protocol that AWS Global Accelerator uses to check the health of endpoints that are part of this endpoint group. The default value is TCP.</p>"
        },
        "HealthCheckPath":{
          "shape":"GenericString",
          "documentation":"<p>If the protocol is HTTP/S, then this specifies the path that is the destination for health check targets. The default value is slash (/).</p>"
        },
        "HealthCheckIntervalSeconds":{
          "shape":"HealthCheckIntervalSeconds",
          "documentation":"<p>The time—10 seconds or 30 seconds—between each health check for an endpoint. The default value is 30.</p>"
        },
        "ThresholdCount":{
          "shape":"ThresholdCount",
          "documentation":"<p>The number of consecutive health checks required to set the state of a healthy endpoint to unhealthy, or to set an unhealthy endpoint to healthy. The default value is 3.</p>"
        }
      }
    },
    "UpdateEndpointGroupResponse":{
      "type":"structure",
      "members":{
        "EndpointGroup":{
          "shape":"EndpointGroup",
          "documentation":"<p>The information about the endpoint group that was updated.</p>"
        }
      }
    },
    "UpdateListenerRequest":{
      "type":"structure",
      "required":["ListenerArn"],
      "members":{
        "ListenerArn":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Resource Name (ARN) of the listener to update.</p>"
        },
        "PortRanges":{
          "shape":"PortRanges",
          "documentation":"<p>The updated list of port ranges for the connections from clients to the accelerator.</p>"
        },
        "Protocol":{
          "shape":"Protocol",
          "documentation":"<p>The updated protocol for the connections from clients to the accelerator.</p>"
        },
        "ClientAffinity":{
          "shape":"ClientAffinity",
          "documentation":"<p>Client affinity lets you direct all requests from a user to the same endpoint, if you have stateful applications, regardless of the port and protocol of the client request. Clienty affinity gives you control over whether to always route each client to the same specific endpoint.</p> <p>AWS Global Accelerator uses a consistent-flow hashing algorithm to choose the optimal endpoint for a connection. If client affinity is <code>NONE</code>, Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source IP address, source port, destination IP address, destination port, and protocol—to select the hash value, and then chooses the best endpoint. However, with this setting, if someone uses different ports to connect to Global Accelerator, their connections might not be always routed to the same endpoint because the hash value changes. </p> <p>If you want a given client to always be routed to the same endpoint, set client affinity to <code>SOURCE_IP</code> instead. When you use the <code>SOURCE_IP</code> setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties— source (client) IP address and destination IP address—to select the hash value.</p> <p>The default value is <code>NONE</code>.</p>"
        }
      }
    },
    "UpdateListenerResponse":{
      "type":"structure",
      "members":{
        "Listener":{
          "shape":"Listener",
          "documentation":"<p>Information for the updated listener.</p>"
        }
      }
    }
  },
  "documentation":"<fullname>AWS Global Accelerator</fullname> <p>This is the <i>AWS Global Accelerator API Reference</i>. This guide is for developers who need detailed information about AWS Global Accelerator API actions, data types, and errors. For more information about Global Accelerator features, see the <a href=\"https://docs.aws.amazon.com/global-accelerator/latest/dg/Welcome.html\">AWS Global Accelerator Developer Guide</a>. </p> <p>AWS Global Accelerator is a network layer service in which you create accelerators to improve availability and performance for internet applications used by a global audience. </p> <p>Global Accelerator provides you with static IP addresses that you associate with your accelerator. These IP addresses are anycast from the AWS edge network and distribute incoming application traffic across multiple endpoint resources in multiple AWS Regions, which increases the availability of your applications. Endpoints can be Elastic IP addresses, Network Load Balancers, and Application Load Balancers that are located in one AWS Region or multiple Regions.</p> <p>Global Accelerator uses the AWS global network to route traffic to the optimal regional endpoint based on health, client location, and policies that you configure. The service reacts instantly to changes in health or configuration to ensure that internet traffic from clients is directed to only healthy endpoints.</p> <p>Global Accelerator includes components that work together to help you improve performance and availability for your applications:</p> <dl> <dt>Static IP address</dt> <dd> <p>AWS Global Accelerator provides you with a set of static IP addresses which are anycast from the AWS edge network and serve as the single fixed entry points for your clients. If you already have Elastic Load Balancing or Elastic IP address resources set up for your applications, you can easily add those to Global Accelerator to allow the resources to be accessed by a Global Accelerator static IP address.</p> </dd> <dt>Accelerator</dt> <dd> <p>An accelerator directs traffic to optimal endpoints over the AWS global network to improve availability and performance for your internet applications that have a global audience. Each accelerator includes one or more listeners.</p> </dd> <dt>Network zone</dt> <dd> <p>A network zone services the static IP addresses for your accelerator from a unique IP subnet. Similar to an AWS Availability Zone, a network zone is an isolated unit with its own set of physical infrastructure. When you configure an accelerator, Global Accelerator allocates two IPv4 addresses for it. If one IP address from a network zone becomes unavailable due to IP address blocking by certain client networks, or network disruptions, then client applications can retry on the healthy static IP address from the other isolated network zone.</p> </dd> <dt>Listener</dt> <dd> <p>A listener processes inbound connections from clients to Global Accelerator, based on the protocol and port that you configure. Each listener has one or more endpoint groups associated with it, and traffic is forwarded to endpoints in one of the groups. You associate endpoint groups with listeners by specifying the Regions that you want to distribute traffic to. Traffic is distributed to optimal endpoints within the endpoint groups associated with a listener.</p> </dd> <dt>Endpoint group</dt> <dd> <p>Each endpoint group is associated with a specific AWS Region. Endpoint groups include one or more endpoints in the Region. You can increase or reduce the percentage of traffic that would be otherwise directed to an endpoint group by adjusting a setting called a <i>traffic dial</i>. The traffic dial lets you easily do performance testing or blue/green deployment testing for new releases across different AWS Regions, for example. </p> </dd> <dt>Endpoint</dt> <dd> <p>An endpoint is an Elastic IP address, Network Load Balancer, or Application Load Balancer. Traffic is routed to endpoints based on several factors, including the geo-proximity to the user, the health of the endpoint, and the configuration options that you choose, such as endpoint weights. For each endpoint, you can configure weights, which are numbers that you can use to specify the proportion of traffic to route to each one. This can be useful, for example, to do performance testing within a Region.</p> </dd> </dl>"
}
