{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2020-11-20",
    "endpointPrefix":"lookoutvision",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceFullName":"Amazon Lookout for Vision",
    "serviceId":"LookoutVision",
    "signatureVersion":"v4",
    "signingName":"lookoutvision",
    "uid":"lookoutvision-2020-11-20"
  },
  "operations":{
    "CreateDataset":{
      "name":"CreateDataset",
      "http":{
        "method":"POST",
        "requestUri":"/2020-11-20/projects/{projectName}/datasets",
        "responseCode":202
      },
      "input":{"shape":"CreateDatasetRequest"},
      "output":{"shape":"CreateDatasetResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates a new dataset in an Amazon Lookout for Vision project. <code>CreateDataset</code> can create a training or a test dataset from a valid dataset source (<code>DatasetSource</code>).</p> <p>If you want a single dataset project, specify <code>train</code> for the value of <code>DatasetType</code>.</p> <p>To have a project with separate training and test datasets, call <code>CreateDataset</code> twice. On the first call, specify <code>train</code> for the value of <code>DatasetType</code>. On the second call, specify <code>test</code> for the value of <code>DatasetType</code>. </p> <p>This operation requires permissions to perform the <code>lookoutvision:CreateDataset</code> operation.</p>"
    },
    "CreateModel":{
      "name":"CreateModel",
      "http":{
        "method":"POST",
        "requestUri":"/2020-11-20/projects/{projectName}/models",
        "responseCode":202
      },
      "input":{"shape":"CreateModelRequest"},
      "output":{"shape":"CreateModelResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates a new version of a model within an an Amazon Lookout for Vision project. <code>CreateModel</code> is an asynchronous operation in which Amazon Lookout for Vision trains, tests, and evaluates a new version of a model. </p> <p>To get the current status, check the <code>Status</code> field returned in the response from <a>DescribeModel</a>.</p> <p>If the project has a single dataset, Amazon Lookout for Vision internally splits the dataset to create a training and a test dataset. If the project has a training and a test dataset, Lookout for Vision uses the respective datasets to train and test the model. </p> <p>After training completes, the evaluation metrics are stored at the location specified in <code>OutputConfig</code>. </p> <p>This operation requires permissions to perform the <code>lookoutvision:CreateModel</code> operation. If you want to tag your model, you also require permission to the <code>lookoutvision:TagResource</code> operation.</p>"
    },
    "CreateProject":{
      "name":"CreateProject",
      "http":{
        "method":"POST",
        "requestUri":"/2020-11-20/projects"
      },
      "input":{"shape":"CreateProjectRequest"},
      "output":{"shape":"CreateProjectResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates an empty Amazon Lookout for Vision project. After you create the project, add a dataset by calling <a>CreateDataset</a>.</p> <p>This operation requires permissions to perform the <code>lookoutvision:CreateProject</code> operation.</p>"
    },
    "DeleteDataset":{
      "name":"DeleteDataset",
      "http":{
        "method":"DELETE",
        "requestUri":"/2020-11-20/projects/{projectName}/datasets/{datasetType}",
        "responseCode":202
      },
      "input":{"shape":"DeleteDatasetRequest"},
      "output":{"shape":"DeleteDatasetResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes an existing Amazon Lookout for Vision <code>dataset</code>. </p> <p>If your the project has a single dataset, you must create a new dataset before you can create a model.</p> <p>If you project has a training dataset and a test dataset consider the following. </p> <ul> <li> <p>If you delete the test dataset, your project reverts to a single dataset project. If you then train the model, Amazon Lookout for Vision internally splits the remaining dataset into a training and test dataset.</p> </li> <li> <p>If you delete the training dataset, you must create a training dataset before you can create a model.</p> </li> </ul> <p>This operation requires permissions to perform the <code>lookoutvision:DeleteDataset</code> operation.</p>"
    },
    "DeleteModel":{
      "name":"DeleteModel",
      "http":{
        "method":"DELETE",
        "requestUri":"/2020-11-20/projects/{projectName}/models/{modelVersion}",
        "responseCode":202
      },
      "input":{"shape":"DeleteModelRequest"},
      "output":{"shape":"DeleteModelResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes an Amazon Lookout for Vision model. You can't delete a running model. To stop a running model, use the <a>StopModel</a> operation.</p> <p>It might take a few seconds to delete a model. To determine if a model has been deleted, call <a>ListProjects</a> and check if the version of the model (<code>ModelVersion</code>) is in the <code>Models</code> array. </p> <p>This operation requires permissions to perform the <code>lookoutvision:DeleteModel</code> operation.</p>"
    },
    "DeleteProject":{
      "name":"DeleteProject",
      "http":{
        "method":"DELETE",
        "requestUri":"/2020-11-20/projects/{projectName}"
      },
      "input":{"shape":"DeleteProjectRequest"},
      "output":{"shape":"DeleteProjectResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes an Amazon Lookout for Vision project.</p> <p>To delete a project, you must first delete each version of the model associated with the project. To delete a model use the <a>DeleteModel</a> operation.</p> <p>You also have to delete the dataset(s) associated with the model. For more information, see <a>DeleteDataset</a>. The images referenced by the training and test datasets aren't deleted. </p> <p>This operation requires permissions to perform the <code>lookoutvision:DeleteProject</code> operation.</p>"
    },
    "DescribeDataset":{
      "name":"DescribeDataset",
      "http":{
        "method":"GET",
        "requestUri":"/2020-11-20/projects/{projectName}/datasets/{datasetType}"
      },
      "input":{"shape":"DescribeDatasetRequest"},
      "output":{"shape":"DescribeDatasetResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Describe an Amazon Lookout for Vision dataset.</p> <p>This operation requires permissions to perform the <code>lookoutvision:DescribeDataset</code> operation.</p>"
    },
    "DescribeModel":{
      "name":"DescribeModel",
      "http":{
        "method":"GET",
        "requestUri":"/2020-11-20/projects/{projectName}/models/{modelVersion}"
      },
      "input":{"shape":"DescribeModelRequest"},
      "output":{"shape":"DescribeModelResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Describes a version of an Amazon Lookout for Vision model.</p> <p>This operation requires permissions to perform the <code>lookoutvision:DescribeModel</code> operation.</p>"
    },
    "DescribeProject":{
      "name":"DescribeProject",
      "http":{
        "method":"GET",
        "requestUri":"/2020-11-20/projects/{projectName}"
      },
      "input":{"shape":"DescribeProjectRequest"},
      "output":{"shape":"DescribeProjectResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Describes an Amazon Lookout for Vision project.</p> <p>This operation requires permissions to perform the <code>lookoutvision:DescribeProject</code> operation.</p>"
    },
    "DetectAnomalies":{
      "name":"DetectAnomalies",
      "http":{
        "method":"POST",
        "requestUri":"/2020-11-20/projects/{projectName}/models/{modelVersion}/detect"
      },
      "input":{"shape":"DetectAnomaliesRequest"},
      "output":{"shape":"DetectAnomaliesResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Detects anomalies in an image that you supply. </p> <p>The response from <code>DetectAnomalies</code> includes a boolean prediction that the image contains one or more anomalies and a confidence value for the prediction.</p> <note> <p>Before calling <code>DetectAnomalies</code>, you must first start your model with the <a>StartModel</a> operation. You are charged for the amount of time, in minutes, that a model runs and for the number of anomaly detection units that your model uses. If you are not using a model, use the <a>StopModel</a> operation to stop your model. </p> </note> <p>This operation requires permissions to perform the <code>lookoutvision:DetectAnomalies</code> operation.</p>"
    },
    "ListDatasetEntries":{
      "name":"ListDatasetEntries",
      "http":{
        "method":"GET",
        "requestUri":"/2020-11-20/projects/{projectName}/datasets/{datasetType}/entries"
      },
      "input":{"shape":"ListDatasetEntriesRequest"},
      "output":{"shape":"ListDatasetEntriesResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists the JSON Lines within a dataset. An Amazon Lookout for Vision JSON Line contains the anomaly information for a single image, including the image location and the assigned label.</p> <p>This operation requires permissions to perform the <code>lookoutvision:ListDatasetEntries</code> operation.</p>"
    },
    "ListModels":{
      "name":"ListModels",
      "http":{
        "method":"GET",
        "requestUri":"/2020-11-20/projects/{projectName}/models"
      },
      "input":{"shape":"ListModelsRequest"},
      "output":{"shape":"ListModelsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists the versions of a model in an Amazon Lookout for Vision project.</p> <p>This operation requires permissions to perform the <code>lookoutvision:ListModels</code> operation.</p>"
    },
    "ListProjects":{
      "name":"ListProjects",
      "http":{
        "method":"GET",
        "requestUri":"/2020-11-20/projects"
      },
      "input":{"shape":"ListProjectsRequest"},
      "output":{"shape":"ListProjectsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists the Amazon Lookout for Vision projects in your AWS account.</p> <p>This operation requires permissions to perform the <code>lookoutvision:ListProjects</code> operation.</p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/2020-11-20/tags/{resourceArn}"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Returns a list of tags attached to the specified Amazon Lookout for Vision model.</p> <p>This operation requires permissions to perform the <code>lookoutvision:ListTagsForResource</code> operation.</p>"
    },
    "StartModel":{
      "name":"StartModel",
      "http":{
        "method":"POST",
        "requestUri":"/2020-11-20/projects/{projectName}/models/{modelVersion}/start",
        "responseCode":202
      },
      "input":{"shape":"StartModelRequest"},
      "output":{"shape":"StartModelResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Starts the running of the version of an Amazon Lookout for Vision model. Starting a model takes a while to complete. To check the current state of the model, use <a>DescribeModel</a>.</p> <p>A model is ready to use when its status is <code>HOSTED</code>.</p> <p>Once the model is running, you can detect custom labels in new images by calling <a>DetectAnomalies</a>.</p> <note> <p>You are charged for the amount of time that the model is running. To stop a running model, call <a>StopModel</a>.</p> </note> <p>This operation requires permissions to perform the <code>lookoutvision:StartModel</code> operation.</p>"
    },
    "StopModel":{
      "name":"StopModel",
      "http":{
        "method":"POST",
        "requestUri":"/2020-11-20/projects/{projectName}/models/{modelVersion}/stop",
        "responseCode":202
      },
      "input":{"shape":"StopModelRequest"},
      "output":{"shape":"StopModelResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Stops the hosting of a running model. The operation might take a while to complete. To check the current status, call <a>DescribeModel</a>. </p> <p>After the model hosting stops, the <code>Status</code> of the model is <code>TRAINED</code>.</p> <p>This operation requires permissions to perform the <code>lookoutvision:StopModel</code> operation.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/2020-11-20/tags/{resourceArn}"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Adds one or more key-value tags to an Amazon Lookout for Vision model. For more information, see <i>Tagging a model</i> in the <i>Amazon Lookout for Vision Developer Guide</i>. </p> <p>This operation requires permissions to perform the <code>lookoutvision:TagResource</code> operation.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/2020-11-20/tags/{resourceArn}"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Removes one or more tags from an Amazon Lookout for Vision model. For more information, see <i>Tagging a model</i> in the <i>Amazon Lookout for Vision Developer Guide</i>. </p> <p>This operation requires permissions to perform the <code>lookoutvision:UntagResource</code> operation.</p>"
    },
    "UpdateDatasetEntries":{
      "name":"UpdateDatasetEntries",
      "http":{
        "method":"PATCH",
        "requestUri":"/2020-11-20/projects/{projectName}/datasets/{datasetType}/entries",
        "responseCode":202
      },
      "input":{"shape":"UpdateDatasetEntriesRequest"},
      "output":{"shape":"UpdateDatasetEntriesResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Adds one or more JSON Line entries to a dataset. A JSON Line includes information about an image used for training or testing an Amazon Lookout for Vision model. The following is an example JSON Line.</p> <p>Updating a dataset might take a while to complete. To check the current status, call <a>DescribeDataset</a> and check the <code>Status</code> field in the response.</p> <p>This operation requires permissions to perform the <code>lookoutvision:UpdateDatasetEntries</code> operation.</p>"
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{"shape":"ExceptionString"}
      },
      "documentation":"<p>You are not authorized to perform the action.</p>",
      "error":{"httpStatusCode":403},
      "exception":true
    },
    "AnomalyClassFilter":{
      "type":"string",
      "max":10,
      "min":1,
      "pattern":"(normal|anomaly)"
    },
    "Boolean":{"type":"boolean"},
    "ClientToken":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[a-zA-Z0-9-]+$"
    },
    "ConflictException":{
      "type":"structure",
      "required":[
        "Message",
        "ResourceId",
        "ResourceType"
      ],
      "members":{
        "Message":{"shape":"ExceptionString"},
        "ResourceId":{
          "shape":"ExceptionString",
          "documentation":"<p>The ID of the resource.</p>"
        },
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the resource.</p>"
        }
      },
      "documentation":"<p>The update or deletion of a resource caused an inconsistent state.</p>",
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "ContentType":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":".*"
    },
    "CreateDatasetRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "DatasetType"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project in which you want to create a dataset.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "DatasetType":{
          "shape":"DatasetType",
          "documentation":"<p>The type of the dataset. Specify <code>train</code> for a training dataset. Specify <code>test</code> for a test dataset.</p>"
        },
        "DatasetSource":{
          "shape":"DatasetSource",
          "documentation":"<p>The location of the manifest file that Amazon Lookout for Vision uses to create the dataset.</p> <p>If you don't specify <code>DatasetSource</code>, an empty dataset is created and the operation synchronously returns. Later, you can add JSON Lines by calling <a>UpdateDatasetEntries</a>. </p> <p>If you specify a value for <code>DataSource</code>, the manifest at the S3 location is validated and used to create the dataset. The call to <code>CreateDataset</code> is asynchronous and might take a while to complete. To find out the current status, Check the value of <code>Status</code> returned in a call to <a>DescribeDataset</a>.</p>"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>CreateDataset</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>CreateDataset</code>. In this case, safely retry your call to <code>CreateDataset</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>CreateDataset</code>. An idempotency token is active for 8 hours. </p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "CreateDatasetResponse":{
      "type":"structure",
      "members":{
        "DatasetMetadata":{
          "shape":"DatasetMetadata",
          "documentation":"<p>Information about the dataset.</p>"
        }
      }
    },
    "CreateModelRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "OutputConfig"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project in which you want to create a model version.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "Description":{
          "shape":"ModelDescriptionMessage",
          "documentation":"<p>A description for the version of the model.</p>"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>CreateModel</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>CreateModel</code>. In this case, safely retry your call to <code>CreateModel</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>CreateModel</code>. An idempotency token is active for 8 hours.</p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        },
        "OutputConfig":{
          "shape":"OutputConfig",
          "documentation":"<p>The location where Amazon Lookout for Vision saves the training results.</p>"
        },
        "KmsKeyId":{
          "shape":"KmsKeyId",
          "documentation":"<p>The identifier for your AWS Key Management Service (AWS KMS) customer master key (CMK). The key is used to encrypt training and test images copied into the service for model training. Your source images are unaffected. If this parameter is not specified, the copied images are encrypted by a key that AWS owns and manages.</p>"
        },
        "Tags":{
          "shape":"TagList",
          "documentation":"<p>A set of tags (key-value pairs) that you want to attach to the model.</p>"
        }
      }
    },
    "CreateModelResponse":{
      "type":"structure",
      "members":{
        "ModelMetadata":{
          "shape":"ModelMetadata",
          "documentation":"<p>The response from a call to <code>CreateModel</code>.</p>"
        }
      }
    },
    "CreateProjectRequest":{
      "type":"structure",
      "required":["ProjectName"],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name for the project.</p>"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>CreateProject</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>CreateProject</code>. In this case, safely retry your call to <code>CreateProject</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>CreateProject</code>. An idempotency token is active for 8 hours.</p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "CreateProjectResponse":{
      "type":"structure",
      "members":{
        "ProjectMetadata":{
          "shape":"ProjectMetadata",
          "documentation":"<p>Information about the project.</p>"
        }
      }
    },
    "DatasetChanges":{
      "type":"blob",
      "max":10485760,
      "min":1
    },
    "DatasetDescription":{
      "type":"structure",
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the dataset.</p>"
        },
        "DatasetType":{
          "shape":"DatasetType",
          "documentation":"<p>The type of the dataset. The value <code>train</code> represents a training dataset or single dataset project. The value <code>test</code> represents a test dataset.</p>"
        },
        "CreationTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The Unix timestamp for the time and date that the dataset was created.</p>"
        },
        "LastUpdatedTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The Unix timestamp for the date and time that the dataset was last updated.</p>"
        },
        "Status":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status of the dataset.</p>"
        },
        "StatusMessage":{
          "shape":"DatasetStatusMessage",
          "documentation":"<p>The status message for the dataset. </p>"
        },
        "ImageStats":{
          "shape":"DatasetImageStats",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p>The description for a dataset. For more information, see <a>DescribeDataset</a>.</p>"
    },
    "DatasetEntry":{
      "type":"string",
      "max":8192,
      "min":2,
      "pattern":"^\\{.*\\}$"
    },
    "DatasetEntryList":{
      "type":"list",
      "member":{"shape":"DatasetEntry"}
    },
    "DatasetGroundTruthManifest":{
      "type":"structure",
      "members":{
        "S3Object":{
          "shape":"InputS3Object",
          "documentation":"<p>The S3 bucket location for the manifest file.</p>"
        }
      },
      "documentation":"<p>Location information about a manifest file. You can use a manifest file to create a dataset.</p>"
    },
    "DatasetImageStats":{
      "type":"structure",
      "members":{
        "Total":{
          "shape":"Integer",
          "documentation":"<p>The total number of images in the dataset.</p>"
        },
        "Labeled":{
          "shape":"Integer",
          "documentation":"<p>The total number of labeled images.</p>"
        },
        "Normal":{
          "shape":"Integer",
          "documentation":"<p>The total number of images labeled as normal.</p>"
        },
        "Anomaly":{
          "shape":"Integer",
          "documentation":"<p>the total number of images labeled as an anomaly.</p>"
        }
      },
      "documentation":"<p>Statistics about the images in a dataset.</p>"
    },
    "DatasetMetadata":{
      "type":"structure",
      "members":{
        "DatasetType":{
          "shape":"DatasetType",
          "documentation":"<p>The type of the dataset.</p>"
        },
        "CreationTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The Unix timestamp for the date and time that the dataset was created. </p>"
        },
        "Status":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status for the dataset.</p>"
        },
        "StatusMessage":{
          "shape":"DatasetStatusMessage",
          "documentation":"<p>The status message for the dataset.</p>"
        }
      },
      "documentation":"<p>Sumary information for an Amazon Lookout for Vision dataset.</p>"
    },
    "DatasetMetadataList":{
      "type":"list",
      "member":{"shape":"DatasetMetadata"}
    },
    "DatasetSource":{
      "type":"structure",
      "members":{
        "GroundTruthManifest":{
          "shape":"DatasetGroundTruthManifest",
          "documentation":"<p>Location information for the manifest file.</p>"
        }
      },
      "documentation":"<p>Information about the location of a manifest file that Amazon Lookout for Vision uses to to create a dataset.</p>"
    },
    "DatasetStatus":{
      "type":"string",
      "enum":[
        "CREATE_IN_PROGRESS",
        "CREATE_COMPLETE",
        "CREATE_FAILED",
        "UPDATE_IN_PROGRESS",
        "UPDATE_COMPLETE",
        "UPDATE_FAILED_ROLLBACK_IN_PROGRESS",
        "UPDATE_FAILED_ROLLBACK_COMPLETE",
        "DELETE_IN_PROGRESS",
        "DELETE_COMPLETE",
        "DELETE_FAILED"
      ]
    },
    "DatasetStatusMessage":{"type":"string"},
    "DatasetType":{
      "type":"string",
      "max":10,
      "min":1,
      "pattern":"train|test"
    },
    "DateTime":{"type":"timestamp"},
    "DeleteDatasetRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "DatasetType"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the dataset that you want to delete.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "DatasetType":{
          "shape":"DatasetType",
          "documentation":"<p>The type of the dataset to delete. Specify <code>train</code> to delete the training dataset. Specify <code>test</code> to delete the test dataset. To delete the dataset in a single dataset project, specify <code>train</code>.</p>",
          "location":"uri",
          "locationName":"datasetType"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>DeleteDataset</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>DeleteDataset</code>. In this case, safely retry your call to <code>DeleteDataset</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>DeleteDataset</code>. An idempotency token is active for 8 hours.</p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "DeleteDatasetResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteModelRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "ModelVersion"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the model that you want to delete.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The version of the model that you want to delete.</p>",
          "location":"uri",
          "locationName":"modelVersion"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>DeleteModel</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>DeleteModel</code>. In this case, safely retry your call to <code>DeleteModel</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>DeleteModel</code>. An idempotency token is active for 8 hours.</p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "DeleteModelResponse":{
      "type":"structure",
      "members":{
        "ModelArn":{
          "shape":"ModelArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the model that was deleted.</p>"
        }
      }
    },
    "DeleteProjectRequest":{
      "type":"structure",
      "required":["ProjectName"],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project to delete.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>DeleteProject</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>DeleteProject</code>. In this case, safely retry your call to <code>DeleteProject</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>DeleteProject</code>. An idempotency token is active for 8 hours.</p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "DeleteProjectResponse":{
      "type":"structure",
      "members":{
        "ProjectArn":{
          "shape":"ProjectArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the project that was deleted.</p>"
        }
      }
    },
    "DescribeDatasetRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "DatasetType"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the dataset that you want to describe.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "DatasetType":{
          "shape":"DatasetType",
          "documentation":"<p>The type of the dataset to describe. Specify <code>train</code> to describe the training dataset. Specify <code>test</code> to describe the test dataset. If you have a single dataset project, specify <code>train</code> </p>",
          "location":"uri",
          "locationName":"datasetType"
        }
      }
    },
    "DescribeDatasetResponse":{
      "type":"structure",
      "members":{
        "DatasetDescription":{
          "shape":"DatasetDescription",
          "documentation":"<p>The description of the requested dataset. </p>"
        }
      }
    },
    "DescribeModelRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "ModelVersion"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The project that contains the version of a model that you want to describe.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The version of the model that you want to describe.</p>",
          "location":"uri",
          "locationName":"modelVersion"
        }
      }
    },
    "DescribeModelResponse":{
      "type":"structure",
      "members":{
        "ModelDescription":{
          "shape":"ModelDescription",
          "documentation":"<p>Contains the description of the model.</p>"
        }
      }
    },
    "DescribeProjectRequest":{
      "type":"structure",
      "required":["ProjectName"],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that you want to describe.</p>",
          "location":"uri",
          "locationName":"projectName"
        }
      }
    },
    "DescribeProjectResponse":{
      "type":"structure",
      "members":{
        "ProjectDescription":{
          "shape":"ProjectDescription",
          "documentation":"<p>The description of the project.</p>"
        }
      }
    },
    "DetectAnomaliesRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "ModelVersion",
        "Body",
        "ContentType"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the model version that you want to use.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The version of the model that you want to use.</p>",
          "location":"uri",
          "locationName":"modelVersion"
        },
        "Body":{
          "shape":"Stream",
          "documentation":"<p>The unencrypted image bytes that you want to analyze. </p>"
        },
        "ContentType":{
          "shape":"ContentType",
          "documentation":"<p>The type of the image passed in <code>Body</code>. Valid values are <code>image/png</code> (PNG format images) and <code>image/jpeg</code> (JPG format images). </p>",
          "location":"header",
          "locationName":"Content-Type"
        }
      },
      "payload":"Body"
    },
    "DetectAnomaliesResponse":{
      "type":"structure",
      "members":{
        "DetectAnomalyResult":{
          "shape":"DetectAnomalyResult",
          "documentation":"<p>The results of the <code>DetectAnomalies</code> operation.</p>"
        }
      }
    },
    "DetectAnomalyResult":{
      "type":"structure",
      "members":{
        "Source":{
          "shape":"ImageSource",
          "documentation":"<p>The source of the image that was analyzed. <code>direct</code> means that the images was supplied from the local computer. No other values are supported.</p>"
        },
        "IsAnomalous":{
          "shape":"Boolean",
          "documentation":"<p>True if the image contains an anomaly, otherwise false.</p>"
        },
        "Confidence":{
          "shape":"Float",
          "documentation":"<p>The confidence that Amazon Lookout for Vision has in the accuracy of the prediction.</p>"
        }
      },
      "documentation":"<p>The prediction results from a call to <a>DetectAnomalies</a>.</p>"
    },
    "ExceptionString":{"type":"string"},
    "Float":{"type":"float"},
    "ImageSource":{
      "type":"structure",
      "members":{
        "Type":{
          "shape":"ImageSourceType",
          "documentation":"<p>The type of the image.</p>"
        }
      },
      "documentation":"<p>The source for an image.</p>"
    },
    "ImageSourceType":{
      "type":"string",
      "pattern":"direct"
    },
    "InferenceUnits":{
      "type":"integer",
      "min":1
    },
    "InputS3Object":{
      "type":"structure",
      "required":[
        "Bucket",
        "Key"
      ],
      "members":{
        "Bucket":{
          "shape":"S3BucketName",
          "documentation":"<p>The Amazon S3 bucket that contains the manifest.</p>"
        },
        "Key":{
          "shape":"S3ObjectKey",
          "documentation":"<p>The name and location of the manifest file withiin the bucket.</p>"
        },
        "VersionId":{
          "shape":"S3ObjectVersion",
          "documentation":"<p>The version ID of the bucket.</p>"
        }
      },
      "documentation":"<p>Amazon S3 Location information for an input manifest file. </p>"
    },
    "Integer":{"type":"integer"},
    "InternalServerException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{"shape":"ExceptionString"},
        "RetryAfterSeconds":{
          "shape":"RetryAfterSeconds",
          "documentation":"<p>The period of time, in seconds, before the operation can be retried.</p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p>Amazon Lookout for Vision experienced a service issue. Try your call again.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "IsLabeled":{"type":"boolean"},
    "KmsKeyId":{
      "type":"string",
      "max":2048,
      "min":1,
      "pattern":"^[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,2048}$"
    },
    "ListDatasetEntriesRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "DatasetType"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the dataset that you want to list.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "DatasetType":{
          "shape":"DatasetType",
          "documentation":"<p>The type of the dataset that you want to list. Specify <code>train</code> to list the training dataset. Specify <code>test</code> to list the test dataset. If you have a single dataset project, specify <code>train</code>.</p>",
          "location":"uri",
          "locationName":"datasetType"
        },
        "Labeled":{
          "shape":"IsLabeled",
          "documentation":"<p>Specify <code>true</code> to include labeled entries, otherwise specify <code>false</code>. If you don't specify a value, Lookout for Vision returns all entries.</p>",
          "location":"querystring",
          "locationName":"labeled"
        },
        "AnomalyClass":{
          "shape":"AnomalyClassFilter",
          "documentation":"<p>Specify <code>normal</code> to include only normal images. Specify <code>anomaly</code> to only include anomalous entries. If you don't specify a value, Amazon Lookout for Vision returns normal and anomalous images.</p>",
          "location":"querystring",
          "locationName":"anomalyClass"
        },
        "BeforeCreationDate":{
          "shape":"DateTime",
          "documentation":"<p>Only includes entries before the specified date in the response. For example, <code>2020-06-23T00:00:00</code>.</p>",
          "location":"querystring",
          "locationName":"createdBefore"
        },
        "AfterCreationDate":{
          "shape":"DateTime",
          "documentation":"<p>Only includes entries after the specified date in the response. For example, <code>2020-06-23T00:00:00</code>.</p>",
          "location":"querystring",
          "locationName":"createdAfter"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>If the previous response was incomplete (because there is more data to retrieve), Amazon Lookout for Vision returns a pagination token in the response. You can use this pagination token to retrieve the next set of dataset entries.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return per paginated call. The largest value you can specify is 100. If you specify a value greater than 100, a ValidationException error occurs. The default value is 100.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "SourceRefContains":{
          "shape":"QueryString",
          "documentation":"<p>Perform a \"contains\" search on the values of the <code>source-ref</code> key within the dataset. For example a value of \"IMG_17\" returns all JSON Lines where the <code>source-ref</code> key value matches <i>*IMG_17*</i>.</p>",
          "location":"querystring",
          "locationName":"sourceRefContains"
        }
      }
    },
    "ListDatasetEntriesResponse":{
      "type":"structure",
      "members":{
        "DatasetEntries":{
          "shape":"DatasetEntryList",
          "documentation":"<p>A list of the entries (JSON Lines) within the dataset.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>If the response is truncated, Amazon Lookout for Vision returns this token that you can use in the subsequent request to retrieve the next set ofdataset entries.</p>"
        }
      }
    },
    "ListModelsRequest":{
      "type":"structure",
      "required":["ProjectName"],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the model versions that you want to list.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>If the previous response was incomplete (because there is more data to retrieve), Amazon Lookout for Vision returns a pagination token in the response. You can use this pagination token to retrieve the next set of models.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return per paginated call. The largest value you can specify is 100. If you specify a value greater than 100, a ValidationException error occurs. The default value is 100.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListModelsResponse":{
      "type":"structure",
      "members":{
        "Models":{
          "shape":"ModelMetadataList",
          "documentation":"<p>A list of model versions in the specified project. </p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>If the response is truncated, Amazon Lookout for Vision returns this token that you can use in the subsequent request to retrieve the next set of models. </p>"
        }
      }
    },
    "ListProjectsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>If the previous response was incomplete (because there is more data to retrieve), Amazon Lookout for Vision returns a pagination token in the response. You can use this pagination token to retrieve the next set of projects.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return per paginated call. The largest value you can specify is 100. If you specify a value greater than 100, a ValidationException error occurs. The default value is 100.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListProjectsResponse":{
      "type":"structure",
      "members":{
        "Projects":{
          "shape":"ProjectMetadataList",
          "documentation":"<p>A list of projects in your AWS account.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>If the response is truncated, Amazon Lookout for Vision returns this token that you can use in the subsequent request to retrieve the next set of projects.</p>"
        }
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["ResourceArn"],
      "members":{
        "ResourceArn":{
          "shape":"TagArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the model for which you want to list tags. </p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "Tags":{
          "shape":"TagList",
          "documentation":"<p>A map of tag keys and values attached to the specified model.</p>"
        }
      }
    },
    "ModelArn":{"type":"string"},
    "ModelDescription":{
      "type":"structure",
      "members":{
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The version of the model</p>"
        },
        "ModelArn":{
          "shape":"ModelArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the model.</p>"
        },
        "CreationTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The unix timestamp for the date and time that the model was created. </p>"
        },
        "Description":{
          "shape":"ModelDescriptionMessage",
          "documentation":"<p>The description for the model.</p>"
        },
        "Status":{
          "shape":"ModelStatus",
          "documentation":"<p>The status of the model.</p>"
        },
        "StatusMessage":{
          "shape":"ModelStatusMessage",
          "documentation":"<p>The status message for the model.</p>"
        },
        "Performance":{
          "shape":"ModelPerformance",
          "documentation":"<p>Performance metrics for the model. Created during training.</p>"
        },
        "OutputConfig":{
          "shape":"OutputConfig",
          "documentation":"<p>The S3 location where Amazon Lookout for Vision saves model training files.</p>"
        },
        "EvaluationManifest":{
          "shape":"OutputS3Object",
          "documentation":"<p>The S3 location where Amazon Lookout for Vision saves the manifest file that was used to test the trained model and generate the performance scores.</p>"
        },
        "EvaluationResult":{
          "shape":"OutputS3Object",
          "documentation":"<p>The S3 location where Amazon Lookout for Vision saves the performance metrics.</p>"
        },
        "EvaluationEndTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The unix timestamp for the date and time that the evaluation ended. </p>"
        },
        "KmsKeyId":{
          "shape":"KmsKeyId",
          "documentation":"<p>The identifer for the AWS Key Management Service (AWS KMS) key that was used to encrypt the model during training.</p>"
        }
      },
      "documentation":"<p>Describes an Amazon Lookout for Vision model.</p>"
    },
    "ModelDescriptionMessage":{
      "type":"string",
      "max":500,
      "min":1,
      "pattern":"[0-9A-Za-z\\.\\-_]*"
    },
    "ModelHostingStatus":{
      "type":"string",
      "enum":[
        "STARTING_HOSTING",
        "HOSTED",
        "HOSTING_FAILED",
        "STOPPING_HOSTING",
        "SYSTEM_UPDATING"
      ]
    },
    "ModelMetadata":{
      "type":"structure",
      "members":{
        "CreationTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The unix timestamp for the date and time that the model was created. </p>"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The version of the model.</p>"
        },
        "ModelArn":{
          "shape":"ModelArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the model.</p>"
        },
        "Description":{
          "shape":"ModelDescriptionMessage",
          "documentation":"<p>The description for the model.</p>"
        },
        "Status":{
          "shape":"ModelStatus",
          "documentation":"<p>The status of the model.</p>"
        },
        "StatusMessage":{
          "shape":"ModelStatusMessage",
          "documentation":"<p>The status message for the model.</p>"
        },
        "Performance":{
          "shape":"ModelPerformance",
          "documentation":"<p>Performance metrics for the model. Not available until training has successfully completed.</p>"
        }
      },
      "documentation":"<p>Describes an Amazon Lookout for Vision model.</p>"
    },
    "ModelMetadataList":{
      "type":"list",
      "member":{"shape":"ModelMetadata"}
    },
    "ModelPerformance":{
      "type":"structure",
      "members":{
        "F1Score":{
          "shape":"Float",
          "documentation":"<p>The overall F1 score metric for the trained model.</p>"
        },
        "Recall":{
          "shape":"Float",
          "documentation":"<p>The overall recall metric value for the trained model. </p>"
        },
        "Precision":{
          "shape":"Float",
          "documentation":"<p>The overall precision metric value for the trained model.</p>"
        }
      },
      "documentation":"<p>Information about the evaluation performance of a trained model. </p>"
    },
    "ModelStatus":{
      "type":"string",
      "enum":[
        "TRAINING",
        "TRAINED",
        "TRAINING_FAILED",
        "STARTING_HOSTING",
        "HOSTED",
        "HOSTING_FAILED",
        "STOPPING_HOSTING",
        "SYSTEM_UPDATING",
        "DELETING"
      ]
    },
    "ModelStatusMessage":{"type":"string"},
    "ModelVersion":{
      "type":"string",
      "max":10,
      "min":1,
      "pattern":"([1-9][0-9]*|latest)"
    },
    "OutputConfig":{
      "type":"structure",
      "required":["S3Location"],
      "members":{
        "S3Location":{
          "shape":"S3Location",
          "documentation":"<p>The S3 location for the output.</p>"
        }
      },
      "documentation":"<p>The S3 location where Amazon Lookout for Vision saves model training files.</p>"
    },
    "OutputS3Object":{
      "type":"structure",
      "required":[
        "Bucket",
        "Key"
      ],
      "members":{
        "Bucket":{
          "shape":"S3BucketName",
          "documentation":"<p>The bucket that contains the training output.</p>"
        },
        "Key":{
          "shape":"S3ObjectKey",
          "documentation":"<p>The location of the training output in the bucket.</p>"
        }
      },
      "documentation":"<p>The S3 location where Amazon Lookout for Vision saves training output.</p>"
    },
    "PageSize":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "PaginationToken":{
      "type":"string",
      "max":2048,
      "pattern":"^[a-zA-Z0-9\\/\\+\\=]{0,2048}$"
    },
    "ProjectArn":{"type":"string"},
    "ProjectDescription":{
      "type":"structure",
      "members":{
        "ProjectArn":{
          "shape":"ProjectArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the project.</p>"
        },
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project.</p>"
        },
        "CreationTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The unix timestamp for the date and time that the project was created. </p>"
        },
        "Datasets":{
          "shape":"DatasetMetadataList",
          "documentation":"<p>A list of datasets in the project.</p>"
        }
      },
      "documentation":"<p>Describe an Amazon Lookout for Vision project. For more information, see <a>DescribeProject</a>.</p>"
    },
    "ProjectMetadata":{
      "type":"structure",
      "members":{
        "ProjectArn":{
          "shape":"ProjectArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the project.</p>"
        },
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project.</p>"
        },
        "CreationTimestamp":{
          "shape":"DateTime",
          "documentation":"<p>The unix timestamp for the date and time that the project was created. </p>"
        }
      },
      "documentation":"<p>Metadata about an Amazon Lookout for Vision project.</p>"
    },
    "ProjectMetadataList":{
      "type":"list",
      "member":{"shape":"ProjectMetadata"}
    },
    "ProjectName":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[a-zA-Z0-9][a-zA-Z0-9_\\-]*"
    },
    "QueryString":{
      "type":"string",
      "max":2048,
      "min":1,
      "pattern":".*\\S.*"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":[
        "Message",
        "ResourceId",
        "ResourceType"
      ],
      "members":{
        "Message":{"shape":"ExceptionString"},
        "ResourceId":{
          "shape":"ExceptionString",
          "documentation":"<p>The ID of the resource.</p>"
        },
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the resource.</p>"
        }
      },
      "documentation":"<p>The resource could not be found.</p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "ResourceType":{
      "type":"string",
      "enum":[
        "PROJECT",
        "DATASET",
        "MODEL",
        "TRIAL"
      ]
    },
    "RetryAfterSeconds":{"type":"integer"},
    "S3BucketName":{
      "type":"string",
      "max":63,
      "min":3,
      "pattern":"[0-9A-Za-z\\.\\-_]*"
    },
    "S3KeyPrefix":{
      "type":"string",
      "max":1024,
      "pattern":"^([a-zA-Z0-9!_.*'()-][/a-zA-Z0-9!_.*'()-]*)?$"
    },
    "S3Location":{
      "type":"structure",
      "required":["Bucket"],
      "members":{
        "Bucket":{
          "shape":"S3BucketName",
          "documentation":"<p>The S3 bucket that contains the training output.</p>"
        },
        "Prefix":{
          "shape":"S3KeyPrefix",
          "documentation":"<p>The path of the folder, within the S3 bucket, that contains the training output.</p>"
        }
      },
      "documentation":"<p>Information about the location training output.</p>"
    },
    "S3ObjectKey":{
      "type":"string",
      "max":1024,
      "min":1,
      "pattern":"^([a-zA-Z0-9!_.*'()-][/a-zA-Z0-9!_.*'()-]*)?$"
    },
    "S3ObjectVersion":{
      "type":"string",
      "max":1024,
      "min":1,
      "pattern":".*"
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "required":[
        "Message",
        "QuotaCode",
        "ServiceCode"
      ],
      "members":{
        "Message":{"shape":"ExceptionString"},
        "ResourceId":{
          "shape":"ExceptionString",
          "documentation":"<p>The ID of the resource.</p>"
        },
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the resource.</p>"
        },
        "QuotaCode":{
          "shape":"ExceptionString",
          "documentation":"<p>The quota code. </p>"
        },
        "ServiceCode":{
          "shape":"ExceptionString",
          "documentation":"<p>The service code. </p>"
        }
      },
      "documentation":"<p>A service quota was exceeded the allowed limit. For more information, see Limits in Amazon Lookout for Vision in the Amazon Lookout for Vision Developer Guide. </p>",
      "error":{"httpStatusCode":402},
      "exception":true
    },
    "StartModelRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "ModelVersion",
        "MinInferenceUnits"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the model that you want to start.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The version of the model that you want to start.</p>",
          "location":"uri",
          "locationName":"modelVersion"
        },
        "MinInferenceUnits":{
          "shape":"InferenceUnits",
          "documentation":"<p>The minimum number of inference units to use. A single inference unit represents 1 hour of processing and can support up to 5 Transaction Pers Second (TPS). Use a higher number to increase the TPS throughput of your model. You are charged for the number of inference units that you use. </p>"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>StartModel</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>StartModel</code>. In this case, safely retry your call to <code>StartModel</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>StartModel</code>. An idempotency token is active for 8 hours. </p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "StartModelResponse":{
      "type":"structure",
      "members":{
        "Status":{
          "shape":"ModelHostingStatus",
          "documentation":"<p>The current running status of the model.</p>"
        }
      }
    },
    "StopModelRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "ModelVersion"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the model that you want to stop.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The version of the model that you want to stop.</p>",
          "location":"uri",
          "locationName":"modelVersion"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>StopModel</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>StopModel</code>. In this case, safely retry your call to <code>StopModel</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>StopModel</code>. An idempotency token is active for 8 hours. </p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "StopModelResponse":{
      "type":"structure",
      "members":{
        "Status":{
          "shape":"ModelHostingStatus",
          "documentation":"<p>The status of the model.</p>"
        }
      }
    },
    "Stream":{
      "type":"blob",
      "requiresLength":true,
      "streaming":true
    },
    "Tag":{
      "type":"structure",
      "required":[
        "Key",
        "Value"
      ],
      "members":{
        "Key":{
          "shape":"TagKey",
          "documentation":"<p>The key of the tag that is attached to the specified model.</p>"
        },
        "Value":{
          "shape":"TagValue",
          "documentation":"<p>The value of the tag that is attached to the specified model.</p>"
        }
      },
      "documentation":"<p>A key and value pair that is attached to the specified Amazon Lookout for Vision model.</p>"
    },
    "TagArn":{
      "type":"string",
      "max":1011,
      "min":1
    },
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
    },
    "TagKeyList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":200,
      "min":0
    },
    "TagList":{
      "type":"list",
      "member":{"shape":"Tag"},
      "max":200,
      "min":0
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "Tags"
      ],
      "members":{
        "ResourceArn":{
          "shape":"TagArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the model to assign the tags.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "Tags":{
          "shape":"TagList",
          "documentation":"<p>The key-value tags to assign to the model.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":0,
      "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{"shape":"ExceptionString"},
        "QuotaCode":{
          "shape":"ExceptionString",
          "documentation":"<p>The quota code. </p>"
        },
        "ServiceCode":{
          "shape":"ExceptionString",
          "documentation":"<p>The service code. </p>"
        },
        "RetryAfterSeconds":{
          "shape":"RetryAfterSeconds",
          "documentation":"<p>The period of time, in seconds, before the operation can be retried. </p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p>Amazon Lookout for Vision is temporarily unable to process the request. Try your call again.</p>",
      "error":{"httpStatusCode":429},
      "exception":true
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "TagKeys"
      ],
      "members":{
        "ResourceArn":{
          "shape":"TagArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the model from which you want to remove tags. </p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "TagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p>A list of the keys of the tags that you want to remove.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateDatasetEntriesRequest":{
      "type":"structure",
      "required":[
        "ProjectName",
        "DatasetType",
        "Changes"
      ],
      "members":{
        "ProjectName":{
          "shape":"ProjectName",
          "documentation":"<p>The name of the project that contains the dataset that you want to update.</p>",
          "location":"uri",
          "locationName":"projectName"
        },
        "DatasetType":{
          "shape":"DatasetType",
          "documentation":"<p>The type of the dataset that you want to update. Specify <code>train</code> to update the training dataset. Specify <code>test</code> to update the test dataset. If you have a single dataset project, specify <code>train</code>.</p>",
          "location":"uri",
          "locationName":"datasetType"
        },
        "Changes":{
          "shape":"DatasetChanges",
          "documentation":"<p>The entries to add to the dataset.</p>"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>ClientToken is an idempotency token that ensures a call to <code>UpdateDatasetEntries</code> completes only once. You choose the value to pass. For example, An issue, such as an network outage, might prevent you from getting a response from <code>UpdateDatasetEntries</code>. In this case, safely retry your call to <code>UpdateDatasetEntries</code> by using the same <code>ClientToken</code> parameter value. An error occurs if the other input parameters are not the same as in the first request. Using a different value for <code>ClientToken</code> is considered a new call to <code>UpdateDatasetEntries</code>. An idempotency token is active for 8 hours. </p>",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"X-Amzn-Client-Token"
        }
      }
    },
    "UpdateDatasetEntriesResponse":{
      "type":"structure",
      "members":{
        "Status":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status of the dataset update.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{"shape":"ExceptionString"}
      },
      "documentation":"<p>An input validation error occured. For example, invalid characters in a project name, or if a pagination token is invalid.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    }
  },
  "documentation":"<p>This is the Amazon Lookout for Vision API Reference. It provides descriptions of actions, data types, common parameters, and common errors.</p> <p>Amazon Lookout for Vision enables you to find visual defects in industrial products, accurately and at scale. It uses computer vision to identify missing components in an industrial product, damage to vehicles or structures, irregularities in production lines, and even minuscule defects in silicon wafers — or any other physical item where quality is important such as a missing capacitor on printed circuit boards.</p>"
}
