{
  "version" : 2,
  "waiters" : {
    "DestinationEndpointConnected" : {
      "description" : "Wait until the Destination Endpoint is CONNECTED",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetDestinationEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "CONNECTED"
      }, {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.ConnectionState",
        "state" : "failure",
        "expected" : "DISCONNECTED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "DestinationEndpointDeregistered" : {
      "description" : "Wait until the Destination Endpoint is deregistered",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetDestinationEndpoint",
      "acceptors" : [ {
        "matcher" : "error",
        "state" : "success",
        "expected" : "NotFoundException"
      }, {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.RegistrationState",
        "state" : "failure",
        "expected" : "REGISTRATION_FAILED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "DestinationEndpointDisconnected" : {
      "description" : "Wait until the Destination Endpoint is DISCONNECTED",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetDestinationEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "DISCONNECTED"
      }, {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.ConnectionState",
        "state" : "failure",
        "expected" : "CONNECTED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "DestinationEndpointRegistered" : {
      "description" : "Wait until the Destination Endpoint is registered",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetDestinationEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.RegistrationState",
        "state" : "success",
        "expected" : "REGISTERED"
      }, {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.RegistrationState",
        "state" : "failure",
        "expected" : "REGISTRATION_FAILED"
      }, {
        "matcher" : "path",
        "argument" : "DestinationEndpoint.RegistrationState",
        "state" : "failure",
        "expected" : "DEREGISTERING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "FlowActive" : {
      "description" : "Wait until a flow is active",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "DescribeFlow",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "success",
        "expected" : "ACTIVE"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "retry",
        "expected" : "STARTING"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "retry",
        "expected" : "UPDATING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "failure",
        "expected" : "STANDBY"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "failure",
        "expected" : "ERROR"
      } ]
    },
    "FlowDeleted" : {
      "description" : "Wait until a flow is deleted",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "DescribeFlow",
      "acceptors" : [ {
        "matcher" : "error",
        "state" : "success",
        "expected" : "NotFoundException"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "retry",
        "expected" : "DELETING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "failure",
        "expected" : "ERROR"
      } ]
    },
    "FlowStandby" : {
      "description" : "Wait until a flow is in standby mode",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "DescribeFlow",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "success",
        "expected" : "STANDBY"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "retry",
        "expected" : "STOPPING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "Flow.Status",
        "state" : "failure",
        "expected" : "ERROR"
      } ]
    },
    "InputActive" : {
      "description" : "Wait until the Input is ACTIVE",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterInput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "success",
        "expected" : "ACTIVE"
      }, {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "retry",
        "expected" : "STARTING"
      }, {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "retry",
        "expected" : "UPDATING"
      }, {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "retry",
        "expected" : "MIGRATING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "failure",
        "expected" : "ERROR"
      } ]
    },
    "InputDeleted" : {
      "description" : "Wait until the Input is deleted",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterInput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "retry",
        "expected" : "DELETING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "failure",
        "expected" : "ERROR"
      }, {
        "matcher" : "error",
        "state" : "success",
        "expected" : "NotFoundException"
      } ]
    },
    "InputStandby" : {
      "description" : "Wait until the Input is STANDBY",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterInput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "success",
        "expected" : "STANDBY"
      }, {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "retry",
        "expected" : "STOPPING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "RouterInput.State",
        "state" : "failure",
        "expected" : "ERROR"
      } ]
    },
    "OutputActive" : {
      "description" : "Wait until the Output is ACTIVE",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterOutput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "success",
        "expected" : "ACTIVE"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "retry",
        "expected" : "STARTING"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "retry",
        "expected" : "UPDATING"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "retry",
        "expected" : "MIGRATING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "failure",
        "expected" : "ERROR"
      } ]
    },
    "OutputDeleted" : {
      "description" : "Wait until the Output is deleted",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterOutput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "retry",
        "expected" : "DELETING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "failure",
        "expected" : "ERROR"
      }, {
        "matcher" : "error",
        "state" : "success",
        "expected" : "NotFoundException"
      } ]
    },
    "OutputRouted" : {
      "description" : "Wait until the Output is ROUTED",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterOutput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterOutput.RoutedState",
        "state" : "success",
        "expected" : "ROUTED"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.RoutedState",
        "state" : "retry",
        "expected" : "ROUTING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      } ]
    },
    "OutputStandby" : {
      "description" : "Wait until the Output is STANDBY",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterOutput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "success",
        "expected" : "STANDBY"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "retry",
        "expected" : "STOPPING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.State",
        "state" : "failure",
        "expected" : "ERROR"
      } ]
    },
    "OutputUnrouted" : {
      "description" : "Wait until the Output is UNROUTED",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetRouterOutput",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "RouterOutput.RoutedState",
        "state" : "success",
        "expected" : "UNROUTED"
      }, {
        "matcher" : "path",
        "argument" : "RouterOutput.RoutedState",
        "state" : "retry",
        "expected" : "ROUTING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      } ]
    },
    "SourceEndpointConnected" : {
      "description" : "Wait until the Source Endpoint is CONNECTED",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetSourceEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "SourceEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "CONNECTED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "SourceEndpointConnecting" : {
      "description" : "Wait until the Source Endpoint has begun connecting",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetSourceEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "SourceEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "CONNECTING"
      }, {
        "matcher" : "path",
        "argument" : "SourceEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "CONNECTED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "SourceEndpointDeregistered" : {
      "description" : "Wait until the Source Endpoint is deregistered",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetSourceEndpoint",
      "acceptors" : [ {
        "matcher" : "error",
        "state" : "success",
        "expected" : "NotFoundException"
      }, {
        "matcher" : "path",
        "argument" : "SourceEndpoint.RegistrationState",
        "state" : "failure",
        "expected" : "REGISTRATION_FAILED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "SourceEndpointDisconnected" : {
      "description" : "Wait until the Source Endpoint is DISCONNECTED",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetSourceEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "SourceEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "DISCONNECTED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "SourceEndpointDisconnecting" : {
      "description" : "Wait until the Source Endpoint has begun disconnecting",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetSourceEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "SourceEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "DISCONNECTING"
      }, {
        "matcher" : "path",
        "argument" : "SourceEndpoint.ConnectionState",
        "state" : "success",
        "expected" : "DISCONNECTED"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    },
    "SourceEndpointRegistered" : {
      "description" : "Wait until the Source Endpoint is registered",
      "delay" : 3,
      "maxAttempts" : 40,
      "operation" : "GetSourceEndpoint",
      "acceptors" : [ {
        "matcher" : "path",
        "argument" : "SourceEndpoint.RegistrationState",
        "state" : "success",
        "expected" : "REGISTERED"
      }, {
        "matcher" : "path",
        "argument" : "SourceEndpoint.RegistrationState",
        "state" : "failure",
        "expected" : "REGISTRATION_FAILED"
      }, {
        "matcher" : "path",
        "argument" : "SourceEndpoint.RegistrationState",
        "state" : "failure",
        "expected" : "DEREGISTERING"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "InternalServerErrorException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "ServiceUnavailableException"
      }, {
        "matcher" : "error",
        "state" : "retry",
        "expected" : "TooManyRequestsException"
      } ]
    }
  }
}