{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2019-11-07",
    "endpointPrefix":"a2i-runtime.sagemaker",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceFullName":"Amazon Augmented AI Runtime",
    "serviceId":"SageMaker A2I Runtime",
    "signatureVersion":"v4",
    "signingName":"sagemaker",
    "uid":"sagemaker-a2i-runtime-2019-11-07"
  },
  "operations":{
    "DeleteHumanLoop":{
      "name":"DeleteHumanLoop",
      "http":{
        "method":"DELETE",
        "requestUri":"/human-loops/{HumanLoopName}"
      },
      "input":{"shape":"DeleteHumanLoopRequest"},
      "output":{"shape":"DeleteHumanLoopResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the specified human loop for a flow definition.</p>"
    },
    "DescribeHumanLoop":{
      "name":"DescribeHumanLoop",
      "http":{
        "method":"GET",
        "requestUri":"/human-loops/{HumanLoopName}"
      },
      "input":{"shape":"DescribeHumanLoopRequest"},
      "output":{"shape":"DescribeHumanLoopResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Returns information about the specified human loop.</p>"
    },
    "ListHumanLoops":{
      "name":"ListHumanLoops",
      "http":{
        "method":"GET",
        "requestUri":"/human-loops"
      },
      "input":{"shape":"ListHumanLoopsRequest"},
      "output":{"shape":"ListHumanLoopsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Returns information about human loops, given the specified parameters. If a human loop was deleted, it will not be included.</p>"
    },
    "StartHumanLoop":{
      "name":"StartHumanLoop",
      "http":{
        "method":"POST",
        "requestUri":"/human-loops"
      },
      "input":{"shape":"StartHumanLoopRequest"},
      "output":{"shape":"StartHumanLoopResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"}
      ],
      "documentation":"<p>Starts a human loop, provided that at least one activation condition is met.</p>"
    },
    "StopHumanLoop":{
      "name":"StopHumanLoop",
      "http":{
        "method":"POST",
        "requestUri":"/human-loops/stop"
      },
      "input":{"shape":"StopHumanLoopRequest"},
      "output":{"shape":"StopHumanLoopResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Stops the specified human loop.</p>"
    }
  },
  "shapes":{
    "ConflictException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"FailureReason"}
      },
      "documentation":"<p>Your request has the same name as another active human loop but has different input data. You cannot start two human loops with the same name and different input data.</p>",
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "ContentClassifier":{
      "type":"string",
      "enum":[
        "FreeOfPersonallyIdentifiableInformation",
        "FreeOfAdultContent"
      ]
    },
    "ContentClassifiers":{
      "type":"list",
      "member":{"shape":"ContentClassifier"},
      "max":256
    },
    "DeleteHumanLoopRequest":{
      "type":"structure",
      "required":["HumanLoopName"],
      "members":{
        "HumanLoopName":{
          "shape":"HumanLoopName",
          "documentation":"<p>The name of the human loop you want to delete.</p>",
          "location":"uri",
          "locationName":"HumanLoopName"
        }
      }
    },
    "DeleteHumanLoopResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DescribeHumanLoopRequest":{
      "type":"structure",
      "required":["HumanLoopName"],
      "members":{
        "HumanLoopName":{
          "shape":"HumanLoopName",
          "documentation":"<p>The unique name of the human loop.</p>",
          "location":"uri",
          "locationName":"HumanLoopName"
        }
      }
    },
    "DescribeHumanLoopResponse":{
      "type":"structure",
      "required":[
        "CreationTime",
        "HumanLoopStatus",
        "HumanLoopName",
        "HumanLoopArn",
        "FlowDefinitionArn"
      ],
      "members":{
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The creation time when Amazon Augmented AI created the human loop.</p>"
        },
        "FailureReason":{
          "shape":"String",
          "documentation":"<p>The reason why a human loop has failed. The failure reason is returned when the human loop status is <code>Failed</code>.</p>"
        },
        "FailureCode":{
          "shape":"String",
          "documentation":"<p>A failure code denoting a specific type of failure.</p>"
        },
        "HumanLoopStatus":{
          "shape":"HumanLoopStatus",
          "documentation":"<p>The status of the human loop. Valid values:</p>"
        },
        "HumanLoopName":{
          "shape":"HumanLoopName",
          "documentation":"<p>The name of the human loop.</p>"
        },
        "HumanLoopArn":{
          "shape":"HumanLoopArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the human loop.</p>"
        },
        "FlowDefinitionArn":{
          "shape":"FlowDefinitionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the flow definition.</p>"
        },
        "HumanLoopOutput":{
          "shape":"HumanLoopOutput",
          "documentation":"<p>An object containing information about the output of the human loop.</p>"
        }
      }
    },
    "FailureReason":{
      "type":"string",
      "max":1024
    },
    "FlowDefinitionArn":{
      "type":"string",
      "max":1024,
      "pattern":"arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:flow-definition/.*"
    },
    "HumanLoopArn":{
      "type":"string",
      "max":1024,
      "pattern":"arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:human-loop/.*"
    },
    "HumanLoopDataAttributes":{
      "type":"structure",
      "required":["ContentClassifiers"],
      "members":{
        "ContentClassifiers":{
          "shape":"ContentClassifiers",
          "documentation":"<p>Declares that your content is free of personally identifiable information or adult content.</p> <p>Amazon SageMaker can restrict the Amazon Mechanical Turk workers who can view your task based on this information.</p>"
        }
      },
      "documentation":"<p>Attributes of the data specified by the customer. Use these to describe the data to be labeled.</p>"
    },
    "HumanLoopInput":{
      "type":"structure",
      "required":["InputContent"],
      "members":{
        "InputContent":{
          "shape":"InputContent",
          "documentation":"<p>Serialized input from the human loop. The input must be a string representation of a file in JSON format.</p>"
        }
      },
      "documentation":"<p>An object containing the human loop input in JSON format.</p>"
    },
    "HumanLoopName":{
      "type":"string",
      "max":63,
      "min":1,
      "pattern":"^[a-z0-9](-*[a-z0-9])*$"
    },
    "HumanLoopOutput":{
      "type":"structure",
      "required":["OutputS3Uri"],
      "members":{
        "OutputS3Uri":{
          "shape":"String",
          "documentation":"<p>The location of the Amazon S3 object where Amazon Augmented AI stores your human loop output.</p>"
        }
      },
      "documentation":"<p>Information about where the human output will be stored.</p>"
    },
    "HumanLoopStatus":{
      "type":"string",
      "enum":[
        "InProgress",
        "Failed",
        "Completed",
        "Stopped",
        "Stopping"
      ]
    },
    "HumanLoopSummaries":{
      "type":"list",
      "member":{"shape":"HumanLoopSummary"}
    },
    "HumanLoopSummary":{
      "type":"structure",
      "members":{
        "HumanLoopName":{
          "shape":"HumanLoopName",
          "documentation":"<p>The name of the human loop.</p>"
        },
        "HumanLoopStatus":{
          "shape":"HumanLoopStatus",
          "documentation":"<p>The status of the human loop. Valid values:</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>When Amazon Augmented AI created the human loop.</p>"
        },
        "FailureReason":{
          "shape":"FailureReason",
          "documentation":"<p>The reason why the human loop failed. A failure reason is returned only when the status of the human loop is <code>Failed</code>.</p>"
        },
        "FlowDefinitionArn":{
          "shape":"FlowDefinitionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the flow definition.</p>"
        }
      },
      "documentation":"<p>Summary information about the human loop.</p>"
    },
    "InputContent":{
      "type":"string",
      "max":4194304
    },
    "InternalServerException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"FailureReason"}
      },
      "documentation":"<p>Your request could not be processed.</p>",
      "error":{"httpStatusCode":500},
      "exception":true
    },
    "ListHumanLoopsRequest":{
      "type":"structure",
      "required":["FlowDefinitionArn"],
      "members":{
        "CreationTimeAfter":{
          "shape":"Timestamp",
          "documentation":"<p>(Optional) The timestamp of the date when you want the human loops to begin in ISO 8601 format. For example, <code>2020-02-24</code>.</p>",
          "location":"querystring",
          "locationName":"CreationTimeAfter"
        },
        "CreationTimeBefore":{
          "shape":"Timestamp",
          "documentation":"<p>(Optional) The timestamp of the date before which you want the human loops to begin in ISO 8601 format. For example, <code>2020-02-24</code>.</p>",
          "location":"querystring",
          "locationName":"CreationTimeBefore"
        },
        "FlowDefinitionArn":{
          "shape":"FlowDefinitionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of a flow definition.</p>",
          "location":"querystring",
          "locationName":"FlowDefinitionArn"
        },
        "SortOrder":{
          "shape":"SortOrder",
          "documentation":"<p>An optional value that specifies whether you want the results sorted in <code>Ascending</code> or <code>Descending</code> order.</p>",
          "location":"querystring",
          "locationName":"SortOrder"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>A token to resume pagination.</p>",
          "location":"querystring",
          "locationName":"NextToken"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The total number of items to return. If the total number of available items is more than the value specified in <code>MaxResults</code>, then a <code>NextToken</code> will be provided in the output that you can use to resume pagination.</p>",
          "box":true,
          "location":"querystring",
          "locationName":"MaxResults"
        }
      }
    },
    "ListHumanLoopsResponse":{
      "type":"structure",
      "required":["HumanLoopSummaries"],
      "members":{
        "HumanLoopSummaries":{
          "shape":"HumanLoopSummaries",
          "documentation":"<p>An array of objects containing information about the human loops.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>A token to resume pagination.</p>"
        }
      }
    },
    "MaxResults":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "NextToken":{
      "type":"string",
      "max":8192,
      "pattern":".*"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"FailureReason"}
      },
      "documentation":"<p>We were unable to find the requested resource.</p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"FailureReason"}
      },
      "documentation":"<p>You have exceeded your service quota. To perform the requested action, remove some of the relevant resources, or request a service quota increase.</p>",
      "error":{"httpStatusCode":402},
      "exception":true
    },
    "SortOrder":{
      "type":"string",
      "enum":[
        "Ascending",
        "Descending"
      ]
    },
    "StartHumanLoopRequest":{
      "type":"structure",
      "required":[
        "HumanLoopName",
        "FlowDefinitionArn",
        "HumanLoopInput"
      ],
      "members":{
        "HumanLoopName":{
          "shape":"HumanLoopName",
          "documentation":"<p>The name of the human loop.</p>"
        },
        "FlowDefinitionArn":{
          "shape":"FlowDefinitionArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the flow definition.</p>"
        },
        "HumanLoopInput":{
          "shape":"HumanLoopInput",
          "documentation":"<p>An object containing information about the human loop.</p>"
        },
        "DataAttributes":{
          "shape":"HumanLoopDataAttributes",
          "documentation":"<p>Attributes of the data specified by the customer.</p>"
        }
      }
    },
    "StartHumanLoopResponse":{
      "type":"structure",
      "members":{
        "HumanLoopArn":{
          "shape":"HumanLoopArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the human loop.</p>"
        }
      }
    },
    "StopHumanLoopRequest":{
      "type":"structure",
      "required":["HumanLoopName"],
      "members":{
        "HumanLoopName":{
          "shape":"HumanLoopName",
          "documentation":"<p>The name of the human loop you want to stop.</p>"
        }
      }
    },
    "StopHumanLoopResponse":{
      "type":"structure",
      "members":{
      }
    },
    "String":{"type":"string"},
    "ThrottlingException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"FailureReason"}
      },
      "documentation":"<p>Your request has exceeded the allowed amount of requests.</p>",
      "error":{"httpStatusCode":429},
      "exception":true
    },
    "Timestamp":{"type":"timestamp"},
    "ValidationException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"FailureReason"}
      },
      "documentation":"<p>Your request was not valid. Check the syntax and try again.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    }
  },
  "documentation":"<p>Amazon Augmented AI (Augmented AI) (Preview) is a service that adds human judgment to any machine learning application. Human reviewers can take over when an AI application can't evaluate data with a high degree of confidence.</p> <p>From fraudulent bank transaction identification to document processing to image analysis, machine learning models can be trained to make decisions as well as or better than a human. Nevertheless, some decisions require contextual interpretation, such as when you need to decide whether an image is appropriate for a given audience. Content moderation guidelines are nuanced and highly dependent on context, and they vary between countries. When trying to apply AI in these situations, you can be forced to choose between \"ML only\" systems with unacceptably high error rates or \"human only\" systems that are expensive and difficult to scale, and that slow down decision making.</p> <p>This API reference includes information about API actions and data types you can use to interact with Augmented AI programmatically. </p> <p>You can create a flow definition against the Augmented AI API. Provide the Amazon Resource Name (ARN) of a flow definition to integrate AI service APIs, such as <code>Textract.AnalyzeDocument</code> and <code>Rekognition.DetectModerationLabels</code>. These AI services, in turn, invoke the <a>StartHumanLoop</a> API, which evaluates conditions under which humans will be invoked. If humans are required, Augmented AI creates a human loop. Results of human work are available asynchronously in Amazon Simple Storage Service (Amazon S3). You can use Amazon CloudWatch Events to detect human work results.</p> <p>You can find additional Augmented AI API documentation in the following reference guides: <a href=\"https://docs.aws.amazon.com/rekognition/latest/dg/API_Reference.html\">Amazon Rekognition</a>, <a href=\"https://docs.aws.amazon.com/sagemaker/latest/dg/API_Reference.html\">Amazon SageMaker</a>, and <a href=\"https://docs.aws.amazon.com/textract/latest/dg/API_Reference.html\">Amazon Textract</a>.</p>"
}
