{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2020-07-14",
    "endpointPrefix":"ivs",
    "protocol":"rest-json",
    "serviceAbbreviation":"Amazon IVS",
    "serviceFullName":"Amazon Interactive Video Service",
    "serviceId":"ivs",
    "signatureVersion":"v4",
    "signingName":"ivs",
    "uid":"ivs-2020-07-14"
  },
  "operations":{
    "BatchGetChannel":{
      "name":"BatchGetChannel",
      "http":{
        "method":"POST",
        "requestUri":"/BatchGetChannel"
      },
      "input":{"shape":"BatchGetChannelRequest"},
      "output":{"shape":"BatchGetChannelResponse"}
    },
    "BatchGetStreamKey":{
      "name":"BatchGetStreamKey",
      "http":{
        "method":"POST",
        "requestUri":"/BatchGetStreamKey"
      },
      "input":{"shape":"BatchGetStreamKeyRequest"},
      "output":{"shape":"BatchGetStreamKeyResponse"}
    },
    "CreateChannel":{
      "name":"CreateChannel",
      "http":{
        "method":"POST",
        "requestUri":"/CreateChannel"
      },
      "input":{"shape":"CreateChannelRequest"},
      "output":{"shape":"CreateChannelResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"PendingVerification"}
      ]
    },
    "CreateStreamKey":{
      "name":"CreateStreamKey",
      "http":{
        "method":"POST",
        "requestUri":"/CreateStreamKey"
      },
      "input":{"shape":"CreateStreamKeyRequest"},
      "output":{"shape":"CreateStreamKeyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"PendingVerification"}
      ]
    },
    "DeleteChannel":{
      "name":"DeleteChannel",
      "http":{
        "method":"POST",
        "requestUri":"/DeleteChannel"
      },
      "input":{"shape":"DeleteChannelRequest"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"PendingVerification"}
      ]
    },
    "DeleteStreamKey":{
      "name":"DeleteStreamKey",
      "http":{
        "method":"POST",
        "requestUri":"/DeleteStreamKey"
      },
      "input":{"shape":"DeleteStreamKeyRequest"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"PendingVerification"}
      ]
    },
    "GetChannel":{
      "name":"GetChannel",
      "http":{
        "method":"POST",
        "requestUri":"/GetChannel"
      },
      "input":{"shape":"GetChannelRequest"},
      "output":{"shape":"GetChannelResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "GetStream":{
      "name":"GetStream",
      "http":{
        "method":"POST",
        "requestUri":"/GetStream"
      },
      "input":{"shape":"GetStreamRequest"},
      "output":{"shape":"GetStreamResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ChannelNotBroadcasting"}
      ]
    },
    "GetStreamKey":{
      "name":"GetStreamKey",
      "http":{
        "method":"POST",
        "requestUri":"/GetStreamKey"
      },
      "input":{"shape":"GetStreamKeyRequest"},
      "output":{"shape":"GetStreamKeyResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "ListChannels":{
      "name":"ListChannels",
      "http":{
        "method":"POST",
        "requestUri":"/ListChannels"
      },
      "input":{"shape":"ListChannelsRequest"},
      "output":{"shape":"ListChannelsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"}
      ]
    },
    "ListStreamKeys":{
      "name":"ListStreamKeys",
      "http":{
        "method":"POST",
        "requestUri":"/ListStreamKeys"
      },
      "input":{"shape":"ListStreamKeysRequest"},
      "output":{"shape":"ListStreamKeysResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "ListStreams":{
      "name":"ListStreams",
      "http":{
        "method":"POST",
        "requestUri":"/ListStreams"
      },
      "input":{"shape":"ListStreamsRequest"},
      "output":{"shape":"ListStreamsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"}
      ]
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "PutMetadata":{
      "name":"PutMetadata",
      "http":{
        "method":"POST",
        "requestUri":"/PutMetadata"
      },
      "input":{"shape":"PutMetadataRequest"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ChannelNotBroadcasting"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"}
      ]
    },
    "StopStream":{
      "name":"StopStream",
      "http":{
        "method":"POST",
        "requestUri":"/StopStream"
      },
      "input":{"shape":"StopStreamRequest"},
      "output":{"shape":"StopStreamResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ChannelNotBroadcasting"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"StreamUnavailable"}
      ]
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "UpdateChannel":{
      "name":"UpdateChannel",
      "http":{
        "method":"POST",
        "requestUri":"/UpdateChannel"
      },
      "input":{"shape":"UpdateChannelRequest"},
      "output":{"shape":"UpdateChannelResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"PendingVerification"}
      ]
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":403},
      "exception":true
    },
    "BatchError":{
      "type":"structure",
      "members":{
        "arn":{"shape":"ResourceArn"},
        "code":{"shape":"errorCode"},
        "message":{"shape":"errorMessage"}
      }
    },
    "BatchErrors":{
      "type":"list",
      "member":{"shape":"BatchError"}
    },
    "BatchGetChannelRequest":{
      "type":"structure",
      "required":["arns"],
      "members":{
        "arns":{"shape":"ChannelArnList"}
      }
    },
    "BatchGetChannelResponse":{
      "type":"structure",
      "members":{
        "channels":{"shape":"Channels"},
        "errors":{"shape":"BatchErrors"}
      }
    },
    "BatchGetStreamKeyRequest":{
      "type":"structure",
      "required":["arns"],
      "members":{
        "arns":{"shape":"StreamKeyArnList"}
      }
    },
    "BatchGetStreamKeyResponse":{
      "type":"structure",
      "members":{
        "streamKeys":{"shape":"StreamKeys"},
        "errors":{"shape":"BatchErrors"}
      }
    },
    "Channel":{
      "type":"structure",
      "members":{
        "arn":{"shape":"ChannelArn"},
        "name":{"shape":"ChannelName"},
        "latencyMode":{"shape":"ChannelLatencyMode"},
        "type":{"shape":"ChannelType"},
        "ingestEndpoint":{"shape":"IngestEndpoint"},
        "playbackUrl":{"shape":"PlaybackURL"},
        "tags":{"shape":"Tags"}
      }
    },
    "ChannelArn":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$"
    },
    "ChannelArnList":{
      "type":"list",
      "member":{"shape":"ChannelArn"},
      "max":50,
      "min":1
    },
    "ChannelLatencyMode":{
      "type":"string",
      "enum":[
        "NORMAL",
        "LOW"
      ]
    },
    "ChannelList":{
      "type":"list",
      "member":{"shape":"ChannelSummary"}
    },
    "ChannelName":{
      "type":"string",
      "max":128,
      "min":0,
      "pattern":"^[a-zA-Z0-9-_]*$"
    },
    "ChannelNotBroadcasting":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "ChannelSummary":{
      "type":"structure",
      "members":{
        "arn":{"shape":"ChannelArn"},
        "name":{"shape":"ChannelName"},
        "latencyMode":{"shape":"ChannelLatencyMode"},
        "tags":{"shape":"Tags"}
      }
    },
    "ChannelType":{
      "type":"string",
      "enum":[
        "BASIC",
        "STANDARD"
      ]
    },
    "Channels":{
      "type":"list",
      "member":{"shape":"Channel"}
    },
    "ConflictException":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "CreateChannelRequest":{
      "type":"structure",
      "members":{
        "name":{"shape":"ChannelName"},
        "latencyMode":{"shape":"ChannelLatencyMode"},
        "type":{"shape":"ChannelType"},
        "tags":{"shape":"Tags"}
      }
    },
    "CreateChannelResponse":{
      "type":"structure",
      "members":{
        "channel":{"shape":"Channel"},
        "streamKey":{"shape":"StreamKey"}
      }
    },
    "CreateStreamKeyRequest":{
      "type":"structure",
      "required":["channelArn"],
      "members":{
        "channelArn":{"shape":"ChannelArn"},
        "tags":{"shape":"Tags"}
      }
    },
    "CreateStreamKeyResponse":{
      "type":"structure",
      "members":{
        "streamKey":{"shape":"StreamKey"}
      }
    },
    "DeleteChannelRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"ChannelArn"}
      }
    },
    "DeleteStreamKeyRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"StreamKeyArn"}
      }
    },
    "GetChannelRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"ChannelArn"}
      }
    },
    "GetChannelResponse":{
      "type":"structure",
      "members":{
        "channel":{"shape":"Channel"}
      }
    },
    "GetStreamKeyRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"StreamKeyArn"}
      }
    },
    "GetStreamKeyResponse":{
      "type":"structure",
      "members":{
        "streamKey":{"shape":"StreamKey"}
      }
    },
    "GetStreamRequest":{
      "type":"structure",
      "required":["channelArn"],
      "members":{
        "channelArn":{"shape":"ChannelArn"}
      }
    },
    "GetStreamResponse":{
      "type":"structure",
      "members":{
        "stream":{"shape":"Stream"}
      }
    },
    "IngestEndpoint":{"type":"string"},
    "InternalServerException":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":500},
      "exception":true
    },
    "ListChannelsRequest":{
      "type":"structure",
      "members":{
        "filterByName":{"shape":"ChannelName"},
        "nextToken":{"shape":"PaginationToken"},
        "maxResults":{"shape":"MaxChannelResults"}
      }
    },
    "ListChannelsResponse":{
      "type":"structure",
      "required":["channels"],
      "members":{
        "channels":{"shape":"ChannelList"},
        "nextToken":{"shape":"PaginationToken"}
      }
    },
    "ListStreamKeysRequest":{
      "type":"structure",
      "required":["channelArn"],
      "members":{
        "channelArn":{"shape":"ChannelArn"},
        "nextToken":{"shape":"PaginationToken"},
        "maxResults":{"shape":"MaxStreamKeyResults"}
      }
    },
    "ListStreamKeysResponse":{
      "type":"structure",
      "required":["streamKeys"],
      "members":{
        "streamKeys":{"shape":"StreamKeyList"},
        "nextToken":{"shape":"PaginationToken"}
      }
    },
    "ListStreamsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{"shape":"PaginationToken"},
        "maxResults":{"shape":"MaxStreamResults"}
      }
    },
    "ListStreamsResponse":{
      "type":"structure",
      "required":["streams"],
      "members":{
        "streams":{"shape":"StreamList"},
        "nextToken":{"shape":"PaginationToken"}
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "nextToken":{"shape":"String"},
        "maxResults":{"shape":"MaxTagResults"}
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "required":["tags"],
      "members":{
        "tags":{"shape":"Tags"},
        "nextToken":{"shape":"String"}
      }
    },
    "MaxChannelResults":{
      "type":"integer",
      "max":50,
      "min":1
    },
    "MaxStreamKeyResults":{
      "type":"integer",
      "max":50,
      "min":1
    },
    "MaxStreamResults":{
      "type":"integer",
      "max":50,
      "min":1
    },
    "MaxTagResults":{
      "type":"integer",
      "max":50,
      "min":1
    },
    "PaginationToken":{
      "type":"string",
      "max":500,
      "min":0
    },
    "PendingVerification":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":403},
      "exception":true
    },
    "PlaybackURL":{"type":"string"},
    "PutMetadataRequest":{
      "type":"structure",
      "required":[
        "channelArn",
        "metadata"
      ],
      "members":{
        "channelArn":{"shape":"ChannelArn"},
        "metadata":{"shape":"StreamMetadata"}
      }
    },
    "ResourceArn":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:[a-z-]/[a-zA-Z0-9-]+$"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":402},
      "exception":true
    },
    "StopStreamRequest":{
      "type":"structure",
      "required":["channelArn"],
      "members":{
        "channelArn":{"shape":"ChannelArn"}
      }
    },
    "StopStreamResponse":{
      "type":"structure",
      "members":{
      }
    },
    "Stream":{
      "type":"structure",
      "members":{
        "channelArn":{"shape":"ChannelArn"},
        "playbackUrl":{"shape":"PlaybackURL"},
        "startTime":{"shape":"StreamStartTime"},
        "state":{"shape":"StreamState"},
        "health":{"shape":"StreamHealth"},
        "viewerCount":{"shape":"StreamViewerCount"}
      }
    },
    "StreamHealth":{
      "type":"string",
      "enum":[
        "HEALTHY",
        "STARVING",
        "UNKNOWN"
      ]
    },
    "StreamKey":{
      "type":"structure",
      "members":{
        "arn":{"shape":"StreamKeyArn"},
        "value":{"shape":"StreamKeyValue"},
        "channelArn":{"shape":"ChannelArn"},
        "tags":{"shape":"Tags"}
      }
    },
    "StreamKeyArn":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:stream-key/[a-zA-Z0-9-]+$"
    },
    "StreamKeyArnList":{
      "type":"list",
      "member":{"shape":"StreamKeyArn"},
      "max":50,
      "min":1
    },
    "StreamKeyList":{
      "type":"list",
      "member":{"shape":"StreamKeySummary"}
    },
    "StreamKeySummary":{
      "type":"structure",
      "members":{
        "arn":{"shape":"StreamKeyArn"},
        "channelArn":{"shape":"ChannelArn"},
        "tags":{"shape":"Tags"}
      }
    },
    "StreamKeyValue":{"type":"string"},
    "StreamKeys":{
      "type":"list",
      "member":{"shape":"StreamKey"}
    },
    "StreamList":{
      "type":"list",
      "member":{"shape":"StreamSummary"}
    },
    "StreamMetadata":{"type":"string"},
    "StreamStartTime":{"type":"timestamp"},
    "StreamState":{
      "type":"string",
      "enum":[
        "LIVE",
        "OFFLINE"
      ]
    },
    "StreamSummary":{
      "type":"structure",
      "members":{
        "channelArn":{"shape":"ChannelArn"},
        "state":{"shape":"StreamState"},
        "health":{"shape":"StreamHealth"},
        "viewerCount":{"shape":"StreamViewerCount"},
        "startTime":{"shape":"StreamStartTime"}
      }
    },
    "StreamUnavailable":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":503},
      "exception":true
    },
    "StreamViewerCount":{"type":"long"},
    "String":{"type":"string"},
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "TagKeyList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":50,
      "min":0
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tags"
      ],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tags":{"shape":"Tags"}
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256
    },
    "Tags":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"},
      "max":50,
      "min":0
    },
    "ThrottlingException":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":429},
      "exception":true
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeyList",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateChannelRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"ChannelArn"},
        "name":{"shape":"ChannelName"},
        "latencyMode":{"shape":"ChannelLatencyMode"},
        "type":{"shape":"ChannelType"}
      }
    },
    "UpdateChannelResponse":{
      "type":"structure",
      "members":{
        "channel":{"shape":"Channel"}
      }
    },
    "ValidationException":{
      "type":"structure",
      "members":{
        "exceptionMessage":{"shape":"errorMessage"}
      },
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "errorCode":{"type":"string"},
    "errorMessage":{"type":"string"}
  }
}
