{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2019-12-02",
    "endpointPrefix":"iotsitewise",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "protocols":["rest-json"],
    "serviceFullName":"AWS IoT SiteWise",
    "serviceId":"IoTSiteWise",
    "signatureVersion":"v4",
    "signingName":"iotsitewise",
    "uid":"iotsitewise-2019-12-02",
    "auth":["aws.auth#sigv4"]
  },
  "operations":{
    "AssociateAssets":{
      "name":"AssociateAssets",
      "http":{
        "method":"POST",
        "requestUri":"/assets/{assetId}/associate"
      },
      "input":{"shape":"AssociateAssetsRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Associates a child asset with the given parent asset through a hierarchy defined in the parent asset's model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/add-associated-assets.html\">Associating assets</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "AssociateTimeSeriesToAssetProperty":{
      "name":"AssociateTimeSeriesToAssetProperty",
      "http":{
        "method":"POST",
        "requestUri":"/timeseries/associate/"
      },
      "input":{"shape":"AssociateTimeSeriesToAssetPropertyRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Associates a time series (data stream) with an asset property.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "BatchAssociateDataSegmentsToDataset":{
      "name":"BatchAssociateDataSegmentsToDataset",
      "http":{
        "method":"POST",
        "requestUri":"/datasets/{datasetId}/data-segments/associate",
        "responseCode":200
      },
      "input":{"shape":"BatchAssociateDataSegmentsToDatasetRequest"},
      "output":{"shape":"BatchAssociateDataSegmentsToDatasetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Associates a batch of data segments with a curated dataset. Data segments are time-bounded slices of time series data selected from source session datasets. Data segments that belong to the same time series can't overlap in time, regardless of which dataset they belong to.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "BatchAssociateProjectAssets":{
      "name":"BatchAssociateProjectAssets",
      "http":{
        "method":"POST",
        "requestUri":"/projects/{projectId}/assets/associate",
        "responseCode":200
      },
      "input":{"shape":"BatchAssociateProjectAssetsRequest"},
      "output":{"shape":"BatchAssociateProjectAssetsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Associates a group (batch) of assets with an IoT SiteWise Monitor project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "BatchDeleteDatasetDataSegments":{
      "name":"BatchDeleteDatasetDataSegments",
      "http":{
        "method":"POST",
        "requestUri":"/datasets/{datasetId}/data-segments/batch-delete"
      },
      "input":{"shape":"BatchDeleteDatasetDataSegmentsRequest"},
      "output":{"shape":"BatchDeleteDatasetDataSegmentsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes a batch of data segments from a session dataset. Deleting a data segment deletes the underlying time series data for the segment's time range.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "BatchDisassociateDataSegmentsFromDataset":{
      "name":"BatchDisassociateDataSegmentsFromDataset",
      "http":{
        "method":"POST",
        "requestUri":"/datasets/{datasetId}/data-segments/disassociate",
        "responseCode":200
      },
      "input":{"shape":"BatchDisassociateDataSegmentsFromDatasetRequest"},
      "output":{"shape":"BatchDisassociateDataSegmentsFromDatasetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Disassociates a batch of data segments from a curated dataset. Disassociating a data segment doesn't delete the underlying data in the source session dataset.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "BatchDisassociateProjectAssets":{
      "name":"BatchDisassociateProjectAssets",
      "http":{
        "method":"POST",
        "requestUri":"/projects/{projectId}/assets/disassociate",
        "responseCode":200
      },
      "input":{"shape":"BatchDisassociateProjectAssetsRequest"},
      "output":{"shape":"BatchDisassociateProjectAssetsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Disassociates a group (batch) of assets from an IoT SiteWise Monitor project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "BatchGetAssetPropertyAggregates":{
      "name":"BatchGetAssetPropertyAggregates",
      "http":{
        "method":"POST",
        "requestUri":"/properties/batch/aggregates"
      },
      "input":{"shape":"BatchGetAssetPropertyAggregatesRequest"},
      "output":{"shape":"BatchGetAssetPropertyAggregatesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Gets aggregated values (for example, average, minimum, and maximum) for one or more asset properties. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#aggregates\">Querying aggregates</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "BatchGetAssetPropertyValue":{
      "name":"BatchGetAssetPropertyValue",
      "http":{
        "method":"POST",
        "requestUri":"/properties/batch/latest"
      },
      "input":{"shape":"BatchGetAssetPropertyValueRequest"},
      "output":{"shape":"BatchGetAssetPropertyValueResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Gets the current value for one or more asset properties. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#current-values\">Querying current values</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "BatchGetAssetPropertyValueHistory":{
      "name":"BatchGetAssetPropertyValueHistory",
      "http":{
        "method":"POST",
        "requestUri":"/properties/batch/history"
      },
      "input":{"shape":"BatchGetAssetPropertyValueHistoryRequest"},
      "output":{"shape":"BatchGetAssetPropertyValueHistoryResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Gets the historical values for one or more asset properties. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#historical-values\">Querying historical values</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "BatchPutAssetPropertyValue":{
      "name":"BatchPutAssetPropertyValue",
      "http":{
        "method":"POST",
        "requestUri":"/properties"
      },
      "input":{"shape":"BatchPutAssetPropertyValueRequest"},
      "output":{"shape":"BatchPutAssetPropertyValueResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ServiceUnavailableException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Sends a list of asset property values to IoT SiteWise. Each value is a timestamp-quality-value (TQV) data point. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ingest-api.html\">Ingesting data using the API</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul> <important> <p>With respect to Unix epoch time, IoT SiteWise accepts only TQVs that have a timestamp of no more than 7 days in the past and no more than 10 minutes in the future. IoT SiteWise rejects timestamps outside of the inclusive range of [-7 days, +10 minutes] and returns a <code>TimestampOutOfRangeException</code> error.</p> <p>For each asset property, IoT SiteWise overwrites TQVs with duplicate timestamps unless the newer TQV has a different quality. For example, if you store a TQV <code>{T1, GOOD, V1}</code>, then storing <code>{T1, GOOD, V2}</code> replaces the existing TQV.</p> </important> <p>IoT SiteWise authorizes access to each <code>BatchPutAssetPropertyValue</code> entry individually. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-batchputassetpropertyvalue-action\">BatchPutAssetPropertyValue authorization</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "CancelEnrichmentJob":{
      "name":"CancelEnrichmentJob",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/enrichment-jobs/{jobId}/cancel",
        "responseCode":200
      },
      "input":{"shape":"CancelEnrichmentJobRequest"},
      "output":{"shape":"CancelEnrichmentJobResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Cancels a running or pending enrichment job. This is an idempotent operation—calling it multiple times with the same jobId is safe and returns the current status.</p> <h2>Behavior</h2> <ul> <li>Jobs in PENDING or RUNNING status transition to CANCELLED</li> <li>Jobs in RUNNING state may not be cancellable once they have progressed to certain processing stages</li> <li>Jobs already in terminal states (COMPLETED, FAILED, TIMED_OUT) cannot be cancelled; the operation returns a ConflictingOperationException</li> <li>Cancelling an already-CANCELLED job is a no-op and returns the current status (idempotent behavior)</li> <li>The API responds immediately after recording the cancellation</li> <li>Cleanup of job resources happens asynchronously in the background</li> </ul> <h2>When to Cancel</h2> <p>Cancel a job when:</p> <ul> <li>The job is taking longer than expected</li> <li>The job was created with incorrect parameters</li> <li>You no longer need the results</li> </ul> <h2>Idempotency</h2> <p>You can safely retry cancellation requests. Calling CancelEnrichmentJob multiple times for the same job returns the current status without error as long as the job is not in a terminal state other than CANCELLED.</p>",
      "endpoint":{"hostPrefix":"data."},
      "idempotent":true
    },
    "CancelPipelineExecution":{
      "name":"CancelPipelineExecution",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/pipelines/{pipelineName}/executions/{pipelineExecutionId}/cancel",
        "responseCode":202
      },
      "input":{"shape":"CancelPipelineExecutionRequest"},
      "output":{"shape":"CancelPipelineExecutionResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Cancels a pipeline execution in the specified workspace. If the execution is not in a terminal state (such as NOT_STARTED or RUNNING), it transitions to CANCELLING and asynchronously to CANCELLED. This operation is idempotent: calling it on an execution that is already CANCELLING or CANCELLED returns success with the current state. Calling it on a terminal execution (SUCCEEDED or FAILED) returns a conflict error. You can optionally provide a reason; it is returned in the stateDetails field when you describe the execution.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "CancelQuery":{
      "name":"CancelQuery",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/queries/{queryId}/cancel",
        "responseCode":202
      },
      "input":{"shape":"CancelQueryRequest"},
      "output":{"shape":"CancelQueryResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Cancels a running query.</p>",
      "endpoint":{"hostPrefix":"data."},
      "idempotent":true
    },
    "CreateAccessPolicy":{
      "name":"CreateAccessPolicy",
      "http":{
        "method":"POST",
        "requestUri":"/access-policies",
        "responseCode":201
      },
      "input":{"shape":"CreateAccessPolicyRequest"},
      "output":{"shape":"CreateAccessPolicyResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Creates an access policy that grants the specified identity (IAM Identity Center user, IAM Identity Center group, or IAM user) access to the specified IoT SiteWise Monitor portal or project resource.</p> <note> <p>Support for access policies that use an SSO Group as the identity is not supported at this time.</p> </note>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "CreateApplication":{
      "name":"CreateApplication",
      "http":{
        "method":"POST",
        "requestUri":"/applications",
        "responseCode":200
      },
      "input":{"shape":"CreateApplicationRequest"},
      "output":{"shape":"CreateApplicationResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates a new application for the workspace and IdC application provided</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "CreateAsset":{
      "name":"CreateAsset",
      "http":{
        "method":"POST",
        "requestUri":"/assets",
        "responseCode":202
      },
      "input":{"shape":"CreateAssetRequest"},
      "output":{"shape":"CreateAssetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates an asset from an existing asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-assets.html\">Creating assets</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateAssetModel":{
      "name":"CreateAssetModel",
      "http":{
        "method":"POST",
        "requestUri":"/asset-models",
        "responseCode":202
      },
      "input":{"shape":"CreateAssetModelRequest"},
      "output":{"shape":"CreateAssetModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates an asset model from specified property and hierarchy definitions. You create assets from asset models. With asset models, you can easily create assets of the same type that have standardized definitions. Each asset created from a model inherits the asset model's property and hierarchy definitions. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/define-models.html\">Defining asset models</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can create three types of asset models, <code>ASSET_MODEL</code>, <code>COMPONENT_MODEL</code>, or an <code>INTERFACE</code>.</p> <ul> <li> <p> <b>ASSET_MODEL</b> – (default) An asset model that you can use to create assets. Can't be included as a component in another asset model.</p> </li> <li> <p> <b>COMPONENT_MODEL</b> – A reusable component that you can include in the composite models of other asset models. You can't create assets directly from this type of asset model. </p> </li> <li> <p> <b>INTERFACE</b> – An interface is a type of model that defines a standard structure that can be applied to different asset models.</p> </li> </ul>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateAssetModelCompositeModel":{
      "name":"CreateAssetModelCompositeModel",
      "http":{
        "method":"POST",
        "requestUri":"/asset-models/{assetModelId}/composite-models",
        "responseCode":202
      },
      "input":{"shape":"CreateAssetModelCompositeModelRequest"},
      "output":{"shape":"CreateAssetModelCompositeModelResponse"},
      "errors":[
        {"shape":"ConflictingOperationException"},
        {"shape":"PreconditionFailedException"},
        {"shape":"InternalFailureException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Creates a custom composite model from specified property and hierarchy definitions. There are two types of custom composite models, <code>inline</code> and <code>component-model-based</code>. </p> <p>Use component-model-based custom composite models to define standard, reusable components. A component-model-based custom composite model consists of a name, a description, and the ID of the component model it references. A component-model-based custom composite model has no properties of its own; its referenced component model provides its associated properties to any created assets. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html\">Custom composite models (Components)</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>Use inline custom composite models to organize the properties of an asset model. The properties of inline custom composite models are local to the asset model where they are included and can't be used to create multiple assets.</p> <p>To create a component-model-based model, specify the <code>composedAssetModelId</code> of an existing asset model with <code>assetModelType</code> of <code>COMPONENT_MODEL</code>.</p> <p>To create an inline model, specify the <code>assetModelCompositeModelProperties</code> and don't include an <code>composedAssetModelId</code>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateBulkImportJob":{
      "name":"CreateBulkImportJob",
      "http":{
        "method":"POST",
        "requestUri":"/jobs",
        "responseCode":202
      },
      "input":{"shape":"CreateBulkImportJobRequest"},
      "output":{"shape":"CreateBulkImportJobResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Defines a job to ingest data to IoT SiteWise from Amazon S3. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/CreateBulkImportJob.html\">Create a bulk import job (CLI)</a> in the <i>Amazon Simple Storage Service User Guide</i>.</p> <important> <p>Before you create a bulk import job that ingests data into time series outside of a workspace, you must enable IoT SiteWise warm tier or IoT SiteWise cold tier. For more information about how to configure storage settings, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutStorageConfiguration.html\">PutStorageConfiguration</a>. This requirement doesn't apply to bulk import jobs that ingest data into a session dataset in a workspace (jobs that specify a <code>workspaceName</code> and <code>datasetId</code>). Those jobs don't use IoT SiteWise warm or cold tier storage.</p> <p>Bulk import is designed to store historical data to IoT SiteWise.</p> <ul> <li> <p>Newly ingested data in the hot tier triggers notifications and computations.</p> </li> <li> <p>After data moves from the hot tier to the warm or cold tier based on retention settings, it does not trigger computations or notifications.</p> </li> <li> <p>Data older than 7 days does not trigger computations or notifications.</p> </li> </ul> </important>",
      "endpoint":{"hostPrefix":"data."}
    },
    "CreateComputationModel":{
      "name":"CreateComputationModel",
      "http":{
        "method":"POST",
        "requestUri":"/computation-models",
        "responseCode":202
      },
      "input":{"shape":"CreateComputationModelRequest"},
      "output":{"shape":"CreateComputationModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Create a computation model with a configuration and data binding.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateDashboard":{
      "name":"CreateDashboard",
      "http":{
        "method":"POST",
        "requestUri":"/dashboards",
        "responseCode":201
      },
      "input":{"shape":"CreateDashboardRequest"},
      "output":{"shape":"CreateDashboardResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Creates a dashboard in an IoT SiteWise Monitor project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "CreateDataset":{
      "name":"CreateDataset",
      "http":{
        "method":"POST",
        "requestUri":"/datasets",
        "responseCode":202
      },
      "input":{"shape":"CreateDatasetRequest"},
      "output":{"shape":"CreateDatasetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates a dataset. Session and curated datasets are created in a workspace. A session dataset contains data segments of time series data, and a curated dataset curates data segments selected from source session datasets. A dataset that connects to an external datasource is created outside of a workspace.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateDatasetExportJob":{
      "name":"CreateDatasetExportJob",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/dataset-export-jobs",
        "responseCode":202
      },
      "input":{"shape":"CreateDatasetExportJobRequest"},
      "output":{"shape":"CreateDatasetExportJobResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Starts an asynchronous job that exports dataset and time-series data from a workspace to Amazon S3. The operation returns a jobId immediately; poll DescribeDatasetExportJob to track progress and ListDatasetExportJobs to enumerate a workspace's jobs.</p>",
      "endpoint":{"hostPrefix":"data."},
      "idempotent":true
    },
    "CreateEnrichmentJob":{
      "name":"CreateEnrichmentJob",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/enrichment-jobs",
        "responseCode":200
      },
      "input":{"shape":"CreateEnrichmentJobRequest"},
      "output":{"shape":"CreateEnrichmentJobResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates an asynchronous enrichment job to analyze time-series sensor data. The operation returns immediately with job details while processing continues in the background.</p> <h2>Idempotency</h2> <p>Include a clientToken to make the operation idempotent. If you submit the same request with the same token within the idempotency window, you receive the original job details without creating a duplicate.</p> <h2>Prerequisites</h2> <p>Before creating a job, ensure:</p> <ul> <li>The workspace is in ACTIVE state (not being deleted)</li> <li>You have IAM permissions for the workspace, dataset, and time-series resources</li> <li>You have KMS Decrypt permission on the workspace's customer-managed encryption key</li> <li>No duplicate job (same workspace, dataset, property, and job type) is currently running</li> </ul> <h2>Workflow</h2> <ol> <li>Submit the job with configuration specifying which video data to analyze and the time range</li> <li>Capture the jobId from the response</li> <li>Use DescribeEnrichmentJob to monitor progress and check job status</li> <li>When status reaches a terminal state (COMPLETED, FAILED, TIMED_OUT, CANCELLED), check results</li> <li>For COMPLETED jobs, query IoT SiteWise for semantic search on video events</li> </ol> <h2>Error Handling</h2> <ul> <li>ConflictingOperationException: A duplicate job is already running for the same configuration</li> <li>InvalidRequestException: Invalid parameters (e.g., both timeSeriesId and propertyAlias specified)</li> <li>AccessDeniedException: Insufficient IAM or KMS permissions</li> <li>LimitExceededException: Too many concurrent jobs or requests</li> </ul>",
      "endpoint":{"hostPrefix":"data."}
    },
    "CreateGateway":{
      "name":"CreateGateway",
      "http":{
        "method":"POST",
        "requestUri":"/20200301/gateways",
        "responseCode":201
      },
      "input":{"shape":"CreateGatewayRequest"},
      "output":{"shape":"CreateGatewayResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Creates a gateway, which is a virtual or edge device that delivers industrial data streams from local servers to IoT SiteWise. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateway-connector.html\">Ingesting data using a gateway</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreatePipeline":{
      "name":"CreatePipeline",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/pipelines",
        "responseCode":200
      },
      "input":{"shape":"CreatePipelineRequest"},
      "output":{"shape":"CreatePipelineResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"LimitExceededException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates a new pipeline in the specified workspace. A pipeline defines a directed acyclic graph (DAG) of compute nodes, where each node references a task and can declare dependencies on other nodes. Cyclic dependencies are not allowed. Nodes without dependencies run in parallel, while nodes with dependencies wait for all upstream nodes to complete successfully before starting.</p> <p>You can set environment variables at the pipeline level that are shared across all compute nodes, and override them at the individual compute node level.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "CreatePortal":{
      "name":"CreatePortal",
      "http":{
        "method":"POST",
        "requestUri":"/portals",
        "responseCode":202
      },
      "input":{"shape":"CreatePortalRequest"},
      "output":{"shape":"CreatePortalResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Creates a portal, which can contain projects and dashboards. IoT SiteWise Monitor uses IAM Identity Center or IAM to authenticate portal users and manage user permissions.</p> <note> <p>Before you can sign in to a new portal, you must add at least one identity to that portal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/administer-portals.html#portal-change-admins\">Adding or removing portal administrators</a> in the <i>IoT SiteWise User Guide</i>.</p> </note>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "CreateProject":{
      "name":"CreateProject",
      "http":{
        "method":"POST",
        "requestUri":"/projects",
        "responseCode":201
      },
      "input":{"shape":"CreateProjectRequest"},
      "output":{"shape":"CreateProjectResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Creates a project in the specified portal.</p> <note> <p>Make sure that the project name and description don't contain confidential information.</p> </note>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "CreateTask":{
      "name":"CreateTask",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/tasks",
        "responseCode":200
      },
      "input":{"shape":"CreateTaskRequest"},
      "output":{"shape":"CreateTaskResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"LimitExceededException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates a new task in the specified workspace. A task defines a reusable containerized compute workload that can be referenced by one or more pipeline compute nodes.</p> <p>Specify a <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ContainerTaskConfiguration.html\"><code>containerTaskConfiguration</code></a> for custom container workloads with configurable ECR image, processing type, processing unit, and environment variables.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "CreateWorkspace":{
      "name":"CreateWorkspace",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces"
      },
      "input":{"shape":"CreateWorkspaceRequest"},
      "output":{"shape":"CreateWorkspaceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"LimitExceededException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p>Creates a workspace in IoT SiteWise. A workspace isolates its resources, such as datasets, time series, pipelines, and tasks, and their data from other workspaces, and has its own quotas and throttling limits. You must specify an encryption configuration when you create a workspace. The operation returns immediately with the workspace in the <code>CREATING</code> state. Provisioning completes asynchronously, after which the workspace state is <code>ACTIVE</code>, or <code>FAILED</code> if provisioning doesn't complete.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteAccessPolicy":{
      "name":"DeleteAccessPolicy",
      "http":{
        "method":"DELETE",
        "requestUri":"/access-policies/{accessPolicyId}",
        "responseCode":204
      },
      "input":{"shape":"DeleteAccessPolicyRequest"},
      "output":{"shape":"DeleteAccessPolicyResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes an access policy that grants the specified identity access to the specified IoT SiteWise Monitor resource. You can use this operation to revoke access to an IoT SiteWise Monitor resource.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DeleteApplication":{
      "name":"DeleteApplication",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceName}/applications/{id}",
        "responseCode":204
      },
      "input":{"shape":"DeleteApplicationRequest"},
      "output":{"shape":"DeleteApplicationResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes an application by ID</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "DeleteAsset":{
      "name":"DeleteAsset",
      "http":{
        "method":"DELETE",
        "requestUri":"/assets/{assetId}",
        "responseCode":202
      },
      "input":{"shape":"DeleteAssetRequest"},
      "output":{"shape":"DeleteAssetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes an asset. This action can't be undone. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/delete-assets-and-models.html\">Deleting assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p> <note> <p>You can't delete an asset that's associated to another asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DisassociateAssets.html\">DisassociateAssets</a>.</p> </note>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteAssetModel":{
      "name":"DeleteAssetModel",
      "http":{
        "method":"DELETE",
        "requestUri":"/asset-models/{assetModelId}",
        "responseCode":202
      },
      "input":{"shape":"DeleteAssetModelRequest"},
      "output":{"shape":"DeleteAssetModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"PreconditionFailedException"}
      ],
      "documentation":"<p>Deletes an asset model. This action can't be undone. You must delete all assets created from an asset model before you can delete the model. Also, you can't delete an asset model if a parent asset model exists that contains a property formula expression that depends on the asset model that you want to delete. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/delete-assets-and-models.html\">Deleting assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteAssetModelCompositeModel":{
      "name":"DeleteAssetModelCompositeModel",
      "http":{
        "method":"DELETE",
        "requestUri":"/asset-models/{assetModelId}/composite-models/{assetModelCompositeModelId}",
        "responseCode":202
      },
      "input":{"shape":"DeleteAssetModelCompositeModelRequest"},
      "output":{"shape":"DeleteAssetModelCompositeModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"PreconditionFailedException"}
      ],
      "documentation":"<p>Deletes a composite model. This action can't be undone. You must delete all assets created from a composite model before you can delete the model. Also, you can't delete a composite model if a parent asset model exists that contains a property formula expression that depends on the asset model that you want to delete. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/delete-assets-and-models.html\">Deleting assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteAssetModelInterfaceRelationship":{
      "name":"DeleteAssetModelInterfaceRelationship",
      "http":{
        "method":"DELETE",
        "requestUri":"/asset-models/{assetModelId}/interface/{interfaceAssetModelId}/asset-model-interface-relationship",
        "responseCode":202
      },
      "input":{"shape":"DeleteAssetModelInterfaceRelationshipRequest"},
      "output":{"shape":"DeleteAssetModelInterfaceRelationshipResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes an interface relationship between an asset model and an interface asset model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteComputationModel":{
      "name":"DeleteComputationModel",
      "http":{
        "method":"DELETE",
        "requestUri":"/computation-models/{computationModelId}",
        "responseCode":202
      },
      "input":{"shape":"DeleteComputationModelRequest"},
      "output":{"shape":"DeleteComputationModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes a computation model. This action can't be undone.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteDashboard":{
      "name":"DeleteDashboard",
      "http":{
        "method":"DELETE",
        "requestUri":"/dashboards/{dashboardId}",
        "responseCode":204
      },
      "input":{"shape":"DeleteDashboardRequest"},
      "output":{"shape":"DeleteDashboardResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes a dashboard from IoT SiteWise Monitor.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DeleteDataset":{
      "name":"DeleteDataset",
      "http":{
        "method":"DELETE",
        "requestUri":"/datasets/{datasetId}",
        "responseCode":202
      },
      "input":{"shape":"DeleteDatasetRequest"},
      "output":{"shape":"DeleteDatasetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes a dataset. This can't be undone. Deleting a session dataset also deletes the underlying time series data in the session. You can't delete a session dataset while a curated dataset references its data segments. First delete the curated dataset or disassociate the data segments. Deleting a curated dataset doesn't delete the underlying data in the source session datasets.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteGateway":{
      "name":"DeleteGateway",
      "http":{
        "method":"DELETE",
        "requestUri":"/20200301/gateways/{gatewayId}"
      },
      "input":{"shape":"DeleteGatewayRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes a gateway from IoT SiteWise. When you delete a gateway, some of the gateway's files remain in your gateway's file system.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeletePipeline":{
      "name":"DeletePipeline",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceName}/pipelines/{pipelineName}",
        "responseCode":200
      },
      "input":{"shape":"DeletePipelineRequest"},
      "output":{"shape":"DeletePipelineResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes a pipeline from the specified workspace. A pipeline cannot be deleted if it has any active executions. Wait for all executions to complete before attempting to delete the pipeline, or use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CancelPipelineExecution.html\">CancelPipelineExecution</a> to stop a running execution.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "DeletePortal":{
      "name":"DeletePortal",
      "http":{
        "method":"DELETE",
        "requestUri":"/portals/{portalId}",
        "responseCode":202
      },
      "input":{"shape":"DeletePortalRequest"},
      "output":{"shape":"DeletePortalResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes a portal from IoT SiteWise Monitor.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DeleteProject":{
      "name":"DeleteProject",
      "http":{
        "method":"DELETE",
        "requestUri":"/projects/{projectId}",
        "responseCode":204
      },
      "input":{"shape":"DeleteProjectRequest"},
      "output":{"shape":"DeleteProjectResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Deletes a project from IoT SiteWise Monitor.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DeleteTask":{
      "name":"DeleteTask",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceName}/tasks/{taskName}",
        "responseCode":200
      },
      "input":{"shape":"DeleteTaskRequest"},
      "output":{"shape":"DeleteTaskResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes a task from the specified workspace. A task cannot be deleted if it is currently referenced by any existing pipeline. Remove the task from all pipelines before attempting to delete it.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "DeleteTimeSeries":{
      "name":"DeleteTimeSeries",
      "http":{
        "method":"POST",
        "requestUri":"/timeseries/delete/"
      },
      "input":{"shape":"DeleteTimeSeriesRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Deletes a time series (data stream). If you delete a time series that's associated with an asset property, the asset property still exists, but the time series will no longer be associated with this asset property. You can't delete a time series until all of its data segments have been deleted from session datasets.</p> <p>To identify a time series, do one of the following:</p> <ul> <li> <p>If the time series isn't associated with an asset property, specify the <code>alias</code> of the time series.</p> </li> <li> <p>If the time series is associated with an asset property, specify one of the following: </p> <ul> <li> <p>The <code>alias</code> of the time series.</p> </li> <li> <p>The <code>assetId</code> and <code>propertyId</code> that identifies the asset property.</p> </li> </ul> </li> </ul>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteWorkspace":{
      "name":"DeleteWorkspace",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceName}"
      },
      "input":{"shape":"DeleteWorkspaceRequest"},
      "output":{"shape":"DeleteWorkspaceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p>Deletes a workspace. Before you delete a workspace, you must delete all resources contained in or associated with the workspace, such as datasets, time series, pipelines, and tasks.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "DescribeAccessPolicy":{
      "name":"DescribeAccessPolicy",
      "http":{
        "method":"GET",
        "requestUri":"/access-policies/{accessPolicyId}",
        "responseCode":200
      },
      "input":{"shape":"DescribeAccessPolicyRequest"},
      "output":{"shape":"DescribeAccessPolicyResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Describes an access policy, which specifies an identity's access to an IoT SiteWise Monitor portal or project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DescribeAction":{
      "name":"DescribeAction",
      "http":{
        "method":"GET",
        "requestUri":"/actions/{actionId}"
      },
      "input":{"shape":"DescribeActionRequest"},
      "output":{"shape":"DescribeActionResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about an action.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeApplication":{
      "name":"DescribeApplication",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/applications/{id}",
        "responseCode":200
      },
      "input":{"shape":"DescribeApplicationRequest"},
      "output":{"shape":"DescribeApplicationResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Retrieves Application details based on the ID</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "DescribeAsset":{
      "name":"DescribeAsset",
      "http":{
        "method":"GET",
        "requestUri":"/assets/{assetId}"
      },
      "input":{"shape":"DescribeAssetRequest"},
      "output":{"shape":"DescribeAssetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about an asset.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeAssetCompositeModel":{
      "name":"DescribeAssetCompositeModel",
      "http":{
        "method":"GET",
        "requestUri":"/assets/{assetId}/composite-models/{assetCompositeModelId}"
      },
      "input":{"shape":"DescribeAssetCompositeModelRequest"},
      "output":{"shape":"DescribeAssetCompositeModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about an asset composite model (also known as an asset component). An <code>AssetCompositeModel</code> is an instance of an <code>AssetModelCompositeModel</code>. If you want to see information about the model this is based on, call <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html\">DescribeAssetModelCompositeModel</a>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeAssetModel":{
      "name":"DescribeAssetModel",
      "http":{
        "method":"GET",
        "requestUri":"/asset-models/{assetModelId}"
      },
      "input":{"shape":"DescribeAssetModelRequest"},
      "output":{"shape":"DescribeAssetModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about an asset model. This includes details about the asset model's properties, hierarchies, composite models, and any interface relationships if the asset model implements interfaces.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeAssetModelCompositeModel":{
      "name":"DescribeAssetModelCompositeModel",
      "http":{
        "method":"GET",
        "requestUri":"/asset-models/{assetModelId}/composite-models/{assetModelCompositeModelId}"
      },
      "input":{"shape":"DescribeAssetModelCompositeModelRequest"},
      "output":{"shape":"DescribeAssetModelCompositeModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about an asset model composite model (also known as an asset model component). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html\">Custom composite models (Components)</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeAssetModelInterfaceRelationship":{
      "name":"DescribeAssetModelInterfaceRelationship",
      "http":{
        "method":"GET",
        "requestUri":"/asset-models/{assetModelId}/interface/{interfaceAssetModelId}/asset-model-interface-relationship"
      },
      "input":{"shape":"DescribeAssetModelInterfaceRelationshipRequest"},
      "output":{"shape":"DescribeAssetModelInterfaceRelationshipResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about an interface relationship between an asset model and an interface asset model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeAssetProperty":{
      "name":"DescribeAssetProperty",
      "http":{
        "method":"GET",
        "requestUri":"/assets/{assetId}/properties/{propertyId}"
      },
      "input":{"shape":"DescribeAssetPropertyRequest"},
      "output":{"shape":"DescribeAssetPropertyResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about an asset property.</p> <note> <p>When you call this operation for an attribute property, this response includes the default attribute value that you define in the asset model. If you update the default value in the model, this operation's response includes the new default value.</p> </note> <p>This operation doesn't return the value of the asset property. To get the value of an asset property, use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html\">GetAssetPropertyValue</a>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeBulkImportJob":{
      "name":"DescribeBulkImportJob",
      "http":{
        "method":"GET",
        "requestUri":"/jobs/{jobId}"
      },
      "input":{"shape":"DescribeBulkImportJobRequest"},
      "output":{"shape":"DescribeBulkImportJobResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a bulk import job request. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/DescribeBulkImportJob.html\">Describe a bulk import job (CLI)</a> in the <i>Amazon Simple Storage Service User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "DescribeComputationModel":{
      "name":"DescribeComputationModel",
      "http":{
        "method":"GET",
        "requestUri":"/computation-models/{computationModelId}"
      },
      "input":{"shape":"DescribeComputationModelRequest"},
      "output":{"shape":"DescribeComputationModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a computation model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeComputationModelExecutionSummary":{
      "name":"DescribeComputationModelExecutionSummary",
      "http":{
        "method":"GET",
        "requestUri":"/computation-models/{computationModelId}/execution-summary"
      },
      "input":{"shape":"DescribeComputationModelExecutionSummaryRequest"},
      "output":{"shape":"DescribeComputationModelExecutionSummaryResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about the execution summary of a computation model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeDashboard":{
      "name":"DescribeDashboard",
      "http":{
        "method":"GET",
        "requestUri":"/dashboards/{dashboardId}",
        "responseCode":200
      },
      "input":{"shape":"DescribeDashboardRequest"},
      "output":{"shape":"DescribeDashboardResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a dashboard.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DescribeDataset":{
      "name":"DescribeDataset",
      "http":{
        "method":"GET",
        "requestUri":"/datasets/{datasetId}"
      },
      "input":{"shape":"DescribeDatasetRequest"},
      "output":{"shape":"DescribeDatasetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a dataset.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeDatasetExportJob":{
      "name":"DescribeDatasetExportJob",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/dataset-export-jobs/{jobId}",
        "responseCode":200
      },
      "input":{"shape":"DescribeDatasetExportJobRequest"},
      "output":{"shape":"DescribeDatasetExportJobResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a dataset export job.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "DescribeDefaultEncryptionConfiguration":{
      "name":"DescribeDefaultEncryptionConfiguration",
      "http":{
        "method":"GET",
        "requestUri":"/configuration/account/encryption"
      },
      "input":{"shape":"DescribeDefaultEncryptionConfigurationRequest"},
      "output":{"shape":"DescribeDefaultEncryptionConfigurationResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about the default encryption configuration for the Amazon Web Services account in the default or specified Region. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/key-management.html\">Key management</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeEnrichmentJob":{
      "name":"DescribeEnrichmentJob",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/enrichment-jobs/{jobId}",
        "responseCode":200
      },
      "input":{"shape":"DescribeEnrichmentJobRequest"},
      "output":{"shape":"DescribeEnrichmentJobResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Retrieves detailed information about a specific enrichment job, including its current status, configuration, and timestamps.</p> <h2>Use Cases</h2> <ul> <li>Monitor job progress by checking status updates with DescribeEnrichmentJob</li> <li>Retrieve the complete job configuration submitted during creation</li> <li>Debug failed jobs by examining the failureMessage field</li> <li>Track job lifecycle with creation, update, completion, and cancellation timestamps</li> </ul> <h2>Status Monitoring</h2> <p>Jobs progress through statuses: PENDING → RUNNING → terminal state</p> <p>Terminal states:</p> <ul> <li>COMPLETED: Job finished successfully; query IoT SiteWise for semantic search results</li> <li>FAILED: Job encountered an error; check failureMessage for details</li> <li>TIMED_OUT: Job exceeded maximum processing time</li> <li>CANCELLED: Job was cancelled via CancelEnrichmentJob</li> </ul> <h2>Response Fields</h2> <p>The response includes:</p> <ul> <li>Current job status and type</li> <li>Full job configuration as originally submitted</li> <li>Lifecycle timestamps (created, updated, completed, cancelled)</li> <li>Failure details if status is FAILED</li> </ul>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "DescribeExecution":{
      "name":"DescribeExecution",
      "http":{
        "method":"GET",
        "requestUri":"/executions/{executionId}"
      },
      "input":{"shape":"DescribeExecutionRequest"},
      "output":{"shape":"DescribeExecutionResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about the execution.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeGateway":{
      "name":"DescribeGateway",
      "http":{
        "method":"GET",
        "requestUri":"/20200301/gateways/{gatewayId}"
      },
      "input":{"shape":"DescribeGatewayRequest"},
      "output":{"shape":"DescribeGatewayResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a gateway.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeGatewayCapabilityConfiguration":{
      "name":"DescribeGatewayCapabilityConfiguration",
      "http":{
        "method":"GET",
        "requestUri":"/20200301/gateways/{gatewayId}/capability/{capabilityNamespace}"
      },
      "input":{"shape":"DescribeGatewayCapabilityConfigurationRequest"},
      "output":{"shape":"DescribeGatewayCapabilityConfigurationResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Each gateway capability defines data sources for a gateway. This is the namespace of the gateway capability.</p> <p>. The namespace follows the format <code>service:capability:version</code>, where:</p> <ul> <li> <p> <code>service</code> - The service providing the capability, or <code>iotsitewise</code>.</p> </li> <li> <p> <code>capability</code> - The specific capability type. Options include: <code>opcuacollector</code> for the OPC UA data source collector, or <code>publisher</code> for data publisher capability.</p> </li> <li> <p> <code>version</code> - The version number of the capability. Option include <code>2</code> for Classic streams, V2 gateways, and <code>3</code> for MQTT-enabled, V3 gateways.</p> </li> </ul> <p>After updating a capability configuration, the sync status becomes <code>OUT_OF_SYNC</code> until the gateway processes the configuration.Use <code>DescribeGatewayCapabilityConfiguration</code> to check the sync status and verify the configuration was applied.</p> <p>A gateway can have multiple capability configurations with different namespaces.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeLoggingOptions":{
      "name":"DescribeLoggingOptions",
      "http":{
        "method":"GET",
        "requestUri":"/logging"
      },
      "input":{"shape":"DescribeLoggingOptionsRequest"},
      "output":{"shape":"DescribeLoggingOptionsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Retrieves the current IoT SiteWise logging options.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribePipeline":{
      "name":"DescribePipeline",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/pipelines/{pipelineName}",
        "responseCode":200
      },
      "input":{"shape":"DescribePipelineRequest"},
      "output":{"shape":"DescribePipelineResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves detailed information about a specific pipeline in a workspace.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "DescribePipelineExecution":{
      "name":"DescribePipelineExecution",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/pipelines/{pipelineName}/executions/{pipelineExecutionId}",
        "responseCode":200
      },
      "input":{"shape":"DescribePipelineExecutionRequest"},
      "output":{"shape":"DescribePipelineExecutionResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves detailed information about a specific pipeline execution, including the overall execution status and the status of each individual compute node. Use this operation to monitor execution progress and inspect per-node results, environment variables, and error details.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "DescribePortal":{
      "name":"DescribePortal",
      "http":{
        "method":"GET",
        "requestUri":"/portals/{portalId}",
        "responseCode":200
      },
      "input":{"shape":"DescribePortalRequest"},
      "output":{"shape":"DescribePortalResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a portal.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DescribeProject":{
      "name":"DescribeProject",
      "http":{
        "method":"GET",
        "requestUri":"/projects/{projectId}",
        "responseCode":200
      },
      "input":{"shape":"DescribeProjectRequest"},
      "output":{"shape":"DescribeProjectResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "DescribeQuery":{
      "name":"DescribeQuery",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/queries/{queryId}",
        "responseCode":200
      },
      "input":{"shape":"DescribeQueryRequest"},
      "output":{"shape":"DescribeQueryResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a query, including its status.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "DescribeSearch":{
      "name":"DescribeSearch",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/searches/{searchId}",
        "responseCode":200
      },
      "input":{"shape":"DescribeSearchRequest"},
      "output":{"shape":"DescribeSearchResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Returns the current status and metadata of a single search, including the query that was submitted, the search type, and — when the search has failed — the reason. Use this to poll a search started with <code>StartSearch</code> until it reaches a terminal status (<code>SUCCEEDED</code> or <code>FAILED</code>).</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "DescribeStorageConfiguration":{
      "name":"DescribeStorageConfiguration",
      "http":{
        "method":"GET",
        "requestUri":"/configuration/account/storage"
      },
      "input":{"shape":"DescribeStorageConfigurationRequest"},
      "output":{"shape":"DescribeStorageConfigurationResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Retrieves information about the storage configuration for IoT SiteWise.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeTask":{
      "name":"DescribeTask",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/tasks/{taskName}",
        "responseCode":200
      },
      "input":{"shape":"DescribeTaskRequest"},
      "output":{"shape":"DescribeTaskResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves detailed information about a specific task in a workspace.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "DescribeTimeSeries":{
      "name":"DescribeTimeSeries",
      "http":{
        "method":"GET",
        "requestUri":"/timeseries/describe/"
      },
      "input":{"shape":"DescribeTimeSeriesRequest"},
      "output":{"shape":"DescribeTimeSeriesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a time series (data stream).</p> <p>To identify a time series, do one of the following:</p> <ul> <li> <p>If the time series isn't associated with an asset property, specify the <code>alias</code> of the time series.</p> </li> <li> <p>If the time series is associated with an asset property, specify one of the following: </p> <ul> <li> <p>The <code>alias</code> of the time series.</p> </li> <li> <p>The <code>assetId</code> and <code>propertyId</code> that identifies the asset property.</p> </li> </ul> </li> </ul>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DescribeWorkspace":{
      "name":"DescribeWorkspace",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}"
      },
      "input":{"shape":"DescribeWorkspaceRequest"},
      "output":{"shape":"DescribeWorkspaceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p>Retrieves information about a workspace.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "DisassociateAssets":{
      "name":"DisassociateAssets",
      "http":{
        "method":"POST",
        "requestUri":"/assets/{assetId}/disassociate"
      },
      "input":{"shape":"DisassociateAssetsRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Disassociates a child asset from the given parent asset through a hierarchy defined in the parent asset's model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DisassociateTimeSeriesFromAssetProperty":{
      "name":"DisassociateTimeSeriesFromAssetProperty",
      "http":{
        "method":"POST",
        "requestUri":"/timeseries/disassociate/"
      },
      "input":{"shape":"DisassociateTimeSeriesFromAssetPropertyRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Disassociates a time series (data stream) from an asset property.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ExecuteAction":{
      "name":"ExecuteAction",
      "http":{
        "method":"POST",
        "requestUri":"/actions",
        "responseCode":202
      },
      "input":{"shape":"ExecuteActionRequest"},
      "output":{"shape":"ExecuteActionResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Executes an action on a target resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ExecuteQuery":{
      "name":"ExecuteQuery",
      "http":{
        "method":"POST",
        "requestUri":"/queries/execution"
      },
      "input":{"shape":"ExecuteQueryRequest"},
      "output":{"shape":"ExecuteQueryResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"QueryTimeoutException"},
        {"shape":"InternalFailureException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Run SQL queries to retrieve metadata and time-series data from asset models, assets, measurements, metrics, transforms, and aggregates.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "GetAssetPropertyAggregates":{
      "name":"GetAssetPropertyAggregates",
      "http":{
        "method":"GET",
        "requestUri":"/properties/aggregates"
      },
      "input":{"shape":"GetAssetPropertyAggregatesRequest"},
      "output":{"shape":"GetAssetPropertyAggregatesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Gets aggregated values for an asset property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#aggregates\">Querying aggregates</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>",
      "endpoint":{"hostPrefix":"data."}
    },
    "GetAssetPropertyValue":{
      "name":"GetAssetPropertyValue",
      "http":{
        "method":"GET",
        "requestUri":"/properties/latest"
      },
      "input":{"shape":"GetAssetPropertyValueRequest"},
      "output":{"shape":"GetAssetPropertyValueResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Gets an asset property's current value. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#current-values\">Querying current values</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>",
      "endpoint":{"hostPrefix":"data."}
    },
    "GetAssetPropertyValueHistory":{
      "name":"GetAssetPropertyValueHistory",
      "http":{
        "method":"GET",
        "requestUri":"/properties/history"
      },
      "input":{"shape":"GetAssetPropertyValueHistoryRequest"},
      "output":{"shape":"GetAssetPropertyValueHistoryResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Gets the history of an asset property's values. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#historical-values\">Querying historical values</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>",
      "endpoint":{"hostPrefix":"data."}
    },
    "GetCaptureData":{
      "name":"GetCaptureData",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/get-capture-data",
        "responseCode":200
      },
      "input":{"shape":"GetCaptureDataRequest"},
      "output":{"shape":"GetCaptureDataResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves video data for a specific time range.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "GetInterpolatedAssetPropertyValues":{
      "name":"GetInterpolatedAssetPropertyValues",
      "http":{
        "method":"GET",
        "requestUri":"/properties/interpolated"
      },
      "input":{"shape":"GetInterpolatedAssetPropertyValuesRequest"},
      "output":{"shape":"GetInterpolatedAssetPropertyValuesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>Get interpolated values for an asset property for a specified time interval, during a period of time. If your time series is missing data points during the specified time interval, you can use interpolation to estimate the missing data.</p> <p>For example, you can use this operation to return the interpolated temperature values for a wind turbine every 24 hours over a duration of 7 days.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>",
      "endpoint":{"hostPrefix":"data."}
    },
    "GetQueryResults":{
      "name":"GetQueryResults",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/queries/{queryId}/results",
        "responseCode":200
      },
      "input":{"shape":"GetQueryResultsRequest"},
      "output":{"shape":"GetQueryResultsResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves the paginated results of a query. Returns empty rows if the query is not yet complete.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "GetSearchResults":{
      "name":"GetSearchResults",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/searches/{searchId}/results",
        "responseCode":200
      },
      "input":{"shape":"GetSearchResultsRequest"},
      "output":{"shape":"GetSearchResultsResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves the ranked results of a search, ordered by descending relevance score. Results are available only after the search has reached the <code>SUCCEEDED</code> status. Calling this on a search that exists but has not yet completed returns <code>InvalidRequestException</code>, while calling it on a search that does not exist returns <code>ResourceNotFoundException</code>. The response is paginated: when <code>nextToken</code> is present, pass it on a subsequent call to retrieve the next page.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "InvokeAssistant":{
      "name":"InvokeAssistant",
      "http":{
        "method":"POST",
        "requestUri":"/assistant/invocation",
        "responseCode":200
      },
      "input":{"shape":"InvokeAssistantRequest"},
      "output":{"shape":"InvokeAssistantResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"LimitExceededException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Invokes SiteWise Assistant to start or continue a conversation.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "ListAccessPolicies":{
      "name":"ListAccessPolicies",
      "http":{
        "method":"GET",
        "requestUri":"/access-policies",
        "responseCode":200
      },
      "input":{"shape":"ListAccessPoliciesRequest"},
      "output":{"shape":"ListAccessPoliciesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of access policies for an identity (an IAM Identity Center user, an IAM Identity Center group, or an IAM user) or an IoT SiteWise Monitor resource (a portal or project).</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "ListActions":{
      "name":"ListActions",
      "http":{
        "method":"GET",
        "requestUri":"/actions"
      },
      "input":{"shape":"ListActionsRequest"},
      "output":{"shape":"ListActionsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of actions for a specific target resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListApplications":{
      "name":"ListApplications",
      "http":{
        "method":"GET",
        "requestUri":"/applications",
        "responseCode":200
      },
      "input":{"shape":"ListApplicationsRequest"},
      "output":{"shape":"ListApplicationsResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of existing applications</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "ListAssetModelCompositeModels":{
      "name":"ListAssetModelCompositeModels",
      "http":{
        "method":"GET",
        "requestUri":"/asset-models/{assetModelId}/composite-models"
      },
      "input":{"shape":"ListAssetModelCompositeModelsRequest"},
      "output":{"shape":"ListAssetModelCompositeModelsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Retrieves a paginated list of composite models associated with the asset model</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListAssetModelProperties":{
      "name":"ListAssetModelProperties",
      "http":{
        "method":"GET",
        "requestUri":"/asset-models/{assetModelId}/properties"
      },
      "input":{"shape":"ListAssetModelPropertiesRequest"},
      "output":{"shape":"ListAssetModelPropertiesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of properties associated with an asset model. If you update properties associated with the model before you finish listing all the properties, you need to start all over again.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListAssetModels":{
      "name":"ListAssetModels",
      "http":{
        "method":"GET",
        "requestUri":"/asset-models"
      },
      "input":{"shape":"ListAssetModelsRequest"},
      "output":{"shape":"ListAssetModelsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of summaries of all asset models.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListAssetProperties":{
      "name":"ListAssetProperties",
      "http":{
        "method":"GET",
        "requestUri":"/assets/{assetId}/properties"
      },
      "input":{"shape":"ListAssetPropertiesRequest"},
      "output":{"shape":"ListAssetPropertiesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of properties associated with an asset. If you update properties associated with the model before you finish listing all the properties, you need to start all over again.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListAssetRelationships":{
      "name":"ListAssetRelationships",
      "http":{
        "method":"GET",
        "requestUri":"/assets/{assetId}/assetRelationships"
      },
      "input":{"shape":"ListAssetRelationshipsRequest"},
      "output":{"shape":"ListAssetRelationshipsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of asset relationships for an asset. You can use this operation to identify an asset's root asset and all associated assets between that asset and its root.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListAssets":{
      "name":"ListAssets",
      "http":{
        "method":"GET",
        "requestUri":"/assets"
      },
      "input":{"shape":"ListAssetsRequest"},
      "output":{"shape":"ListAssetsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of asset summaries.</p> <p>You can use this operation to do the following:</p> <ul> <li> <p>List assets based on a specific asset model.</p> </li> <li> <p>List top-level assets.</p> </li> </ul> <p>You can't use this operation to list all assets. To retrieve summaries for all of your assets, use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html\">ListAssetModels</a> to get all of your asset model IDs. Then, use ListAssets to get all assets for each asset model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListAssociatedAssets":{
      "name":"ListAssociatedAssets",
      "http":{
        "method":"GET",
        "requestUri":"/assets/{assetId}/hierarchies"
      },
      "input":{"shape":"ListAssociatedAssetsRequest"},
      "output":{"shape":"ListAssociatedAssetsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of associated assets.</p> <p>You can use this operation to do the following:</p> <ul> <li> <p> <code>CHILD</code> - List all child assets associated to the asset.</p> </li> <li> <p> <code>PARENT</code> - List the asset's parent asset.</p> </li> </ul>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListBulkImportJobs":{
      "name":"ListBulkImportJobs",
      "http":{
        "method":"GET",
        "requestUri":"/jobs"
      },
      "input":{"shape":"ListBulkImportJobsRequest"},
      "output":{"shape":"ListBulkImportJobsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of bulk import job requests. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ListBulkImportJobs.html\">List bulk import jobs (CLI)</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "ListCompositionRelationships":{
      "name":"ListCompositionRelationships",
      "http":{
        "method":"GET",
        "requestUri":"/asset-models/{assetModelId}/composition-relationships"
      },
      "input":{"shape":"ListCompositionRelationshipsRequest"},
      "output":{"shape":"ListCompositionRelationshipsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of composition relationships for an asset model of type <code>COMPONENT_MODEL</code>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListComputationModelDataBindingUsages":{
      "name":"ListComputationModelDataBindingUsages",
      "http":{
        "method":"POST",
        "requestUri":"/computation-models/data-binding-usages"
      },
      "input":{"shape":"ListComputationModelDataBindingUsagesRequest"},
      "output":{"shape":"ListComputationModelDataBindingUsagesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p> Lists all data binding usages for computation models. This allows to identify where specific data bindings are being utilized across the computation models. This track dependencies between data sources and computation models. </p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListComputationModelResolveToResources":{
      "name":"ListComputationModelResolveToResources",
      "http":{
        "method":"GET",
        "requestUri":"/computation-models/{computationModelId}/resolve-to-resources"
      },
      "input":{"shape":"ListComputationModelResolveToResourcesRequest"},
      "output":{"shape":"ListComputationModelResolveToResourcesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists all distinct resources that are resolved from the executed actions of the computation model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListComputationModels":{
      "name":"ListComputationModels",
      "http":{
        "method":"GET",
        "requestUri":"/computation-models"
      },
      "input":{"shape":"ListComputationModelsRequest"},
      "output":{"shape":"ListComputationModelsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of summaries of all computation models.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListDashboards":{
      "name":"ListDashboards",
      "http":{
        "method":"GET",
        "requestUri":"/dashboards",
        "responseCode":200
      },
      "input":{"shape":"ListDashboardsRequest"},
      "output":{"shape":"ListDashboardsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of dashboards for an IoT SiteWise Monitor project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "ListDatasetDataSegmentRelationships":{
      "name":"ListDatasetDataSegmentRelationships",
      "http":{
        "method":"GET",
        "requestUri":"/datasets/{datasetId}/data-segment-relationships"
      },
      "input":{"shape":"ListDatasetDataSegmentRelationshipsRequest"},
      "output":{"shape":"ListDatasetDataSegmentRelationshipsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of data segment relationships for a session dataset. Use this operation to find the curated datasets that reference data segments of the specified session dataset. Use the <code>nextToken</code> parameter to retrieve additional results.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "ListDatasetDataSegments":{
      "name":"ListDatasetDataSegments",
      "http":{
        "method":"GET",
        "requestUri":"/datasets/{datasetId}/data-segments"
      },
      "input":{"shape":"ListDatasetDataSegmentsRequest"},
      "output":{"shape":"ListDatasetDataSegmentsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of data segments associated with a dataset. Use the <code>nextToken</code> parameter to retrieve additional results.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "ListDatasetExportJobs":{
      "name":"ListDatasetExportJobs",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/dataset-export-jobs",
        "responseCode":200
      },
      "input":{"shape":"ListDatasetExportJobsRequest"},
      "output":{"shape":"ListDatasetExportJobsResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of dataset export jobs for a workspace.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "ListDatasets":{
      "name":"ListDatasets",
      "http":{
        "method":"GET",
        "requestUri":"/datasets"
      },
      "input":{"shape":"ListDatasetsRequest"},
      "output":{"shape":"ListDatasetsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of datasets for a specific target resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListEnrichmentJobs":{
      "name":"ListEnrichmentJobs",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/enrichment-jobs",
        "responseCode":200
      },
      "input":{"shape":"ListEnrichmentJobsRequest"},
      "output":{"shape":"ListEnrichmentJobsResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Lists enrichment jobs within a workspace with optional filtering and pagination. Results are ordered by createdAt timestamp descending (newest first).</p> <h2>Filtering</h2> <p>Combine filters to narrow results:</p> <ul> <li><strong>datasetId</strong>: Filter by dataset</li> <li><strong>propertyAlias</strong> OR <strong>timeSeriesId</strong>: Filter by time series (specify one, not both)</li> <li><strong>status</strong>: Filter by job status (e.g., RUNNING to find active jobs)</li> <li><strong>jobType</strong>: Filter by enrichment type (currently only EVENT_DETECTION)</li> <li><strong>startDate</strong> and <strong>endDate</strong>: Filter by job creation time range</li> </ul> <h2>Important Constraints</h2> <ul> <li>You must specify either propertyAlias OR timeSeriesId, but not both</li> <li>Attempting to specify both results in an InvalidRequestException</li> <li>Date filters use ISO 8601 format</li> <li>startDate is exclusive, endDate is inclusive</li> </ul> <h2>Pagination</h2> <p>The operation returns up to maxResults jobs per page (default 50). If more results exist, the response includes a nextToken. Submit this token in a subsequent request to retrieve the next page.</p> <h2>Common Use Cases</h2> <ul> <li>Find all running jobs: Filter by status=RUNNING</li> <li>List recent jobs for a dataset: Filter by datasetId with optional date range</li> <li>Monitor jobs for a specific sensor: Filter by propertyAlias or timeSeriesId</li> <li>Track all event detection jobs: Filter by jobType=EVENT_DETECTION</li> </ul> <h2>Performance</h2> <p>Performance is optimal when filtering by supported fields (datasetId, propertyAlias, timeSeriesId, status, jobType).</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "ListExecutions":{
      "name":"ListExecutions",
      "http":{
        "method":"GET",
        "requestUri":"/executions"
      },
      "input":{"shape":"ListExecutionsRequest"},
      "output":{"shape":"ListExecutionsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of summaries of all executions.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListGateways":{
      "name":"ListGateways",
      "http":{
        "method":"GET",
        "requestUri":"/20200301/gateways"
      },
      "input":{"shape":"ListGatewaysRequest"},
      "output":{"shape":"ListGatewaysResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of gateways.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListInterfaceRelationships":{
      "name":"ListInterfaceRelationships",
      "http":{
        "method":"GET",
        "requestUri":"/interface/{interfaceAssetModelId}/asset-models"
      },
      "input":{"shape":"ListInterfaceRelationshipsRequest"},
      "output":{"shape":"ListInterfaceRelationshipsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of asset models that have a specific interface asset model applied to them.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListPipelineExecutions":{
      "name":"ListPipelineExecutions",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/pipelines/{pipelineName}/executions",
        "responseCode":200
      },
      "input":{"shape":"ListPipelineExecutionsRequest"},
      "output":{"shape":"ListPipelineExecutionsResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists pipeline executions for a specific pipeline in a workspace. Supports filtering by state and time range. State can be combined with either startTime or endTime filters. Time range filters are grouped: use startTime filters (startTimeAfter, startTimeBefore) or endTime filters (endTimeAfter, endTimeBefore), but not both. Combining startTime and endTime filters returns an InvalidRequestException. Note: endTime filters only return executions in terminal states, as in-progress executions have no endTime.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "ListPipelines":{
      "name":"ListPipelines",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/pipelines",
        "responseCode":200
      },
      "input":{"shape":"ListPipelinesRequest"},
      "output":{"shape":"ListPipelinesResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists pipelines in a workspace. To get complete details about a pipeline, use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribePipeline.html\">DescribePipeline</a>.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "ListPortals":{
      "name":"ListPortals",
      "http":{
        "method":"GET",
        "requestUri":"/portals",
        "responseCode":200
      },
      "input":{"shape":"ListPortalsRequest"},
      "output":{"shape":"ListPortalsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of IoT SiteWise Monitor portals.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "ListProjectAssets":{
      "name":"ListProjectAssets",
      "http":{
        "method":"GET",
        "requestUri":"/projects/{projectId}/assets",
        "responseCode":200
      },
      "input":{"shape":"ListProjectAssetsRequest"},
      "output":{"shape":"ListProjectAssetsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of assets associated with an IoT SiteWise Monitor project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "ListProjects":{
      "name":"ListProjects",
      "http":{
        "method":"GET",
        "requestUri":"/projects",
        "responseCode":200
      },
      "input":{"shape":"ListProjectsRequest"},
      "output":{"shape":"ListProjectsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of projects for an IoT SiteWise Monitor portal.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "ListQueries":{
      "name":"ListQueries",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/queries",
        "responseCode":200
      },
      "input":{"shape":"ListQueriesRequest"},
      "output":{"shape":"ListQueriesResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of queries for a workspace.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "ListSearches":{
      "name":"ListSearches",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/searches/list",
        "responseCode":200
      },
      "input":{"shape":"ListSearchesRequest"},
      "output":{"shape":"ListSearchesResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists the searches in a workspace, most recently started first. Results can be narrowed with optional filters (status, search type, group, and started-at time range) and are paginated: when <code>nextToken</code> is present, pass it on a subsequent call to retrieve the next page.</p>",
      "endpoint":{"hostPrefix":"data."},
      "readonly":true
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"LimitExceededException"},
        {"shape":"UnauthorizedException"}
      ],
      "documentation":"<p>Retrieves the list of tags for an IoT SiteWise resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListTasks":{
      "name":"ListTasks",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceName}/tasks",
        "responseCode":200
      },
      "input":{"shape":"ListTasksRequest"},
      "output":{"shape":"ListTasksResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Lists tasks in a workspace. To get complete details about a task, use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeTask.html\">DescribeTask</a>.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "ListTimeSeries":{
      "name":"ListTimeSeries",
      "http":{
        "method":"GET",
        "requestUri":"/timeseries/"
      },
      "input":{"shape":"ListTimeSeriesRequest"},
      "output":{"shape":"ListTimeSeriesResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves a paginated list of time series (data streams).</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListWorkspaces":{
      "name":"ListWorkspaces",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces"
      },
      "input":{"shape":"ListWorkspacesRequest"},
      "output":{"shape":"ListWorkspacesResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p>Retrieves a paginated list of workspaces. Use the <code>nextToken</code> parameter to retrieve additional results.</p>",
      "endpoint":{"hostPrefix":"api."},
      "readonly":true
    },
    "PutAssetModelInterfaceRelationship":{
      "name":"PutAssetModelInterfaceRelationship",
      "http":{
        "method":"PUT",
        "requestUri":"/asset-models/{assetModelId}/interface/{interfaceAssetModelId}/asset-model-interface-relationship",
        "responseCode":202
      },
      "input":{"shape":"PutAssetModelInterfaceRelationshipRequest"},
      "output":{"shape":"PutAssetModelInterfaceRelationshipResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Creates or updates an interface relationship between an asset model and an interface asset model. This operation applies an interface to an asset model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "PutDefaultEncryptionConfiguration":{
      "name":"PutDefaultEncryptionConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/configuration/account/encryption"
      },
      "input":{"shape":"PutDefaultEncryptionConfigurationRequest"},
      "output":{"shape":"PutDefaultEncryptionConfigurationResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Sets the default encryption configuration for the Amazon Web Services account. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/key-management.html\">Key management</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "PutLoggingOptions":{
      "name":"PutLoggingOptions",
      "http":{
        "method":"PUT",
        "requestUri":"/logging"
      },
      "input":{"shape":"PutLoggingOptionsRequest"},
      "output":{"shape":"PutLoggingOptionsResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalFailureException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Sets logging options for IoT SiteWise.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "PutStorageConfiguration":{
      "name":"PutStorageConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/configuration/account/storage"
      },
      "input":{"shape":"PutStorageConfigurationRequest"},
      "output":{"shape":"PutStorageConfigurationResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Configures storage settings for IoT SiteWise.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "StartPipelineExecution":{
      "name":"StartPipelineExecution",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/pipelines/{pipelineName}/executions",
        "responseCode":202
      },
      "input":{"shape":"StartPipelineExecutionRequest"},
      "output":{"shape":"StartPipelineExecutionResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"LimitExceededException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Starts execution of a pipeline in the specified workspace. Each compute node runs according to the DAG dependency order defined in the pipeline. Nodes without dependencies start immediately, while dependent nodes wait for all upstream nodes to complete successfully.</p> <p>You can provide runtime environment variable overrides that take the highest priority in the environment variable hierarchy, without modifying the pipeline definition.</p>",
      "endpoint":{"hostPrefix":"data."},
      "idempotent":true
    },
    "StartQuery":{
      "name":"StartQuery",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/queries",
        "responseCode":202
      },
      "input":{"shape":"StartQueryRequest"},
      "output":{"shape":"StartQueryResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Starts an asynchronous SQL query against workspace telemetry, annotations, data segment, and dataset data.</p>",
      "endpoint":{"hostPrefix":"data."},
      "idempotent":true
    },
    "StartSearch":{
      "name":"StartSearch",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceName}/searches",
        "responseCode":202
      },
      "input":{"shape":"StartSearchRequest"},
      "output":{"shape":"StartSearchResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"LimitExceededException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Starts an asynchronous search over the data in a workspace. The search runs in the background; the response returns immediately with a <code>searchId</code> and an initial status of <code>QUEUED</code>. Use <code>DescribeSearch</code> to poll for completion and <code>GetSearchResults</code> to retrieve the results once the search reaches <code>SUCCEEDED</code>. The request is idempotent on <code>clientToken</code>: repeating a call with the same token returns the original search instead of starting a new one.</p>",
      "endpoint":{"hostPrefix":"data."},
      "idempotent":true
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"LimitExceededException"},
        {"shape":"UnauthorizedException"},
        {"shape":"TooManyTagsException"}
      ],
      "documentation":"<p>Adds tags to an IoT SiteWise resource. If a tag already exists for the resource, this operation updates the tag's value.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"LimitExceededException"},
        {"shape":"UnauthorizedException"}
      ],
      "documentation":"<p>Removes a tag from an IoT SiteWise resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateAccessPolicy":{
      "name":"UpdateAccessPolicy",
      "http":{
        "method":"PUT",
        "requestUri":"/access-policies/{accessPolicyId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateAccessPolicyRequest"},
      "output":{"shape":"UpdateAccessPolicyResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Updates an existing access policy that specifies an identity's access to an IoT SiteWise Monitor portal or project resource.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "UpdateAsset":{
      "name":"UpdateAsset",
      "http":{
        "method":"PUT",
        "requestUri":"/assets/{assetId}",
        "responseCode":202
      },
      "input":{"shape":"UpdateAssetRequest"},
      "output":{"shape":"UpdateAssetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Updates an asset's name. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html\">Updating assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateAssetModel":{
      "name":"UpdateAssetModel",
      "http":{
        "method":"PUT",
        "requestUri":"/asset-models/{assetModelId}",
        "responseCode":202
      },
      "input":{"shape":"UpdateAssetModelRequest"},
      "output":{"shape":"UpdateAssetModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"PreconditionFailedException"}
      ],
      "documentation":"<p>Updates an asset model and all of the assets that were created from the model. Each asset created from the model inherits the updated asset model's property and hierarchy definitions. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html\">Updating assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p> <important> <p>If you remove a property from an asset model, IoT SiteWise deletes all previous data for that property. You can’t change the type or data type of an existing property.</p> <p>To replace an existing asset model property with a new one with the same <code>name</code>, do the following:</p> <ol> <li> <p>Submit an <code>UpdateAssetModel</code> request with the entire existing property removed.</p> </li> <li> <p>Submit a second <code>UpdateAssetModel</code> request that includes the new property. The new asset property will have the same <code>name</code> as the previous one and IoT SiteWise will generate a new unique <code>id</code>.</p> </li> </ol> </important>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateAssetModelCompositeModel":{
      "name":"UpdateAssetModelCompositeModel",
      "http":{
        "method":"PUT",
        "requestUri":"/asset-models/{assetModelId}/composite-models/{assetModelCompositeModelId}",
        "responseCode":202
      },
      "input":{"shape":"UpdateAssetModelCompositeModelRequest"},
      "output":{"shape":"UpdateAssetModelCompositeModelResponse"},
      "errors":[
        {"shape":"ConflictingOperationException"},
        {"shape":"PreconditionFailedException"},
        {"shape":"InternalFailureException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Updates a composite model and all of the assets that were created from the model. Each asset created from the model inherits the updated asset model's property and hierarchy definitions. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html\">Updating assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p> <important> <p>If you remove a property from a composite asset model, IoT SiteWise deletes all previous data for that property. You can’t change the type or data type of an existing property.</p> <p>To replace an existing composite asset model property with a new one with the same <code>name</code>, do the following:</p> <ol> <li> <p>Submit an <code>UpdateAssetModelCompositeModel</code> request with the entire existing property removed.</p> </li> <li> <p>Submit a second <code>UpdateAssetModelCompositeModel</code> request that includes the new property. The new asset property will have the same <code>name</code> as the previous one and IoT SiteWise will generate a new unique <code>id</code>.</p> </li> </ol> </important>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateAssetProperty":{
      "name":"UpdateAssetProperty",
      "http":{
        "method":"PUT",
        "requestUri":"/assets/{assetId}/properties/{propertyId}"
      },
      "input":{"shape":"UpdateAssetPropertyRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Updates an asset property's alias and notification state.</p> <important> <p>This operation overwrites the property's existing alias and notification state. To keep your existing property's alias or notification state, you must include the existing values in the UpdateAssetProperty request. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetProperty.html\">DescribeAssetProperty</a>.</p> </important>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateComputationModel":{
      "name":"UpdateComputationModel",
      "http":{
        "method":"POST",
        "requestUri":"/computation-models/{computationModelId}",
        "responseCode":202
      },
      "input":{"shape":"UpdateComputationModelRequest"},
      "output":{"shape":"UpdateComputationModelResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Updates the computation model.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateDashboard":{
      "name":"UpdateDashboard",
      "http":{
        "method":"PUT",
        "requestUri":"/dashboards/{dashboardId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateDashboardRequest"},
      "output":{"shape":"UpdateDashboardResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Updates an IoT SiteWise Monitor dashboard.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "UpdateDataset":{
      "name":"UpdateDataset",
      "http":{
        "method":"PUT",
        "requestUri":"/datasets/{datasetId}",
        "responseCode":202
      },
      "input":{"shape":"UpdateDatasetRequest"},
      "output":{"shape":"UpdateDatasetResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Updates a dataset.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateGateway":{
      "name":"UpdateGateway",
      "http":{
        "method":"PUT",
        "requestUri":"/20200301/gateways/{gatewayId}"
      },
      "input":{"shape":"UpdateGatewayRequest"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Updates a gateway's name.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateGatewayCapabilityConfiguration":{
      "name":"UpdateGatewayCapabilityConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/20200301/gateways/{gatewayId}/capability",
        "responseCode":201
      },
      "input":{"shape":"UpdateGatewayCapabilityConfigurationRequest"},
      "output":{"shape":"UpdateGatewayCapabilityConfigurationResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Updates a gateway capability configuration or defines a new capability configuration. Each gateway capability defines data sources for a gateway.</p> <p>Important workflow notes:</p> <p>Each gateway capability defines data sources for a gateway. This is the namespace of the gateway capability.</p> <p>. The namespace follows the format <code>service:capability:version</code>, where:</p> <ul> <li> <p> <code>service</code> - The service providing the capability, or <code>iotsitewise</code>.</p> </li> <li> <p> <code>capability</code> - The specific capability type. Options include: <code>opcuacollector</code> for the OPC UA data source collector, or <code>publisher</code> for data publisher capability.</p> </li> <li> <p> <code>version</code> - The version number of the capability. Option include <code>2</code> for Classic streams, V2 gateways, and <code>3</code> for MQTT-enabled, V3 gateways.</p> </li> </ul> <p>After updating a capability configuration, the sync status becomes <code>OUT_OF_SYNC</code> until the gateway processes the configuration.Use <code>DescribeGatewayCapabilityConfiguration</code> to check the sync status and verify the configuration was applied.</p> <p>A gateway can have multiple capability configurations with different namespaces.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdatePipeline":{
      "name":"UpdatePipeline",
      "http":{
        "method":"PUT",
        "requestUri":"/workspaces/{workspaceName}/pipelines/{pipelineName}",
        "responseCode":200
      },
      "input":{"shape":"UpdatePipelineRequest"},
      "output":{"shape":"UpdatePipelineResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"LimitExceededException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Updates an existing pipeline in the specified workspace. Only the fields provided in the request are updated; fields not included in the request are preserved unchanged. You can update the pipeline description, environment variables, and the list of compute nodes independently.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "UpdatePortal":{
      "name":"UpdatePortal",
      "http":{
        "method":"PUT",
        "requestUri":"/portals/{portalId}",
        "responseCode":202
      },
      "input":{"shape":"UpdatePortalRequest"},
      "output":{"shape":"UpdatePortalResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Updates an IoT SiteWise Monitor portal.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "UpdateProject":{
      "name":"UpdateProject",
      "http":{
        "method":"PUT",
        "requestUri":"/projects/{projectId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateProjectRequest"},
      "output":{"shape":"UpdateProjectResponse"},
      "errors":[
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<important> <p>The IoT SiteWise Monitor feature will no longer be open to new customers starting November 7, 2025. If you would like to use the IoT SiteWise Monitor feature, sign up prior to that date. Existing customers can continue to use the service as normal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-monitor-availability-change.html\">IoT SiteWise Monitor availability change</a>.</p> </important> <p>Updates an IoT SiteWise Monitor project.</p>",
      "endpoint":{"hostPrefix":"monitor."}
    },
    "UpdateTask":{
      "name":"UpdateTask",
      "http":{
        "method":"PUT",
        "requestUri":"/workspaces/{workspaceName}/tasks/{taskName}",
        "responseCode":200
      },
      "input":{"shape":"UpdateTaskRequest"},
      "output":{"shape":"UpdateTaskResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ConflictingOperationException"}
      ],
      "documentation":"<p>Updates an existing task in the specified workspace. Only the fields provided in the request are updated; fields not included in the request are preserved unchanged.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    },
    "UpdateWorkspace":{
      "name":"UpdateWorkspace",
      "http":{
        "method":"PUT",
        "requestUri":"/workspaces/{workspaceName}"
      },
      "input":{"shape":"UpdateWorkspaceRequest"},
      "output":{"shape":"UpdateWorkspaceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidRequestException"},
        {"shape":"ConflictingOperationException"},
        {"shape":"ThrottlingException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p>Updates a workspace. You can update only workspaces in the <code>ACTIVE</code> or <code>FAILED</code> state. Fields that you omit from the request are left unchanged. To recover a workspace in the <code>FAILED</code> state, call this operation and supply its encryption configuration again.</p>",
      "endpoint":{"hostPrefix":"api."},
      "idempotent":true
    }
  },
  "shapes":{
    "ARN":{
      "type":"string",
      "max":1600,
      "min":1,
      "pattern":"^arn:aws(-cn|-us-gov)?:[a-zA-Z0-9-:\\/_\\.]+$"
    },
    "AccessDeniedException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>Access is denied.</p>",
      "error":{"httpStatusCode":403},
      "exception":true
    },
    "AccessPolicySummaries":{
      "type":"list",
      "member":{"shape":"AccessPolicySummary"}
    },
    "AccessPolicySummary":{
      "type":"structure",
      "required":[
        "id",
        "identity",
        "resource",
        "permission"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the access policy.</p>"
        },
        "identity":{
          "shape":"Identity",
          "documentation":"<p>The identity (an IAM Identity Center user, an IAM Identity Center group, or an IAM user).</p>"
        },
        "resource":{
          "shape":"Resource",
          "documentation":"<p>The IoT SiteWise Monitor resource (a portal or project).</p>"
        },
        "permission":{
          "shape":"Permission",
          "documentation":"<p>The permissions for the access policy. Note that a project <code>ADMINISTRATOR</code> is also known as a project owner.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the access policy was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the access policy was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains an access policy that defines an identity's access to an IoT SiteWise Monitor resource.</p>"
    },
    "ActionDefinition":{
      "type":"structure",
      "required":[
        "actionDefinitionId",
        "actionName",
        "actionType"
      ],
      "members":{
        "actionDefinitionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action definition.</p>"
        },
        "actionName":{
          "shape":"Name",
          "documentation":"<p>The name of the action definition.</p>"
        },
        "actionType":{
          "shape":"Name",
          "documentation":"<p>The type of the action definition.</p>"
        }
      },
      "documentation":"<p>Contains a definition for an action.</p>"
    },
    "ActionDefinitions":{
      "type":"list",
      "member":{"shape":"ActionDefinition"}
    },
    "ActionPayload":{
      "type":"structure",
      "required":["stringValue"],
      "members":{
        "stringValue":{
          "shape":"ActionPayloadString",
          "documentation":"<p>The payload of the action in a JSON string.</p>"
        }
      },
      "documentation":"<p>The JSON payload of the action.</p>"
    },
    "ActionPayloadString":{
      "type":"string",
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "ActionSummaries":{
      "type":"list",
      "member":{"shape":"ActionSummary"}
    },
    "ActionSummary":{
      "type":"structure",
      "members":{
        "actionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action.</p>"
        },
        "actionDefinitionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action definition.</p>"
        },
        "targetResource":{
          "shape":"TargetResource",
          "documentation":"<p>The resource the action will be taken on.</p>"
        },
        "resolveTo":{
          "shape":"ResolveTo",
          "documentation":"<p>The detailed resource this action resolves to.</p>"
        }
      },
      "documentation":"<p>Contains the summary of the actions, including information about where the action resolves to.</p>"
    },
    "AdaptiveIngestion":{"type":"boolean"},
    "AggregateType":{
      "type":"string",
      "enum":[
        "AVERAGE",
        "COUNT",
        "MAXIMUM",
        "MINIMUM",
        "SUM",
        "STANDARD_DEVIATION"
      ]
    },
    "AggregateTypes":{
      "type":"list",
      "member":{"shape":"AggregateType"},
      "min":1
    },
    "AggregatedDoubleValue":{"type":"double"},
    "AggregatedValue":{
      "type":"structure",
      "required":[
        "timestamp",
        "value"
      ],
      "members":{
        "timestamp":{
          "shape":"Timestamp",
          "documentation":"<p>The date the aggregating computations occurred, in Unix epoch time.</p>"
        },
        "quality":{
          "shape":"Quality",
          "documentation":"<p>The quality of the aggregated data.</p>"
        },
        "value":{
          "shape":"Aggregates",
          "documentation":"<p>The value of the aggregates.</p>"
        }
      },
      "documentation":"<p>Contains aggregated asset property values (for example, average, minimum, and maximum).</p>"
    },
    "AggregatedValues":{
      "type":"list",
      "member":{"shape":"AggregatedValue"}
    },
    "Aggregates":{
      "type":"structure",
      "members":{
        "average":{
          "shape":"AggregatedDoubleValue",
          "documentation":"<p>The average (mean) value of the time series over a time interval window.</p>"
        },
        "count":{
          "shape":"AggregatedDoubleValue",
          "documentation":"<p>The count of data points in the time series over a time interval window.</p>"
        },
        "maximum":{
          "shape":"AggregatedDoubleValue",
          "documentation":"<p>The maximum value of the time series over a time interval window.</p>"
        },
        "minimum":{
          "shape":"AggregatedDoubleValue",
          "documentation":"<p>The minimum value of the time series over a time interval window.</p>"
        },
        "sum":{
          "shape":"AggregatedDoubleValue",
          "documentation":"<p>The sum of the time series over a time interval window.</p>"
        },
        "standardDeviation":{
          "shape":"AggregatedDoubleValue",
          "documentation":"<p>The standard deviation of the time series over a time interval window.</p>"
        }
      },
      "documentation":"<p>Contains the (pre-calculated) aggregate values for an asset property.</p>"
    },
    "Alarms":{
      "type":"structure",
      "required":["alarmRoleArn"],
      "members":{
        "alarmRoleArn":{
          "shape":"IamArn",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the IAM role that allows the alarm to perform actions and access Amazon Web Services resources and services, such as IoT Events.</p>"
        },
        "notificationLambdaArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the Lambda function that manages alarm notifications. For more information, see <a href=\"https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html\">Managing alarm notifications</a> in the <i>IoT Events Developer Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains the configuration information of an alarm created in an IoT SiteWise Monitor portal. You can use the alarm to monitor an asset property and get notified when the asset property value is outside a specified range. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html\">Monitoring with alarms</a> in the <i>IoT SiteWise Application Guide</i>.</p>"
    },
    "AmazonResourceName":{
      "type":"string",
      "max":1011,
      "min":1
    },
    "Annotation":{
      "type":"structure",
      "members":{},
      "documentation":"<p>The annotation format configuration for bulk import files.</p>"
    },
    "ApplicationDescription":{
      "type":"string",
      "documentation":"<p>Description of the application</p>",
      "max":2048,
      "min":1,
      "pattern":"[a-zA-Z0-9_-]+"
    },
    "ApplicationId":{
      "type":"string",
      "documentation":"<p>Unique identifier for the application</p>",
      "max":36,
      "min":36,
      "pattern":"[a-z0-9-]{36}"
    },
    "ApplicationList":{
      "type":"list",
      "member":{"shape":"ApplicationSummary"},
      "documentation":"<p>List of applications</p>"
    },
    "ApplicationName":{
      "type":"string",
      "documentation":"<p>Name of the application</p>",
      "max":256,
      "min":1,
      "pattern":"[A-Za-z0-9](?:[A-Za-z0-9 ._()\\-]*[A-Za-z0-9._()\\-])?"
    },
    "ApplicationStatus":{
      "type":"string",
      "documentation":"<p>Current status of the application</p>",
      "enum":[
        "CREATING",
        "ACTIVE",
        "DELETING"
      ]
    },
    "ApplicationSummary":{
      "type":"structure",
      "required":[
        "arn",
        "id",
        "name",
        "status",
        "createdAt",
        "workspaceName"
      ],
      "members":{
        "arn":{
          "shape":"ARN",
          "documentation":"<p>ARN of the application</p>"
        },
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>Unique identifier of the application</p>"
        },
        "name":{
          "shape":"ApplicationName",
          "documentation":"<p>Name of the application</p>"
        },
        "status":{
          "shape":"ApplicationStatus",
          "documentation":"<p>Current status of the application</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the application was created</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>Name of the workspace this application belongs to</p>"
        }
      },
      "documentation":"<p>Summary of an application for list operations</p>"
    },
    "AssetBindingValueFilter":{
      "type":"structure",
      "required":["assetId"],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset to filter data bindings by. Only data bindings referencing this specific asset are matched.</p>"
        }
      },
      "documentation":"<p>A filter used to match data bindings based on a specific asset. This filter identifies all computation models referencing a particular asset in their data bindings.</p>"
    },
    "AssetCompositeModel":{
      "type":"structure",
      "required":[
        "name",
        "type",
        "properties"
      ],
      "members":{
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the composite model.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the composite model.</p>"
        },
        "type":{
          "shape":"Name",
          "documentation":"<p>The type of the composite model. For alarm composite models, this type is <code>AWS/ALARM</code>.</p>"
        },
        "properties":{
          "shape":"AssetProperties",
          "documentation":"<p>The asset properties that this composite model defines.</p>"
        },
        "id":{
          "shape":"ID",
          "documentation":"<p> The ID of the asset composite model. </p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains information about a composite model in an asset. This object contains the asset's properties that you define in the composite model.</p>"
    },
    "AssetCompositeModelPath":{
      "type":"list",
      "member":{"shape":"AssetCompositeModelPathSegment"}
    },
    "AssetCompositeModelPathSegment":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the path segment.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the path segment.</p>"
        }
      },
      "documentation":"<p>Represents one level between a composite model and the root of the asset.</p>"
    },
    "AssetCompositeModelSummaries":{
      "type":"list",
      "member":{"shape":"AssetCompositeModelSummary"}
    },
    "AssetCompositeModelSummary":{
      "type":"structure",
      "required":[
        "id",
        "name",
        "type",
        "description",
        "path"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the composite model that this summary describes.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset model.</p> <p>If the composite model is a derived composite model, or one nested inside a component model, you can only set the external ID using <code>UpdateAssetModelCompositeModel</code> and specifying the derived ID of the model or property from the created model it's a part of.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the composite model that this summary describes.</p>"
        },
        "type":{
          "shape":"Name",
          "documentation":"<p>The type of asset model.</p> <ul> <li> <p> <b>ASSET_MODEL</b> – (default) An asset model that you can use to create assets. Can't be included as a component in another asset model.</p> </li> <li> <p> <b>COMPONENT_MODEL</b> – A reusable component that you can include in the composite models of other asset models. You can't create assets directly from this type of asset model. </p> </li> </ul>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A description of the composite model that this summary describes.</p>"
        },
        "path":{
          "shape":"AssetCompositeModelPath",
          "documentation":"<p>The path that includes all the components of the asset model for the asset.</p>"
        }
      },
      "documentation":"<p>Contains a summary of the composite model for a specific asset.</p>"
    },
    "AssetCompositeModels":{
      "type":"list",
      "member":{"shape":"AssetCompositeModel"}
    },
    "AssetErrorCode":{
      "type":"string",
      "enum":["INTERNAL_FAILURE"]
    },
    "AssetErrorDetails":{
      "type":"structure",
      "required":[
        "assetId",
        "code",
        "message"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>"
        },
        "code":{
          "shape":"AssetErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"AssetErrorMessage",
          "documentation":"<p>The error message.</p>"
        }
      },
      "documentation":"<p>Contains error details for the requested associate project asset action.</p>"
    },
    "AssetErrorMessage":{"type":"string"},
    "AssetHierarchies":{
      "type":"list",
      "member":{"shape":"AssetHierarchy"}
    },
    "AssetHierarchy":{
      "type":"structure",
      "required":["name"],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the hierarchy. This ID is a <code>hierarchyId</code>.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the hierarchy, if it has one. When you update an asset hierarchy, you may assign an external ID if it doesn't already have one. You can't change the external ID of an asset hierarchy that already has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The hierarchy name provided in the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html\">CreateAssetModel</a> or <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> API operation.</p>"
        }
      },
      "documentation":"<p>Describes an asset hierarchy that contains a hierarchy's name and ID.</p>"
    },
    "AssetHierarchyInfo":{
      "type":"structure",
      "members":{
        "parentAssetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the parent asset in this asset relationship.</p>"
        },
        "childAssetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the child asset in this asset relationship.</p>"
        }
      },
      "documentation":"<p>Contains information about a parent asset and a child asset that are related through an asset hierarchy.</p>"
    },
    "AssetIDs":{
      "type":"list",
      "member":{"shape":"ID"}
    },
    "AssetModelBindingValueFilter":{
      "type":"structure",
      "required":["assetModelId"],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model to filter data bindings by. Only data bindings referemncing this specific asset model are matched.</p>"
        }
      },
      "documentation":"<p>A filter used to match data bindings based on a specific asset model. This filter identifies all computation models referencing a particular asset model in their data bindings.</p>"
    },
    "AssetModelCompositeModel":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the composite model.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the composite model.</p>"
        },
        "type":{
          "shape":"Name",
          "documentation":"<p>The type of the composite model. For alarm composite models, this type is <code>AWS/ALARM</code>.</p>"
        },
        "properties":{
          "shape":"AssetModelProperties",
          "documentation":"<p>The asset property definitions for this composite model.</p>"
        },
        "id":{
          "shape":"CustomID",
          "documentation":"<p> The ID of the asset model composite model. </p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset model composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains information about a composite model in an asset model. This object contains the asset property definitions that you define in the composite model.</p>"
    },
    "AssetModelCompositeModelDefinition":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID to assign to the composite model, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the composite model. The external ID must be unique among composite models within this asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the composite model.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the composite model.</p>"
        },
        "type":{
          "shape":"Name",
          "documentation":"<p>The type of the composite model. For alarm composite models, this type is <code>AWS/ALARM</code>.</p>"
        },
        "properties":{
          "shape":"AssetModelPropertyDefinitions",
          "documentation":"<p>The asset property definitions for this composite model.</p>"
        }
      },
      "documentation":"<p>Contains a composite model definition in an asset model. This composite model definition is applied to all assets created from the asset model.</p>"
    },
    "AssetModelCompositeModelDefinitions":{
      "type":"list",
      "member":{"shape":"AssetModelCompositeModelDefinition"}
    },
    "AssetModelCompositeModelPath":{
      "type":"list",
      "member":{"shape":"AssetModelCompositeModelPathSegment"}
    },
    "AssetModelCompositeModelPathSegment":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the path segment.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the path segment.</p>"
        }
      },
      "documentation":"<p>Represents one level between a composite model and the root of the asset model.</p>"
    },
    "AssetModelCompositeModelSummaries":{
      "type":"list",
      "member":{"shape":"AssetModelCompositeModelSummary"}
    },
    "AssetModelCompositeModelSummary":{
      "type":"structure",
      "required":[
        "id",
        "name",
        "type"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the composite model that this summary describes..</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of a composite model on this asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the composite model that this summary describes..</p>"
        },
        "type":{
          "shape":"Name",
          "documentation":"<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the composite model that this summary describes..</p>"
        },
        "path":{
          "shape":"AssetModelCompositeModelPath",
          "documentation":"<p>The path that includes all the pieces that make up the composite model.</p>"
        }
      },
      "documentation":"<p>Contains a summary of the composite model.</p>"
    },
    "AssetModelCompositeModels":{
      "type":"list",
      "member":{"shape":"AssetModelCompositeModel"}
    },
    "AssetModelHierarchies":{
      "type":"list",
      "member":{"shape":"AssetModelHierarchy"}
    },
    "AssetModelHierarchy":{
      "type":"structure",
      "required":[
        "name",
        "childAssetModelId"
      ],
      "members":{
        "id":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model hierarchy. This ID is a <code>hierarchyId</code>.</p> <ul> <li> <p>If you are callling <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> to create a <i>new</i> hierarchy: You can specify its ID here, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p> </li> <li> <p>If you are calling UpdateAssetModel to modify an <i>existing</i> hierarchy: This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p> </li> </ul>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID (if any) provided in the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html\">CreateAssetModel</a> or <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> operation. You can assign an external ID by specifying this value as part of a call to <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a>. However, you can't change the external ID if one is already assigned. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the asset model hierarchy that you specify by using the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html\">CreateAssetModel</a> or <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> API operation.</p>"
        },
        "childAssetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model, in UUID format. All assets in this hierarchy must be instances of the <code>childAssetModelId</code> asset model. IoT SiteWise will always return the actual asset model ID for this value. However, when you are specifying this value as part of a call to <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a>, you may provide either the asset model ID or else <code>externalId:</code> followed by the asset model's external ID. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>. </p>"
        }
      },
      "documentation":"<p>Describes an asset hierarchy that contains a hierarchy's name, ID, and child asset model ID that specifies the type of asset that can be in this hierarchy.</p>"
    },
    "AssetModelHierarchyDefinition":{
      "type":"structure",
      "required":[
        "name",
        "childAssetModelId"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID to assign to the asset model hierarchy, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset model hierarchy. The external ID must be unique among asset model hierarchies within this asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the asset model hierarchy definition (as specified in the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html\">CreateAssetModel</a> or <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> API operation).</p>"
        },
        "childAssetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of an asset model for this hierarchy. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains an asset model hierarchy used in asset model creation. An asset model hierarchy determines the kind (or type) of asset that can belong to a hierarchy.</p>"
    },
    "AssetModelHierarchyDefinitions":{
      "type":"list",
      "member":{"shape":"AssetModelHierarchyDefinition"}
    },
    "AssetModelProperties":{
      "type":"list",
      "member":{"shape":"AssetModelProperty"}
    },
    "AssetModelProperty":{
      "type":"structure",
      "required":[
        "name",
        "dataType",
        "type"
      ],
      "members":{
        "id":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model property.</p> <ul> <li> <p>If you are callling <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> to create a <i>new</i> property: You can specify its ID here, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p> </li> <li> <p>If you are calling UpdateAssetModel to modify an <i>existing</i> property: This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p> </li> </ul>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID (if any) provided in the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html\">CreateAssetModel</a> or <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> operation. You can assign an external ID by specifying this value as part of a call to <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a>. However, you can't change the external ID if one is already assigned. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the asset model property.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The data type of the asset model property.</p> <p>The <code>VIDEO</code>, <code>ANNOTATION</code>, and <code>JSON</code> data types aren't supported for asset model properties. These types are used only by time series that store data for datasets in a workspace.</p> <p>If you specify <code>STRUCT</code>, you must also specify <code>dataTypeSpec</code> to identify the type of the structure for this property.</p>"
        },
        "dataTypeSpec":{
          "shape":"Name",
          "documentation":"<p>The data type of the structure for this property. This parameter exists on properties that have the <code>STRUCT</code> data type.</p>"
        },
        "unit":{
          "shape":"PropertyUnit",
          "documentation":"<p>The unit of the asset model property, such as <code>Newtons</code> or <code>RPM</code>.</p>"
        },
        "type":{
          "shape":"PropertyType",
          "documentation":"<p>The property type (see <code>PropertyType</code>).</p>"
        },
        "path":{
          "shape":"AssetModelPropertyPath",
          "documentation":"<p>The structured path to the property from the root of the asset model.</p>"
        }
      },
      "documentation":"<p>Contains information about an asset model property.</p>"
    },
    "AssetModelPropertyBindingValue":{
      "type":"structure",
      "required":[
        "assetModelId",
        "propertyId"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model, in UUID format.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model property used in data binding value.</p>"
        }
      },
      "documentation":"<p>Contains information about an <code>assetModelProperty</code> binding value.</p>"
    },
    "AssetModelPropertyBindingValueFilter":{
      "type":"structure",
      "required":[
        "assetModelId",
        "propertyId"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model containing the filter property. This identifies the specific asset model that contains the property of interest.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the property within the asset model to filter by. Only data bindings referencing this specific property of the specified asset model are matched.</p>"
        }
      },
      "documentation":"<p>A filter used to match data bindings based on a specific asset model property. This filter identifies all computation models that reference a particular property of an asset model in their data bindings.</p>"
    },
    "AssetModelPropertyDefinition":{
      "type":"structure",
      "required":[
        "name",
        "dataType",
        "type"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID to assign to the asset model property, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the property definition. The external ID must be unique among property definitions within this asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the property definition.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The data type of the property definition.</p> <p>The <code>VIDEO</code>, <code>ANNOTATION</code>, and <code>JSON</code> data types aren't supported for asset model properties. These types are used only by time series that store data for datasets in a workspace.</p> <p>If you specify <code>STRUCT</code>, you must also specify <code>dataTypeSpec</code> to identify the type of the structure for this property.</p>"
        },
        "dataTypeSpec":{
          "shape":"Name",
          "documentation":"<p>The data type of the structure for this property. This parameter is required on properties that have the <code>STRUCT</code> data type.</p> <p>The options for this parameter depend on the type of the composite model in which you define this property. Use <code>AWS/ALARM_STATE</code> for alarm state in alarm composite models.</p>"
        },
        "unit":{
          "shape":"PropertyUnit",
          "documentation":"<p>The unit of the property definition, such as <code>Newtons</code> or <code>RPM</code>.</p>"
        },
        "type":{
          "shape":"PropertyType",
          "documentation":"<p>The property definition type (see <code>PropertyType</code>). You can only specify one type in a property definition.</p>"
        }
      },
      "documentation":"<p>Contains an asset model property definition. This property definition is applied to all assets created from the asset model.</p>"
    },
    "AssetModelPropertyDefinitions":{
      "type":"list",
      "member":{"shape":"AssetModelPropertyDefinition"}
    },
    "AssetModelPropertyPath":{
      "type":"list",
      "member":{"shape":"AssetModelPropertyPathSegment"}
    },
    "AssetModelPropertyPathSegment":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the path segment.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the path segment.</p>"
        }
      },
      "documentation":"<p>Represents one level between a property and the root of the asset model.</p>"
    },
    "AssetModelPropertySummaries":{
      "type":"list",
      "member":{"shape":"AssetModelPropertySummary"}
    },
    "AssetModelPropertySummary":{
      "type":"structure",
      "required":[
        "name",
        "dataType",
        "type"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the property.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the property.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The data type of the property.</p>"
        },
        "dataTypeSpec":{
          "shape":"Name",
          "documentation":"<p>The data type of the structure for this property. This parameter exists on properties that have the <code>STRUCT</code> data type.</p>"
        },
        "unit":{
          "shape":"PropertyUnit",
          "documentation":"<p>The unit (such as <code>Newtons</code> or <code>RPM</code>) of the property.</p>"
        },
        "type":{"shape":"PropertyType"},
        "assetModelCompositeModelId":{
          "shape":"ID",
          "documentation":"<p> The ID of the composite model that contains the asset model property. </p>"
        },
        "path":{
          "shape":"AssetModelPropertyPath",
          "documentation":"<p>The structured path to the property from the root of the asset model.</p>"
        },
        "interfaceSummaries":{
          "shape":"InterfaceSummaries",
          "documentation":"<p>A list of interface summaries that describe which interfaces this property belongs to, including the interface asset model ID and the corresponding property ID in the interface.</p>"
        }
      },
      "documentation":"<p>Contains a summary of a property associated with a model. This includes information about which interfaces the property belongs to, if any.</p>"
    },
    "AssetModelState":{
      "type":"string",
      "enum":[
        "CREATING",
        "ACTIVE",
        "UPDATING",
        "PROPAGATING",
        "DELETING",
        "FAILED"
      ]
    },
    "AssetModelStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"AssetModelState",
          "documentation":"<p>The current state of the asset model.</p>"
        },
        "error":{
          "shape":"ErrorDetails",
          "documentation":"<p>Contains associated error information, if any.</p>"
        }
      },
      "documentation":"<p>Contains current status information for an asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-and-model-states.html\">Asset and model states</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "AssetModelSummaries":{
      "type":"list",
      "member":{"shape":"AssetModelSummary"}
    },
    "AssetModelSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "name",
        "description",
        "creationDate",
        "lastUpdateDate",
        "status"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model (used with IoT SiteWise API operations).</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the asset model, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model/${AssetModelId}</code> </p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the asset model.</p>"
        },
        "assetModelType":{
          "shape":"AssetModelType",
          "documentation":"<p>The type of asset model.</p> <ul> <li> <p> <b>ASSET_MODEL</b> – (default) An asset model that you can use to create assets. Can't be included as a component in another asset model.</p> </li> <li> <p> <b>COMPONENT_MODEL</b> – A reusable component that you can include in the composite models of other asset models. You can't create assets directly from this type of asset model. </p> </li> </ul>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The asset model description.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset model was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset model was last updated, in Unix epoch time.</p>"
        },
        "status":{
          "shape":"AssetModelStatus",
          "documentation":"<p>The current status of the asset model.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version number of the asset model.</p>"
        }
      },
      "documentation":"<p>Contains a summary of an asset model.</p>"
    },
    "AssetModelType":{
      "type":"string",
      "enum":[
        "ASSET_MODEL",
        "COMPONENT_MODEL",
        "INTERFACE"
      ]
    },
    "AssetModelVersionFilter":{
      "type":"string",
      "pattern":"^(LATEST|ACTIVE)$"
    },
    "AssetModelVersionType":{
      "type":"string",
      "enum":[
        "LATEST",
        "ACTIVE"
      ]
    },
    "AssetProperties":{
      "type":"list",
      "member":{"shape":"AssetProperty"}
    },
    "AssetProperty":{
      "type":"structure",
      "required":[
        "id",
        "name",
        "dataType"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the property.</p>"
        },
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "notification":{
          "shape":"PropertyNotification",
          "documentation":"<p>The asset property's notification topic and state. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The data type of the asset property.</p>"
        },
        "dataTypeSpec":{
          "shape":"Name",
          "documentation":"<p>The data type of the structure for this property. This parameter exists on properties that have the <code>STRUCT</code> data type.</p>"
        },
        "unit":{
          "shape":"PropertyUnit",
          "documentation":"<p>The unit (such as <code>Newtons</code> or <code>RPM</code>) of the asset property.</p>"
        },
        "path":{
          "shape":"AssetPropertyPath",
          "documentation":"<p>The structured path to the property from the root of the asset.</p>"
        }
      },
      "documentation":"<p>Contains asset property information.</p>"
    },
    "AssetPropertyAlias":{
      "type":"string",
      "max":2048,
      "min":1,
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "AssetPropertyBindingValue":{
      "type":"structure",
      "required":[
        "assetId",
        "propertyId"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset containing the property. This identifies the specific asset instance's property value used in the computation model.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the property within the asset. This identifies the specific property's value used in the computation model.</p>"
        }
      },
      "documentation":"<p>Represents a data binding value referencing a specific asset property. It's used to bind computation model variables to actual asset property values for processing.</p>"
    },
    "AssetPropertyBindingValueFilter":{
      "type":"structure",
      "required":[
        "assetId",
        "propertyId"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset containing the property to filter by. This identifies the specific asset instance containing the property of interest.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the property within the asset to filter by. Only data bindings referencing this specific property of the specified asset are matched.</p>"
        }
      },
      "documentation":"<p>A filter used to match data bindings based on a specific asset property. This filter helps identify all computation models referencing a particular property of an asset in their data bindings.</p>"
    },
    "AssetPropertyPath":{
      "type":"list",
      "member":{"shape":"AssetPropertyPathSegment"}
    },
    "AssetPropertyPathSegment":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the path segment.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the path segment.</p>"
        }
      },
      "documentation":"<p>Represents one level between a property and the root of the asset.</p>"
    },
    "AssetPropertySummaries":{
      "type":"list",
      "member":{"shape":"AssetPropertySummary"}
    },
    "AssetPropertySummary":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the property.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "unit":{
          "shape":"PropertyUnit",
          "documentation":"<p> The unit of measure (such as Newtons or RPM) of the asset property. </p>"
        },
        "notification":{"shape":"PropertyNotification"},
        "assetCompositeModelId":{
          "shape":"ID",
          "documentation":"<p> The ID of the composite model that contains the asset property. </p>"
        },
        "path":{
          "shape":"AssetPropertyPath",
          "documentation":"<p>The structured path to the property from the root of the asset.</p>"
        }
      },
      "documentation":"<p>Contains a summary of a property associated with an asset.</p>"
    },
    "AssetPropertyValue":{
      "type":"structure",
      "required":[
        "value",
        "timestamp"
      ],
      "members":{
        "value":{
          "shape":"Variant",
          "documentation":"<p>The value of the asset property (see <code>Variant</code>).</p>"
        },
        "timestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The timestamp of the asset property value.</p>"
        },
        "quality":{
          "shape":"Quality",
          "documentation":"<p>The quality of the asset property value.</p>"
        }
      },
      "documentation":"<p>Contains asset property value information.</p>"
    },
    "AssetPropertyValueHistory":{
      "type":"list",
      "member":{"shape":"AssetPropertyValue"}
    },
    "AssetPropertyValues":{
      "type":"list",
      "member":{"shape":"AssetPropertyValue"}
    },
    "AssetRelationshipSummaries":{
      "type":"list",
      "member":{"shape":"AssetRelationshipSummary"}
    },
    "AssetRelationshipSummary":{
      "type":"structure",
      "required":["relationshipType"],
      "members":{
        "hierarchyInfo":{
          "shape":"AssetHierarchyInfo",
          "documentation":"<p>The assets that are related through an asset hierarchy.</p> <p>This object is present if the <code>relationshipType</code> is <code>HIERARCHY</code>.</p>"
        },
        "relationshipType":{
          "shape":"AssetRelationshipType",
          "documentation":"<p>The relationship type of the assets in this relationship. This value is one of the following:</p> <ul> <li> <p> <code>HIERARCHY</code> – The assets are related through an asset hierarchy. If you specify this relationship type, this asset relationship includes the <code>hierarchyInfo</code> object.</p> </li> </ul>"
        }
      },
      "documentation":"<p>Contains information about assets that are related to one another.</p>"
    },
    "AssetRelationshipType":{
      "type":"string",
      "enum":["HIERARCHY"]
    },
    "AssetState":{
      "type":"string",
      "enum":[
        "CREATING",
        "ACTIVE",
        "UPDATING",
        "DELETING",
        "FAILED"
      ]
    },
    "AssetStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"AssetState",
          "documentation":"<p>The current status of the asset.</p>"
        },
        "error":{
          "shape":"ErrorDetails",
          "documentation":"<p>Contains associated error information, if any.</p>"
        }
      },
      "documentation":"<p>Contains information about the current status of an asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-and-model-states.html\">Asset and model states</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "AssetSummaries":{
      "type":"list",
      "member":{"shape":"AssetSummary"}
    },
    "AssetSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "name",
        "assetModelId",
        "creationDate",
        "lastUpdateDate",
        "status",
        "hierarchies"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the asset, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset/${AssetId}</code> </p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the asset.</p>"
        },
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model used to create this asset.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset was last updated, in Unix epoch time.</p>"
        },
        "status":{
          "shape":"AssetStatus",
          "documentation":"<p>The current status of the asset.</p>"
        },
        "hierarchies":{
          "shape":"AssetHierarchies",
          "documentation":"<p>A list of asset hierarchies that each contain a <code>hierarchyId</code>. A hierarchy specifies allowed parent/child asset relationships.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A description for the asset.</p>"
        }
      },
      "documentation":"<p>Contains a summary of an asset.</p>"
    },
    "AssociateAssetsRequest":{
      "type":"structure",
      "required":[
        "assetId",
        "hierarchyId",
        "childAssetId"
      ],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the parent asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "hierarchyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of a hierarchy in the parent asset's model. (This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.) Hierarchies allow different groupings of assets to be formed that all come from the same asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html\">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "childAssetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the child asset to be associated. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "AssociateDataSegmentEntries":{
      "type":"list",
      "member":{"shape":"AssociateDataSegmentEntry"}
    },
    "AssociateDataSegmentEntry":{
      "type":"structure",
      "required":[
        "sourceDatasetId",
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp"
      ],
      "members":{
        "sourceDatasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the source dataset that contains the data segment.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment to associate.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment to associate.</p>"
        }
      },
      "documentation":"<p>Contains information about a data segment entry to associate with a dataset.</p>"
    },
    "AssociateTimeSeriesToAssetPropertyRequest":{
      "type":"structure",
      "required":[
        "alias",
        "assetId",
        "propertyId"
      ],
      "members":{
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the time series.</p>",
          "location":"querystring",
          "locationName":"alias"
        },
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset in which the asset property was created. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset property. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "AssociatedAssetsSummaries":{
      "type":"list",
      "member":{"shape":"AssociatedAssetsSummary"}
    },
    "AssociatedAssetsSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "name",
        "assetModelId",
        "creationDate",
        "lastUpdateDate",
        "status",
        "hierarchies"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the asset, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset/${AssetId}</code> </p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the asset.</p>"
        },
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model used to create the asset.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset was last updated, in Unix epoch time.</p>"
        },
        "status":{
          "shape":"AssetStatus",
          "documentation":"<p>The current status of the asset.</p>"
        },
        "hierarchies":{
          "shape":"AssetHierarchies",
          "documentation":"<p>A list of asset hierarchies that each contain a <code>hierarchyId</code>. A hierarchy specifies allowed parent/child asset relationships.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A description for the asset.</p>"
        }
      },
      "documentation":"<p>Contains a summary of an associated asset.</p>"
    },
    "Attribute":{
      "type":"structure",
      "members":{
        "defaultValue":{
          "shape":"DefaultValue",
          "documentation":"<p>The default value of the asset model property attribute. All assets that you create from the asset model contain this attribute value. You can update an attribute's value after you create an asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-attribute-values.html\">Updating attribute values</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains an asset attribute property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#attributes\">Attributes</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "AuthMode":{
      "type":"string",
      "enum":[
        "IAM",
        "SSO"
      ]
    },
    "BatchAssociateDataSegmentsToDatasetRequest":{
      "type":"structure",
      "required":[
        "datasetId",
        "workspaceName",
        "associateDataSegmentEntries"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the curated dataset to associate data segments with.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>"
        },
        "associateDataSegmentEntries":{
          "shape":"AssociateDataSegmentEntries",
          "documentation":"<p>The list of data segment entries to associate with the dataset.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure that the request is idempotent. If you retry a request that completed successfully using the same client token, the retry succeeds without performing any further actions.</p>",
          "idempotencyToken":true
        }
      }
    },
    "BatchAssociateDataSegmentsToDatasetResponse":{
      "type":"structure",
      "required":[
        "datasetId",
        "datasetVersion",
        "failedAssociations"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "datasetVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the dataset after association.</p>"
        },
        "failedAssociations":{
          "shape":"FailedDataSegmentAssociations",
          "documentation":"<p>A list of data segment associations that failed.</p>"
        }
      }
    },
    "BatchAssociateProjectAssetsErrors":{
      "type":"list",
      "member":{"shape":"AssetErrorDetails"}
    },
    "BatchAssociateProjectAssetsRequest":{
      "type":"structure",
      "required":[
        "projectId",
        "assetIds"
      ],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project to which to associate the assets.</p>",
          "location":"uri",
          "locationName":"projectId"
        },
        "assetIds":{
          "shape":"IDs",
          "documentation":"<p>The IDs of the assets to be associated to the project.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "BatchAssociateProjectAssetsResponse":{
      "type":"structure",
      "members":{
        "errors":{
          "shape":"BatchAssociateProjectAssetsErrors",
          "documentation":"<p>A list of associated error information, if any.</p>"
        }
      }
    },
    "BatchDeleteDatasetDataSegmentsRequest":{
      "type":"structure",
      "required":[
        "datasetId",
        "workspaceName",
        "deleteDataSegmentEntries"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the session dataset from which to delete data segments.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>"
        },
        "deleteDataSegmentEntries":{
          "shape":"DeleteDataSegmentEntries",
          "documentation":"<p>The list of data segment entries to delete.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure that the request is idempotent. If you retry a request that completed successfully using the same client token, the retry succeeds without performing any further actions.</p>",
          "idempotencyToken":true
        }
      }
    },
    "BatchDeleteDatasetDataSegmentsResponse":{
      "type":"structure",
      "required":[
        "datasetId",
        "datasetVersion",
        "errors"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "datasetVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the dataset after deletion.</p>"
        },
        "errors":{
          "shape":"FailedDataSegmentDeletions",
          "documentation":"<p>A list of data segment deletions that failed.</p>"
        }
      }
    },
    "BatchDisassociateDataSegmentsFromDatasetRequest":{
      "type":"structure",
      "required":[
        "datasetId",
        "workspaceName",
        "disassociateDataSegmentEntries"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the curated dataset to disassociate data segments from.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>"
        },
        "disassociateDataSegmentEntries":{
          "shape":"DisassociateDataSegmentEntries",
          "documentation":"<p>The list of data segment entries to disassociate from the dataset.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure that the request is idempotent. If you retry a request that completed successfully using the same client token, the retry succeeds without performing any further actions.</p>",
          "idempotencyToken":true
        }
      }
    },
    "BatchDisassociateDataSegmentsFromDatasetResponse":{
      "type":"structure",
      "required":[
        "datasetId",
        "datasetVersion",
        "failedDisassociations"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "datasetVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the dataset after disassociation.</p>"
        },
        "failedDisassociations":{
          "shape":"FailedDataSegmentDisassociations",
          "documentation":"<p>A list of data segment disassociations that failed.</p>"
        }
      }
    },
    "BatchDisassociateProjectAssetsErrors":{
      "type":"list",
      "member":{"shape":"AssetErrorDetails"}
    },
    "BatchDisassociateProjectAssetsRequest":{
      "type":"structure",
      "required":[
        "projectId",
        "assetIds"
      ],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project from which to disassociate the assets.</p>",
          "location":"uri",
          "locationName":"projectId"
        },
        "assetIds":{
          "shape":"IDs",
          "documentation":"<p>The IDs of the assets to be disassociated from the project.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "BatchDisassociateProjectAssetsResponse":{
      "type":"structure",
      "members":{
        "errors":{
          "shape":"BatchDisassociateProjectAssetsErrors",
          "documentation":"<p>A list of associated error information, if any.</p>"
        }
      }
    },
    "BatchEntryCompletionStatus":{
      "type":"string",
      "enum":[
        "SUCCESS",
        "ERROR"
      ]
    },
    "BatchGetAssetPropertyAggregatesEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyAggregatesEntry"}
    },
    "BatchGetAssetPropertyAggregatesEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "aggregateTypes",
        "resolution",
        "startDate",
        "endDate"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset in which the asset property was created.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "aggregateTypes":{
          "shape":"AggregateTypes",
          "documentation":"<p>The data aggregating function.</p>"
        },
        "resolution":{
          "shape":"Resolution",
          "documentation":"<p>The time interval over which to aggregate data.</p>"
        },
        "startDate":{
          "shape":"Timestamp",
          "documentation":"<p>The exclusive start of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>"
        },
        "endDate":{
          "shape":"Timestamp",
          "documentation":"<p>The inclusive end of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>"
        },
        "qualities":{
          "shape":"Qualities",
          "documentation":"<p>The quality by which to filter asset data.</p>"
        },
        "timeOrdering":{
          "shape":"TimeOrdering",
          "documentation":"<p>The chronological sorting order of the requested information.</p> <p>Default: <code>ASCENDING</code> </p>"
        }
      },
      "documentation":"<p>Contains information for an asset property aggregate entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html\">BatchGetAssetPropertyAggregates</a> API.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>"
    },
    "BatchGetAssetPropertyAggregatesErrorCode":{
      "type":"string",
      "enum":[
        "ResourceNotFoundException",
        "InvalidRequestException",
        "AccessDeniedException"
      ]
    },
    "BatchGetAssetPropertyAggregatesErrorEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyAggregatesErrorEntry"}
    },
    "BatchGetAssetPropertyAggregatesErrorEntry":{
      "type":"structure",
      "required":[
        "errorCode",
        "errorMessage",
        "entryId"
      ],
      "members":{
        "errorCode":{
          "shape":"BatchGetAssetPropertyAggregatesErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "errorMessage":{
          "shape":"ErrorMessage",
          "documentation":"<p>The associated error message.</p>"
        },
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        }
      },
      "documentation":"<p>Contains error information for an asset property aggregate entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html\">BatchGetAssetPropertyAggregates</a> API.</p>"
    },
    "BatchGetAssetPropertyAggregatesErrorInfo":{
      "type":"structure",
      "required":[
        "errorCode",
        "errorTimestamp"
      ],
      "members":{
        "errorCode":{
          "shape":"BatchGetAssetPropertyAggregatesErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "errorTimestamp":{
          "shape":"Timestamp",
          "documentation":"<p>The date the error occurred, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains the error code and the timestamp for an asset property aggregate entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html\">BatchGetAssetPropertyAggregates</a> API.</p>"
    },
    "BatchGetAssetPropertyAggregatesMaxResults":{
      "type":"integer",
      "min":1
    },
    "BatchGetAssetPropertyAggregatesRequest":{
      "type":"structure",
      "required":["entries"],
      "members":{
        "entries":{
          "shape":"BatchGetAssetPropertyAggregatesEntries",
          "documentation":"<p>The list of asset property aggregate entries for the batch get request. You can specify up to 16 entries per request.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>"
        },
        "maxResults":{
          "shape":"BatchGetAssetPropertyAggregatesMaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. A result set is returned in the two cases, whichever occurs first.</p> <ul> <li> <p>The size of the result set is equal to 1 MB.</p> </li> <li> <p>The number of data points in the result set is equal to the value of <code>maxResults</code>. The maximum value of <code>maxResults</code> is 4000.</p> </li> </ul>"
        }
      }
    },
    "BatchGetAssetPropertyAggregatesResponse":{
      "type":"structure",
      "required":[
        "errorEntries",
        "successEntries",
        "skippedEntries"
      ],
      "members":{
        "errorEntries":{
          "shape":"BatchGetAssetPropertyAggregatesErrorEntries",
          "documentation":"<p>A list of the errors (if any) associated with the batch request. Each error entry contains the <code>entryId</code> of the entry that failed.</p>"
        },
        "successEntries":{
          "shape":"BatchGetAssetPropertyAggregatesSuccessEntries",
          "documentation":"<p>A list of entries that were processed successfully by this batch request. Each success entry contains the <code>entryId</code> of the entry that succeeded and the latest query result.</p>"
        },
        "skippedEntries":{
          "shape":"BatchGetAssetPropertyAggregatesSkippedEntries",
          "documentation":"<p>A list of entries that were not processed by this batch request. because these entries had been completely processed by previous paginated requests. Each skipped entry contains the <code>entryId</code> of the entry that skipped.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "BatchGetAssetPropertyAggregatesSkippedEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyAggregatesSkippedEntry"}
    },
    "BatchGetAssetPropertyAggregatesSkippedEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "completionStatus"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "completionStatus":{
          "shape":"BatchEntryCompletionStatus",
          "documentation":"<p>The completion status of each entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html\">BatchGetAssetPropertyAggregates</a> API.</p>"
        },
        "errorInfo":{
          "shape":"BatchGetAssetPropertyAggregatesErrorInfo",
          "documentation":"<p>The error information, such as the error code and the timestamp.</p>"
        }
      },
      "documentation":"<p>Contains information for an entry that has been processed by the previous <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html\">BatchGetAssetPropertyAggregates</a> request.</p>"
    },
    "BatchGetAssetPropertyAggregatesSuccessEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyAggregatesSuccessEntry"}
    },
    "BatchGetAssetPropertyAggregatesSuccessEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "aggregatedValues"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "aggregatedValues":{
          "shape":"AggregatedValues",
          "documentation":"<p>The requested aggregated asset property values (for example, average, minimum, and maximum).</p>"
        }
      },
      "documentation":"<p>Contains success information for an entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html\">BatchGetAssetPropertyAggregates</a> API.</p>"
    },
    "BatchGetAssetPropertyValueEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueEntry"}
    },
    "BatchGetAssetPropertyValueEntry":{
      "type":"structure",
      "required":["entryId"],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset in which the asset property was created.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains information for an asset property value entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValue</a> API.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>"
    },
    "BatchGetAssetPropertyValueErrorCode":{
      "type":"string",
      "enum":[
        "ResourceNotFoundException",
        "InvalidRequestException",
        "AccessDeniedException"
      ]
    },
    "BatchGetAssetPropertyValueErrorEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueErrorEntry"}
    },
    "BatchGetAssetPropertyValueErrorEntry":{
      "type":"structure",
      "required":[
        "errorCode",
        "errorMessage",
        "entryId"
      ],
      "members":{
        "errorCode":{
          "shape":"BatchGetAssetPropertyValueErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "errorMessage":{
          "shape":"ErrorMessage",
          "documentation":"<p>The associated error message.</p>"
        },
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        }
      },
      "documentation":"<p>Contains error information for an asset property value entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValue</a> API.</p>"
    },
    "BatchGetAssetPropertyValueErrorInfo":{
      "type":"structure",
      "required":[
        "errorCode",
        "errorTimestamp"
      ],
      "members":{
        "errorCode":{
          "shape":"BatchGetAssetPropertyValueErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "errorTimestamp":{
          "shape":"Timestamp",
          "documentation":"<p>The date the error occurred, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>The error information, such as the error code and the timestamp.</p>"
    },
    "BatchGetAssetPropertyValueHistoryEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueHistoryEntry"}
    },
    "BatchGetAssetPropertyValueHistoryEntry":{
      "type":"structure",
      "required":["entryId"],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset in which the asset property was created.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "startDate":{
          "shape":"Timestamp",
          "documentation":"<p>The exclusive start of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>"
        },
        "endDate":{
          "shape":"Timestamp",
          "documentation":"<p>The inclusive end of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>"
        },
        "qualities":{
          "shape":"Qualities",
          "documentation":"<p>The quality by which to filter asset data.</p>"
        },
        "timeOrdering":{
          "shape":"TimeOrdering",
          "documentation":"<p>The chronological sorting order of the requested information.</p> <p>Default: <code>ASCENDING</code> </p>"
        }
      },
      "documentation":"<p>Contains information for an asset property historical value entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValueHistory</a> API.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>"
    },
    "BatchGetAssetPropertyValueHistoryErrorCode":{
      "type":"string",
      "enum":[
        "ResourceNotFoundException",
        "InvalidRequestException",
        "AccessDeniedException"
      ]
    },
    "BatchGetAssetPropertyValueHistoryErrorEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueHistoryErrorEntry"}
    },
    "BatchGetAssetPropertyValueHistoryErrorEntry":{
      "type":"structure",
      "required":[
        "errorCode",
        "errorMessage",
        "entryId"
      ],
      "members":{
        "errorCode":{
          "shape":"BatchGetAssetPropertyValueHistoryErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "errorMessage":{
          "shape":"ErrorMessage",
          "documentation":"<p>The associated error message.</p>"
        },
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        }
      },
      "documentation":"<p>A list of the errors (if any) associated with the batch request. Each error entry contains the <code>entryId</code> of the entry that failed.</p>"
    },
    "BatchGetAssetPropertyValueHistoryErrorInfo":{
      "type":"structure",
      "required":[
        "errorCode",
        "errorTimestamp"
      ],
      "members":{
        "errorCode":{
          "shape":"BatchGetAssetPropertyValueHistoryErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "errorTimestamp":{
          "shape":"Timestamp",
          "documentation":"<p>The date the error occurred, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>The error information, such as the error code and the timestamp.</p>"
    },
    "BatchGetAssetPropertyValueHistoryMaxResults":{
      "type":"integer",
      "min":1
    },
    "BatchGetAssetPropertyValueHistoryRequest":{
      "type":"structure",
      "required":["entries"],
      "members":{
        "entries":{
          "shape":"BatchGetAssetPropertyValueHistoryEntries",
          "documentation":"<p>The list of asset property historical value entries for the batch get request. You can specify up to 16 entries per request.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>"
        },
        "maxResults":{
          "shape":"BatchGetAssetPropertyValueHistoryMaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. A result set is returned in the two cases, whichever occurs first.</p> <ul> <li> <p>The size of the result set is equal to 4 MB.</p> </li> <li> <p>The number of data points in the result set is equal to the value of <code>maxResults</code>. The maximum value of <code>maxResults</code> is 20000.</p> </li> </ul>"
        }
      }
    },
    "BatchGetAssetPropertyValueHistoryResponse":{
      "type":"structure",
      "required":[
        "errorEntries",
        "successEntries",
        "skippedEntries"
      ],
      "members":{
        "errorEntries":{
          "shape":"BatchGetAssetPropertyValueHistoryErrorEntries",
          "documentation":"<p>A list of the errors (if any) associated with the batch request. Each error entry contains the <code>entryId</code> of the entry that failed.</p>"
        },
        "successEntries":{
          "shape":"BatchGetAssetPropertyValueHistorySuccessEntries",
          "documentation":"<p>A list of entries that were processed successfully by this batch request. Each success entry contains the <code>entryId</code> of the entry that succeeded and the latest query result.</p>"
        },
        "skippedEntries":{
          "shape":"BatchGetAssetPropertyValueHistorySkippedEntries",
          "documentation":"<p>A list of entries that were not processed by this batch request. because these entries had been completely processed by previous paginated requests. Each skipped entry contains the <code>entryId</code> of the entry that skipped.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "BatchGetAssetPropertyValueHistorySkippedEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueHistorySkippedEntry"}
    },
    "BatchGetAssetPropertyValueHistorySkippedEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "completionStatus"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "completionStatus":{
          "shape":"BatchEntryCompletionStatus",
          "documentation":"<p>The completion status of each entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValueHistory.html\">BatchGetAssetPropertyValueHistory</a> API.</p>"
        },
        "errorInfo":{
          "shape":"BatchGetAssetPropertyValueHistoryErrorInfo",
          "documentation":"<p>The error information, such as the error code and the timestamp.</p>"
        }
      },
      "documentation":"<p>Contains information for an entry that has been processed by the previous <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValueHistory</a> request.</p>"
    },
    "BatchGetAssetPropertyValueHistorySuccessEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueHistorySuccessEntry"}
    },
    "BatchGetAssetPropertyValueHistorySuccessEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "assetPropertyValueHistory"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "assetPropertyValueHistory":{
          "shape":"AssetPropertyValueHistory",
          "documentation":"<p>The requested historical values for the specified asset property.</p>"
        }
      },
      "documentation":"<p>Contains success information for an entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValueHistory</a> API.</p>"
    },
    "BatchGetAssetPropertyValueRequest":{
      "type":"structure",
      "required":["entries"],
      "members":{
        "entries":{
          "shape":"BatchGetAssetPropertyValueEntries",
          "documentation":"<p>The list of asset property value entries for the batch get request. You can specify up to 128 entries per request.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>"
        }
      }
    },
    "BatchGetAssetPropertyValueResponse":{
      "type":"structure",
      "required":[
        "errorEntries",
        "successEntries",
        "skippedEntries"
      ],
      "members":{
        "errorEntries":{
          "shape":"BatchGetAssetPropertyValueErrorEntries",
          "documentation":"<p>A list of the errors (if any) associated with the batch request. Each error entry contains the <code>entryId</code> of the entry that failed.</p>"
        },
        "successEntries":{
          "shape":"BatchGetAssetPropertyValueSuccessEntries",
          "documentation":"<p>A list of entries that were processed successfully by this batch request. Each success entry contains the <code>entryId</code> of the entry that succeeded and the latest query result.</p>"
        },
        "skippedEntries":{
          "shape":"BatchGetAssetPropertyValueSkippedEntries",
          "documentation":"<p>A list of entries that were not processed by this batch request. because these entries had been completely processed by previous paginated requests. Each skipped entry contains the <code>entryId</code> of the entry that skipped.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "BatchGetAssetPropertyValueSkippedEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueSkippedEntry"}
    },
    "BatchGetAssetPropertyValueSkippedEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "completionStatus"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "completionStatus":{
          "shape":"BatchEntryCompletionStatus",
          "documentation":"<p>The completion status of each entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValue</a> request.</p>"
        },
        "errorInfo":{
          "shape":"BatchGetAssetPropertyValueErrorInfo",
          "documentation":"<p>The error information, such as the error code and the timestamp.</p>"
        }
      },
      "documentation":"<p>Contains information for an entry that has been processed by the previous <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValue</a> request.</p>"
    },
    "BatchGetAssetPropertyValueSuccessEntries":{
      "type":"list",
      "member":{"shape":"BatchGetAssetPropertyValueSuccessEntry"}
    },
    "BatchGetAssetPropertyValueSuccessEntry":{
      "type":"structure",
      "required":["entryId"],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the entry.</p>"
        },
        "assetPropertyValue":{"shape":"AssetPropertyValue"}
      },
      "documentation":"<p>Contains success information for an entry that is associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html\">BatchGetAssetPropertyValue</a> API.</p>"
    },
    "BatchPutAssetPropertyError":{
      "type":"structure",
      "required":[
        "errorCode",
        "errorMessage",
        "timestamps"
      ],
      "members":{
        "errorCode":{
          "shape":"BatchPutAssetPropertyValueErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "errorMessage":{
          "shape":"ErrorMessage",
          "documentation":"<p>The associated error message.</p>"
        },
        "timestamps":{
          "shape":"Timestamps",
          "documentation":"<p>A list of timestamps for each error, if any.</p>"
        }
      },
      "documentation":"<p>Contains error information from updating a batch of asset property values.</p>"
    },
    "BatchPutAssetPropertyErrorEntries":{
      "type":"list",
      "member":{"shape":"BatchPutAssetPropertyErrorEntry"}
    },
    "BatchPutAssetPropertyErrorEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "errors"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The ID of the failed entry.</p>"
        },
        "errors":{
          "shape":"BatchPutAssetPropertyErrors",
          "documentation":"<p>The list of update property value errors.</p>"
        }
      },
      "documentation":"<p>Contains error information for asset property value entries that are associated with the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html\">BatchPutAssetPropertyValue</a> API.</p>"
    },
    "BatchPutAssetPropertyErrors":{
      "type":"list",
      "member":{"shape":"BatchPutAssetPropertyError"}
    },
    "BatchPutAssetPropertyValueErrorCode":{
      "type":"string",
      "enum":[
        "ResourceNotFoundException",
        "InvalidRequestException",
        "InternalFailureException",
        "ServiceUnavailableException",
        "ThrottlingException",
        "LimitExceededException",
        "ConflictingOperationException",
        "TimestampOutOfRangeException",
        "AccessDeniedException"
      ]
    },
    "BatchPutAssetPropertyValueRequest":{
      "type":"structure",
      "required":["entries"],
      "members":{
        "enablePartialEntryProcessing":{
          "shape":"BooleanValue",
          "documentation":"<p>This setting enables partial ingestion at entry-level. If set to <code>true</code>, we ingest all TQVs not resulting in an error. If set to <code>false</code>, an invalid TQV fails ingestion of the entire entry that contains it.</p>"
        },
        "entries":{
          "shape":"PutAssetPropertyValueEntries",
          "documentation":"<p>The list of asset property value entries for the batch put request. You can specify up to 10 entries per request.</p>"
        }
      }
    },
    "BatchPutAssetPropertyValueResponse":{
      "type":"structure",
      "required":["errorEntries"],
      "members":{
        "errorEntries":{
          "shape":"BatchPutAssetPropertyErrorEntries",
          "documentation":"<p>A list of the errors (if any) associated with the batch put request. Each error entry contains the <code>entryId</code> of the entry that failed.</p>"
        }
      }
    },
    "BindingValueList":{
      "type":"list",
      "member":{"shape":"ComputationModelDataBindingValue"}
    },
    "BooleanValue":{"type":"boolean"},
    "Bucket":{
      "type":"string",
      "max":63,
      "min":3
    },
    "BulkImportJobName":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"^[\\p{L}\\p{N}\\p{Zs}._:/-]+$"
    },
    "CancelEnrichmentJobRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "jobId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the IoT SiteWise workspace containing the enrichment job to cancel.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "jobId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the enrichment job to cancel. This is the jobId returned by CreateEnrichmentJob.</p>",
          "location":"uri",
          "locationName":"jobId"
        }
      }
    },
    "CancelEnrichmentJobResponse":{
      "type":"structure",
      "required":[
        "jobId",
        "status"
      ],
      "members":{
        "jobId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the cancelled enrichment job.</p>"
        },
        "status":{
          "shape":"EnrichmentJobStatus",
          "documentation":"<p>The status of the enrichment job after cancellation. This will be CANCELLED, indicating the job was successfully cancelled or was already in CANCELLED state (idempotent behavior).</p>"
        }
      }
    },
    "CancelPipelineExecutionRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName",
        "pipelineExecutionId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline.</p>",
          "location":"uri",
          "locationName":"pipelineName"
        },
        "pipelineExecutionId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the pipeline execution.</p>",
          "location":"uri",
          "locationName":"pipelineExecutionId"
        },
        "reason":{
          "shape":"CancelPipelineExecutionRequestReasonString",
          "documentation":"<p>A message describing why the pipeline execution is being cancelled.</p>"
        }
      },
      "documentation":"<p>Request structure for CancelPipelineExecution operation.</p>"
    },
    "CancelPipelineExecutionRequestReasonString":{
      "type":"string",
      "max":1024,
      "min":1
    },
    "CancelPipelineExecutionResponse":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"PipelineExecutionState",
          "documentation":"<p>The current execution state of the pipeline. Can only be CANCELLING or CANCELLED.</p>"
        }
      },
      "documentation":"<p>Response structure for CancelPipelineExecution operation.</p>"
    },
    "CancelQueryRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "queryId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace associated with the query.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "queryId":{
          "shape":"QueryId",
          "documentation":"<p>The unique identifier for the query execution to cancel.</p>",
          "location":"uri",
          "locationName":"queryId"
        }
      }
    },
    "CancelQueryResponse":{
      "type":"structure",
      "required":[
        "queryId",
        "status"
      ],
      "members":{
        "queryId":{
          "shape":"QueryId",
          "documentation":"<p>The unique identifier for the cancelled query.</p>"
        },
        "status":{
          "shape":"QueryStatus",
          "documentation":"<p>The current query status.</p>"
        }
      },
      "documentation":"<p>Contains the response for the CancelQuery operation.</p>"
    },
    "CapabilityConfiguration":{
      "type":"string",
      "max":10000000,
      "min":1
    },
    "CapabilityNamespace":{
      "type":"string",
      "max":512,
      "min":1,
      "pattern":"^[a-zA-Z]+:[a-zA-Z]+:[0-9]+$"
    },
    "CapabilitySyncStatus":{
      "type":"string",
      "enum":[
        "IN_SYNC",
        "OUT_OF_SYNC",
        "SYNC_FAILED",
        "UNKNOWN",
        "NOT_APPLICABLE"
      ]
    },
    "CaptureBlob":{
      "type":"blob",
      "documentation":"<p>A binary blob containing video data.</p>"
    },
    "Citation":{
      "type":"structure",
      "members":{
        "reference":{
          "shape":"Reference",
          "documentation":"<p>Contains information about the data source.</p>"
        },
        "content":{
          "shape":"Content",
          "documentation":"<p>Contains the cited text from the data source.</p>"
        }
      },
      "documentation":"<p>Contains text content to which the SiteWise Assistant refers to, and generate the final response. It also contains information about the source.</p>"
    },
    "Citations":{
      "type":"list",
      "member":{"shape":"Citation"}
    },
    "ClientToken":{
      "type":"string",
      "max":64,
      "min":36,
      "pattern":"\\S{36,64}"
    },
    "ColumnDataType":{
      "type":"string",
      "documentation":"<p>The data type of a column. Valid values are STRING, DOUBLE, BOOLEAN, INTEGER, TIMESTAMP, and VARIANT.</p>",
      "max":64,
      "min":1
    },
    "ColumnInfo":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the column description.</p>"
        },
        "type":{
          "shape":"ColumnType",
          "documentation":"<p>The type of the column description.</p>"
        }
      },
      "documentation":"<p>A description of the column in the query results.</p>"
    },
    "ColumnInformation":{
      "type":"structure",
      "required":[
        "name",
        "type"
      ],
      "members":{
        "name":{
          "shape":"ColumnLabel",
          "documentation":"<p>The name of the column.</p>"
        },
        "type":{
          "shape":"ColumnDataType",
          "documentation":"<p>The data type of the column. Valid values are STRING, DOUBLE, BOOLEAN, INTEGER, TIMESTAMP, and VARIANT.</p>"
        }
      },
      "documentation":"<p>Contains metadata about a column in the query results.</p>"
    },
    "ColumnInformationList":{
      "type":"list",
      "member":{"shape":"ColumnInformation"},
      "documentation":"<p>A list of column metadata entries for the query results.</p>"
    },
    "ColumnLabel":{
      "type":"string",
      "documentation":"<p>The name of a column in the query results.</p>",
      "max":256,
      "min":1
    },
    "ColumnName":{
      "type":"string",
      "enum":[
        "ALIAS",
        "ASSET_ID",
        "PROPERTY_ID",
        "DATA_TYPE",
        "TIMESTAMP_SECONDS",
        "TIMESTAMP_NANO_OFFSET",
        "QUALITY",
        "VALUE"
      ]
    },
    "ColumnNames":{
      "type":"list",
      "member":{"shape":"ColumnName"}
    },
    "ColumnType":{
      "type":"structure",
      "members":{
        "scalarType":{
          "shape":"ScalarType",
          "documentation":"<p>The allowed data types that the column has as it's value.</p>"
        }
      },
      "documentation":"<p>The data type of the column.</p>"
    },
    "ColumnValue":{
      "type":"string",
      "documentation":"<p>A string-encoded column value.</p>",
      "max":1048576,
      "min":0
    },
    "ColumnsList":{
      "type":"list",
      "member":{"shape":"ColumnInfo"}
    },
    "CommandList":{
      "type":"list",
      "member":{"shape":"String"},
      "documentation":"<p>A list of command strings to execute in the container.</p>",
      "sensitive":true
    },
    "CompositeModelProperty":{
      "type":"structure",
      "required":[
        "name",
        "type",
        "assetProperty"
      ],
      "members":{
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the property.</p>"
        },
        "type":{
          "shape":"Name",
          "documentation":"<p>The type of the composite model that defines this property.</p>"
        },
        "assetProperty":{"shape":"Property"},
        "id":{
          "shape":"ID",
          "documentation":"<p> The ID of the composite model that contains the property. </p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the composite model that contains the property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains information about a composite model property on an asset.</p>"
    },
    "CompositionDetails":{
      "type":"structure",
      "members":{
        "compositionRelationship":{
          "shape":"CompositionRelationship",
          "documentation":"<p>An array detailing the composition relationship for this composite model.</p>"
        }
      },
      "documentation":"<p>Metadata for the composition relationship established by using <code>composedAssetModelId</code> in <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\"> <code>CreateAssetModelCompositeModel</code> </a>.</p>"
    },
    "CompositionRelationship":{
      "type":"list",
      "member":{"shape":"CompositionRelationshipItem"}
    },
    "CompositionRelationshipItem":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the component.</p>"
        }
      },
      "documentation":"<p>Represents a composite model that composed an asset model of type <code>COMPONENT_MODEL</code>.</p>"
    },
    "CompositionRelationshipSummaries":{
      "type":"list",
      "member":{"shape":"CompositionRelationshipSummary"}
    },
    "CompositionRelationshipSummary":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelCompositeModelId",
        "assetModelCompositeModelType"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model, in UUID format.</p>"
        },
        "assetModelCompositeModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of a composite model on this asset model.</p>"
        },
        "assetModelCompositeModelType":{
          "shape":"Name",
          "documentation":"<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>"
        }
      },
      "documentation":"<p>Contains a summary of the components of the composite model.</p>"
    },
    "ComputationModelAnomalyDetectionConfiguration":{
      "type":"structure",
      "required":[
        "inputProperties",
        "resultProperty"
      ],
      "members":{
        "inputProperties":{
          "shape":"InputProperties",
          "documentation":"<p>Define the variable name associated with input properties, with the following format <code>${VariableName}</code>.</p>"
        },
        "resultProperty":{
          "shape":"ResultProperty",
          "documentation":"<p>Define the variable name associated with the result property, and the following format <code>${VariableName}</code>.</p>"
        }
      },
      "documentation":"<p>Contains the configuration of the type of anomaly detection computation model.</p>"
    },
    "ComputationModelConfiguration":{
      "type":"structure",
      "members":{
        "anomalyDetection":{
          "shape":"ComputationModelAnomalyDetectionConfiguration",
          "documentation":"<p>The configuration for the anomaly detection type of computation model.</p>"
        }
      },
      "documentation":"<p>The configuration for the computation model.</p>"
    },
    "ComputationModelDataBinding":{
      "type":"map",
      "key":{"shape":"ComputationModelDataBindingVariable"},
      "value":{"shape":"ComputationModelDataBindingValue"}
    },
    "ComputationModelDataBindingUsageSummaries":{
      "type":"list",
      "member":{"shape":"ComputationModelDataBindingUsageSummary"}
    },
    "ComputationModelDataBindingUsageSummary":{
      "type":"structure",
      "required":[
        "computationModelIds",
        "matchedDataBinding"
      ],
      "members":{
        "computationModelIds":{
          "shape":"ComputationModelIdList",
          "documentation":"<p>The list of computation model IDs that use this data binding. This allows identification of all computation models affected by changes to the referenced data source.</p>"
        },
        "matchedDataBinding":{
          "shape":"MatchedDataBinding",
          "documentation":"<p>The data binding matched by the filter criteria. Contains details about specific data binding values used by the computation models.</p>"
        }
      },
      "documentation":"<p>A summary of how a specific data binding is used across computation models. This tracks dependencies between data sources and computation models, allowing you to understand the impact of changes to data sources.</p>"
    },
    "ComputationModelDataBindingValue":{
      "type":"structure",
      "members":{
        "assetModelProperty":{
          "shape":"AssetModelPropertyBindingValue",
          "documentation":"<p>Specifies an asset model property data binding value.</p>"
        },
        "assetProperty":{
          "shape":"AssetPropertyBindingValue",
          "documentation":"<p>The asset property value used for computation model data binding.</p>"
        },
        "list":{
          "shape":"BindingValueList",
          "documentation":"<p>Specifies a list of data binding value.</p>"
        }
      },
      "documentation":"<p>Contains computation model data binding value information, which can be one of <code>assetModelProperty</code>, <code>list</code>.</p>"
    },
    "ComputationModelDataBindingVariable":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[a-z][a-z0-9_]*$"
    },
    "ComputationModelExecutionSummary":{
      "type":"map",
      "key":{"shape":"ComputationModelExecutionSummaryKey"},
      "value":{"shape":"ComputationModelExecutionSummaryValue"}
    },
    "ComputationModelExecutionSummaryKey":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@]+$"
    },
    "ComputationModelExecutionSummaryValue":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@]+$"
    },
    "ComputationModelIdList":{
      "type":"list",
      "member":{"shape":"ID"}
    },
    "ComputationModelResolveToResourceSummaries":{
      "type":"list",
      "member":{"shape":"ComputationModelResolveToResourceSummary"}
    },
    "ComputationModelResolveToResourceSummary":{
      "type":"structure",
      "members":{
        "resolveTo":{"shape":"ResolveTo"}
      },
      "documentation":"<p>A summary of the resource that a computation model resolves to.</p>"
    },
    "ComputationModelState":{
      "type":"string",
      "enum":[
        "CREATING",
        "ACTIVE",
        "UPDATING",
        "DELETING",
        "FAILED"
      ]
    },
    "ComputationModelStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"ComputationModelState",
          "documentation":"<p>The current state of the computation model.</p>"
        },
        "error":{"shape":"ErrorDetails"}
      },
      "documentation":"<p>Contains current status information for a computation model.</p>"
    },
    "ComputationModelSummaries":{
      "type":"list",
      "member":{"shape":"ComputationModelSummary"}
    },
    "ComputationModelSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "name",
        "type",
        "creationDate",
        "lastUpdateDate",
        "status",
        "version"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the computation model, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:computation-model/${ComputationModelId}</code> </p>"
        },
        "name":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the computation model.</p>"
        },
        "description":{
          "shape":"RestrictedDescription",
          "documentation":"<p>The description of the computation model.</p>"
        },
        "type":{
          "shape":"ComputationModelType",
          "documentation":"<p>The type of the computation model.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The model creation date, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The time the model was last updated, in Unix epoch time.</p>"
        },
        "status":{
          "shape":"ComputationModelStatus",
          "documentation":"<p>The current status of the computation model.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version of the computation model.</p>"
        }
      },
      "documentation":"<p>Contains a summary of a computation model.</p>"
    },
    "ComputationModelType":{
      "type":"string",
      "enum":["ANOMALY_DETECTION"]
    },
    "ComputationModelVersionFilter":{
      "type":"string",
      "pattern":"^(LATEST|ACTIVE|[1-9]{1}\\d{0,9})$"
    },
    "ComputeLocation":{
      "type":"string",
      "enum":[
        "EDGE",
        "CLOUD"
      ]
    },
    "ComputeNode":{
      "type":"structure",
      "required":[
        "computeNodeName",
        "taskName"
      ],
      "members":{
        "computeNodeName":{
          "shape":"ResourceName",
          "documentation":"<p>The unique name for this compute node within the pipeline.</p>"
        },
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task to execute for this compute node.</p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariablesMap",
          "documentation":"<p>Environment variables specific to this compute node. These override pipeline-level environment variables with the same key.</p>"
        },
        "dependsOn":{
          "shape":"ComputeNodeNameList",
          "documentation":"<p>A list of compute node names that must complete successfully before this node can start.</p>"
        }
      },
      "documentation":"<p>A single compute node in a pipeline DAG. Each compute node references a task and can declare dependencies on other nodes.</p>"
    },
    "ComputeNodeEnvironmentVariablesMap":{
      "type":"map",
      "key":{
        "shape":"ResourceName",
        "documentation":"<p>The compute node name from the pipeline definition.</p>"
      },
      "value":{
        "shape":"EnvironmentVariablesMap",
        "documentation":"<p>Environment variable overrides specific to this compute node.</p>"
      },
      "documentation":"<p>A map of compute node names to their environment variable overrides.</p>",
      "max":50,
      "min":0
    },
    "ComputeNodeErrorCode":{
      "type":"string",
      "documentation":"<p>Classification of a compute node execution failure.</p>",
      "enum":[
        "VALIDATION_ERROR",
        "INTERNAL_FAILURE",
        "EXECUTION_ERROR",
        "TIMED_OUT"
      ]
    },
    "ComputeNodeExecutionDetails":{
      "type":"structure",
      "required":[
        "computeNodeName",
        "taskName",
        "taskArn",
        "taskVersion",
        "dependsOn",
        "status"
      ],
      "members":{
        "computeNodeName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the compute node.</p>"
        },
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task executed for this compute node.</p>"
        },
        "taskArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the task.</p>"
        },
        "taskVersion":{
          "shape":"Version",
          "documentation":"<p>The task version that executed for this compute node.</p>"
        },
        "dependsOn":{
          "shape":"ComputeNodeNameList",
          "documentation":"<p>A list of compute node names that this node depends on.</p>"
        },
        "status":{
          "shape":"ComputeNodeExecutionStatus",
          "documentation":"<p>The current execution status of the compute node.</p>"
        },
        "startTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the compute node execution started, in Unix epoch time.</p>"
        },
        "endTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the compute node execution completed, in Unix epoch time.</p>"
        },
        "executionEnvironmentVariables":{
          "shape":"ExecutionEnvironmentVariablesMap",
          "documentation":"<p>The fully resolved environment variables used for this compute node execution.</p>"
        }
      },
      "documentation":"<p>Contains detailed execution information for a compute node within a pipeline execution.</p>"
    },
    "ComputeNodeExecutionDetailsList":{
      "type":"list",
      "member":{"shape":"ComputeNodeExecutionDetails"},
      "documentation":"<p>A list of compute node execution details.</p>"
    },
    "ComputeNodeExecutionState":{
      "type":"string",
      "documentation":"<p>The state of an individual compute node execution.</p>",
      "enum":[
        "NOT_STARTED",
        "QUEUED",
        "RUNNING",
        "SUCCEEDED",
        "FAILED"
      ]
    },
    "ComputeNodeExecutionStateDetails":{
      "type":"structure",
      "required":[
        "code",
        "message"
      ],
      "members":{
        "code":{
          "shape":"ComputeNodeErrorCode",
          "documentation":"<p>Classification of the failure.</p>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p>Human-readable description of why the compute node failed.</p>"
        },
        "details":{
          "shape":"DetailedErrorList",
          "documentation":"<p>Detailed error entries to help diagnose the failure.</p>"
        }
      },
      "documentation":"<p>Additional information about a compute node that has failed.</p>"
    },
    "ComputeNodeExecutionStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"ComputeNodeExecutionState",
          "documentation":"<p>Current state of the compute node execution.</p>"
        },
        "stateDetails":{
          "shape":"ComputeNodeExecutionStateDetails",
          "documentation":"<p>Additional information about the compute node's failure. Populated when the compute node has failed.</p>"
        }
      },
      "documentation":"<p>Current execution status of a compute node within a pipeline execution.</p>"
    },
    "ComputeNodeList":{
      "type":"list",
      "member":{"shape":"ComputeNode"},
      "documentation":"<p>A list of compute nodes forming a pipeline DAG.</p>",
      "max":50,
      "min":0
    },
    "ComputeNodeNameList":{
      "type":"list",
      "member":{"shape":"ResourceName"},
      "documentation":"<p>A list of compute node names for declaring dependencies.</p>",
      "max":10,
      "min":0
    },
    "ConfigurationErrorDetails":{
      "type":"structure",
      "required":[
        "code",
        "message"
      ],
      "members":{
        "code":{
          "shape":"ErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"ErrorMessage",
          "documentation":"<p>The error message.</p>"
        }
      },
      "documentation":"<p>Contains the details of an IoT SiteWise configuration error.</p>"
    },
    "ConfigurationState":{
      "type":"string",
      "enum":[
        "ACTIVE",
        "UPDATE_IN_PROGRESS",
        "UPDATE_FAILED"
      ]
    },
    "ConfigurationStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"ConfigurationState",
          "documentation":"<p>The current state of the configuration.</p>"
        },
        "error":{
          "shape":"ConfigurationErrorDetails",
          "documentation":"<p>Contains associated error information, if any.</p>"
        }
      },
      "documentation":"<p>Contains current status information for the configuration.</p>"
    },
    "ConflictingOperationException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceArn"
      ],
      "members":{
        "message":{"shape":"ErrorMessage"},
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource that conflicts with this operation.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The ARN of the resource that conflicts with this operation.</p>"
        }
      },
      "documentation":"<p>Your request has conflicting operations. This can occur if you're trying to perform more than one operation on the same resource at the same time.</p>",
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "ContainerTaskConfiguration":{
      "type":"structure",
      "required":[
        "ecrUri",
        "taskExecutionRole",
        "processingType",
        "processingUnit"
      ],
      "members":{
        "ecrUri":{
          "shape":"EcrUri",
          "documentation":"<p>The Amazon ECR image URI for the task container.</p>"
        },
        "taskExecutionRole":{
          "shape":"IamRoleArn",
          "documentation":"<p>The ARN of the IAM role that grants the containerized workload permissions to access AWS resources.</p>"
        },
        "processingType":{
          "shape":"ProcessingType",
          "documentation":"<p>The processing type for compute resources.</p>"
        },
        "processingUnit":{
          "shape":"ProcessingUnit",
          "documentation":"<p>The processing unit allocation that determines the vCPU, memory, and GPU resources.</p>"
        },
        "command":{
          "shape":"CommandList",
          "documentation":"<p>The command to execute in the container.</p>"
        },
        "timeoutSeconds":{
          "shape":"TimeoutSeconds",
          "documentation":"<p>The timeout in seconds for task execution. Default: 3600 (1 hour).</p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariablesMap",
          "documentation":"<p>Environment variables passed to the container at runtime.</p>"
        }
      },
      "documentation":"<p>Configuration for a container task, including the container image, IAM role, and compute settings.</p>"
    },
    "Content":{
      "type":"structure",
      "members":{
        "text":{
          "shape":"String",
          "documentation":"<p>The cited text from the data source.</p>"
        }
      },
      "documentation":"<p>Contains the cited text from the data source.</p>"
    },
    "ConversationId":{
      "type":"string",
      "max":36,
      "min":36,
      "pattern":"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
    },
    "CoreDeviceOperatingSystem":{
      "type":"string",
      "enum":[
        "LINUX_AARCH64",
        "LINUX_AMD64",
        "WINDOWS_AMD64"
      ]
    },
    "CoreDeviceThingName":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^[a-zA-Z0-9:_-]+$"
    },
    "CreateAccessPolicyRequest":{
      "type":"structure",
      "required":[
        "accessPolicyIdentity",
        "accessPolicyResource",
        "accessPolicyPermission"
      ],
      "members":{
        "accessPolicyIdentity":{
          "shape":"Identity",
          "documentation":"<p>The identity for this access policy. Choose an IAM Identity Center user, an IAM Identity Center group, or an IAM user.</p>"
        },
        "accessPolicyResource":{
          "shape":"Resource",
          "documentation":"<p>The IoT SiteWise Monitor resource for this access policy. Choose either a portal or a project.</p>"
        },
        "accessPolicyPermission":{
          "shape":"Permission",
          "documentation":"<p>The permission level for this access policy. Note that a project <code>ADMINISTRATOR</code> is also known as a project owner.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the access policy. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "CreateAccessPolicyResponse":{
      "type":"structure",
      "required":[
        "accessPolicyId",
        "accessPolicyArn"
      ],
      "members":{
        "accessPolicyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the access policy.</p>"
        },
        "accessPolicyArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the access policy, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy/${AccessPolicyId}</code> </p>"
        }
      }
    },
    "CreateApplicationRequest":{
      "type":"structure",
      "required":[
        "idcInstanceArn",
        "workspaceName",
        "name"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>Unique client token for idempotent request handling</p>",
          "idempotencyToken":true
        },
        "idcInstanceArn":{
          "shape":"ARN",
          "documentation":"<p>Identity Center Instance ARN to create the application in</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>Name of the workspace to associate with the underlying Application</p>"
        },
        "name":{
          "shape":"ApplicationName",
          "documentation":"<p>Name of the application</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>Description of the application</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the application.</p>"
        }
      }
    },
    "CreateApplicationResponse":{
      "type":"structure",
      "required":[
        "arn",
        "id",
        "dnsSubdomain",
        "name",
        "status"
      ],
      "members":{
        "arn":{
          "shape":"ARN",
          "documentation":"<p>ARN of the application</p>"
        },
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>Unique identifier of the application</p>"
        },
        "dnsSubdomain":{
          "shape":"DnsSubdomain",
          "documentation":"<p>DNS subdomain for the application</p>"
        },
        "name":{
          "shape":"ApplicationName",
          "documentation":"<p>Name of the application</p>"
        },
        "status":{
          "shape":"ApplicationStatus",
          "documentation":"<p>Current status of the application</p>"
        }
      }
    },
    "CreateAssetModelCompositeModelRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelCompositeModelName",
        "assetModelCompositeModelType"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model this composite model is a part of.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "assetModelCompositeModelExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the composite model.</p> <p>If the composite model is a derived composite model, or one nested inside a component model, you can only set the external ID using <code>UpdateAssetModelCompositeModel</code> and specifying the derived ID of the model or property from the created model it's a part of.</p>"
        },
        "parentAssetModelCompositeModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the parent composite model in this asset model relationship.</p>"
        },
        "assetModelCompositeModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the composite model. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>"
        },
        "assetModelCompositeModelDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the composite model.</p>"
        },
        "assetModelCompositeModelName":{
          "shape":"Name",
          "documentation":"<p>A unique name for the composite model.</p>"
        },
        "assetModelCompositeModelType":{
          "shape":"Name",
          "documentation":"<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "composedAssetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of a component model which is reused to create this composite model.</p>"
        },
        "assetModelCompositeModelProperties":{
          "shape":"AssetModelPropertyDefinitions",
          "documentation":"<p>The property definitions of the composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html#inline-composite-models\"> Inline custom composite models</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "ifMatch":{
          "shape":"ETag",
          "documentation":"<p>The expected current entity tag (ETag) for the asset model’s latest or active version (specified using <code>matchForVersionType</code>). The create request is rejected if the tag does not match the latest or active version's current entity tag. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/opt-locking-for-model.html\">Optimistic locking for asset model writes</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"header",
          "locationName":"If-Match"
        },
        "ifNoneMatch":{
          "shape":"SelectAll",
          "documentation":"<p>Accepts <b>*</b> to reject the create request if an active version (specified using <code>matchForVersionType</code> as <code>ACTIVE</code>) already exists for the asset model.</p>",
          "location":"header",
          "locationName":"If-None-Match"
        },
        "matchForVersionType":{
          "shape":"AssetModelVersionType",
          "documentation":"<p>Specifies the asset model version type (<code>LATEST</code> or <code>ACTIVE</code>) used in conjunction with <code>If-Match</code> or <code>If-None-Match</code> headers to determine the target ETag for the create operation.</p>",
          "location":"header",
          "locationName":"Match-For-Version-Type"
        }
      }
    },
    "CreateAssetModelCompositeModelResponse":{
      "type":"structure",
      "required":[
        "assetModelCompositeModelId",
        "assetModelCompositeModelPath",
        "assetModelStatus"
      ],
      "members":{
        "assetModelCompositeModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the composed asset model. You can use this ID when you call other IoT SiteWise APIs.</p>"
        },
        "assetModelCompositeModelPath":{
          "shape":"AssetModelCompositeModelPath",
          "documentation":"<p>The path to the composite model listing the parent composite models.</p>"
        },
        "assetModelStatus":{"shape":"AssetModelStatus"},
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        }
      }
    },
    "CreateAssetModelRequest":{
      "type":"structure",
      "required":["assetModelName"],
      "members":{
        "assetModelName":{
          "shape":"Name",
          "documentation":"<p>A unique name for the asset model.</p>"
        },
        "assetModelType":{
          "shape":"AssetModelType",
          "documentation":"<p>The type of asset model.</p> <ul> <li> <p> <b>ASSET_MODEL</b> – (default) An asset model that you can use to create assets. Can't be included as a component in another asset model.</p> </li> <li> <p> <b>COMPONENT_MODEL</b> – A reusable component that you can include in the composite models of other asset models. You can't create assets directly from this type of asset model. </p> </li> </ul>"
        },
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID to assign to the asset model, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>"
        },
        "assetModelExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset model. The external ID must be unique within your Amazon Web Services account. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetModelDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the asset model.</p>"
        },
        "assetModelProperties":{
          "shape":"AssetModelPropertyDefinitions",
          "documentation":"<p>The property definitions of the asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html\">Asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetModelHierarchies":{
          "shape":"AssetModelHierarchyDefinitions",
          "documentation":"<p>The hierarchy definitions of the asset model. Each hierarchy specifies an asset model whose assets can be children of any other assets created from this asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html\">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 10 hierarchies per asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetModelCompositeModels":{
          "shape":"AssetModelCompositeModelDefinitions",
          "documentation":"<p>The composite models that are part of this asset model. It groups properties (such as attributes, measurements, transforms, and metrics) and child composite models that model parts of your industrial equipment. Each composite model has a type that defines the properties that the composite model supports. Use composite models to define alarms on this asset model.</p> <note> <p>When creating custom composite models, you need to use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\">CreateAssetModelCompositeModel</a>. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-custom-composite-models.html\">Creating custom composite models (Components)</a> in the <i>IoT SiteWise User Guide</i>.</p> </note>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "CreateAssetModelResponse":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelArn",
        "assetModelStatus"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model, in UUID format. You can use this ID when you call other IoT SiteWise API operations.</p>"
        },
        "assetModelArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the asset model, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model/${AssetModelId}</code> </p>"
        },
        "assetModelStatus":{
          "shape":"AssetModelStatus",
          "documentation":"<p>The status of the asset model, which contains a state (<code>CREATING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "CreateAssetRequest":{
      "type":"structure",
      "required":[
        "assetName",
        "assetModelId"
      ],
      "members":{
        "assetName":{
          "shape":"Name",
          "documentation":"<p>A friendly name for the asset.</p>"
        },
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model from which to create the asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID to assign to the asset, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>"
        },
        "assetExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset. The external ID must be unique within your Amazon Web Services account. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the asset.</p>"
        }
      }
    },
    "CreateAssetResponse":{
      "type":"structure",
      "required":[
        "assetId",
        "assetArn",
        "assetStatus"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format. This ID uniquely identifies the asset within IoT SiteWise and can be used with other IoT SiteWise API operations.</p>"
        },
        "assetArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the asset, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset/${AssetId}</code> </p>"
        },
        "assetStatus":{
          "shape":"AssetStatus",
          "documentation":"<p>The status of the asset, which contains a state (<code>CREATING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "CreateBulkImportJobRequest":{
      "type":"structure",
      "required":[
        "jobName",
        "jobRoleArn",
        "files",
        "errorReportLocation"
      ],
      "members":{
        "jobName":{
          "shape":"BulkImportJobName",
          "documentation":"<p>The unique name that helps identify the job request.</p>"
        },
        "jobRoleArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the IAM role that allows IoT SiteWise to read Amazon S3 data.</p>"
        },
        "files":{
          "shape":"Files",
          "documentation":"<p>The files in the specified Amazon S3 bucket that contain your data. You can specify up to 100 files for each bulk import job. Each file supports the following size limits:</p> <ul> <li> <p>Parquet files – Up to 256 MiB.</p> </li> <li> <p>Other file formats – Up to 5 GiB.</p> </li> </ul>"
        },
        "errorReportLocation":{
          "shape":"ErrorReportLocation",
          "documentation":"<p>The Amazon S3 destination where errors associated with the job creation request are saved.</p>"
        },
        "jobConfiguration":{
          "shape":"JobConfiguration",
          "documentation":"<p>Contains the configuration information of a job, such as the file format used to save data in Amazon S3.</p>"
        },
        "adaptiveIngestion":{
          "shape":"AdaptiveIngestion",
          "documentation":"<p>If set to true, ingest new data into IoT SiteWise storage. Measurements with notifications, metrics and transforms are computed. If set to false, historical data is ingested into IoT SiteWise as is.</p>"
        },
        "deleteFilesAfterImport":{
          "shape":"DeleteFilesAfterImport",
          "documentation":"<p>If set to true, your data files is deleted from S3, after ingestion into IoT SiteWise storage.</p>"
        },
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the session dataset to ingest data into. Specify this field, together with <code>workspaceName</code>, to ingest data into a session dataset in a workspace.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the session dataset. Specify this field together with <code>datasetId</code>.</p>"
        }
      }
    },
    "CreateBulkImportJobResponse":{
      "type":"structure",
      "required":[
        "jobId",
        "jobName",
        "jobStatus"
      ],
      "members":{
        "jobId":{
          "shape":"ID",
          "documentation":"<p>The ID of the job.</p>"
        },
        "jobName":{
          "shape":"BulkImportJobName",
          "documentation":"<p>The unique name that helps identify the job request.</p>"
        },
        "jobStatus":{
          "shape":"JobStatus",
          "documentation":"<p>The status of the bulk import job can be one of following values:</p> <ul> <li> <p> <code>PENDING</code> – IoT SiteWise is waiting for the current bulk import job to finish.</p> </li> <li> <p> <code>CANCELLED</code> – The bulk import job has been canceled.</p> </li> <li> <p> <code>RUNNING</code> – IoT SiteWise is processing your request to import your data from Amazon S3.</p> </li> <li> <p> <code>COMPLETED</code> – IoT SiteWise successfully completed your request to import data from Amazon S3.</p> </li> <li> <p> <code>FAILED</code> – IoT SiteWise couldn't process your request to import data from Amazon S3. You can use logs saved in the specified error report location in Amazon S3 to troubleshoot issues.</p> </li> <li> <p> <code>COMPLETED_WITH_FAILURES</code> – IoT SiteWise completed your request to import data from Amazon S3 with errors. You can use logs saved in the specified error report location in Amazon S3 to troubleshoot issues.</p> </li> </ul>"
        }
      }
    },
    "CreateComputationModelRequest":{
      "type":"structure",
      "required":[
        "computationModelName",
        "computationModelConfiguration",
        "computationModelDataBinding"
      ],
      "members":{
        "computationModelName":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the computation model.</p>"
        },
        "computationModelDescription":{
          "shape":"RestrictedDescription",
          "documentation":"<p>The description of the computation model.</p>"
        },
        "computationModelConfiguration":{
          "shape":"ComputationModelConfiguration",
          "documentation":"<p>The configuration for the computation model.</p>"
        },
        "computationModelDataBinding":{
          "shape":"ComputationModelDataBinding",
          "documentation":"<p>The data binding for the computation model. Key is a variable name defined in configuration. Value is a <code>ComputationModelDataBindingValue</code> referenced by the variable.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "CreateComputationModelResponse":{
      "type":"structure",
      "required":[
        "computationModelId",
        "computationModelArn",
        "computationModelStatus"
      ],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>"
        },
        "computationModelArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the computation model, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:computation-model/${ComputationModelId}</code> </p>"
        },
        "computationModelStatus":{
          "shape":"ComputationModelStatus",
          "documentation":"<p>The status of the computation model, containing a state (CREATING after successfully calling this operation) and any error messages.</p>"
        }
      }
    },
    "CreateDashboardRequest":{
      "type":"structure",
      "required":[
        "projectId",
        "dashboardName",
        "dashboardDefinition"
      ],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project in which to create the dashboard.</p>"
        },
        "dashboardName":{
          "shape":"Name",
          "documentation":"<p>A friendly name for the dashboard.</p>"
        },
        "dashboardDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the dashboard.</p>"
        },
        "dashboardDefinition":{
          "shape":"DashboardDefinition",
          "documentation":"<p>The dashboard definition specified in a JSON literal.</p> <ul> <li> <p>IoT SiteWise Monitor (Classic) see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html\">Create dashboards (CLI)</a> </p> </li> <li> <p>IoT SiteWise Monitor (AI-aware) see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-ai-dashboard-cli.html\">Create dashboards (CLI)</a> </p> </li> </ul> <p>in the <i>IoT SiteWise User Guide</i> </p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the dashboard. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "CreateDashboardResponse":{
      "type":"structure",
      "required":[
        "dashboardId",
        "dashboardArn"
      ],
      "members":{
        "dashboardId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dashboard.</p>"
        },
        "dashboardArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the dashboard, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard/${DashboardId}</code> </p>"
        }
      }
    },
    "CreateDatasetExportJobRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "destinationS3Uri",
        "input",
        "errorReportLocation"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace in which to create the dataset export job.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. The AWS SDKs and CLI populate this automatically.</p>",
          "idempotencyToken":true
        },
        "destinationS3Uri":{
          "shape":"S3Uri",
          "documentation":"<p>The S3 URI where output clips will be written.</p>"
        },
        "input":{
          "shape":"ProcessingInput",
          "documentation":"<p>The processing input source.</p>"
        },
        "errorReportLocation":{
          "shape":"ExportErrorReportLocation",
          "documentation":"<p>The location where the error report will be written on failure.</p>"
        }
      },
      "documentation":"<p>Request to create a dataset export job.</p>"
    },
    "CreateDatasetExportJobResponse":{
      "type":"structure",
      "required":[
        "jobId",
        "workspaceName"
      ],
      "members":{
        "jobId":{
          "shape":"DatasetExportJobId",
          "documentation":"<p>The unique identifier for the dataset export job.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace in which the dataset export job was created.</p>"
        }
      },
      "documentation":"<p>Response for create dataset export job request.</p>"
    },
    "CreateDatasetRequest":{
      "type":"structure",
      "required":[
        "datasetName",
        "datasetSource"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "datasetName":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the dataset.</p>"
        },
        "datasetDescription":{
          "shape":"Description",
          "documentation":"<p>A description about the dataset, and its functionality.</p>"
        },
        "datasetType":{
          "shape":"DatasetTypeEnum",
          "documentation":"<p>The type of dataset: a session dataset, a curated dataset, or a connection to an external datasource.</p>"
        },
        "datasetConfig":{
          "shape":"DatasetConfig",
          "documentation":"<p>The configuration for the dataset.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset. Required for session and curated datasets. Omit this field for datasets that connect to an external datasource.</p>"
        },
        "metadata":{
          "shape":"Metadata",
          "documentation":"<p>The metadata for the dataset, provided as key-value pairs.</p>"
        },
        "datasetSource":{
          "shape":"DatasetSource",
          "documentation":"<p>The data source for the dataset.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the access policy. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "CreateDatasetResponse":{
      "type":"structure",
      "required":[
        "datasetId",
        "datasetArn",
        "datasetStatus"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "datasetArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html\">ARN</a> of the dataset. The format is <code>arn:${Partition}:iotsitewise:${Region}:${Account}:dataset/${DatasetId}</code>.</p>"
        },
        "datasetStatus":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status of the dataset. This contains the state and any error messages. State is <code>CREATING</code> after a successfull call to this API, and any associated error message. The state is <code>ACTIVE</code> when ready to use.</p>"
        }
      }
    },
    "CreateEnrichmentJobRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "jobConfiguration"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the IoT SiteWise workspace containing the video data to analyze.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "jobConfiguration":{
          "shape":"EnrichmentJobConfiguration",
          "documentation":"<p>Configuration defining the type of enrichment analysis to perform and which video data to analyze. Currently supports eventDetection for generating embeddings from video data for semantic search.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>Optional unique token that makes the operation idempotent. If you submit the same request with the same token within the idempotency window, the service returns the original job without creating a duplicate. Use a UUID or timestamp-based token for each unique request.</p>",
          "idempotencyToken":true
        }
      }
    },
    "CreateEnrichmentJobResponse":{
      "type":"structure",
      "required":[
        "jobId",
        "status",
        "createdAt"
      ],
      "members":{
        "jobId":{
          "shape":"ID",
          "documentation":"<p>Unique identifier for the enrichment job. Use this ID with DescribeEnrichmentJob to monitor progress or with CancelEnrichmentJob to cancel the job.</p>"
        },
        "status":{
          "shape":"EnrichmentJobStatus",
          "documentation":"<p>Initial status of the enrichment job, typically PENDING. The job will transition to RUNNING when processing begins, then to a terminal state (COMPLETED, FAILED, TIMED_OUT, or CANCELLED). Use DescribeEnrichmentJob to track status changes.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the enrichment job was created in ISO 8601 format.</p>"
        }
      }
    },
    "CreateGatewayRequest":{
      "type":"structure",
      "required":[
        "gatewayName",
        "gatewayPlatform"
      ],
      "members":{
        "gatewayName":{
          "shape":"GatewayName",
          "documentation":"<p>A unique name for the gateway.</p>"
        },
        "gatewayPlatform":{
          "shape":"GatewayPlatform",
          "documentation":"<p>The gateway's platform. You can only specify one platform in a gateway.</p>"
        },
        "gatewayVersion":{
          "shape":"GatewayVersion",
          "documentation":"<p>The version of the gateway to create. Specify <code>3</code> to create an MQTT-enabled, V3 gateway and <code>2</code> to create a Classic streams, V2 gateway. If not specified, the default is <code>2</code> (Classic streams, V2 gateway).</p> <note> <p>When creating a V3 gateway (<code>gatewayVersion=3</code>) with the <code>GreengrassV2</code> platform, you must also specify the <code>coreDeviceOperatingSystem</code> parameter.</p> </note> <p> We recommend creating an MQTT-enabled gateway for self-hosted gateways and Siemens Industrial Edge gateways. For more information on gateway versions, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateways.html\">Use Amazon Web Services IoT SiteWise Edge Edge gateways</a>.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the gateway. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "CreateGatewayResponse":{
      "type":"structure",
      "required":[
        "gatewayId",
        "gatewayArn"
      ],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway device. You can use this ID when you call other IoT SiteWise API operations.</p>"
        },
        "gatewayArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the gateway, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:gateway/${GatewayId}</code> </p>"
        }
      }
    },
    "CreateMissingProperty":{"type":"boolean"},
    "CreatePipelineRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName",
        "computations"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline to create. Must be unique within the workspace.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A description of the pipeline.</p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariablesMap",
          "documentation":"<p>Environment variables shared across all compute nodes in the pipeline. Individual compute nodes can override these values with their own environment variables.</p>"
        },
        "computations":{
          "shape":"ComputeNodeList",
          "documentation":"<p>The list of compute nodes that form the pipeline DAG. Each compute node references a task and can declare dependencies on other nodes.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the pipeline. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your AWS IoT SiteWise resources</a> in the AWS IoT SiteWise User Guide.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token, the server returns the cached result from the original successful request without performing the operation again.</p>",
          "idempotencyToken":true
        }
      },
      "documentation":"<p>Request structure for CreatePipeline operation.</p>"
    },
    "CreatePipelineResponse":{
      "type":"structure",
      "required":[
        "pipelineName",
        "pipelineArn",
        "version",
        "status"
      ],
      "members":{
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the created pipeline.</p>"
        },
        "pipelineArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the created pipeline.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version of the newly created pipeline.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the pipeline.</p>"
        }
      },
      "documentation":"<p>Response structure for CreatePipeline operation.</p>"
    },
    "CreatePortalRequest":{
      "type":"structure",
      "required":[
        "portalName",
        "portalContactEmail",
        "roleArn"
      ],
      "members":{
        "portalName":{
          "shape":"Name",
          "documentation":"<p>A friendly name for the portal.</p>"
        },
        "portalDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the portal.</p>"
        },
        "portalContactEmail":{
          "shape":"Email",
          "documentation":"<p>The Amazon Web Services administrator's contact email address.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "portalLogoImageFile":{
          "shape":"ImageFile",
          "documentation":"<p>A logo image to display in the portal. Upload a square, high-resolution image. The image is displayed on a dark background.</p>"
        },
        "roleArn":{
          "shape":"IamArn",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of a service role that allows the portal's users to access your IoT SiteWise resources on your behalf. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html\">Using service roles for IoT SiteWise Monitor</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the portal. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "portalAuthMode":{
          "shape":"AuthMode",
          "documentation":"<p>The service to use to authenticate users to the portal. Choose from the following options:</p> <ul> <li> <p> <code>SSO</code> – The portal uses IAM Identity Center to authenticate users and manage user permissions. Before you can create a portal that uses IAM Identity Center, you must enable IAM Identity Center. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-get-started.html#mon-gs-sso\">Enabling IAM Identity Center</a> in the <i>IoT SiteWise User Guide</i>. This option is only available in Amazon Web Services Regions other than the China Regions.</p> </li> <li> <p> <code>IAM</code> – The portal uses Identity and Access Management to authenticate users and manage user permissions.</p> </li> </ul> <p>You can't change this value after you create a portal.</p> <p>Default: <code>SSO</code> </p>"
        },
        "notificationSenderEmail":{
          "shape":"Email",
          "documentation":"<p>The email address that sends alarm notifications.</p> <important> <p>If you use the <a href=\"https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html\">IoT Events managed Lambda function</a> to manage your emails, you must <a href=\"https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html\">verify the sender email address in Amazon SES</a>.</p> </important>"
        },
        "alarms":{
          "shape":"Alarms",
          "documentation":"<p>Contains the configuration information of an alarm created in an IoT SiteWise Monitor portal. You can use the alarm to monitor an asset property and get notified when the asset property value is outside a specified range. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html\">Monitoring with alarms</a> in the <i>IoT SiteWise Application Guide</i>.</p>"
        },
        "portalType":{
          "shape":"PortalType",
          "documentation":"<p>Define the type of portal. The value for IoT SiteWise Monitor (Classic) is <code>SITEWISE_PORTAL_V1</code>. The value for IoT SiteWise Monitor (AI-aware) is <code>SITEWISE_PORTAL_V2</code>.</p>"
        },
        "portalTypeConfiguration":{
          "shape":"PortalTypeConfiguration",
          "documentation":"<p>The configuration entry associated with the specific portal type. The value for IoT SiteWise Monitor (Classic) is <code>SITEWISE_PORTAL_V1</code>. The value for IoT SiteWise Monitor (AI-aware) is <code>SITEWISE_PORTAL_V2</code>.</p>"
        }
      }
    },
    "CreatePortalResponse":{
      "type":"structure",
      "required":[
        "portalId",
        "portalArn",
        "portalStartUrl",
        "portalStatus",
        "ssoApplicationId"
      ],
      "members":{
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the created portal.</p>"
        },
        "portalArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the portal, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:portal/${PortalId}</code> </p>"
        },
        "portalStartUrl":{
          "shape":"Url",
          "documentation":"<p>The URL for the IoT SiteWise Monitor portal. You can use this URL to access portals that use IAM Identity Center for authentication. For portals that use IAM for authentication, you must use the IoT SiteWise console to get a URL that you can use to access the portal.</p>"
        },
        "portalStatus":{
          "shape":"PortalStatus",
          "documentation":"<p>The status of the portal, which contains a state (<code>CREATING</code> after successfully calling this operation) and any error message.</p>"
        },
        "ssoApplicationId":{
          "shape":"SSOApplicationId",
          "documentation":"<p>The associated IAM Identity Center application ID, if the portal uses IAM Identity Center.</p>"
        }
      }
    },
    "CreateProjectRequest":{
      "type":"structure",
      "required":[
        "portalId",
        "projectName"
      ],
      "members":{
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal in which to create the project.</p>"
        },
        "projectName":{
          "shape":"Name",
          "documentation":"<p>A friendly name for the project.</p>"
        },
        "projectDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the project.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the project. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "CreateProjectResponse":{
      "type":"structure",
      "required":[
        "projectId",
        "projectArn"
      ],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>"
        },
        "projectArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the project, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:project/${ProjectId}</code> </p>"
        }
      }
    },
    "CreateTaskRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "taskName",
        "taskConfiguration"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task to create. Must be unique within the workspace.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A description of the task.</p>"
        },
        "taskConfiguration":{
          "shape":"TaskConfiguration",
          "documentation":"<p>The task execution configuration. Specify a <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ContainerTaskConfiguration.html\">containerTaskConfiguration</a> for custom container workloads.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the task. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your AWS IoT SiteWise resources</a> in the AWS IoT SiteWise User Guide.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token, the server returns the cached result from the original successful request without performing the operation again.</p>",
          "idempotencyToken":true
        }
      },
      "documentation":"<p>Request structure for CreateTask operation.</p>"
    },
    "CreateTaskResponse":{
      "type":"structure",
      "required":[
        "taskName",
        "taskArn",
        "version",
        "status"
      ],
      "members":{
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the created task.</p>"
        },
        "taskArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the created task.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version of the newly created task.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the task.</p>"
        }
      },
      "documentation":"<p>Response structure for CreateTask operation.</p>"
    },
    "CreateWorkspaceRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "encryptionConfiguration"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace to create.</p>"
        },
        "workspaceDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the workspace.</p>"
        },
        "encryptionConfiguration":{
          "shape":"WorkspaceEncryptionConfiguration",
          "documentation":"<p>The encryption configuration for the workspace.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the workspace. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure that the request is idempotent. If you retry a request that completed successfully using the same client token, the retry succeeds without performing any further actions.</p>",
          "idempotencyToken":true
        }
      }
    },
    "CreateWorkspaceResponse":{
      "type":"structure",
      "required":[
        "workspaceName",
        "workspaceArn",
        "workspaceStatus"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        },
        "workspaceArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the workspace.</p>"
        },
        "workspaceStatus":{
          "shape":"WorkspaceStatus",
          "documentation":"<p>The status of the workspace, which is <code>CREATING</code> when the operation returns.</p>"
        }
      }
    },
    "Csv":{
      "type":"structure",
      "required":["columnNames"],
      "members":{
        "columnNames":{
          "shape":"ColumnNames",
          "documentation":"<p>The column names specified in the .csv file.</p>"
        }
      },
      "documentation":"<p>A .CSV file.</p>"
    },
    "CustomID":{
      "type":"string",
      "max":139,
      "min":13,
      "pattern":"^(?!00000000-0000-0000-0000-000000000000)[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$|^externalId:[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+"
    },
    "CustomerManagedS3Storage":{
      "type":"structure",
      "required":[
        "s3ResourceArn",
        "roleArn"
      ],
      "members":{
        "s3ResourceArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the Amazon S3 object. For more information about how to find the ARN for an Amazon S3 object, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html\">Amazon S3 resources</a> in the <i>Amazon Simple Storage Service User Guide</i>.</p>"
        },
        "roleArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the Identity and Access Management role that allows IoT SiteWise to send data to Amazon S3.</p>"
        }
      },
      "documentation":"<p>Contains information about a customer managed Amazon S3 bucket.</p>"
    },
    "DashboardDefinition":{
      "type":"string",
      "max":204800,
      "min":0,
      "pattern":".+"
    },
    "DashboardSummaries":{
      "type":"list",
      "member":{"shape":"DashboardSummary"}
    },
    "DashboardSummary":{
      "type":"structure",
      "required":[
        "id",
        "name"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the dashboard.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the dashboard</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The dashboard's description.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the dashboard was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the dashboard was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains a dashboard summary.</p>"
    },
    "DataBindingValue":{
      "type":"structure",
      "members":{
        "assetModelProperty":{"shape":"AssetModelPropertyBindingValue"},
        "assetProperty":{
          "shape":"AssetPropertyBindingValue",
          "documentation":"<p>The asset property value used in the data binding.</p>"
        }
      },
      "documentation":"<p>Represents a value used in a data binding. It can be an asset property or an asset model property.</p>"
    },
    "DataBindingValueFilter":{
      "type":"structure",
      "members":{
        "asset":{
          "shape":"AssetBindingValueFilter",
          "documentation":"<p>Filter criteria for matching data bindings based on a specific asset. Used to list all data bindings referencing a particular asset or its properties.</p>"
        },
        "assetModel":{
          "shape":"AssetModelBindingValueFilter",
          "documentation":"<p>Filter criteria for matching data bindings based on a specific asset model. Used to list all data bindings referencing a particular asset model or its properties.</p>"
        },
        "assetProperty":{
          "shape":"AssetPropertyBindingValueFilter",
          "documentation":"<p>Filter criteria for matching data bindings based on a specific asset property. Used to list all data bindings referencing a particular property of an asset.</p>"
        },
        "assetModelProperty":{
          "shape":"AssetModelPropertyBindingValueFilter",
          "documentation":"<p>Filter criteria for matching data bindings based on a specific asset model property. Used to list all data bindings referencing a particular property of an asset model.</p>"
        }
      },
      "documentation":"<p>A filter used to match specific data binding values based on criteria. This filter allows searching for data bindings by asset, asset model, asset property, or asset model property.</p>"
    },
    "DataSegmentEnrichment":{
      "type":"structure",
      "required":["status"],
      "members":{
        "status":{
          "shape":"EnrichmentStatus",
          "documentation":"<p>The enrichment status of the data segment.</p>"
        },
        "lastEnrichedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date the data segment was last enriched, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains enrichment status information for a data segment.</p>"
    },
    "DataSegmentErrorCode":{
      "type":"string",
      "enum":[
        "INTERNAL_FAILURE",
        "VALIDATION_ERROR",
        "RESOURCE_NOT_FOUND",
        "LIMIT_EXCEEDED",
        "CONFLICTING_OPERATION"
      ]
    },
    "DataSegmentErrorMessage":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "DataSegmentRelationshipSummaries":{
      "type":"list",
      "member":{"shape":"DataSegmentRelationshipSummary"}
    },
    "DataSegmentRelationshipSummary":{
      "type":"structure",
      "required":[
        "targetDatasetId",
        "sourceDatasetId",
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp"
      ],
      "members":{
        "targetDatasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the curated dataset that references the data segment.</p>"
        },
        "sourceDatasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the source session dataset that contains the data segment.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment.</p>"
        }
      },
      "documentation":"<p>Contains summary information about a data segment relationship between a source session dataset that contains the data and a curated dataset that references it, including the time series and timestamp range.</p>"
    },
    "DataSegmentSummaries":{
      "type":"list",
      "member":{"shape":"DataSegmentSummary"}
    },
    "DataSegmentSummary":{
      "type":"structure",
      "required":[
        "sourceDatasetId",
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp",
        "alias",
        "dataType"
      ],
      "members":{
        "sourceDatasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the source dataset that contains the data segment.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment.</p>"
        },
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias of the time series.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The data type of the time series.</p>"
        },
        "enrichment":{
          "shape":"DataSegmentEnrichment",
          "documentation":"<p>The enrichment information for the data segment.</p>"
        }
      },
      "documentation":"<p>Contains summary information about a data segment, including its source dataset, time series, timestamp range, and enrichment status.</p>"
    },
    "DataSetIdList":{
      "type":"list",
      "member":{"shape":"DatasetId"},
      "documentation":"<p>A list of dataset identifiers to restrict a search to.</p>",
      "max":100,
      "min":1
    },
    "DataSetReference":{
      "type":"structure",
      "members":{
        "datasetArn":{
          "shape":"String",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html\">ARN</a> of the dataset. The format is <code>arn:${Partition}:iotsitewise:${Region}:${Account}:dataset/${DatasetId}</code>.</p>"
        },
        "source":{
          "shape":"Source",
          "documentation":"<p>The data source for the dataset.</p>"
        }
      },
      "documentation":"<p>Contains information about the dataset use and it's source.</p>"
    },
    "DatasetConfig":{
      "type":"structure",
      "members":{
        "session":{
          "shape":"SessionConfig",
          "documentation":"<p>The session configuration for a session-type dataset.</p>"
        }
      },
      "documentation":"<p>Contains the configuration for a dataset.</p>"
    },
    "DatasetEnrichment":{
      "type":"structure",
      "members":{
        "video":{
          "shape":"DatasetEnrichmentEntry",
          "documentation":"<p>The enrichment status for video data in the dataset.</p>"
        }
      },
      "documentation":"<p>Contains the enrichment status information for a dataset across data types.</p>"
    },
    "DatasetEnrichmentEntry":{
      "type":"structure",
      "required":["status"],
      "members":{
        "status":{
          "shape":"DatasetEnrichmentStatus",
          "documentation":"<p>The enrichment status of the data type in the dataset.</p>"
        },
        "lastEnrichedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date the data was last enriched, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains enrichment status information for a specific data type in a dataset.</p>"
    },
    "DatasetEnrichmentStatus":{
      "type":"string",
      "enum":[
        "FULLY_ENRICHED",
        "PARTIALLY_ENRICHED",
        "NOT_ENRICHED"
      ]
    },
    "DatasetExportJobFilter":{
      "type":"string",
      "documentation":"&lt;p&gt;Filter for ListDatasetExportJobs. ALL returns jobs in any status; otherwise returns jobs in the specified status.&lt;/p&gt;",
      "enum":[
        "ALL",
        "SUBMITTED",
        "RUNNING",
        "COMPLETED",
        "COMPLETED_WITH_ERRORS",
        "FAILED"
      ]
    },
    "DatasetExportJobId":{
      "type":"string",
      "documentation":"&lt;p&gt;The unique identifier for a dataset export job.&lt;/p&gt;",
      "max":36,
      "min":36,
      "pattern":"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
    },
    "DatasetExportJobStatus":{
      "type":"string",
      "documentation":"&lt;p&gt;The status of a dataset export job.&lt;/p&gt;",
      "enum":[
        "SUBMITTED",
        "RUNNING",
        "COMPLETED",
        "COMPLETED_WITH_ERRORS",
        "FAILED"
      ]
    },
    "DatasetId":{
      "type":"string",
      "documentation":"Unique identifier for a dataset (UUID format)",
      "max":36,
      "min":36,
      "pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
    },
    "DatasetItem":{
      "type":"structure",
      "required":["datasetId"],
      "members":{
        "datasetId":{
          "shape":"DatasetId",
          "documentation":"&lt;p&gt;The unique identifier for the dataset.&lt;/p&gt;"
        },
        "trimSettings":{
          "shape":"TrimSettings",
          "documentation":"&lt;p&gt;The trim settings applied to all items in the dataset. When omitted, the full dataset time range is used.&lt;/p&gt;"
        },
        "exportDataTypes":{
          "shape":"ExportDataTypeList",
          "documentation":"&lt;p&gt;The optional subset of data types to export. If omitted, all data types are exported.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;A dataset to process.&lt;/p&gt;"
    },
    "DatasetSource":{
      "type":"structure",
      "required":[
        "sourceType",
        "sourceFormat"
      ],
      "members":{
        "sourceType":{
          "shape":"DatasetSourceType",
          "documentation":"<p>The type of data source for the dataset.</p>"
        },
        "sourceFormat":{
          "shape":"DatasetSourceFormat",
          "documentation":"<p>The format of the dataset source associated with the dataset.</p>"
        },
        "sourceDetail":{
          "shape":"SourceDetail",
          "documentation":"<p>The details of the dataset source associated with the dataset.</p>"
        }
      },
      "documentation":"<p>The data source for the dataset.</p>"
    },
    "DatasetSourceFormat":{
      "type":"string",
      "enum":[
        "KNOWLEDGE_BASE",
        "TIMESERIES"
      ]
    },
    "DatasetSourceType":{
      "type":"string",
      "enum":[
        "KENDRA",
        "SITEWISE"
      ]
    },
    "DatasetState":{
      "type":"string",
      "enum":[
        "CREATING",
        "ACTIVE",
        "UPDATING",
        "DELETING",
        "FAILED"
      ]
    },
    "DatasetStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"DatasetState",
          "documentation":"<p>The current status of the dataset.</p>"
        },
        "error":{"shape":"ErrorDetails"}
      },
      "documentation":"<p>The status of the dataset. This contains the state and any error messages. The state is <code>ACTIVE</code> when ready to use.</p>"
    },
    "DatasetSummaries":{
      "type":"list",
      "member":{"shape":"DatasetSummary"}
    },
    "DatasetSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "name",
        "description",
        "creationDate",
        "lastUpdateDate",
        "status"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html\">ARN</a> of the dataset. The format is <code>arn:${Partition}:iotsitewise:${Region}:${Account}:dataset/${DatasetId}</code>.</p>"
        },
        "name":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the dataset.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A description about the dataset, and its functionality.</p>"
        },
        "sourceType":{
          "shape":"DatasetSourceType",
          "documentation":"<p>The data source type of the dataset.</p>"
        },
        "datasetType":{
          "shape":"DatasetTypeEnum",
          "documentation":"<p>The type of dataset: a session dataset, a curated dataset, or a connection to an external datasource.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The dataset creation date, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the dataset was last updated, in Unix epoch time.</p>"
        },
        "status":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status of the dataset. This contains the state and any error messages. The state is <code>ACTIVE</code> when ready to use.</p>"
        },
        "enrichmentStatus":{
          "shape":"DatasetEnrichment",
          "documentation":"<p>The enrichment status of the dataset.</p>"
        }
      },
      "documentation":"<p>The summary details for the dataset.</p>"
    },
    "DatasetTypeEnum":{
      "type":"string",
      "enum":[
        "SESSION",
        "CURATED",
        "EXTERNAL"
      ]
    },
    "Datum":{
      "type":"structure",
      "members":{
        "scalarValue":{
          "shape":"ScalarValue",
          "documentation":"<p>Indicates if the data point is a scalar value such as integer, string, double, or Boolean. </p>"
        },
        "arrayValue":{
          "shape":"DatumList",
          "documentation":"<p>Indicates if the data point is an array. </p>"
        },
        "rowValue":{
          "shape":"Row",
          "documentation":"<p>Indicates if the data point is a row.</p>"
        },
        "nullValue":{
          "shape":"NullableBoolean",
          "documentation":"<p>Indicates if the data point is null.</p>"
        }
      },
      "documentation":"<p>Represents a single data point in a query result. </p>"
    },
    "DatumList":{
      "type":"list",
      "member":{"shape":"Datum"}
    },
    "DefaultValue":{
      "type":"string",
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "DeleteAccessPolicyRequest":{
      "type":"structure",
      "required":["accessPolicyId"],
      "members":{
        "accessPolicyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the access policy to be deleted.</p>",
          "location":"uri",
          "locationName":"accessPolicyId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteAccessPolicyResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteApplicationRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "id"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>Name of the workspace to associate with the underlying Application</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>ID of the Application to delete</p>",
          "location":"uri",
          "locationName":"id"
        }
      }
    },
    "DeleteApplicationResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteAssetModelCompositeModelRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelCompositeModelId"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model, in UUID format.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "assetModelCompositeModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of a composite model on this asset model.</p>",
          "location":"uri",
          "locationName":"assetModelCompositeModelId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        },
        "ifMatch":{
          "shape":"ETag",
          "documentation":"<p>The expected current entity tag (ETag) for the asset model’s latest or active version (specified using <code>matchForVersionType</code>). The delete request is rejected if the tag does not match the latest or active version's current entity tag. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/opt-locking-for-model.html\">Optimistic locking for asset model writes</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"header",
          "locationName":"If-Match"
        },
        "ifNoneMatch":{
          "shape":"SelectAll",
          "documentation":"<p>Accepts <b>*</b> to reject the delete request if an active version (specified using <code>matchForVersionType</code> as <code>ACTIVE</code>) already exists for the asset model.</p>",
          "location":"header",
          "locationName":"If-None-Match"
        },
        "matchForVersionType":{
          "shape":"AssetModelVersionType",
          "documentation":"<p>Specifies the asset model version type (<code>LATEST</code> or <code>ACTIVE</code>) used in conjunction with <code>If-Match</code> or <code>If-None-Match</code> headers to determine the target ETag for the delete operation.</p>",
          "location":"header",
          "locationName":"Match-For-Version-Type"
        }
      }
    },
    "DeleteAssetModelCompositeModelResponse":{
      "type":"structure",
      "required":["assetModelStatus"],
      "members":{
        "assetModelStatus":{"shape":"AssetModelStatus"},
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        }
      }
    },
    "DeleteAssetModelInterfaceRelationshipRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "interfaceAssetModelId"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else externalId: followed by the external ID.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "interfaceAssetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the interface asset model. This can be either the actual ID in UUID format, or else externalId: followed by the external ID.</p>",
          "location":"uri",
          "locationName":"interfaceAssetModelId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteAssetModelInterfaceRelationshipResponse":{
      "type":"structure",
      "required":[
        "assetModelId",
        "interfaceAssetModelId",
        "assetModelArn",
        "assetModelStatus"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        },
        "interfaceAssetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the interface asset model.</p>"
        },
        "assetModelArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the asset model, which has the following format. <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model/${AssetModelId}</code> </p>"
        },
        "assetModelStatus":{"shape":"AssetModelStatus"}
      }
    },
    "DeleteAssetModelRequest":{
      "type":"structure",
      "required":["assetModelId"],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model to delete. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        },
        "ifMatch":{
          "shape":"ETag",
          "documentation":"<p>The expected current entity tag (ETag) for the asset model’s latest or active version (specified using <code>matchForVersionType</code>). The delete request is rejected if the tag does not match the latest or active version's current entity tag. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/opt-locking-for-model.html\">Optimistic locking for asset model writes</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"header",
          "locationName":"If-Match"
        },
        "ifNoneMatch":{
          "shape":"SelectAll",
          "documentation":"<p>Accepts <b>*</b> to reject the delete request if an active version (specified using <code>matchForVersionType</code> as <code>ACTIVE</code>) already exists for the asset model.</p>",
          "location":"header",
          "locationName":"If-None-Match"
        },
        "matchForVersionType":{
          "shape":"AssetModelVersionType",
          "documentation":"<p>Specifies the asset model version type (<code>LATEST</code> or <code>ACTIVE</code>) used in conjunction with <code>If-Match</code> or <code>If-None-Match</code> headers to determine the target ETag for the delete operation.</p>",
          "location":"header",
          "locationName":"Match-For-Version-Type"
        }
      }
    },
    "DeleteAssetModelResponse":{
      "type":"structure",
      "required":["assetModelStatus"],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        },
        "assetModelStatus":{
          "shape":"AssetModelStatus",
          "documentation":"<p>The status of the asset model, which contains a state (<code>DELETING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "DeleteAssetRequest":{
      "type":"structure",
      "required":["assetId"],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset to delete. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteAssetResponse":{
      "type":"structure",
      "required":["assetStatus"],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset.</p>"
        },
        "assetStatus":{
          "shape":"AssetStatus",
          "documentation":"<p>The status of the asset, which contains a state (<code>DELETING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "DeleteComputationModelRequest":{
      "type":"structure",
      "required":["computationModelId"],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>",
          "location":"uri",
          "locationName":"computationModelId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteComputationModelResponse":{
      "type":"structure",
      "required":["computationModelStatus"],
      "members":{
        "computationModelStatus":{
          "shape":"ComputationModelStatus",
          "documentation":"<p>The status of the computation model. It contains a state (DELETING after successfully calling this operation) and any error messages.</p>"
        }
      }
    },
    "DeleteDashboardRequest":{
      "type":"structure",
      "required":["dashboardId"],
      "members":{
        "dashboardId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dashboard to delete.</p>",
          "location":"uri",
          "locationName":"dashboardId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteDashboardResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteDataSegmentEntries":{
      "type":"list",
      "member":{"shape":"DeleteDataSegmentEntry"},
      "max":10,
      "min":1
    },
    "DeleteDataSegmentEntry":{
      "type":"structure",
      "required":[
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp"
      ],
      "members":{
        "timeSeriesId":{
          "shape":"ID",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment to delete.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment to delete.</p>"
        }
      },
      "documentation":"<p>Contains information about a data segment entry to delete.</p>"
    },
    "DeleteDatasetRequest":{
      "type":"structure",
      "required":["datasetId"],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteDatasetResponse":{
      "type":"structure",
      "required":["datasetStatus"],
      "members":{
        "datasetStatus":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status of the dataset. This contains the state and any error messages. State is <code>DELETING</code> after a successfull call to this API, and any associated error message.</p>"
        }
      }
    },
    "DeleteFilesAfterImport":{"type":"boolean"},
    "DeleteGatewayRequest":{
      "type":"structure",
      "required":["gatewayId"],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway to delete.</p>",
          "location":"uri",
          "locationName":"gatewayId"
        }
      }
    },
    "DeletePipelineRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline to delete.</p>",
          "location":"uri",
          "locationName":"pipelineName"
        }
      },
      "documentation":"<p>Request structure for DeletePipeline operation.</p>"
    },
    "DeletePipelineResponse":{
      "type":"structure",
      "required":["status"],
      "members":{
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the pipeline.</p>"
        }
      },
      "documentation":"<p>Response structure for DeletePipeline operation.</p>"
    },
    "DeletePortalRequest":{
      "type":"structure",
      "required":["portalId"],
      "members":{
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal to delete.</p>",
          "location":"uri",
          "locationName":"portalId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeletePortalResponse":{
      "type":"structure",
      "required":["portalStatus"],
      "members":{
        "portalStatus":{
          "shape":"PortalStatus",
          "documentation":"<p>The status of the portal, which contains a state (<code>DELETING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "DeleteProjectRequest":{
      "type":"structure",
      "required":["projectId"],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>",
          "location":"uri",
          "locationName":"projectId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteProjectResponse":{
      "type":"structure",
      "members":{}
    },
    "DeleteTaskRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "taskName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task to delete.</p>",
          "location":"uri",
          "locationName":"taskName"
        }
      },
      "documentation":"<p>Request structure for DeleteTask operation.</p>"
    },
    "DeleteTaskResponse":{
      "type":"structure",
      "required":["status"],
      "members":{
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the task.</p>"
        }
      },
      "documentation":"<p>Response structure for DeleteTask operation.</p>"
    },
    "DeleteTimeSeriesRequest":{
      "type":"structure",
      "members":{
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the time series.</p>",
          "location":"querystring",
          "locationName":"alias"
        },
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset in which the asset property was created. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset property. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        }
      }
    },
    "DeleteWorkspaceRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace to delete.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure that the request is idempotent. If you retry a request that completed successfully using the same client token, the retry succeeds without performing any further actions.</p>",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"clientToken"
        }
      }
    },
    "DeleteWorkspaceResponse":{
      "type":"structure",
      "required":["workspaceStatus"],
      "members":{
        "workspaceStatus":{
          "shape":"WorkspaceStatus",
          "documentation":"<p>The status of the workspace after the deletion request, which is <code>DELETING</code> when the operation returns.</p>"
        }
      }
    },
    "DescribeAccessPolicyRequest":{
      "type":"structure",
      "required":["accessPolicyId"],
      "members":{
        "accessPolicyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the access policy.</p>",
          "location":"uri",
          "locationName":"accessPolicyId"
        }
      }
    },
    "DescribeAccessPolicyResponse":{
      "type":"structure",
      "required":[
        "accessPolicyId",
        "accessPolicyArn",
        "accessPolicyIdentity",
        "accessPolicyResource",
        "accessPolicyPermission",
        "accessPolicyCreationDate",
        "accessPolicyLastUpdateDate"
      ],
      "members":{
        "accessPolicyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the access policy.</p>"
        },
        "accessPolicyArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the access policy, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy/${AccessPolicyId}</code> </p>"
        },
        "accessPolicyIdentity":{
          "shape":"Identity",
          "documentation":"<p>The identity (IAM Identity Center user, IAM Identity Center group, or IAM user) to which this access policy applies.</p>"
        },
        "accessPolicyResource":{
          "shape":"Resource",
          "documentation":"<p>The IoT SiteWise Monitor resource (portal or project) to which this access policy provides access.</p>"
        },
        "accessPolicyPermission":{
          "shape":"Permission",
          "documentation":"<p>The access policy permission. Note that a project <code>ADMINISTRATOR</code> is also known as a project owner.</p>"
        },
        "accessPolicyCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the access policy was created, in Unix epoch time.</p>"
        },
        "accessPolicyLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the access policy was last updated, in Unix epoch time.</p>"
        }
      }
    },
    "DescribeActionRequest":{
      "type":"structure",
      "required":["actionId"],
      "members":{
        "actionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action.</p>",
          "location":"uri",
          "locationName":"actionId"
        }
      }
    },
    "DescribeActionResponse":{
      "type":"structure",
      "required":[
        "actionId",
        "targetResource",
        "actionDefinitionId",
        "actionPayload",
        "executionTime"
      ],
      "members":{
        "actionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action.</p>"
        },
        "targetResource":{
          "shape":"TargetResource",
          "documentation":"<p>The resource the action will be taken on.</p>"
        },
        "actionDefinitionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action definition.</p>"
        },
        "actionPayload":{
          "shape":"ActionPayload",
          "documentation":"<p>The JSON payload of the action.</p>"
        },
        "executionTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the action was executed.</p>"
        },
        "resolveTo":{
          "shape":"ResolveTo",
          "documentation":"<p>The detailed resource this action resolves to.</p>"
        }
      }
    },
    "DescribeApplicationRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "id"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>Name of the workspace to associate with the underlying Application</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>ID of the Application</p>",
          "location":"uri",
          "locationName":"id"
        }
      }
    },
    "DescribeApplicationResponse":{
      "type":"structure",
      "required":[
        "arn",
        "createdAt",
        "dnsSubdomain",
        "id",
        "idcApplicationArn",
        "name",
        "status",
        "updatedAt",
        "workspaceName"
      ],
      "members":{
        "arn":{
          "shape":"ARN",
          "documentation":"<p>ARN of the application</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the application was created</p>"
        },
        "dnsSubdomain":{
          "shape":"DnsSubdomain",
          "documentation":"<p>DNS subdomain for the application</p>"
        },
        "description":{
          "shape":"ApplicationDescription",
          "documentation":"<p>Description of the application</p>"
        },
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>Unique identifier of the application</p>"
        },
        "idcApplicationArn":{
          "shape":"ARN",
          "documentation":"<p>Identity Center Application ARN associated with this application</p>"
        },
        "name":{
          "shape":"ApplicationName",
          "documentation":"<p>Name of the application</p>"
        },
        "status":{
          "shape":"ApplicationStatus",
          "documentation":"<p>Current status of the application</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the application was last updated</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>Name of the workspace this application belongs to</p>"
        }
      }
    },
    "DescribeAssetCompositeModelRequest":{
      "type":"structure",
      "required":[
        "assetId",
        "assetCompositeModelId"
      ],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "assetCompositeModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of a composite model on this asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetCompositeModelId"
        }
      }
    },
    "DescribeAssetCompositeModelResponse":{
      "type":"structure",
      "required":[
        "assetId",
        "assetCompositeModelId",
        "assetCompositeModelPath",
        "assetCompositeModelName",
        "assetCompositeModelDescription",
        "assetCompositeModelType",
        "assetCompositeModelProperties",
        "assetCompositeModelSummaries"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format. This ID uniquely identifies the asset within IoT SiteWise and can be used with other IoT SiteWise APIs.</p>"
        },
        "assetCompositeModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of a composite model on this asset.</p>"
        },
        "assetCompositeModelExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset model.</p> <p>If the composite model is a component-based composite model, or one nested inside a component model, you can only set the external ID using <code>UpdateAssetModelCompositeModel</code> and specifying the derived ID of the model or property from the created model it's a part of.</p>"
        },
        "assetCompositeModelPath":{
          "shape":"AssetCompositeModelPath",
          "documentation":"<p>The path to the composite model listing the parent composite models.</p>"
        },
        "assetCompositeModelName":{
          "shape":"Name",
          "documentation":"<p>The unique, friendly name for the composite model.</p>"
        },
        "assetCompositeModelDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the composite model.</p>"
        },
        "assetCompositeModelType":{
          "shape":"Name",
          "documentation":"<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>"
        },
        "assetCompositeModelProperties":{
          "shape":"AssetProperties",
          "documentation":"<p>The property definitions of the composite model that was used to create the asset.</p>"
        },
        "assetCompositeModelSummaries":{
          "shape":"AssetCompositeModelSummaries",
          "documentation":"<p>The list of composite model summaries.</p>"
        },
        "actionDefinitions":{
          "shape":"ActionDefinitions",
          "documentation":"<p>The available actions for a composite model on this asset.</p>"
        }
      }
    },
    "DescribeAssetModelCompositeModelRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelCompositeModelId"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "assetModelCompositeModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of a composite model on this asset model. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelCompositeModelId"
        },
        "assetModelVersion":{
          "shape":"AssetModelVersionFilter",
          "documentation":"<p>The version alias that specifies the latest or active version of the asset model. The details are returned in the response. The default value is <code>LATEST</code>. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/model-active-version.html\"> Asset model versions</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetModelVersion"
        }
      }
    },
    "DescribeAssetModelCompositeModelResponse":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelCompositeModelId",
        "assetModelCompositeModelPath",
        "assetModelCompositeModelName",
        "assetModelCompositeModelDescription",
        "assetModelCompositeModelType",
        "assetModelCompositeModelProperties",
        "assetModelCompositeModelSummaries"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model, in UUID format.</p>"
        },
        "assetModelCompositeModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of a composite model on this asset model.</p>"
        },
        "assetModelCompositeModelExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of a composite model on this asset model.</p>"
        },
        "assetModelCompositeModelPath":{
          "shape":"AssetModelCompositeModelPath",
          "documentation":"<p>The path to the composite model listing the parent composite models.</p>"
        },
        "assetModelCompositeModelName":{
          "shape":"Name",
          "documentation":"<p>The unique, friendly name for the composite model.</p>"
        },
        "assetModelCompositeModelDescription":{
          "shape":"Description",
          "documentation":"<p>The description for the composite model.</p>"
        },
        "assetModelCompositeModelType":{
          "shape":"Name",
          "documentation":"<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>"
        },
        "assetModelCompositeModelProperties":{
          "shape":"AssetModelProperties",
          "documentation":"<p>The property definitions of the composite model.</p>"
        },
        "compositionDetails":{
          "shape":"CompositionDetails",
          "documentation":"<p>Metadata for the composition relationship established by using <code>composedAssetModelId</code> in <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\"> <code>CreateAssetModelCompositeModel</code> </a>. For instance, an array detailing the path of the composition relationship for this composite model.</p>"
        },
        "assetModelCompositeModelSummaries":{
          "shape":"AssetModelCompositeModelSummaries",
          "documentation":"<p>The list of composite model summaries for the composite model.</p>"
        },
        "actionDefinitions":{
          "shape":"ActionDefinitions",
          "documentation":"<p>The available actions for a composite model on this asset model.</p>"
        }
      }
    },
    "DescribeAssetModelInterfaceRelationshipRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "interfaceAssetModelId"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else externalId: followed by the external ID.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "interfaceAssetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the interface asset model. This can be either the actual ID in UUID format, or else externalId: followed by the external ID.</p>",
          "location":"uri",
          "locationName":"interfaceAssetModelId"
        }
      }
    },
    "DescribeAssetModelInterfaceRelationshipResponse":{
      "type":"structure",
      "required":[
        "assetModelId",
        "interfaceAssetModelId",
        "propertyMappings",
        "hierarchyMappings"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        },
        "interfaceAssetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the interface asset model.</p>"
        },
        "propertyMappings":{
          "shape":"PropertyMappings",
          "documentation":"<p>A list of property mappings between the interface asset model and the asset model where the interface is applied.</p>"
        },
        "hierarchyMappings":{
          "shape":"HierarchyMappings",
          "documentation":"<p>A list of hierarchy mappings between the interface asset model and the asset model where the interface is applied.</p>"
        }
      }
    },
    "DescribeAssetModelRequest":{
      "type":"structure",
      "required":["assetModelId"],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "excludeProperties":{
          "shape":"ExcludeProperties",
          "documentation":"<p> Whether or not to exclude asset model properties from the response. </p>",
          "location":"querystring",
          "locationName":"excludeProperties"
        },
        "assetModelVersion":{
          "shape":"AssetModelVersionFilter",
          "documentation":"<p>The version alias that specifies the latest or active version of the asset model. The details are returned in the response. The default value is <code>LATEST</code>. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/model-active-version.html\"> Asset model versions</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetModelVersion"
        }
      }
    },
    "DescribeAssetModelResponse":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelArn",
        "assetModelName",
        "assetModelDescription",
        "assetModelProperties",
        "assetModelHierarchies",
        "assetModelCreationDate",
        "assetModelLastUpdateDate",
        "assetModelStatus"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model, in UUID format.</p>"
        },
        "assetModelExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset model, if any.</p>"
        },
        "assetModelArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the asset model, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model/${AssetModelId}</code> </p>"
        },
        "assetModelName":{
          "shape":"Name",
          "documentation":"<p>The name of the asset model.</p>"
        },
        "assetModelType":{
          "shape":"AssetModelType",
          "documentation":"<p>The type of asset model.</p> <ul> <li> <p> <b>ASSET_MODEL</b> – (default) An asset model that you can use to create assets. Can't be included as a component in another asset model.</p> </li> <li> <p> <b>COMPONENT_MODEL</b> – A reusable component that you can include in the composite models of other asset models. You can't create assets directly from this type of asset model. </p> </li> </ul>"
        },
        "assetModelDescription":{
          "shape":"Description",
          "documentation":"<p>The asset model's description.</p>"
        },
        "assetModelProperties":{
          "shape":"AssetModelProperties",
          "documentation":"<p>The list of asset properties for the asset model.</p> <p>This object doesn't include properties that you define in composite models. You can find composite model properties in the <code>assetModelCompositeModels</code> object.</p>"
        },
        "assetModelHierarchies":{
          "shape":"AssetModelHierarchies",
          "documentation":"<p>A list of asset model hierarchies that each contain a <code>childAssetModelId</code> and a <code>hierarchyId</code> (named <code>id</code>). A hierarchy specifies allowed parent/child asset relationships for an asset model.</p>"
        },
        "assetModelCompositeModels":{
          "shape":"AssetModelCompositeModels",
          "documentation":"<p>The list of built-in composite models for the asset model, such as those with those of type <code>AWS/ALARMS</code>.</p>"
        },
        "assetModelCompositeModelSummaries":{
          "shape":"AssetModelCompositeModelSummaries",
          "documentation":"<p>The list of the immediate child custom composite model summaries for the asset model.</p>"
        },
        "assetModelCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset model was created, in Unix epoch time.</p>"
        },
        "assetModelLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset model was last updated, in Unix epoch time.</p>"
        },
        "assetModelStatus":{
          "shape":"AssetModelStatus",
          "documentation":"<p>The current status of the asset model, which contains a state and any error message.</p>"
        },
        "assetModelVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the asset model. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/model-active-version.html\"> Asset model versions</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "interfaceDetails":{
          "shape":"InterfaceDetails",
          "documentation":"<p>A list of interface details that describe the interfaces implemented by this asset model, including interface asset model IDs and property mappings.</p>"
        },
        "eTag":{
          "shape":"ETag",
          "documentation":"<p>The entity tag (ETag) is a hash of the retrieved version of the asset model. It's used to make concurrent updates safely to the resource. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/opt-locking-for-model.html\">Optimistic locking for asset model writes</a> in the <i>IoT SiteWise User Guide</i>. </p> <p>See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/opt-locking-for-model.html\"> Optimistic locking for asset model writes</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"header",
          "locationName":"ETag"
        }
      }
    },
    "DescribeAssetPropertyRequest":{
      "type":"structure",
      "required":[
        "assetId",
        "propertyId"
      ],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset property. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"propertyId"
        }
      }
    },
    "DescribeAssetPropertyResponse":{
      "type":"structure",
      "required":[
        "assetId",
        "assetName",
        "assetModelId"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>"
        },
        "assetExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetName":{
          "shape":"Name",
          "documentation":"<p>The name of the asset.</p>"
        },
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model, in UUID format.</p>"
        },
        "assetProperty":{
          "shape":"Property",
          "documentation":"<p>The asset property's definition, alias, and notification state.</p> <p>This response includes this object for normal asset properties. If you describe an asset property in a composite model, this response includes the asset property information in <code>compositeModel</code>.</p>"
        },
        "compositeModel":{
          "shape":"CompositeModelProperty",
          "documentation":"<p>The composite model that declares this asset property, if this asset property exists in a composite model.</p>"
        }
      }
    },
    "DescribeAssetRequest":{
      "type":"structure",
      "required":["assetId"],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "excludeProperties":{
          "shape":"ExcludeProperties",
          "documentation":"<p> Whether or not to exclude asset properties from the response. </p>",
          "location":"querystring",
          "locationName":"excludeProperties"
        }
      }
    },
    "DescribeAssetResponse":{
      "type":"structure",
      "required":[
        "assetId",
        "assetArn",
        "assetName",
        "assetModelId",
        "assetProperties",
        "assetHierarchies",
        "assetCreationDate",
        "assetLastUpdateDate",
        "assetStatus"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>"
        },
        "assetExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset, if any.</p>"
        },
        "assetArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the asset, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset/${AssetId}</code> </p>"
        },
        "assetName":{
          "shape":"Name",
          "documentation":"<p>The name of the asset.</p>"
        },
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model that was used to create the asset.</p>"
        },
        "assetProperties":{
          "shape":"AssetProperties",
          "documentation":"<p>The list of asset properties for the asset.</p> <p>This object doesn't include properties that you define in composite models. You can find composite model properties in the <code>assetCompositeModels</code> object.</p>"
        },
        "assetHierarchies":{
          "shape":"AssetHierarchies",
          "documentation":"<p>A list of asset hierarchies that each contain a <code>hierarchyId</code>. A hierarchy specifies allowed parent/child asset relationships.</p>"
        },
        "assetCompositeModels":{
          "shape":"AssetCompositeModels",
          "documentation":"<p>The composite models for the asset.</p>"
        },
        "assetCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset was created, in Unix epoch time.</p>"
        },
        "assetLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the asset was last updated, in Unix epoch time.</p>"
        },
        "assetStatus":{
          "shape":"AssetStatus",
          "documentation":"<p>The current status of the asset, which contains a state and any error message.</p>"
        },
        "assetDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the asset.</p>"
        },
        "assetCompositeModelSummaries":{
          "shape":"AssetCompositeModelSummaries",
          "documentation":"<p>The list of the immediate child custom composite model summaries for the asset.</p>"
        }
      }
    },
    "DescribeBulkImportJobRequest":{
      "type":"structure",
      "required":["jobId"],
      "members":{
        "jobId":{
          "shape":"ID",
          "documentation":"<p>The ID of the job.</p>",
          "location":"uri",
          "locationName":"jobId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        }
      }
    },
    "DescribeBulkImportJobResponse":{
      "type":"structure",
      "required":[
        "jobId",
        "jobName",
        "jobStatus",
        "jobRoleArn",
        "files",
        "errorReportLocation",
        "jobCreationDate",
        "jobLastUpdateDate"
      ],
      "members":{
        "jobId":{
          "shape":"ID",
          "documentation":"<p>The ID of the job.</p>"
        },
        "jobName":{
          "shape":"Name",
          "documentation":"<p>The unique name that helps identify the job request.</p>"
        },
        "jobStatus":{
          "shape":"JobStatus",
          "documentation":"<p>The status of the bulk import job can be one of following values:</p> <ul> <li> <p> <code>PENDING</code> – IoT SiteWise is waiting for the current bulk import job to finish.</p> </li> <li> <p> <code>CANCELLED</code> – The bulk import job has been canceled.</p> </li> <li> <p> <code>RUNNING</code> – IoT SiteWise is processing your request to import your data from Amazon S3.</p> </li> <li> <p> <code>COMPLETED</code> – IoT SiteWise successfully completed your request to import data from Amazon S3.</p> </li> <li> <p> <code>FAILED</code> – IoT SiteWise couldn't process your request to import data from Amazon S3. You can use logs saved in the specified error report location in Amazon S3 to troubleshoot issues.</p> </li> <li> <p> <code>COMPLETED_WITH_FAILURES</code> – IoT SiteWise completed your request to import data from Amazon S3 with errors. You can use logs saved in the specified error report location in Amazon S3 to troubleshoot issues.</p> </li> </ul>"
        },
        "jobRoleArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the IAM role that allows IoT SiteWise to read Amazon S3 data.</p>"
        },
        "files":{
          "shape":"Files",
          "documentation":"<p>The files in the specified Amazon S3 bucket that contain your data. You can specify up to 100 files for each bulk import job. Each file supports the following size limits:</p> <ul> <li> <p>Parquet files – Up to 256 MiB.</p> </li> <li> <p>Other file formats – Up to 5 GiB.</p> </li> </ul>"
        },
        "errorReportLocation":{
          "shape":"ErrorReportLocation",
          "documentation":"<p>The Amazon S3 destination where errors associated with the job creation request are saved.</p>"
        },
        "jobConfiguration":{
          "shape":"JobConfiguration",
          "documentation":"<p>Contains the configuration information of a job, such as the file format used to save data in Amazon S3.</p>"
        },
        "jobCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the job was created, in Unix epoch TIME.</p>"
        },
        "jobLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the job was last updated, in Unix epoch time.</p>"
        },
        "adaptiveIngestion":{
          "shape":"AdaptiveIngestion",
          "documentation":"<p>If set to true, ingest new data into IoT SiteWise storage. Measurements with notifications, metrics and transforms are computed. If set to false, historical data is ingested into IoT SiteWise as is.</p>"
        },
        "deleteFilesAfterImport":{
          "shape":"DeleteFilesAfterImport",
          "documentation":"<p>If set to true, your data files is deleted from S3, after ingestion into IoT SiteWise storage.</p>"
        },
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        }
      }
    },
    "DescribeComputationModelExecutionSummaryRequest":{
      "type":"structure",
      "required":["computationModelId"],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>",
          "location":"uri",
          "locationName":"computationModelId"
        },
        "resolveToResourceType":{
          "shape":"ResolveToResourceType",
          "documentation":"<p>The type of the resolved resource.</p>",
          "location":"querystring",
          "locationName":"resolveToResourceType"
        },
        "resolveToResourceId":{
          "shape":"ID",
          "documentation":"<p>The ID of the resolved resource.</p>",
          "location":"querystring",
          "locationName":"resolveToResourceId"
        }
      }
    },
    "DescribeComputationModelExecutionSummaryResponse":{
      "type":"structure",
      "required":[
        "computationModelId",
        "computationModelExecutionSummary"
      ],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>"
        },
        "resolveTo":{
          "shape":"ResolveTo",
          "documentation":"<p>The detailed resource this execution summary resolves to.</p>"
        },
        "computationModelExecutionSummary":{
          "shape":"ComputationModelExecutionSummary",
          "documentation":"<p>Contains the execution summary of the computation model.</p>"
        }
      }
    },
    "DescribeComputationModelRequest":{
      "type":"structure",
      "required":["computationModelId"],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>",
          "location":"uri",
          "locationName":"computationModelId"
        },
        "computationModelVersion":{
          "shape":"ComputationModelVersionFilter",
          "documentation":"<p>The version of the computation model.</p>",
          "location":"querystring",
          "locationName":"computationModelVersion"
        }
      }
    },
    "DescribeComputationModelResponse":{
      "type":"structure",
      "required":[
        "computationModelId",
        "computationModelArn",
        "computationModelName",
        "computationModelConfiguration",
        "computationModelDataBinding",
        "computationModelCreationDate",
        "computationModelLastUpdateDate",
        "computationModelStatus",
        "computationModelVersion",
        "actionDefinitions"
      ],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>"
        },
        "computationModelArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the computation model, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:computation-model/${ComputationModelId}</code> </p>"
        },
        "computationModelName":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the computation model.</p>"
        },
        "computationModelDescription":{
          "shape":"RestrictedDescription",
          "documentation":"<p>The description of the computation model.</p>"
        },
        "computationModelConfiguration":{
          "shape":"ComputationModelConfiguration",
          "documentation":"<p>The configuration for the computation model.</p>"
        },
        "computationModelDataBinding":{
          "shape":"ComputationModelDataBinding",
          "documentation":"<p>The data binding for the computation model. Key is a variable name defined in configuration. Value is a <code>ComputationModelDataBindingValue</code> referenced by the variable.</p>"
        },
        "computationModelCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The model creation date, in Unix epoch time.</p>"
        },
        "computationModelLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the model was last updated, in Unix epoch time.</p>"
        },
        "computationModelStatus":{
          "shape":"ComputationModelStatus",
          "documentation":"<p>The current status of the asset model, which contains a state and an error message if any.</p>"
        },
        "computationModelVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the computation model.</p>"
        },
        "actionDefinitions":{
          "shape":"ActionDefinitions",
          "documentation":"<p>The available actions for this computation model.</p>"
        }
      }
    },
    "DescribeDashboardRequest":{
      "type":"structure",
      "required":["dashboardId"],
      "members":{
        "dashboardId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dashboard.</p>",
          "location":"uri",
          "locationName":"dashboardId"
        }
      }
    },
    "DescribeDashboardResponse":{
      "type":"structure",
      "required":[
        "dashboardId",
        "dashboardArn",
        "dashboardName",
        "projectId",
        "dashboardDefinition",
        "dashboardCreationDate",
        "dashboardLastUpdateDate"
      ],
      "members":{
        "dashboardId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dashboard.</p>"
        },
        "dashboardArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the dashboard, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard/${DashboardId}</code> </p>"
        },
        "dashboardName":{
          "shape":"Name",
          "documentation":"<p>The name of the dashboard.</p>"
        },
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project that the dashboard is in.</p>"
        },
        "dashboardDescription":{
          "shape":"Description",
          "documentation":"<p>The dashboard's description.</p>"
        },
        "dashboardDefinition":{
          "shape":"DashboardDefinition",
          "documentation":"<p>The dashboard's definition JSON literal. For detailed information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html\">Creating dashboards (CLI)</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "dashboardCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the dashboard was created, in Unix epoch time.</p>"
        },
        "dashboardLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the dashboard was last updated, in Unix epoch time.</p>"
        }
      }
    },
    "DescribeDatasetExportJobRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "jobId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset export job.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "jobId":{
          "shape":"DatasetExportJobId",
          "documentation":"<p>The unique identifier for the dataset export job.</p>",
          "location":"uri",
          "locationName":"jobId"
        }
      },
      "documentation":"<p>Request to describe a dataset export job.</p>"
    },
    "DescribeDatasetExportJobResponse":{
      "type":"structure",
      "required":[
        "jobId",
        "workspaceName",
        "status",
        "startedAt",
        "destinationS3Uri",
        "errorReportLocation",
        "input"
      ],
      "members":{
        "jobId":{
          "shape":"DatasetExportJobId",
          "documentation":"<p>The unique identifier for the dataset export job.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset export job.</p>"
        },
        "status":{
          "shape":"DatasetExportJobStatus",
          "documentation":"<p>The current status of the dataset export job.</p>"
        },
        "startedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The timestamp when the job started processing.</p>"
        },
        "completedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The timestamp when the job completed, or null if the job is still running.</p>"
        },
        "destinationS3Uri":{
          "shape":"S3Uri",
          "documentation":"<p>The S3 URI where output clips are written.</p>"
        },
        "errorReportLocation":{
          "shape":"ExportErrorReportLocation",
          "documentation":"<p>The location where the error report will be written on failure.</p>"
        },
        "input":{
          "shape":"ProcessingInput",
          "documentation":"<p>The processing input that was provided in the CreateDatasetExportJob request.</p>"
        }
      },
      "documentation":"<p>Response for describe dataset export job request.</p>"
    },
    "DescribeDatasetRequest":{
      "type":"structure",
      "required":["datasetId"],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        },
        "datasetVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the dataset.</p>",
          "location":"querystring",
          "locationName":"datasetVersion"
        }
      }
    },
    "DescribeDatasetResponse":{
      "type":"structure",
      "required":[
        "datasetId",
        "datasetArn",
        "datasetName",
        "datasetDescription",
        "datasetSource",
        "datasetStatus",
        "datasetCreationDate",
        "datasetLastUpdateDate"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "datasetArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html\">ARN</a> of the dataset. The format is <code>arn:${Partition}:iotsitewise:${Region}:${Account}:dataset/${DatasetId}</code>.</p>"
        },
        "datasetName":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the dataset.</p>"
        },
        "datasetDescription":{
          "shape":"Description",
          "documentation":"<p>A description about the dataset, and its functionality.</p>"
        },
        "datasetType":{
          "shape":"DatasetTypeEnum",
          "documentation":"<p>The type of dataset: a session dataset, a curated dataset, or a connection to an external datasource.</p>"
        },
        "datasetConfig":{
          "shape":"DatasetConfig",
          "documentation":"<p>The configuration for the dataset.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>"
        },
        "metadata":{
          "shape":"Metadata",
          "documentation":"<p>The metadata for the dataset.</p>"
        },
        "datasetSource":{
          "shape":"DatasetSource",
          "documentation":"<p>The data source for the dataset.</p>"
        },
        "datasetStatus":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status of the dataset. This contains the state and any error messages. State is <code>CREATING</code> after a successfull call to this API, and any associated error message. The state is <code>ACTIVE</code> when ready to use.</p>"
        },
        "datasetCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The dataset creation date, in Unix epoch time.</p>"
        },
        "datasetLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the dataset was last updated, in Unix epoch time.</p>"
        },
        "datasetVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the dataset.</p>"
        },
        "enrichmentStatus":{
          "shape":"DatasetEnrichment",
          "documentation":"<p>The enrichment status of the dataset.</p>"
        }
      }
    },
    "DescribeDefaultEncryptionConfigurationRequest":{
      "type":"structure",
      "members":{}
    },
    "DescribeDefaultEncryptionConfigurationResponse":{
      "type":"structure",
      "required":[
        "encryptionType",
        "configurationStatus"
      ],
      "members":{
        "encryptionType":{
          "shape":"EncryptionType",
          "documentation":"<p>The type of encryption used for the encryption configuration.</p>"
        },
        "kmsKeyArn":{
          "shape":"ARN",
          "documentation":"<p>The key ARN of the customer managed key used for KMS encryption if you use <code>KMS_BASED_ENCRYPTION</code>.</p>"
        },
        "configurationStatus":{
          "shape":"ConfigurationStatus",
          "documentation":"<p>The status of the account configuration. This contains the <code>ConfigurationState</code>. If there's an error, it also contains the <code>ErrorDetails</code>.</p>"
        }
      }
    },
    "DescribeEnrichmentJobRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "jobId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the IoT SiteWise workspace containing the enrichment job.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "jobId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the enrichment job to retrieve. This is the jobId returned by CreateEnrichmentJob.</p>",
          "location":"uri",
          "locationName":"jobId"
        }
      }
    },
    "DescribeEnrichmentJobResponse":{
      "type":"structure",
      "required":[
        "jobId",
        "status",
        "workspaceName",
        "jobType",
        "jobConfiguration",
        "createdAt"
      ],
      "members":{
        "jobId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the enrichment job.</p>"
        },
        "status":{
          "shape":"EnrichmentJobStatus",
          "documentation":"<p>Current status of the enrichment job. Possible values:</p> <ul> <li>PENDING: Job is waiting to start processing</li> <li>RUNNING: Job is actively processing video data</li> <li>COMPLETED: Job finished successfully; embeddings available in IoT SiteWise</li> <li>FAILED: Job encountered an error; see failureMessage for details</li> <li>TIMED_OUT: Job exceeded maximum processing time limit</li> <li>CANCELLED: Job was cancelled by user request</li> </ul>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the IoT SiteWise workspace containing the job.</p>"
        },
        "jobType":{
          "shape":"JobType",
          "documentation":"<p>The type of enrichment job, derived from the job configuration. Currently EVENT_DETECTION is the only supported type.</p>"
        },
        "jobConfiguration":{
          "shape":"EnrichmentJobConfiguration",
          "documentation":"<p>The complete job configuration as originally submitted, including the analysis type and parameters. For event detection jobs, this includes the dataset ID, time series identifier, and trim settings defining the analysis time range.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the enrichment job was created in ISO 8601 format.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the job status was last updated in ISO 8601 format. Useful for tracking recent activity.</p>"
        },
        "completedAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the job completed successfully in ISO 8601 format. Only present if status is COMPLETED.</p>"
        },
        "cancelledAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the job was cancelled in ISO 8601 format. Only present if status is CANCELLED.</p>"
        },
        "failureMessage":{
          "shape":"String",
          "documentation":"<p>Human-readable error message explaining why the job failed. Only present if status is FAILED. Use this information to diagnose configuration issues, permission problems, or data processing errors.</p>"
        }
      }
    },
    "DescribeExecutionRequest":{
      "type":"structure",
      "required":["executionId"],
      "members":{
        "executionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the execution.</p>",
          "location":"uri",
          "locationName":"executionId"
        }
      }
    },
    "DescribeExecutionResponse":{
      "type":"structure",
      "required":[
        "executionId",
        "targetResource",
        "targetResourceVersion",
        "executionStartTime",
        "executionStatus"
      ],
      "members":{
        "executionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the execution.</p>"
        },
        "actionType":{
          "shape":"Name",
          "documentation":"<p>The type of action exectued.</p>"
        },
        "targetResource":{"shape":"TargetResource"},
        "targetResourceVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the target resource.</p>"
        },
        "resolveTo":{
          "shape":"ResolveTo",
          "documentation":"<p>The detailed resource this execution resolves to.</p>"
        },
        "executionStartTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the process started.</p>"
        },
        "executionEndTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the process ended.</p>"
        },
        "executionStatus":{
          "shape":"ExecutionStatus",
          "documentation":"<p>The status of the execution process.</p>"
        },
        "executionResult":{
          "shape":"ExecutionResult",
          "documentation":"<p>The result of the execution.</p>"
        },
        "executionDetails":{
          "shape":"ExecutionDetails",
          "documentation":"<p>Provides detailed information about the execution of your anomaly detection models. This includes model metrics and training timestamps for both training and inference actions.</p> <ul> <li> <p> The training action (Amazon Web Services/ANOMALY_DETECTION_TRAINING), includes performance metrics that help you compare different versions of your anomaly detection models. These metrics provide insights into the model's performance during the training process. </p> </li> <li> <p> The inference action (Amazon Web Services/ANOMALY_DETECTION_INFERENCE), includes information about the results of executing your anomaly detection models. This helps you understand the output of your models and assess their performance. </p> </li> </ul>"
        },
        "executionEntityVersion":{
          "shape":"Version",
          "documentation":"<p>Entity version used for the execution.</p>"
        }
      }
    },
    "DescribeGatewayCapabilityConfigurationRequest":{
      "type":"structure",
      "required":[
        "gatewayId",
        "capabilityNamespace"
      ],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway that defines the capability configuration.</p>",
          "location":"uri",
          "locationName":"gatewayId"
        },
        "capabilityNamespace":{
          "shape":"CapabilityNamespace",
          "documentation":"<p>The namespace of the capability configuration. For example, if you configure OPC UA sources for an MQTT-enabled gateway, your OPC-UA capability configuration has the namespace <code>iotsitewise:opcuacollector:3</code>.</p>",
          "location":"uri",
          "locationName":"capabilityNamespace"
        }
      }
    },
    "DescribeGatewayCapabilityConfigurationResponse":{
      "type":"structure",
      "required":[
        "gatewayId",
        "capabilityNamespace",
        "capabilityConfiguration",
        "capabilitySyncStatus"
      ],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway that defines the capability configuration.</p>"
        },
        "capabilityNamespace":{
          "shape":"CapabilityNamespace",
          "documentation":"<p>The namespace of the gateway capability.</p>"
        },
        "capabilityConfiguration":{
          "shape":"CapabilityConfiguration",
          "documentation":"<p>The JSON document that defines the gateway capability's configuration. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli\">Configuring data sources (CLI)</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "capabilitySyncStatus":{
          "shape":"CapabilitySyncStatus",
          "documentation":"<p>The synchronization status of the gateway capability configuration. The sync status can be one of the following:</p> <ul> <li> <p> <code>IN_SYNC</code> - The gateway is running with the latest configuration.</p> </li> <li> <p> <code>OUT_OF_SYNC</code> - The gateway hasn't received the latest configuration.</p> </li> <li> <p> <code>SYNC_FAILED</code> - The gateway rejected the latest configuration.</p> </li> <li> <p> <code>UNKNOWN</code> - The gateway hasn't reported its sync status.</p> </li> <li> <p> <code>NOT_APPLICABLE</code> - The gateway doesn't support this capability. This is most common when integrating partner data sources, because the data integration is handled externally by the partner.</p> </li> </ul>"
        }
      }
    },
    "DescribeGatewayRequest":{
      "type":"structure",
      "required":["gatewayId"],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway device.</p>",
          "location":"uri",
          "locationName":"gatewayId"
        }
      }
    },
    "DescribeGatewayResponse":{
      "type":"structure",
      "required":[
        "gatewayId",
        "gatewayName",
        "gatewayArn",
        "gatewayCapabilitySummaries",
        "creationDate",
        "lastUpdateDate"
      ],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway device.</p>"
        },
        "gatewayName":{
          "shape":"GatewayName",
          "documentation":"<p>The name of the gateway.</p>"
        },
        "gatewayArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the gateway, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:gateway/${GatewayId}</code> </p>"
        },
        "gatewayPlatform":{
          "shape":"GatewayPlatform",
          "documentation":"<p>The gateway's platform.</p>"
        },
        "gatewayVersion":{
          "shape":"GatewayVersion",
          "documentation":"<p>The version of the gateway. A value of <code>3</code> indicates an MQTT-enabled, V3 gateway, while <code>2</code> indicates a Classic streams, V2 gateway.</p>"
        },
        "gatewayCapabilitySummaries":{
          "shape":"GatewayCapabilitySummaries",
          "documentation":"<p>A list of gateway capability summaries that each contain a namespace and status. Each gateway capability defines data sources for the gateway. To retrieve a capability configuration's definition, use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html\">DescribeGatewayCapabilityConfiguration</a>.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the gateway was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the gateway was last updated, in Unix epoch time.</p>"
        }
      }
    },
    "DescribeLoggingOptionsRequest":{
      "type":"structure",
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        }
      }
    },
    "DescribeLoggingOptionsResponse":{
      "type":"structure",
      "required":["loggingOptions"],
      "members":{
        "loggingOptions":{
          "shape":"LoggingOptions",
          "documentation":"<p>The current logging options.</p>"
        }
      }
    },
    "DescribePipelineExecutionRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName",
        "pipelineExecutionId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline.</p>",
          "location":"uri",
          "locationName":"pipelineName"
        },
        "pipelineExecutionId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the pipeline execution.</p>",
          "location":"uri",
          "locationName":"pipelineExecutionId"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"DescribePipelineExecutionRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of compute nodes to return per request. This is an upper bound; the actual number of results may be less. Default: 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p>Request structure for DescribePipelineExecution operation.</p>"
    },
    "DescribePipelineExecutionRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":250,
      "min":1
    },
    "DescribePipelineExecutionResponse":{
      "type":"structure",
      "required":[
        "pipelineExecutionId",
        "pipelineName",
        "workspaceName",
        "pipelineVersion",
        "status",
        "requestEnvironmentVariables",
        "computeNodeExecutionDetails"
      ],
      "members":{
        "pipelineExecutionId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the pipeline execution.</p>"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        },
        "pipelineVersion":{
          "shape":"Version",
          "documentation":"<p>The pipeline version this execution ran against.</p>"
        },
        "status":{
          "shape":"PipelineExecutionStatus",
          "documentation":"<p>The current execution status of the pipeline.</p>"
        },
        "startTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline execution started, in Unix epoch time.</p>"
        },
        "endTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline execution completed, in Unix epoch time.</p>"
        },
        "requestEnvironmentVariables":{
          "shape":"ExecutionEnvironmentVariables",
          "documentation":"<p>The environment variables provided as input for the pipeline execution.</p>"
        },
        "executionPriority":{
          "shape":"ExecutionPriority",
          "documentation":"<p>Scheduling priority for the execution. When not specified, defaults to lowest priority.</p>"
        },
        "computeNodeExecutionDetails":{
          "shape":"ComputeNodeExecutionDetailsList",
          "documentation":"<p>A list of compute node execution details within this pipeline execution.</p>"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>"
        }
      },
      "documentation":"<p>Response structure for DescribePipelineExecution operation.</p>"
    },
    "DescribePipelineRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline.</p>",
          "location":"uri",
          "locationName":"pipelineName"
        },
        "pipelineVersion":{
          "shape":"Version",
          "documentation":"<p>The version number of the pipeline to retrieve. If not specified, returns the latest version.</p>",
          "location":"querystring",
          "locationName":"version"
        }
      },
      "documentation":"<p>Request structure for DescribePipeline operation.</p>"
    },
    "DescribePipelineResponse":{
      "type":"structure",
      "required":[
        "pipelineName",
        "workspaceName",
        "pipelineArn",
        "version",
        "computations",
        "status",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>A unique name of the pipeline within the workspace.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the pipeline.</p>"
        },
        "pipelineArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the pipeline.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version of the pipeline.</p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariablesMap",
          "documentation":"<p>The environment variables shared across all compute nodes in the pipeline.</p>"
        },
        "computations":{
          "shape":"ComputeNodeList",
          "documentation":"<p>The list of compute nodes that form the pipeline DAG.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the pipeline.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline was created, in Unix epoch time.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Response structure for DescribePipeline operation.</p>"
    },
    "DescribePortalRequest":{
      "type":"structure",
      "required":["portalId"],
      "members":{
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal.</p>",
          "location":"uri",
          "locationName":"portalId"
        }
      }
    },
    "DescribePortalResponse":{
      "type":"structure",
      "required":[
        "portalId",
        "portalArn",
        "portalName",
        "portalClientId",
        "portalStartUrl",
        "portalContactEmail",
        "portalStatus",
        "portalCreationDate",
        "portalLastUpdateDate"
      ],
      "members":{
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal.</p>"
        },
        "portalArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the portal, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:portal/${PortalId}</code> </p>"
        },
        "portalName":{
          "shape":"Name",
          "documentation":"<p>The name of the portal.</p>"
        },
        "portalDescription":{
          "shape":"Description",
          "documentation":"<p>The portal's description.</p>"
        },
        "portalClientId":{
          "shape":"PortalClientId",
          "documentation":"<p>The IAM Identity Center application generated client ID (used with IAM Identity Center API operations). IoT SiteWise includes <code>portalClientId</code> for only portals that use IAM Identity Center to authenticate users.</p>"
        },
        "portalStartUrl":{
          "shape":"Url",
          "documentation":"<p>The URL for the IoT SiteWise Monitor portal. You can use this URL to access portals that use IAM Identity Center for authentication. For portals that use IAM for authentication, you must use the IoT SiteWise console to get a URL that you can use to access the portal.</p>"
        },
        "portalContactEmail":{
          "shape":"Email",
          "documentation":"<p>The Amazon Web Services administrator's contact email address.</p>"
        },
        "portalStatus":{
          "shape":"PortalStatus",
          "documentation":"<p>The current status of the portal, which contains a state and any error message.</p>"
        },
        "portalCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the portal was created, in Unix epoch time.</p>"
        },
        "portalLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the portal was last updated, in Unix epoch time.</p>"
        },
        "portalLogoImageLocation":{
          "shape":"ImageLocation",
          "documentation":"<p>The portal's logo image, which is available at a URL.</p>"
        },
        "roleArn":{
          "shape":"IamArn",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the service role that allows the portal's users to access your IoT SiteWise resources on your behalf. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html\">Using service roles for IoT SiteWise Monitor</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "portalAuthMode":{
          "shape":"AuthMode",
          "documentation":"<p>The service to use to authenticate users to the portal.</p>"
        },
        "notificationSenderEmail":{
          "shape":"Email",
          "documentation":"<p>The email address that sends alarm notifications.</p>"
        },
        "alarms":{
          "shape":"Alarms",
          "documentation":"<p>Contains the configuration information of an alarm created in an IoT SiteWise Monitor portal.</p>"
        },
        "portalType":{
          "shape":"PortalType",
          "documentation":"<p>Define the type of portal. The value for IoT SiteWise Monitor (Classic) is <code>SITEWISE_PORTAL_V1</code>. The value for IoT SiteWise Monitor (AI-aware) is <code>SITEWISE_PORTAL_V2</code>.</p>"
        },
        "portalTypeConfiguration":{
          "shape":"PortalTypeConfiguration",
          "documentation":"<p>The configuration entry associated with the specific portal type. The value for IoT SiteWise Monitor (Classic) is <code>SITEWISE_PORTAL_V1</code>. The value for IoT SiteWise Monitor (AI-aware) is <code>SITEWISE_PORTAL_V2</code>.</p>"
        }
      }
    },
    "DescribeProjectRequest":{
      "type":"structure",
      "required":["projectId"],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>",
          "location":"uri",
          "locationName":"projectId"
        }
      }
    },
    "DescribeProjectResponse":{
      "type":"structure",
      "required":[
        "projectId",
        "projectArn",
        "projectName",
        "portalId",
        "projectCreationDate",
        "projectLastUpdateDate"
      ],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>"
        },
        "projectArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the project, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:project/${ProjectId}</code> </p>"
        },
        "projectName":{
          "shape":"Name",
          "documentation":"<p>The name of the project.</p>"
        },
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal that the project is in.</p>"
        },
        "projectDescription":{
          "shape":"Description",
          "documentation":"<p>The project's description.</p>"
        },
        "projectCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the project was created, in Unix epoch time.</p>"
        },
        "projectLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the project was last updated, in Unix epoch time.</p>"
        }
      }
    },
    "DescribeQueryRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "queryId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace associated with the query.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "queryId":{
          "shape":"QueryId",
          "documentation":"<p>The unique identifier for the query execution.</p>",
          "location":"uri",
          "locationName":"queryId"
        }
      }
    },
    "DescribeQueryResponse":{
      "type":"structure",
      "required":[
        "queryId",
        "status",
        "submittedAt"
      ],
      "members":{
        "queryId":{
          "shape":"QueryId",
          "documentation":"<p>The unique identifier for the query execution.</p>"
        },
        "status":{
          "shape":"QueryStatus",
          "documentation":"<p>The current query status.</p>"
        },
        "submittedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the query was submitted, in Unix epoch time.</p>"
        },
        "completedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the query reached a terminal state, in Unix epoch time. This field is present when the query status is COMPLETED, FAILED, or CANCELED.</p>"
        },
        "statistics":{
          "shape":"QueryStatistics",
          "documentation":"<p>The query execution statistics. This field is present when the query status is COMPLETED.</p>"
        },
        "errorMessage":{
          "shape":"QueryErrorMessage",
          "documentation":"<p>A human-readable error description. This field is present when the query status is FAILED.</p>"
        }
      },
      "documentation":"<p>Contains the response for the DescribeQuery operation.</p>"
    },
    "DescribeSearchRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "searchId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace the search belongs to.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "searchId":{
          "shape":"SearchId",
          "documentation":"<p>The identifier of the search to describe.</p>",
          "location":"uri",
          "locationName":"searchId"
        }
      },
      "documentation":"<p>Input for the DescribeSearch operation.</p>"
    },
    "DescribeSearchResponse":{
      "type":"structure",
      "required":[
        "searchId",
        "workspaceName",
        "status",
        "queryStatement",
        "searchType"
      ],
      "members":{
        "searchId":{
          "shape":"SearchId",
          "documentation":"<p>The unique identifier of the search.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace the search runs against.</p>"
        },
        "status":{
          "shape":"SearchStatus",
          "documentation":"<p>The current status of the search.</p>"
        },
        "queryStatement":{
          "shape":"SearchQueryStatement",
          "documentation":"<p>The natural-language query that was submitted for the search.</p>"
        },
        "searchType":{
          "shape":"SearchType",
          "documentation":"<p>The search strategy used for the search.</p>"
        },
        "statusReason":{
          "shape":"String",
          "documentation":"<p>A human-readable explanation of the current status. Populated when the search has <code>FAILED</code>.</p>"
        },
        "startedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time at which the search was started.</p>"
        },
        "groupId":{
          "shape":"GroupId",
          "documentation":"<p>The group identifier associated with the search, if one was supplied on the request.</p>"
        }
      },
      "documentation":"<p>Output of the DescribeSearch operation.</p>"
    },
    "DescribeStorageConfigurationRequest":{
      "type":"structure",
      "members":{}
    },
    "DescribeStorageConfigurationResponse":{
      "type":"structure",
      "required":[
        "storageType",
        "configurationStatus"
      ],
      "members":{
        "storageType":{
          "shape":"StorageType",
          "documentation":"<p>The storage tier that you specified for your data. The <code>storageType</code> parameter can be one of the following values:</p> <ul> <li> <p> <code>SITEWISE_DEFAULT_STORAGE</code> – IoT SiteWise saves your data into the hot tier. The hot tier is a service-managed database.</p> </li> <li> <p> <code>MULTI_LAYER_STORAGE</code> – IoT SiteWise saves your data in both the cold tier and the hot tier. The cold tier is a customer-managed Amazon S3 bucket.</p> </li> </ul>"
        },
        "multiLayerStorage":{
          "shape":"MultiLayerStorage",
          "documentation":"<p>Contains information about the storage destination.</p>"
        },
        "disassociatedDataStorage":{
          "shape":"DisassociatedDataStorageState",
          "documentation":"<p>Contains the storage configuration for time series (data streams) that aren't associated with asset properties. The <code>disassociatedDataStorage</code> can be one of the following values:</p> <ul> <li> <p> <code>ENABLED</code> – IoT SiteWise accepts time series that aren't associated with asset properties.</p> <important> <p>After the <code>disassociatedDataStorage</code> is enabled, you can't disable it.</p> </important> </li> <li> <p> <code>DISABLED</code> – IoT SiteWise doesn't accept time series (data streams) that aren't associated with asset properties.</p> </li> </ul> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html\">Data streams</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "retentionPeriod":{
          "shape":"RetentionPeriod",
          "documentation":"<p>The number of days your data is kept in the hot tier. By default, your data is kept indefinitely in the hot tier.</p>"
        },
        "configurationStatus":{"shape":"ConfigurationStatus"},
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the storage configuration was last updated, in Unix epoch time.</p>"
        },
        "warmTier":{
          "shape":"WarmTierState",
          "documentation":"<p>A service managed storage tier optimized for analytical queries. It stores periodically uploaded, buffered and historical data ingested with the CreaeBulkImportJob API.</p>"
        },
        "warmTierRetentionPeriod":{
          "shape":"WarmTierRetentionPeriod",
          "documentation":"<p>Set this period to specify how long your data is stored in the warm tier before it is deleted. You can set this only if cold tier is enabled.</p>"
        },
        "disallowIngestNullNaN":{
          "shape":"DisallowIngestNullNaN",
          "documentation":"<p>Describes the configuration for ingesting NULL and NaN data. By default the feature is allowed. The feature is disallowed if the value is <code>true</code>.</p>"
        }
      }
    },
    "DescribeTaskRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "taskName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task.</p>",
          "location":"uri",
          "locationName":"taskName"
        },
        "taskVersion":{
          "shape":"Version",
          "documentation":"<p>The version number of the task to retrieve. If not specified, returns the latest version.</p>",
          "location":"querystring",
          "locationName":"version"
        }
      },
      "documentation":"<p>Request structure for DescribeTask operation.</p>"
    },
    "DescribeTaskResponse":{
      "type":"structure",
      "required":[
        "workspaceName",
        "taskName",
        "taskArn",
        "version",
        "taskConfiguration",
        "status",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        },
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the task.</p>"
        },
        "taskArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the task.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version of the task.</p>"
        },
        "taskConfiguration":{
          "shape":"TaskConfiguration",
          "documentation":"<p>The task execution configuration. Contains a <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ContainerTaskConfiguration.html\">containerTaskConfiguration</a> for custom container workloads.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the task.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the task was created, in Unix epoch time.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the task was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Response structure for DescribeTask operation.</p>"
    },
    "DescribeTimeSeriesRequest":{
      "type":"structure",
      "members":{
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the time series.</p>",
          "location":"querystring",
          "locationName":"alias"
        },
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset in which the asset property was created. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset property. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        }
      }
    },
    "DescribeTimeSeriesResponse":{
      "type":"structure",
      "required":[
        "timeSeriesId",
        "dataType",
        "timeSeriesCreationDate",
        "timeSeriesLastUpdateDate",
        "timeSeriesArn"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset in which the asset property was created.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>"
        },
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the time series.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The data type of the time series.</p> <p>If you specify <code>STRUCT</code>, you must also specify <code>dataTypeSpec</code> to identify the type of the structure for this time series.</p>"
        },
        "dataTypeSpec":{
          "shape":"Name",
          "documentation":"<p>The data type of the structure for this time series. This parameter is required for time series that have the <code>STRUCT</code> data type.</p> <p>The options for this parameter depend on the type of the composite model in which you created the asset property that is associated with your time series. Use <code>AWS/ALARM_STATE</code> for alarm state in alarm composite models.</p>"
        },
        "timeSeriesCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date that the time series was created, in Unix epoch time.</p>"
        },
        "timeSeriesLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date that the time series was last updated, in Unix epoch time.</p>"
        },
        "timeSeriesArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the time series, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:time-series/${TimeSeriesId}</code> </p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        }
      }
    },
    "DescribeWorkspaceRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        }
      }
    },
    "DescribeWorkspaceResponse":{
      "type":"structure",
      "required":[
        "workspaceArn",
        "workspaceName",
        "workspaceStatus",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "workspaceArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the workspace.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        },
        "workspaceDescription":{
          "shape":"Description",
          "documentation":"<p>The description of the workspace.</p>"
        },
        "workspaceStatus":{
          "shape":"WorkspaceStatus",
          "documentation":"<p>The status of the workspace, which contains the state and any error message.</p>"
        },
        "encryptionConfiguration":{
          "shape":"WorkspaceEncryptionConfigurationInfo",
          "documentation":"<p>The encryption configuration information for the workspace.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date the workspace was created, in Unix epoch time.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date the workspace was last updated, in Unix epoch time.</p>"
        }
      }
    },
    "Description":{
      "type":"string",
      "max":2048,
      "min":1,
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "DetailedError":{
      "type":"structure",
      "required":[
        "code",
        "message"
      ],
      "members":{
        "code":{
          "shape":"DetailedErrorCode",
          "documentation":"<p>The error code. </p>"
        },
        "message":{
          "shape":"DetailedErrorMessage",
          "documentation":"<p>The error message. </p>"
        }
      },
      "documentation":"<p>Contains detailed error information. </p>"
    },
    "DetailedErrorCode":{
      "type":"string",
      "enum":[
        "INCOMPATIBLE_COMPUTE_LOCATION",
        "INCOMPATIBLE_FORWARDING_CONFIGURATION"
      ]
    },
    "DetailedErrorList":{
      "type":"list",
      "member":{"shape":"DetailedPipelineError"},
      "documentation":"<p>A list of detailed pipeline error entries.</p>"
    },
    "DetailedErrorMessage":{"type":"string"},
    "DetailedErrors":{
      "type":"list",
      "member":{"shape":"DetailedError"}
    },
    "DetailedPipelineError":{
      "type":"structure",
      "required":[
        "code",
        "message"
      ],
      "members":{
        "code":{
          "shape":"DetailedPipelineErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p>The associated error message.</p>"
        }
      },
      "documentation":"<p>Contains a detailed error entry for granular troubleshooting of pipeline failures.</p>"
    },
    "DetailedPipelineErrorCode":{
      "type":"string",
      "documentation":"<p>The error code for a detailed pipeline error entry.</p>",
      "enum":[
        "VALIDATION_ERROR",
        "INTERNAL_FAILURE",
        "EXECUTION_ERROR",
        "TIMED_OUT"
      ]
    },
    "DisallowIngestNullNaN":{"type":"boolean"},
    "DisassociateAssetsRequest":{
      "type":"structure",
      "required":[
        "assetId",
        "hierarchyId",
        "childAssetId"
      ],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the parent asset from which to disassociate the child asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "hierarchyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of a hierarchy in the parent asset's model. (This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.) Hierarchies allow different groupings of assets to be formed that all come from the same asset model. You can use the hierarchy ID to identify the correct asset to disassociate. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html\">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "childAssetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the child asset to disassociate. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "DisassociateDataSegmentEntries":{
      "type":"list",
      "member":{"shape":"DisassociateDataSegmentEntry"}
    },
    "DisassociateDataSegmentEntry":{
      "type":"structure",
      "required":[
        "sourceDatasetId",
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp"
      ],
      "members":{
        "sourceDatasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the source dataset that contains the data segment.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment to disassociate.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment to disassociate.</p>"
        }
      },
      "documentation":"<p>Contains information about a data segment entry to disassociate from a dataset.</p>"
    },
    "DisassociateTimeSeriesFromAssetPropertyRequest":{
      "type":"structure",
      "required":[
        "alias",
        "assetId",
        "propertyId"
      ],
      "members":{
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the time series.</p>",
          "location":"querystring",
          "locationName":"alias"
        },
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset in which the asset property was created. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset property. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "DisassociatedDataStorageState":{
      "type":"string",
      "enum":[
        "ENABLED",
        "DISABLED"
      ]
    },
    "DnsSubdomain":{
      "type":"string",
      "documentation":"<p>DNS-compliant subdomain label</p>",
      "max":63,
      "min":1,
      "pattern":"[a-z0-9]([a-z0-9-]*[a-z0-9])?"
    },
    "ETag":{
      "type":"string",
      "pattern":"^[\\w-]{43}$"
    },
    "EcrUri":{
      "type":"string",
      "documentation":"<p>The Amazon ECR image URI for the container.</p> <p>Supported formats:</p> <ul> <li>Private: <code>{account-id}.dkr.ecr.{region}.amazonaws.com/{repository}:{tag}</code></li> <li>Public: <code>public.ecr.aws/{registry-alias}/{repository}:{tag}</code></li> </ul> <p>Tags and digests (<code>@sha256:...</code>) are optional. If omitted, <code>latest</code> is used. The image must be accessible from the task execution role.</p>",
      "max":1024,
      "min":1,
      "pattern":"((\\d{12}\\.dkr\\.ecr\\.[a-z0-9-]+\\.[a-z.]+)|public\\.ecr\\.aws/[a-z][a-z0-9]+([._-][a-z0-9]+)*)/[a-z0-9]+((\\.||__|_|-+)[a-z0-9]+)*(/[a-z0-9]+((\\.||__|_|-+)[a-z0-9]+)*)*(:[a-zA-Z0-9._-]+|@sha256:[a-f0-9]{64})?",
      "sensitive":true
    },
    "Email":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"^[a-zA-Z0-9_\\-\\.\\+]+@[a-zA-Z0-9_\\-\\.\\+]+\\.[a-zA-Z]{2,}$",
      "sensitive":true
    },
    "EncryptionType":{
      "type":"string",
      "enum":[
        "SITEWISE_DEFAULT_ENCRYPTION",
        "KMS_BASED_ENCRYPTION"
      ]
    },
    "EnrichmentJobConfiguration":{
      "type":"structure",
      "members":{
        "eventDetection":{
          "shape":"EventDetection",
          "documentation":"<p>Event detection configuration that generates embeddings from video time-series data enabling natural language similarity search on events. The service processes video data and creates embeddings stored in IoT SiteWise for semantic querying.</p>"
        }
      },
      "documentation":"<p>Configuration for the enrichment job defining which analysis type to perform on video time-series data. Currently supports event detection enrichment. Exactly one member must be specified.</p>",
      "union":true
    },
    "EnrichmentJobStatus":{
      "type":"string",
      "documentation":"&lt;p&gt;Status of an enrichment job throughout its lifecycle.&lt;/p&gt; &lt;p&gt;Status progression: PENDING → RUNNING → {COMPLETED, FAILED, TIMED_OUT, CANCELLED}&lt;/p&gt; &lt;ul&gt; &lt;li&gt;PENDING: Job has been accepted and is waiting to start processing&lt;/li&gt; &lt;li&gt;RUNNING: Job is actively processing video data to generate embeddings&lt;/li&gt; &lt;li&gt;COMPLETED: Job finished successfully; embeddings are available in IoT SiteWise&lt;/li&gt; &lt;li&gt;FAILED: Job encountered an error during processing&lt;/li&gt; &lt;li&gt;TIMED_OUT: Job exceeded the maximum processing time limit&lt;/li&gt; &lt;li&gt;CANCELLED: Job was cancelled via CancelEnrichmentJob&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Terminal states (job will not change status): COMPLETED, FAILED, TIMED_OUT, CANCELLED&lt;/p&gt;",
      "enum":[
        "PENDING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "TIMED_OUT",
        "CANCELLED"
      ]
    },
    "EnrichmentJobSummaries":{
      "type":"list",
      "member":{"shape":"EnrichmentJobSummary"}
    },
    "EnrichmentJobSummary":{
      "type":"structure",
      "required":[
        "jobId",
        "status",
        "workspaceName",
        "jobType",
        "datasetId",
        "createdAt"
      ],
      "members":{
        "jobId":{
          "shape":"ID",
          "documentation":"<p>Unique identifier for the enrichment job.</p>"
        },
        "status":{
          "shape":"EnrichmentJobStatus",
          "documentation":"<p>Current status of the job: PENDING, RUNNING, COMPLETED, FAILED, TIMED_OUT, or CANCELLED. Use this to quickly identify active jobs or jobs requiring attention.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the IoT SiteWise workspace containing this job.</p>"
        },
        "jobType":{
          "shape":"JobType",
          "documentation":"<p>The type of enrichment job. Currently EVENT_DETECTION is the only supported type.</p>"
        },
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The dataset being enriched. Useful for filtering and identifying jobs without fetching the full configuration. This allows you to quickly find all jobs related to a specific dataset.</p>"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The property alias (human-readable sensor name) of the time series being enriched. Present when the job was created using a propertyAlias. Use this to identify which sensor the job analyzes.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The system identifier of the time series being enriched. Present when the job was created using a timeSeriesId. Use this to identify which time series the job analyzes.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp when the job was created in ISO 8601 format.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>Timestamp of the last job status change in ISO 8601 format. Use this to track recent activity and identify stale jobs. For active jobs, this shows the last time the job transitioned to a new status.</p>"
        }
      },
      "documentation":"<p>Summary information for an enrichment job returned by ListEnrichmentJobs. This lightweight representation includes identifiers, status, and key metadata without the full job configuration.</p> <p>Use DescribeEnrichmentJob to retrieve:</p> <ul> <li>Complete job configuration (trim settings, full parameters)</li> <li>Detailed timestamps (completedAt, cancelledAt)</li> <li>Failure messages for failed jobs</li> </ul> <p>The summary is optimized for display in lists and dashboards, providing enough information to identify and filter jobs without the overhead of full configuration details.</p>"
    },
    "EnrichmentStatus":{
      "type":"string",
      "enum":[
        "ENRICHED",
        "NOT_ENRICHED"
      ]
    },
    "EnrichmentTrimSettings":{
      "type":"structure",
      "required":[
        "startTime",
        "endTime"
      ],
      "members":{
        "startTime":{
          "shape":"TimeInNanos",
          "documentation":"&lt;p&gt;Start time for the video analysis time range in nanoseconds since Unix epoch (TimeInNanos format). Data segments at or after this time are included in the enrichment. Must be within the dataset's time bounds.&lt;/p&gt; &lt;p&gt;Example (JavaScript): Date.parse('2024-01-01T00:00:00Z') * 1000000 Example (Python): int(datetime.timestamp() * 1e9)&lt;/p&gt;"
        },
        "endTime":{
          "shape":"TimeInNanos",
          "documentation":"&lt;p&gt;End time for the video analysis time range in nanoseconds since Unix epoch (TimeInNanos format). Data segments at or before this time are included in the enrichment. Must be greater than startTime and within the dataset's time bounds.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;Time range settings for extracting a specific window of video time-series data to process.&lt;/p&gt; &lt;p&gt;Trim settings define the time bounds for enrichment and must satisfy:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Start and end times must be within the dataset's time bounds&lt;/li&gt; &lt;li&gt;Trim settings retrieve fully contained data segments within the specified time range&lt;/li&gt; &lt;li&gt;endTime must be greater than startTime&lt;/li&gt; &lt;li&gt;Both times should represent valid data ranges in the dataset&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Trim settings are required to:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Prevent accidentally analyzing unbounded datasets&lt;/li&gt; &lt;li&gt;Ensure predictable processing time and costs&lt;/li&gt; &lt;li&gt;Allow focused analysis on specific time periods of interest&lt;/li&gt; &lt;/ul&gt;"
    },
    "EntryId":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[a-zA-Z0-9_-]+$"
    },
    "EnvironmentVariableName":{
      "type":"string",
      "documentation":"<p>Environment variable name following POSIX naming rules Must not start with AWS_ prefix (case-insensitive)</p>",
      "max":255,
      "min":1,
      "pattern":"(?!(?i)AWS_)[a-zA-Z_][a-zA-Z0-9_]*"
    },
    "EnvironmentVariableValue":{
      "type":"string",
      "documentation":"<p>Environment variable value</p>",
      "max":1024,
      "min":0
    },
    "EnvironmentVariablesMap":{
      "type":"map",
      "key":{"shape":"EnvironmentVariableName"},
      "value":{"shape":"EnvironmentVariableValue"},
      "documentation":"<p>Map of environment variables for container configuration</p>",
      "max":20,
      "min":0,
      "sensitive":true
    },
    "ErrorCode":{
      "type":"string",
      "enum":[
        "VALIDATION_ERROR",
        "INTERNAL_FAILURE"
      ]
    },
    "ErrorDetails":{
      "type":"structure",
      "required":[
        "code",
        "message"
      ],
      "members":{
        "code":{
          "shape":"ErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"ErrorMessage",
          "documentation":"<p>The error message.</p>"
        },
        "details":{
          "shape":"DetailedErrors",
          "documentation":"<p> A list of detailed errors. </p>"
        }
      },
      "documentation":"<p>Contains the details of an IoT SiteWise error.</p>"
    },
    "ErrorMessage":{"type":"string"},
    "ErrorReportLocation":{
      "type":"structure",
      "required":[
        "bucket",
        "prefix"
      ],
      "members":{
        "bucket":{
          "shape":"Bucket",
          "documentation":"<p>The name of the Amazon S3 bucket to which errors associated with the bulk import job are sent.</p>"
        },
        "prefix":{
          "shape":"String",
          "documentation":"<p>Amazon S3 uses the prefix as a folder name to organize data in the bucket. Each Amazon S3 object has a key that is its unique identifier in the bucket. Each object in a bucket has exactly one key. The prefix must end with a forward slash (/). For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html\">Organizing objects using prefixes</a> in the <i>Amazon Simple Storage Service User Guide</i>.</p>"
        }
      },
      "documentation":"<p>The Amazon S3 destination where errors associated with the job creation request are saved.</p>"
    },
    "EventDetection":{
      "type":"structure",
      "required":[
        "datasetId",
        "trimSettings"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"&lt;p&gt;The IoT SiteWise dataset ID containing the video time-series data to analyze. Query IoT SiteWise to discover available datasets in your workspace.&lt;/p&gt;"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"&lt;p&gt;Unique system identifier for the video time series to analyze. Specify either timeSeriesId or propertyAlias, but not both. Use this when you have the system-generated time series identifier from IoT SiteWise.&lt;/p&gt;"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"&lt;p&gt;Human-readable alias for the video time series to analyze (e.g., /camera/warehouse/zone-a). Specify either propertyAlias or timeSeriesId, but not both. Use this when you have configured friendly aliases in IoT SiteWise for better readability.&lt;/p&gt;"
        },
        "trimSettings":{
          "shape":"EnrichmentTrimSettings",
          "documentation":"&lt;p&gt;Time range settings defining which portion of the video time-series data to process. Required to ensure predictable processing time and prevent analyzing unbounded datasets. Start and end times must be within the dataset's time bounds.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;Configuration for event detection enrichment on video time-series data.&lt;/p&gt; &lt;p&gt;Event detection generates embeddings from video data enabling natural language similarity search on events. This allows customers to:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Query video events using semantic search after enrichment completes&lt;/li&gt; &lt;li&gt;Find relevant video segments through natural language queries&lt;/li&gt; &lt;li&gt;Search across video time-series data stored in IoT SiteWise&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;You must specify the dataset, exactly one time-series identifier (timeSeriesId OR propertyAlias), and trim settings defining the video time window to process.&lt;/p&gt;"
    },
    "ExceptionMessage":{"type":"string"},
    "ExcludeProperties":{"type":"boolean"},
    "ExecuteActionRequest":{
      "type":"structure",
      "required":[
        "targetResource",
        "actionDefinitionId",
        "actionPayload"
      ],
      "members":{
        "targetResource":{
          "shape":"TargetResource",
          "documentation":"<p>The resource the action will be taken on.</p>"
        },
        "actionDefinitionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action definition.</p>"
        },
        "actionPayload":{
          "shape":"ActionPayload",
          "documentation":"<p>The JSON payload of the action.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>"
        },
        "resolveTo":{
          "shape":"ResolveTo",
          "documentation":"<p>The detailed resource this action resolves to.</p>"
        }
      }
    },
    "ExecuteActionResponse":{
      "type":"structure",
      "required":["actionId"],
      "members":{
        "actionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the action.</p>"
        }
      }
    },
    "ExecuteQueryMaxResults":{
      "type":"integer",
      "min":1
    },
    "ExecuteQueryNextToken":{
      "type":"string",
      "max":4096,
      "min":1
    },
    "ExecuteQueryRequest":{
      "type":"structure",
      "required":["queryStatement"],
      "members":{
        "queryStatement":{
          "shape":"QueryStatement",
          "documentation":"<p>The IoT SiteWise query statement.</p>"
        },
        "nextToken":{
          "shape":"ExecuteQueryNextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "maxResults":{
          "shape":"ExecuteQueryMaxResults",
          "documentation":"<p>The maximum number of results to return at one time.</p> <ul> <li> <p>Minimum is 1</p> </li> <li> <p>Maximum is 20000</p> </li> <li> <p>Default is 20000</p> </li> </ul>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "ExecuteQueryResponse":{
      "type":"structure",
      "members":{
        "columns":{
          "shape":"ColumnsList",
          "documentation":"<p>Represents a single column in the query results.</p>"
        },
        "rows":{
          "shape":"Rows",
          "documentation":"<p>Represents a single row in the query results.</p>"
        },
        "nextToken":{
          "shape":"ExecuteQueryNextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        }
      }
    },
    "ExecutionDetails":{
      "type":"map",
      "key":{"shape":"ExecutionDetailsKey"},
      "value":{"shape":"ExecutionDetailsValue"}
    },
    "ExecutionDetailsKey":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@]+$"
    },
    "ExecutionDetailsValue":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@]+$"
    },
    "ExecutionEnvironmentVariables":{
      "type":"structure",
      "members":{
        "global":{
          "shape":"EnvironmentVariablesMap",
          "documentation":"<p>Global environment variables that apply to all compute nodes in the pipeline execution.</p>"
        },
        "computeNodes":{
          "shape":"ComputeNodeEnvironmentVariablesMap",
          "documentation":"<p>Per-compute-node environment variable overrides. Each entry maps a compute node name to its environment variable overrides.</p>"
        }
      },
      "documentation":"<p>Environment variables provided as input for a pipeline execution.</p>",
      "sensitive":true
    },
    "ExecutionEnvironmentVariablesMap":{
      "type":"map",
      "key":{
        "shape":"ExecutionEnvironmentVariablesMapKeyString",
        "documentation":"<p>The environment variable name.</p>"
      },
      "value":{
        "shape":"ExecutionEnvironmentVariablesMapValueString",
        "documentation":"<p>The environment variable value.</p>"
      },
      "documentation":"<p>A map of fully resolved environment variable key-value pairs for a compute node execution.</p>",
      "max":200,
      "min":0,
      "sensitive":true
    },
    "ExecutionEnvironmentVariablesMapKeyString":{
      "type":"string",
      "max":255,
      "min":1
    },
    "ExecutionEnvironmentVariablesMapValueString":{
      "type":"string",
      "max":1024,
      "min":0
    },
    "ExecutionPriority":{
      "type":"integer",
      "documentation":"<p>Scheduling priority for pipeline execution. Lower values indicate higher priority. When not specified, defaults to lowest priority.</p>",
      "box":true,
      "max":2,
      "min":0
    },
    "ExecutionResult":{
      "type":"map",
      "key":{"shape":"ExecutionResultKey"},
      "value":{"shape":"ExecutionResultValue"}
    },
    "ExecutionResultKey":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@]+$"
    },
    "ExecutionResultValue":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@]+$"
    },
    "ExecutionState":{
      "type":"string",
      "enum":[
        "RUNNING",
        "COMPLETED",
        "FAILED"
      ]
    },
    "ExecutionStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"ExecutionState",
          "documentation":"<p>The current state of the computation model.</p>"
        }
      },
      "documentation":"<p>The status of the execution.</p>"
    },
    "ExecutionSummaries":{
      "type":"list",
      "member":{"shape":"ExecutionSummary"}
    },
    "ExecutionSummary":{
      "type":"structure",
      "required":[
        "executionId",
        "targetResource",
        "targetResourceVersion",
        "executionStartTime",
        "executionStatus"
      ],
      "members":{
        "executionId":{
          "shape":"ID",
          "documentation":"<p>The ID of the execution.</p>"
        },
        "actionType":{
          "shape":"Name",
          "documentation":"<p>The type of action exectued.</p>"
        },
        "targetResource":{"shape":"TargetResource"},
        "targetResourceVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the target resource.</p>"
        },
        "resolveTo":{
          "shape":"ResolveTo",
          "documentation":"<p>The detailed resource this execution resolves to.</p>"
        },
        "executionStartTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the process started.</p>"
        },
        "executionEndTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the process ended.</p>"
        },
        "executionStatus":{
          "shape":"ExecutionStatus",
          "documentation":"<p>The status of the execution process.</p>"
        },
        "executionEntityVersion":{
          "shape":"Version",
          "documentation":"<p>The execution entity version associated with the summary.</p>"
        }
      },
      "documentation":"<p>Contains the execution summary of the computation model.</p>"
    },
    "ExportDataType":{
      "type":"string",
      "documentation":"&lt;p&gt;Data types that can be exported from a dataset.&lt;/p&gt;",
      "enum":[
        "VIDEO",
        "TELEMETRY",
        "ANNOTATION"
      ]
    },
    "ExportDataTypeList":{
      "type":"list",
      "member":{"shape":"ExportDataType"},
      "documentation":"&lt;p&gt;A subset of ExportDataType values to export.&lt;/p&gt;",
      "max":3,
      "min":1
    },
    "ExportErrorReportLocation":{
      "type":"structure",
      "required":["s3Uri"],
      "members":{
        "s3Uri":{
          "shape":"S3Uri",
          "documentation":"&lt;p&gt;The S3 URI prefix for the error report.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;Contains the location where error reports will be written on failure.&lt;/p&gt;"
    },
    "ExportJobSummary":{
      "type":"structure",
      "required":[
        "jobId",
        "status",
        "startedAt",
        "destinationS3Uri"
      ],
      "members":{
        "jobId":{
          "shape":"DatasetExportJobId",
          "documentation":"&lt;p&gt;The unique identifier for the dataset export job.&lt;/p&gt;"
        },
        "status":{
          "shape":"DatasetExportJobStatus",
          "documentation":"&lt;p&gt;The current status of the dataset export job.&lt;/p&gt;"
        },
        "startedAt":{
          "shape":"Timestamp",
          "documentation":"&lt;p&gt;The timestamp when the job started processing.&lt;/p&gt;"
        },
        "completedAt":{
          "shape":"Timestamp",
          "documentation":"&lt;p&gt;The timestamp when the job completed, or null if the job is still running.&lt;/p&gt;"
        },
        "destinationS3Uri":{
          "shape":"S3Uri",
          "documentation":"&lt;p&gt;The S3 URI where output clips are written.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;Contains summary information about a dataset export job.&lt;/p&gt;"
    },
    "ExportJobSummaryList":{
      "type":"list",
      "member":{"shape":"ExportJobSummary"},
      "documentation":"&lt;p&gt;A list of dataset export job summaries.&lt;/p&gt;"
    },
    "Expression":{
      "type":"string",
      "max":1024,
      "min":0
    },
    "ExpressionVariable":{
      "type":"structure",
      "required":[
        "name",
        "value"
      ],
      "members":{
        "name":{
          "shape":"VariableName",
          "documentation":"<p>The friendly name of the variable to be used in the expression.</p>"
        },
        "value":{
          "shape":"VariableValue",
          "documentation":"<p>The variable that identifies an asset property from which to use values.</p>"
        }
      },
      "documentation":"<p>Contains expression variable information.</p>"
    },
    "ExpressionVariables":{
      "type":"list",
      "member":{"shape":"ExpressionVariable"}
    },
    "ExternalId":{
      "type":"string",
      "max":128,
      "min":2,
      "pattern":"[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+"
    },
    "FailedDataSegmentAssociation":{
      "type":"structure",
      "required":[
        "sourceDatasetId",
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp",
        "errorCode",
        "errorMessage"
      ],
      "members":{
        "sourceDatasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the source dataset.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment.</p>"
        },
        "errorCode":{
          "shape":"DataSegmentErrorCode",
          "documentation":"<p>The error code for the failed association.</p>"
        },
        "errorMessage":{
          "shape":"DataSegmentErrorMessage",
          "documentation":"<p>The error message for the failed association.</p>"
        }
      },
      "documentation":"<p>Contains error information for a data segment association that failed.</p>"
    },
    "FailedDataSegmentAssociations":{
      "type":"list",
      "member":{"shape":"FailedDataSegmentAssociation"}
    },
    "FailedDataSegmentDeletion":{
      "type":"structure",
      "required":[
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp",
        "errorCode",
        "errorMessage"
      ],
      "members":{
        "timeSeriesId":{
          "shape":"ID",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment.</p>"
        },
        "errorCode":{
          "shape":"DataSegmentErrorCode",
          "documentation":"<p>The error code for the failed deletion.</p>"
        },
        "errorMessage":{
          "shape":"DataSegmentErrorMessage",
          "documentation":"<p>The error message for the failed deletion.</p>"
        }
      },
      "documentation":"<p>Contains error information for a data segment deletion that failed.</p>"
    },
    "FailedDataSegmentDeletions":{
      "type":"list",
      "member":{"shape":"FailedDataSegmentDeletion"}
    },
    "FailedDataSegmentDisassociation":{
      "type":"structure",
      "required":[
        "sourceDatasetId",
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp",
        "errorCode",
        "errorMessage"
      ],
      "members":{
        "sourceDatasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the source dataset.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the data segment.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the data segment.</p>"
        },
        "errorCode":{
          "shape":"DataSegmentErrorCode",
          "documentation":"<p>The error code for the failed disassociation.</p>"
        },
        "errorMessage":{
          "shape":"DataSegmentErrorMessage",
          "documentation":"<p>The error message for the failed disassociation.</p>"
        }
      },
      "documentation":"<p>Contains error information for a data segment disassociation that failed.</p>"
    },
    "FailedDataSegmentDisassociations":{
      "type":"list",
      "member":{"shape":"FailedDataSegmentDisassociation"}
    },
    "File":{
      "type":"structure",
      "required":[
        "bucket",
        "key"
      ],
      "members":{
        "bucket":{
          "shape":"Bucket",
          "documentation":"<p>The name of the Amazon S3 bucket from which data is imported.</p>"
        },
        "key":{
          "shape":"String",
          "documentation":"<p>The key of the Amazon S3 object that contains your data. Each object has a key that is a unique identifier. Each object has exactly one key.</p>"
        },
        "versionId":{
          "shape":"String",
          "documentation":"<p>The version ID to identify a specific version of the Amazon S3 object that contains your data.</p>"
        },
        "alias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias associated with the file's time series.</p>"
        },
        "startTime":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time for the file data.</p>"
        },
        "fileFormat":{
          "shape":"FileFormat",
          "documentation":"<p>The file format of the data in S3.</p>"
        }
      },
      "documentation":"<p>The file in Amazon S3 where your data is saved. </p>"
    },
    "FileFormat":{
      "type":"structure",
      "members":{
        "csv":{
          "shape":"Csv",
          "documentation":"<p>The file is in .CSV format.</p>"
        },
        "parquet":{
          "shape":"Parquet",
          "documentation":"<p>The file is in parquet format.</p>"
        },
        "mp4":{
          "shape":"Mp4",
          "documentation":"<p>The MP4 format configuration.</p>"
        },
        "annotation":{
          "shape":"Annotation",
          "documentation":"<p>The annotation format configuration.</p>"
        }
      },
      "documentation":"<p>The file format of the data in S3.</p>"
    },
    "Files":{
      "type":"list",
      "member":{"shape":"File"}
    },
    "Float":{
      "type":"float",
      "box":true
    },
    "FormatSettings":{
      "type":"structure",
      "members":{
        "framesPerSecond":{
          "shape":"PositiveInteger",
          "documentation":"&lt;p&gt;The target frame rate for the output.&lt;/p&gt;"
        },
        "widthInPixels":{
          "shape":"PositiveInteger",
          "documentation":"&lt;p&gt;The target width of the output, in pixels.&lt;/p&gt;"
        },
        "heightInPixels":{
          "shape":"PositiveInteger",
          "documentation":"&lt;p&gt;The target height of the output, in pixels.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;Contains the output format configuration for video processing.&lt;/p&gt;"
    },
    "ForwardingConfig":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"ForwardingConfigState",
          "documentation":"<p>The forwarding state for the given property. </p>"
        }
      },
      "documentation":"<p>The forwarding configuration for a given property.</p>"
    },
    "ForwardingConfigState":{
      "type":"string",
      "enum":[
        "DISABLED",
        "ENABLED"
      ]
    },
    "GatewayCapabilitySummaries":{
      "type":"list",
      "member":{"shape":"GatewayCapabilitySummary"}
    },
    "GatewayCapabilitySummary":{
      "type":"structure",
      "required":[
        "capabilityNamespace",
        "capabilitySyncStatus"
      ],
      "members":{
        "capabilityNamespace":{
          "shape":"CapabilityNamespace",
          "documentation":"<p>The namespace of the capability configuration. For example, if you configure OPC UA sources for an MQTT-enabled gateway, your OPC-UA capability configuration has the namespace <code>iotsitewise:opcuacollector:3</code>.</p>"
        },
        "capabilitySyncStatus":{
          "shape":"CapabilitySyncStatus",
          "documentation":"<p>The synchronization status of the gateway capability configuration. The sync status can be one of the following:</p> <ul> <li> <p> <code>IN_SYNC</code> - The gateway is running with the latest configuration.</p> </li> <li> <p> <code>OUT_OF_SYNC</code> - The gateway hasn't received the latest configuration.</p> </li> <li> <p> <code>SYNC_FAILED</code> - The gateway rejected the latest configuration.</p> </li> <li> <p> <code>UNKNOWN</code> - The gateway hasn't reported its sync status.</p> </li> <li> <p> <code>NOT_APPLICABLE</code> - The gateway doesn't support this capability. This is most common when integrating partner data sources, because the data integration is handled externally by the partner.</p> </li> </ul>"
        }
      },
      "documentation":"<p>Contains a summary of a gateway capability configuration.</p>"
    },
    "GatewayName":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "GatewayPlatform":{
      "type":"structure",
      "members":{
        "greengrass":{
          "shape":"Greengrass",
          "documentation":"<p>A gateway that runs on IoT Greengrass.</p>"
        },
        "greengrassV2":{
          "shape":"GreengrassV2",
          "documentation":"<p>A gateway that runs on IoT Greengrass V2.</p>"
        },
        "siemensIE":{
          "shape":"SiemensIE",
          "documentation":"<p>A SiteWise Edge gateway that runs on a Siemens Industrial Edge Device.</p>"
        }
      },
      "documentation":"<p>The gateway's platform configuration. You can only specify one platform type in a gateway.</p> <p>(Legacy only) For Greengrass V1 gateways, specify the <code>greengrass</code> parameter with a valid Greengrass group ARN.</p> <p>For Greengrass V2 gateways, specify the <code>greengrassV2</code> parameter with a valid core device thing name. If creating a V3 gateway (<code>gatewayVersion=3</code>), you must also specify the <code>coreDeviceOperatingSystem</code>.</p> <p>For Siemens Industrial Edge gateways, specify the <code>siemensIE</code> parameter with a valid IoT Core thing name.</p>"
    },
    "GatewaySummaries":{
      "type":"list",
      "member":{"shape":"GatewaySummary"}
    },
    "GatewaySummary":{
      "type":"structure",
      "required":[
        "gatewayId",
        "gatewayName",
        "creationDate",
        "lastUpdateDate"
      ],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway device.</p>"
        },
        "gatewayName":{
          "shape":"GatewayName",
          "documentation":"<p>The name of the gateway.</p>"
        },
        "gatewayPlatform":{"shape":"GatewayPlatform"},
        "gatewayVersion":{
          "shape":"GatewayVersion",
          "documentation":"<p>The version of the gateway. A value of <code>3</code> indicates an MQTT-enabled, V3 gateway, while <code>2</code> indicates a Classic streams, V2 gateway.</p>"
        },
        "gatewayCapabilitySummaries":{
          "shape":"GatewayCapabilitySummaries",
          "documentation":"<p>A list of gateway capability summaries that each contain a namespace and status. Each gateway capability defines data sources for the gateway. To retrieve a capability configuration's definition, use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html\">DescribeGatewayCapabilityConfiguration</a>.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the gateway was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the gateway was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains a summary of a gateway.</p>"
    },
    "GatewayVersion":{
      "type":"string",
      "documentation":"<p>The version of the gateway. Options include: </p> <ul> <li> <p> <code>2</code> - Classic streams, V2 gateway.</p> </li> <li> <p> <code>3</code> - MQTT-enabled, V3 gateway.</p> </li> </ul>",
      "max":1024,
      "min":1,
      "pattern":"^[0-9]+$"
    },
    "GetAssetPropertyAggregatesRequest":{
      "type":"structure",
      "required":[
        "aggregateTypes",
        "resolution",
        "startDate",
        "endDate"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyAlias"
        },
        "aggregateTypes":{
          "shape":"AggregateTypes",
          "documentation":"<p>The data aggregating function.</p>",
          "location":"querystring",
          "locationName":"aggregateTypes"
        },
        "resolution":{
          "shape":"Resolution",
          "documentation":"<p>The time interval over which to aggregate data.</p>",
          "location":"querystring",
          "locationName":"resolution"
        },
        "qualities":{
          "shape":"Qualities",
          "documentation":"<p>The quality by which to filter asset data.</p>",
          "location":"querystring",
          "locationName":"qualities"
        },
        "startDate":{
          "shape":"Timestamp",
          "documentation":"<p>The exclusive start of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>",
          "location":"querystring",
          "locationName":"startDate"
        },
        "endDate":{
          "shape":"Timestamp",
          "documentation":"<p>The inclusive end of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>",
          "location":"querystring",
          "locationName":"endDate"
        },
        "timeOrdering":{
          "shape":"TimeOrdering",
          "documentation":"<p>The chronological sorting order of the requested information.</p> <p>Default: <code>ASCENDING</code> </p>",
          "location":"querystring",
          "locationName":"timeOrdering"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"GetAssetPropertyValueAggregatesMaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. A result set is returned in the two cases, whichever occurs first.</p> <ul> <li> <p>The size of the result set is equal to 1 MB.</p> </li> <li> <p>The number of data points in the result set is equal to the value of <code>maxResults</code>. The maximum value of <code>maxResults</code> is 2500.</p> </li> </ul>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "GetAssetPropertyAggregatesResponse":{
      "type":"structure",
      "required":["aggregatedValues"],
      "members":{
        "aggregatedValues":{
          "shape":"AggregatedValues",
          "documentation":"<p>The requested aggregated values.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "GetAssetPropertyValueAggregatesMaxResults":{
      "type":"integer",
      "min":1
    },
    "GetAssetPropertyValueHistoryMaxResults":{
      "type":"integer",
      "min":1
    },
    "GetAssetPropertyValueHistoryRequest":{
      "type":"structure",
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyAlias"
        },
        "startDate":{
          "shape":"Timestamp",
          "documentation":"<p>The exclusive start of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>",
          "location":"querystring",
          "locationName":"startDate"
        },
        "endDate":{
          "shape":"Timestamp",
          "documentation":"<p>The inclusive end of the range from which to query historical data, expressed in seconds in Unix epoch time.</p>",
          "location":"querystring",
          "locationName":"endDate"
        },
        "qualities":{
          "shape":"Qualities",
          "documentation":"<p>The quality by which to filter asset data.</p>",
          "location":"querystring",
          "locationName":"qualities"
        },
        "timeOrdering":{
          "shape":"TimeOrdering",
          "documentation":"<p>The chronological sorting order of the requested information.</p> <p>Default: <code>ASCENDING</code> </p>",
          "location":"querystring",
          "locationName":"timeOrdering"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"GetAssetPropertyValueHistoryMaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. A result set is returned in the two cases, whichever occurs first.</p> <ul> <li> <p>The size of the result set is equal to 4 MB.</p> </li> <li> <p>The number of data points in the result set is equal to the value of <code>maxResults</code>. The maximum value of <code>maxResults</code> is 20000.</p> </li> </ul>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "GetAssetPropertyValueHistoryResponse":{
      "type":"structure",
      "required":["assetPropertyValueHistory"],
      "members":{
        "assetPropertyValueHistory":{
          "shape":"AssetPropertyValueHistory",
          "documentation":"<p>The asset property's value history.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "GetAssetPropertyValueRequest":{
      "type":"structure",
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyAlias"
        }
      }
    },
    "GetAssetPropertyValueResponse":{
      "type":"structure",
      "members":{
        "propertyValue":{
          "shape":"AssetPropertyValue",
          "documentation":"<p>The current asset property value.</p>"
        }
      }
    },
    "GetCaptureDataNextToken":{
      "type":"string",
      "documentation":"<p>Pagination token for retrieving the next chunk of video data.</p>",
      "max":4096,
      "min":1
    },
    "GetCaptureDataRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "startTime",
        "endTime"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the capture source.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "startTime":{
          "shape":"TimeInNanos",
          "documentation":"<p>The start time for the video data range.</p>"
        },
        "endTime":{
          "shape":"TimeInNanos",
          "documentation":"<p>The end time for the video data range. Must be greater than startTime.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The time series ID that identifies the capture source. Mutually exclusive with propertyAlias.</p>"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The property alias that identifies the capture source. Mutually exclusive with timeSeriesId.</p>"
        },
        "formatSettings":{
          "shape":"FormatSettings",
          "documentation":"<p>The optional format settings for the output.</p>"
        },
        "nextToken":{
          "shape":"GetCaptureDataNextToken",
          "documentation":"<p>The token from a previous response used to continue retrieving data.</p>"
        }
      },
      "documentation":"<p>Request to retrieve video data for a specific time range. Exactly one of timeSeriesId or propertyAlias must be provided.</p>"
    },
    "GetCaptureDataResponse":{
      "type":"structure",
      "required":[
        "data",
        "startTime",
        "endTime",
        "dataType"
      ],
      "members":{
        "data":{
          "shape":"CaptureBlob",
          "documentation":"<p>The binary video data.</p>"
        },
        "startTime":{
          "shape":"TimeInNanos",
          "documentation":"<p>The actual start time of the returned data.</p>"
        },
        "endTime":{
          "shape":"TimeInNanos",
          "documentation":"<p>The actual end time of the returned data.</p>"
        },
        "dataType":{
          "shape":"VideoDataType",
          "documentation":"<p>The type of the returned data.</p>"
        },
        "nextToken":{
          "shape":"GetCaptureDataNextToken",
          "documentation":"<p>The token used to retrieve the next chunk. Absent if no more data is available.</p>"
        }
      },
      "documentation":"<p>Response containing the video data.</p>"
    },
    "GetInterpolatedAssetPropertyValuesRequest":{
      "type":"structure",
      "required":[
        "startTimeInSeconds",
        "endTimeInSeconds",
        "quality",
        "intervalInSeconds",
        "type"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>",
          "location":"querystring",
          "locationName":"propertyId"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"propertyAlias"
        },
        "startTimeInSeconds":{
          "shape":"TimeInSeconds",
          "documentation":"<p>The exclusive start of the range from which to interpolate data, expressed in seconds in Unix epoch time.</p>",
          "location":"querystring",
          "locationName":"startTimeInSeconds"
        },
        "startTimeOffsetInNanos":{
          "shape":"OffsetInNanos",
          "documentation":"<p>The nanosecond offset converted from <code>startTimeInSeconds</code>.</p>",
          "location":"querystring",
          "locationName":"startTimeOffsetInNanos"
        },
        "endTimeInSeconds":{
          "shape":"TimeInSeconds",
          "documentation":"<p>The inclusive end of the range from which to interpolate data, expressed in seconds in Unix epoch time.</p>",
          "location":"querystring",
          "locationName":"endTimeInSeconds"
        },
        "endTimeOffsetInNanos":{
          "shape":"OffsetInNanos",
          "documentation":"<p>The nanosecond offset converted from <code>endTimeInSeconds</code>.</p>",
          "location":"querystring",
          "locationName":"endTimeOffsetInNanos"
        },
        "quality":{
          "shape":"Quality",
          "documentation":"<p>The quality of the asset property value. You can use this parameter as a filter to choose only the asset property values that have a specific quality.</p>",
          "location":"querystring",
          "locationName":"quality"
        },
        "intervalInSeconds":{
          "shape":"IntervalInSeconds",
          "documentation":"<p>The time interval in seconds over which to interpolate data. Each interval starts when the previous one ends.</p>",
          "location":"querystring",
          "locationName":"intervalInSeconds"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxInterpolatedResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. If not specified, the default value is 10.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "type":{
          "shape":"InterpolationType",
          "documentation":"<p>The interpolation type.</p> <p>Valid values: <code>LINEAR_INTERPOLATION | LOCF_INTERPOLATION</code> </p> <ul> <li> <p> <code>LINEAR_INTERPOLATION</code> – Estimates missing data using <a href=\"https://en.wikipedia.org/wiki/Linear_interpolation\">linear interpolation</a>.</p> <p>For example, you can use this operation to return the interpolated temperature values for a wind turbine every 24 hours over a duration of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT SiteWise returns the first interpolated value on July 2, 2021, at 9 AM, the second interpolated value on July 3, 2021, at 9 AM, and so on.</p> </li> <li> <p> <code>LOCF_INTERPOLATION</code> – Estimates missing data using last observation carried forward interpolation</p> <p>If no data point is found for an interval, IoT SiteWise returns the last observed data point for the previous interval and carries forward this interpolated value until a new data point is found.</p> <p>For example, you can get the state of an on-off valve every 24 hours over a duration of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT SiteWise returns the last observed data point between July 1, 2021, at 9 AM and July 2, 2021, at 9 AM as the first interpolated value. If a data point isn't found after 9 AM on July 2, 2021, IoT SiteWise uses the same interpolated value for the rest of the days.</p> </li> </ul>",
          "location":"querystring",
          "locationName":"type"
        },
        "intervalWindowInSeconds":{
          "shape":"IntervalWindowInSeconds",
          "documentation":"<p>The query interval for the window, in seconds. IoT SiteWise computes each interpolated value by using data points from the timestamp of each interval, minus the window to the timestamp of each interval plus the window. If not specified, the window ranges between the start time minus the interval and the end time plus the interval.</p> <note> <ul> <li> <p>If you specify a value for the <code>intervalWindowInSeconds</code> parameter, the value for the <code>type</code> parameter must be <code>LINEAR_INTERPOLATION</code>.</p> </li> <li> <p>If a data point isn't found during the specified query window, IoT SiteWise won't return an interpolated value for the interval. This indicates that there's a gap in the ingested data points.</p> </li> </ul> </note> <p>For example, you can get the interpolated temperature values for a wind turbine every 24 hours over a duration of 7 days. If the interpolation starts on July 1, 2021, at 9 AM with a window of 2 hours, IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus 2 hours) on July 2, 2021 to compute the first interpolated value. Next, IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus 2 hours) on July 3, 2021 to compute the second interpolated value, and so on. </p>",
          "location":"querystring",
          "locationName":"intervalWindowInSeconds"
        }
      }
    },
    "GetInterpolatedAssetPropertyValuesResponse":{
      "type":"structure",
      "required":["interpolatedAssetPropertyValues"],
      "members":{
        "interpolatedAssetPropertyValues":{
          "shape":"InterpolatedAssetPropertyValues",
          "documentation":"<p>The requested interpolated values.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "GetQueryResultsRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "queryId"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace associated with the query.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "queryId":{
          "shape":"QueryId",
          "documentation":"<p>The unique identifier for the query execution.</p>",
          "location":"uri",
          "locationName":"queryId"
        },
        "maxResults":{
          "shape":"QueryMaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"QueryNextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "GetQueryResultsResponse":{
      "type":"structure",
      "members":{
        "columnInfo":{
          "shape":"ColumnInformationList",
          "documentation":"<p>A list of column metadata for the query results. Each entry contains the column name and data type. Present when the query status is COMPLETED.</p>"
        },
        "rows":{
          "shape":"RowList",
          "documentation":"<p>The result rows. Each row is a list of string column values, positional to match the columnInfo order. Present when the query status is COMPLETED.</p>"
        },
        "nextToken":{
          "shape":"QueryNextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      },
      "documentation":"<p>Contains the response for the GetQueryResults operation.</p>"
    },
    "GetSearchResultsRequest":{
      "type":"structure",
      "required":[
        "searchId",
        "workspaceName"
      ],
      "members":{
        "searchId":{
          "shape":"SearchId",
          "documentation":"<p>The identifier of the search whose results are retrieved.</p>",
          "location":"uri",
          "locationName":"searchId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace the search belongs to.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "maxResults":{
          "shape":"GetSearchResultsRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return in a single page. Valid range is 1 to 10,000; if omitted, a service-defined default is used.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token returned by a previous GetSearchResults call. Provide it to retrieve the next page of results; omit it to retrieve the first page.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      },
      "documentation":"<p>Input for the GetSearchResults operation.</p>"
    },
    "GetSearchResultsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":10000,
      "min":1
    },
    "GetSearchResultsResponse":{
      "type":"structure",
      "required":["searchResults"],
      "members":{
        "searchResults":{
          "shape":"SearchResultList",
          "documentation":"<p>A page of search results, ordered by descending relevance score.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token to use in a subsequent GetSearchResults call to retrieve the next page. Absent when there are no more results.</p>"
        }
      },
      "documentation":"<p>Output of the GetSearchResults operation.</p>"
    },
    "Greengrass":{
      "type":"structure",
      "required":["groupArn"],
      "members":{
        "groupArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the Greengrass group. For more information about how to find a group's ARN, see <a href=\"https://docs.aws.amazon.com/greengrass/v1/apireference/listgroups-get.html\">ListGroups</a> and <a href=\"https://docs.aws.amazon.com/greengrass/v1/apireference/getgroup-get.html\">GetGroup</a> in the <i>IoT Greengrass V1 API Reference</i>.</p>"
        }
      },
      "documentation":"<p>Contains details for a gateway that runs on IoT Greengrass. To create a gateway that runs on IoT Greengrass, you must add the IoT SiteWise connector to a Greengrass group and deploy it. Your Greengrass group must also have permissions to upload data to IoT SiteWise. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateway-connector.html\">Ingesting data using a gateway</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "GreengrassV2":{
      "type":"structure",
      "required":["coreDeviceThingName"],
      "members":{
        "coreDeviceThingName":{
          "shape":"CoreDeviceThingName",
          "documentation":"<p>The name of the IoT thing for your IoT Greengrass V2 core device.</p>"
        },
        "coreDeviceOperatingSystem":{
          "shape":"CoreDeviceOperatingSystem",
          "documentation":"<p>The operating system of the core device in IoT Greengrass V2. Specifying the operating system is required for MQTT-enabled, V3 gateways (<code>gatewayVersion</code> <code>3</code>) and not applicable for Classic stream, V2 gateways (<code>gatewayVersion</code> <code>2</code>).</p>"
        }
      },
      "documentation":"<p>Contains details for a gateway that runs on IoT Greengrass V2. To create a gateway that runs on IoT Greengrass V2, you must deploy the IoT SiteWise Edge component to your gateway device. Your <a href=\"https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html\">Greengrass device role</a> must use the <code>AWSIoTSiteWiseEdgeAccess</code> policy. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/sw-gateways.html\">Using IoT SiteWise at the edge</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "GroupId":{
      "type":"string",
      "documentation":"<p>A caller-supplied identifier used to group related searches together.</p>",
      "max":36,
      "min":2,
      "pattern":"[a-zA-Z0-9][a-zA-Z0-9-]*"
    },
    "GroupIdFilterList":{
      "type":"list",
      "member":{"shape":"GroupId"},
      "documentation":"<p>A filter on group identifier. Matches searches whose <code>groupId</code> is any of the listed values.</p>",
      "max":100,
      "min":1
    },
    "GroupIdentity":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"IdentityId",
          "documentation":"<p>The IAM Identity Center ID of the group.</p>"
        }
      },
      "documentation":"<p>Contains information for a group identity in an access policy.</p>"
    },
    "HierarchyMapping":{
      "type":"structure",
      "required":[
        "assetModelHierarchyId",
        "interfaceAssetModelHierarchyId"
      ],
      "members":{
        "assetModelHierarchyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the hierarchy in the asset model where the interface is applied.</p>"
        },
        "interfaceAssetModelHierarchyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the hierarchy in the interface asset model.</p>"
        }
      },
      "documentation":"<p>Maps a hierarchy from an interface asset model to a hierarchy in the asset model where the interface is applied.</p>"
    },
    "HierarchyMappings":{
      "type":"list",
      "member":{"shape":"HierarchyMapping"}
    },
    "IAMRoleIdentity":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{
          "shape":"IamArn",
          "documentation":"<p>The ARN of the IAM role. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html\">IAM ARNs</a> in the <i>IAM User Guide</i>.</p>"
        }
      },
      "documentation":"<p>Contains information about an Identity and Access Management role. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html\">IAM roles</a> in the <i>IAM User Guide</i>.</p>"
    },
    "IAMUserIdentity":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{
          "shape":"IamArn",
          "documentation":"<p>The ARN of the IAM user. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html\">IAM ARNs</a> in the <i>IAM User Guide</i>.</p> <note> <p>If you delete the IAM user, access policies that contain this identity include an empty <code>arn</code>. You can delete the access policy for the IAM user that no longer exists.</p> </note>"
        }
      },
      "documentation":"<p>Contains information about an Identity and Access Management user.</p>"
    },
    "ID":{
      "type":"string",
      "max":36,
      "min":36,
      "pattern":"^(?!00000000-0000-0000-0000-000000000000)[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
    },
    "IDs":{
      "type":"list",
      "member":{"shape":"ID"},
      "max":100,
      "min":1
    },
    "IamArn":{
      "type":"string",
      "max":1600,
      "min":1,
      "pattern":"^arn:aws(-cn|-us-gov)?:[a-zA-Z0-9-:\\/_\\.\\+=,@]+$"
    },
    "IamRoleArn":{
      "type":"string",
      "documentation":"<p>IAM Role ARN with strict validation requiring a 12-digit account ID. https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html</p>",
      "max":2048,
      "min":20,
      "pattern":"arn:aws(-cn|-us-gov)?:iam::\\d{12}:role/[\\w+=,.@/-]+",
      "sensitive":true
    },
    "Identity":{
      "type":"structure",
      "members":{
        "user":{
          "shape":"UserIdentity",
          "documentation":"<p>An IAM Identity Center user identity.</p>"
        },
        "group":{
          "shape":"GroupIdentity",
          "documentation":"<p>An IAM Identity Center group identity.</p>"
        },
        "iamUser":{
          "shape":"IAMUserIdentity",
          "documentation":"<p>An IAM user identity.</p>"
        },
        "iamRole":{
          "shape":"IAMRoleIdentity",
          "documentation":"<p>An IAM role identity.</p>"
        }
      },
      "documentation":"<p>Contains an identity that can access an IoT SiteWise Monitor resource.</p> <note> <p>Currently, you can't use Amazon Web Services API operations to retrieve IAM Identity Center identity IDs. You can find the IAM Identity Center identity IDs in the URL of user and group pages in the <a href=\"https://console.aws.amazon.com/singlesignon\">IAM Identity Center console</a>.</p> </note>"
    },
    "IdentityId":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"\\S+"
    },
    "IdentityType":{
      "type":"string",
      "enum":[
        "USER",
        "GROUP",
        "IAM"
      ]
    },
    "Image":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of an existing image. Specify this parameter to keep an existing image.</p>"
        },
        "file":{"shape":"ImageFile"}
      },
      "documentation":"<p>Contains an image that is one of the following:</p> <ul> <li> <p>An image file. Choose this option to upload a new image.</p> </li> <li> <p>The ID of an existing image. Choose this option to keep an existing image.</p> </li> </ul>"
    },
    "ImageFile":{
      "type":"structure",
      "required":[
        "data",
        "type"
      ],
      "members":{
        "data":{
          "shape":"ImageFileData",
          "documentation":"<p>The image file contents, represented as a base64-encoded string. The file size must be less than 1 MB.</p>"
        },
        "type":{
          "shape":"ImageFileType",
          "documentation":"<p>The file type of the image.</p>"
        }
      },
      "documentation":"<p>Contains an image file.</p>"
    },
    "ImageFileData":{
      "type":"blob",
      "max":1500000,
      "min":1
    },
    "ImageFileType":{
      "type":"string",
      "enum":["PNG"]
    },
    "ImageLocation":{
      "type":"structure",
      "required":[
        "id",
        "url"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the image.</p>"
        },
        "url":{
          "shape":"Url",
          "documentation":"<p>The URL where the image is available. The URL is valid for 15 minutes so that you can view and download the image</p>"
        }
      },
      "documentation":"<p>Contains an image that is uploaded to IoT SiteWise and available at a URL.</p>"
    },
    "InputProperties":{
      "type":"string",
      "max":67,
      "min":4,
      "pattern":"^\\$\\{[a-z][a-z0-9_]*\\}"
    },
    "InterfaceDetails":{
      "type":"list",
      "member":{"shape":"InterfaceRelationship"}
    },
    "InterfaceRelationship":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model that has the interface applied to it.</p>"
        }
      },
      "documentation":"<p>Contains information about the relationship between an asset model and an interface asset model that is applied to it.</p>"
    },
    "InterfaceRelationshipSummaries":{
      "type":"list",
      "member":{"shape":"InterfaceRelationshipSummary"}
    },
    "InterfaceRelationshipSummary":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model that has the interface applied to it.</p>"
        }
      },
      "documentation":"<p>Contains summary information about an interface relationship, which defines how an interface is applied to an asset model. This summary provides the essential identifiers needed to retrieve detailed information about the relationship.</p>"
    },
    "InterfaceSummaries":{
      "type":"list",
      "member":{"shape":"InterfaceSummary"}
    },
    "InterfaceSummary":{
      "type":"structure",
      "required":[
        "interfaceAssetModelId",
        "interfaceAssetModelPropertyId"
      ],
      "members":{
        "interfaceAssetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the interface asset model that contains this property.</p>"
        },
        "interfaceAssetModelPropertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the property in the interface asset model that corresponds to this property.</p>"
        }
      },
      "documentation":"<p>Contains summary information about an interface that a property belongs to.</p>"
    },
    "InternalFailureException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>IoT SiteWise can't process your request right now. Try again later.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "InterpolatedAssetPropertyValue":{
      "type":"structure",
      "required":[
        "timestamp",
        "value"
      ],
      "members":{
        "timestamp":{"shape":"TimeInNanos"},
        "value":{"shape":"Variant"}
      },
      "documentation":"<p>Contains information about an interpolated asset property value.</p>"
    },
    "InterpolatedAssetPropertyValues":{
      "type":"list",
      "member":{"shape":"InterpolatedAssetPropertyValue"}
    },
    "InterpolationType":{
      "type":"string",
      "max":256,
      "min":1
    },
    "Interval":{
      "type":"string",
      "max":23,
      "min":2
    },
    "IntervalInSeconds":{
      "type":"long",
      "max":320000000,
      "min":1
    },
    "IntervalWindowInSeconds":{
      "type":"long",
      "max":320000000,
      "min":1
    },
    "InvalidRequestException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The request isn't valid. This can occur if your request contains malformed JSON or unsupported characters. Check your request and try again.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "InvocationOutput":{
      "type":"structure",
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>The text message of the SiteWise Assistant's response.</p>"
        },
        "citations":{
          "shape":"Citations",
          "documentation":"<p>A list of citations, and related information for the SiteWise Assistant's response.</p>"
        }
      },
      "documentation":"<p>This contains the SiteWise Assistant's response and the corresponding citation.</p>",
      "event":true
    },
    "InvokeAssistantRequest":{
      "type":"structure",
      "required":["message"],
      "members":{
        "conversationId":{
          "shape":"ConversationId",
          "documentation":"<p>The ID assigned to a conversation. IoT SiteWise automatically generates a unique ID for you, and this parameter is never required. However, if you prefer to have your own ID, you must specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>"
        },
        "message":{
          "shape":"MessageInput",
          "documentation":"<p>A text message sent to the SiteWise Assistant by the user.</p>"
        },
        "enableTrace":{
          "shape":"PrimitiveBoolean",
          "documentation":"<p>Specifies if to turn trace on or not. It is used to track the SiteWise Assistant's reasoning, and data access process.</p>"
        }
      }
    },
    "InvokeAssistantResponse":{
      "type":"structure",
      "required":[
        "body",
        "conversationId"
      ],
      "members":{
        "body":{"shape":"ResponseStream"},
        "conversationId":{
          "shape":"ConversationId",
          "documentation":"<p>The ID of the conversation, in UUID format. This ID uniquely identifies the conversation within IoT SiteWise.</p>",
          "location":"header",
          "locationName":"x-amz-iotsitewise-assistant-conversation-id"
        }
      },
      "payload":"body"
    },
    "IotCoreThingName":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^[a-zA-Z0-9:_-]+$"
    },
    "JobConfiguration":{
      "type":"structure",
      "members":{
        "fileFormat":{
          "shape":"FileFormat",
          "documentation":"<p>The file format of the data in S3.</p>"
        }
      },
      "documentation":"<p>Contains the configuration information of a job, such as the file format used to save data in Amazon S3.</p>"
    },
    "JobStatus":{
      "type":"string",
      "enum":[
        "PENDING",
        "CANCELLED",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "COMPLETED_WITH_FAILURES"
      ]
    },
    "JobSummaries":{
      "type":"list",
      "member":{"shape":"JobSummary"}
    },
    "JobSummary":{
      "type":"structure",
      "required":[
        "id",
        "name",
        "status"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the job.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The unique name that helps identify the job request.</p>"
        },
        "status":{
          "shape":"JobStatus",
          "documentation":"<p>The status of the bulk import job can be one of following values:</p> <ul> <li> <p> <code>PENDING</code> – IoT SiteWise is waiting for the current bulk import job to finish.</p> </li> <li> <p> <code>CANCELLED</code> – The bulk import job has been canceled.</p> </li> <li> <p> <code>RUNNING</code> – IoT SiteWise is processing your request to import your data from Amazon S3.</p> </li> <li> <p> <code>COMPLETED</code> – IoT SiteWise successfully completed your request to import data from Amazon S3.</p> </li> <li> <p> <code>FAILED</code> – IoT SiteWise couldn't process your request to import data from Amazon S3. You can use logs saved in the specified error report location in Amazon S3 to troubleshoot issues.</p> </li> <li> <p> <code>COMPLETED_WITH_FAILURES</code> – IoT SiteWise completed your request to import data from Amazon S3 with errors. You can use logs saved in the specified error report location in Amazon S3 to troubleshoot issues.</p> </li> </ul>"
        }
      },
      "documentation":"<p>Contains the job summary information.</p>"
    },
    "JobType":{
      "type":"string",
      "documentation":"&lt;p&gt;The type of enrichment job, derived from the job configuration union member&lt;/p&gt;",
      "enum":["EVENT_DETECTION"]
    },
    "KendraSourceDetail":{
      "type":"structure",
      "required":[
        "knowledgeBaseArn",
        "roleArn"
      ],
      "members":{
        "knowledgeBaseArn":{
          "shape":"ARN",
          "documentation":"<p>The <code>knowledgeBaseArn</code> details for the Kendra dataset source.</p>"
        },
        "roleArn":{
          "shape":"ARN",
          "documentation":"<p>The <code>roleARN</code> details for the Kendra dataset source.</p>"
        }
      },
      "documentation":"<p>The source details for the Kendra dataset source.</p>"
    },
    "KmsKeyId":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "LimitExceededException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>You've reached the quota for a resource. For example, this can occur if you're trying to associate more than the allowed number of child assets or attempting to create more than the allowed number of properties for an asset model.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "error":{"httpStatusCode":410},
      "exception":true
    },
    "ListAccessPoliciesRequest":{
      "type":"structure",
      "members":{
        "identityType":{
          "shape":"IdentityType",
          "documentation":"<p>The type of identity (IAM Identity Center user, IAM Identity Center group, or IAM user). This parameter is required if you specify <code>identityId</code>.</p>",
          "location":"querystring",
          "locationName":"identityType"
        },
        "identityId":{
          "shape":"IdentityId",
          "documentation":"<p>The ID of the identity. This parameter is required if you specify <code>USER</code> or <code>GROUP</code> for <code>identityType</code>.</p>",
          "location":"querystring",
          "locationName":"identityId"
        },
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of resource (portal or project). This parameter is required if you specify <code>resourceId</code>.</p>",
          "location":"querystring",
          "locationName":"resourceType"
        },
        "resourceId":{
          "shape":"ID",
          "documentation":"<p>The ID of the resource. This parameter is required if you specify <code>resourceType</code>.</p>",
          "location":"querystring",
          "locationName":"resourceId"
        },
        "iamArn":{
          "shape":"IamArn",
          "documentation":"<p>The ARN of the IAM user. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html\">IAM ARNs</a> in the <i>IAM User Guide</i>. This parameter is required if you specify <code>IAM</code> for <code>identityType</code>.</p>",
          "location":"querystring",
          "locationName":"iamArn"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListAccessPoliciesResponse":{
      "type":"structure",
      "required":["accessPolicySummaries"],
      "members":{
        "accessPolicySummaries":{
          "shape":"AccessPolicySummaries",
          "documentation":"<p>A list that summarizes each access policy.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListActionsRequest":{
      "type":"structure",
      "required":[
        "targetResourceType",
        "targetResourceId"
      ],
      "members":{
        "targetResourceType":{
          "shape":"TargetResourceType",
          "documentation":"<p>The type of resource.</p>",
          "location":"querystring",
          "locationName":"targetResourceType"
        },
        "targetResourceId":{
          "shape":"ID",
          "documentation":"<p>The ID of the target resource.</p>",
          "location":"querystring",
          "locationName":"targetResourceId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "resolveToResourceType":{
          "shape":"ResolveToResourceType",
          "documentation":"<p>The type of the resolved resource.</p>",
          "location":"querystring",
          "locationName":"resolveToResourceType"
        },
        "resolveToResourceId":{
          "shape":"ID",
          "documentation":"<p>The ID of the resolved resource.</p>",
          "location":"querystring",
          "locationName":"resolveToResourceId"
        }
      }
    },
    "ListActionsResponse":{
      "type":"structure",
      "required":[
        "actionSummaries",
        "nextToken"
      ],
      "members":{
        "actionSummaries":{
          "shape":"ActionSummaries",
          "documentation":"<p>A list that summarizes the actions associated with the specified asset.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListApplicationsRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>Maximum number of results to return</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>Next Page Token</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListApplicationsResponse":{
      "type":"structure",
      "required":["applications"],
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>Next Page Token</p>"
        },
        "applications":{
          "shape":"ApplicationList",
          "documentation":"<p>List of applications</p>"
        }
      }
    },
    "ListAssetModelCompositeModelsRequest":{
      "type":"structure",
      "required":["assetModelId"],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "assetModelVersion":{
          "shape":"AssetModelVersionFilter",
          "documentation":"<p>The version alias that specifies the latest or active version of the asset model. The details are returned in the response. The default value is <code>LATEST</code>. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/model-active-version.html\"> Asset model versions</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetModelVersion"
        }
      }
    },
    "ListAssetModelCompositeModelsResponse":{
      "type":"structure",
      "required":["assetModelCompositeModelSummaries"],
      "members":{
        "assetModelCompositeModelSummaries":{
          "shape":"AssetModelCompositeModelSummaries",
          "documentation":"<p>A list that summarizes each composite model.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListAssetModelPropertiesFilter":{
      "type":"string",
      "enum":[
        "ALL",
        "BASE"
      ]
    },
    "ListAssetModelPropertiesRequest":{
      "type":"structure",
      "required":["assetModelId"],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. If not specified, the default value is 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "filter":{
          "shape":"ListAssetModelPropertiesFilter",
          "documentation":"<p> Filters the requested list of asset model properties. You can choose one of the following options:</p> <ul> <li> <p> <code>ALL</code> – The list includes all asset model properties for a given asset model ID. </p> </li> <li> <p> <code>BASE</code> – The list includes only base asset model properties for a given asset model ID. </p> </li> </ul> <p>Default: <code>BASE</code> </p>",
          "location":"querystring",
          "locationName":"filter"
        },
        "assetModelVersion":{
          "shape":"AssetModelVersionFilter",
          "documentation":"<p>The version alias that specifies the latest or active version of the asset model. The details are returned in the response. The default value is <code>LATEST</code>. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/model-active-version.html\"> Asset model versions</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetModelVersion"
        }
      }
    },
    "ListAssetModelPropertiesResponse":{
      "type":"structure",
      "required":["assetModelPropertySummaries"],
      "members":{
        "assetModelPropertySummaries":{
          "shape":"AssetModelPropertySummaries",
          "documentation":"<p>A list that summarizes the properties associated with the specified asset model.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListAssetModelsRequest":{
      "type":"structure",
      "members":{
        "assetModelTypes":{
          "shape":"ListAssetModelsTypeFilter",
          "documentation":"<p>The type of asset model. If you don't provide an <code>assetModelTypes</code>, all types of asset models are returned.</p> <ul> <li> <p> <b>ASSET_MODEL</b> – An asset model that you can use to create assets. Can't be included as a component in another asset model.</p> </li> <li> <p> <b>COMPONENT_MODEL</b> – A reusable component that you can include in the composite models of other asset models. You can't create assets directly from this type of asset model. </p> </li> <li> <p> <b>INTERFACE</b> – An interface is a type of model that defines a standard structure that can be applied to different asset models.</p> </li> </ul>",
          "location":"querystring",
          "locationName":"assetModelTypes"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "assetModelVersion":{
          "shape":"AssetModelVersionFilter",
          "documentation":"<p>The version alias that specifies the latest or active version of the asset model. The details are returned in the response. The default value is <code>LATEST</code>. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/model-active-version.html\"> Asset model versions</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetModelVersion"
        }
      }
    },
    "ListAssetModelsResponse":{
      "type":"structure",
      "required":["assetModelSummaries"],
      "members":{
        "assetModelSummaries":{
          "shape":"AssetModelSummaries",
          "documentation":"<p>A list that summarizes each asset model.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListAssetModelsTypeFilter":{
      "type":"list",
      "member":{"shape":"AssetModelType"}
    },
    "ListAssetPropertiesFilter":{
      "type":"string",
      "enum":[
        "ALL",
        "BASE"
      ]
    },
    "ListAssetPropertiesRequest":{
      "type":"structure",
      "required":["assetId"],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. If not specified, the default value is 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "filter":{
          "shape":"ListAssetPropertiesFilter",
          "documentation":"<p> Filters the requested list of asset properties. You can choose one of the following options:</p> <ul> <li> <p> <code>ALL</code> – The list includes all asset properties for a given asset model ID. </p> </li> <li> <p> <code>BASE</code> – The list includes only base asset properties for a given asset model ID. </p> </li> </ul> <p>Default: <code>BASE</code> </p>",
          "location":"querystring",
          "locationName":"filter"
        }
      }
    },
    "ListAssetPropertiesResponse":{
      "type":"structure",
      "required":["assetPropertySummaries"],
      "members":{
        "assetPropertySummaries":{
          "shape":"AssetPropertySummaries",
          "documentation":"<p>A list that summarizes the properties associated with the specified asset.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListAssetRelationshipsRequest":{
      "type":"structure",
      "required":[
        "assetId",
        "traversalType"
      ],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "traversalType":{
          "shape":"TraversalType",
          "documentation":"<p>The type of traversal to use to identify asset relationships. Choose the following option:</p> <ul> <li> <p> <code>PATH_TO_ROOT</code> – Identify the asset's parent assets up to the root asset. The asset that you specify in <code>assetId</code> is the first result in the list of <code>assetRelationshipSummaries</code>, and the root asset is the last result.</p> </li> </ul>",
          "location":"querystring",
          "locationName":"traversalType"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListAssetRelationshipsResponse":{
      "type":"structure",
      "required":["assetRelationshipSummaries"],
      "members":{
        "assetRelationshipSummaries":{
          "shape":"AssetRelationshipSummaries",
          "documentation":"<p>A list that summarizes each asset relationship.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListAssetsFilter":{
      "type":"string",
      "enum":[
        "ALL",
        "TOP_LEVEL"
      ]
    },
    "ListAssetsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model by which to filter the list of assets. This parameter is required if you choose <code>ALL</code> for <code>filter</code>. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetModelId"
        },
        "filter":{
          "shape":"ListAssetsFilter",
          "documentation":"<p>The filter for the requested list of assets. Choose one of the following options:</p> <ul> <li> <p> <code>ALL</code> – The list includes all assets for a given asset model ID. The <code>assetModelId</code> parameter is required if you filter by <code>ALL</code>.</p> </li> <li> <p> <code>TOP_LEVEL</code> – The list includes only top-level assets in the asset hierarchy tree.</p> </li> </ul> <p>Default: <code>ALL</code> </p>",
          "location":"querystring",
          "locationName":"filter"
        }
      }
    },
    "ListAssetsResponse":{
      "type":"structure",
      "required":["assetSummaries"],
      "members":{
        "assetSummaries":{
          "shape":"AssetSummaries",
          "documentation":"<p>A list that summarizes each asset.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListAssociatedAssetsRequest":{
      "type":"structure",
      "required":["assetId"],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset to query. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "hierarchyId":{
          "shape":"CustomID",
          "documentation":"<p>(Optional) If you don't provide a <code>hierarchyId</code>, all the immediate assets in the <code>traversalDirection</code> will be returned. </p> <p> The ID of the hierarchy by which child assets are associated to the asset. (This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.)</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html\">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"hierarchyId"
        },
        "traversalDirection":{
          "shape":"TraversalDirection",
          "documentation":"<p>The direction to list associated assets. Choose one of the following options:</p> <ul> <li> <p> <code>CHILD</code> – The list includes all child assets associated to the asset.</p> </li> <li> <p> <code>PARENT</code> – The list includes the asset's parent asset.</p> </li> </ul> <p>Default: <code>CHILD</code> </p>",
          "location":"querystring",
          "locationName":"traversalDirection"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListAssociatedAssetsResponse":{
      "type":"structure",
      "required":["assetSummaries"],
      "members":{
        "assetSummaries":{
          "shape":"AssociatedAssetsSummaries",
          "documentation":"<p>A list that summarizes the associated assets.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListBulkImportJobsFilter":{
      "type":"string",
      "enum":[
        "ALL",
        "PENDING",
        "RUNNING",
        "CANCELLED",
        "FAILED",
        "COMPLETED_WITH_FAILURES",
        "COMPLETED"
      ]
    },
    "ListBulkImportJobsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "filter":{
          "shape":"ListBulkImportJobsFilter",
          "documentation":"<p>You can use a filter to select the bulk import jobs that you want to retrieve.</p>",
          "location":"querystring",
          "locationName":"filter"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        }
      }
    },
    "ListBulkImportJobsResponse":{
      "type":"structure",
      "required":["jobSummaries"],
      "members":{
        "jobSummaries":{
          "shape":"JobSummaries",
          "documentation":"<p>One or more job summaries to list.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListCompositionRelationshipsRequest":{
      "type":"structure",
      "required":["assetModelId"],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListCompositionRelationshipsResponse":{
      "type":"structure",
      "required":["compositionRelationshipSummaries"],
      "members":{
        "compositionRelationshipSummaries":{
          "shape":"CompositionRelationshipSummaries",
          "documentation":"<p>A list that summarizes each composition relationship.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListComputationModelDataBindingUsagesRequest":{
      "type":"structure",
      "required":["dataBindingValueFilter"],
      "members":{
        "dataBindingValueFilter":{
          "shape":"DataBindingValueFilter",
          "documentation":"<p>A filter used to limit the returned data binding usages based on specific data binding values. You can filter by asset, asset model, asset property, or asset model property to find all computation models using these specific data sources.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token used for the next set of paginated results.</p>"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results returned for each paginated request.</p>"
        }
      }
    },
    "ListComputationModelDataBindingUsagesResponse":{
      "type":"structure",
      "required":["dataBindingUsageSummaries"],
      "members":{
        "dataBindingUsageSummaries":{
          "shape":"ComputationModelDataBindingUsageSummaries",
          "documentation":"<p>A list of summaries describing the data binding usages across computation models. Each summary includes the computation model IDs and the matched data binding details.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of paginated results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListComputationModelResolveToResourcesRequest":{
      "type":"structure",
      "required":["computationModelId"],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model for which to list resolved resources.</p>",
          "location":"uri",
          "locationName":"computationModelId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results returned for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListComputationModelResolveToResourcesResponse":{
      "type":"structure",
      "required":["computationModelResolveToResourceSummaries"],
      "members":{
        "computationModelResolveToResourceSummaries":{
          "shape":"ComputationModelResolveToResourceSummaries",
          "documentation":"<p>A list of summaries describing the distinct resources that this computation model resolves to when actions were executed.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of paginated results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListComputationModelsRequest":{
      "type":"structure",
      "members":{
        "computationModelType":{
          "shape":"ComputationModelType",
          "documentation":"<p>The type of computation model. If a <code>computationModelType</code> is not provided, all types of computation models are returned.</p>",
          "location":"querystring",
          "locationName":"computationModelType"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListComputationModelsResponse":{
      "type":"structure",
      "required":["computationModelSummaries"],
      "members":{
        "computationModelSummaries":{
          "shape":"ComputationModelSummaries",
          "documentation":"<p>A list summarizing each computation model.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListDashboardsRequest":{
      "type":"structure",
      "required":["projectId"],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>",
          "location":"querystring",
          "locationName":"projectId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListDashboardsResponse":{
      "type":"structure",
      "required":["dashboardSummaries"],
      "members":{
        "dashboardSummaries":{
          "shape":"DashboardSummaries",
          "documentation":"<p>A list that summarizes each dashboard in the project.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListDatasetDataSegmentRelationshipsRequest":{
      "type":"structure",
      "required":[
        "datasetId",
        "workspaceName"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the session dataset to list data segment relationships for.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. Default: 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListDatasetDataSegmentRelationshipsResponse":{
      "type":"structure",
      "required":["dataSegmentRelationshipSummaries"],
      "members":{
        "dataSegmentRelationshipSummaries":{
          "shape":"DataSegmentRelationshipSummaries",
          "documentation":"<p>A list that summarizes each data segment relationship.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListDatasetDataSegmentsRequest":{
      "type":"structure",
      "required":[
        "datasetId",
        "workspaceName"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        },
        "datasetVersion":{
          "shape":"Version",
          "documentation":"<p>The version of the dataset to list data segments for.</p>",
          "location":"querystring",
          "locationName":"datasetVersion"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. Default: 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListDatasetDataSegmentsResponse":{
      "type":"structure",
      "required":["dataSegments"],
      "members":{
        "dataSegments":{
          "shape":"DataSegmentSummaries",
          "documentation":"<p>A list that summarizes each data segment.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListDatasetExportJobsRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace whose dataset export jobs should be listed.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "filter":{
          "shape":"DatasetExportJobFilter",
          "documentation":"<p>The optional filter that returns only jobs matching the given filter value. Defaults to ALL.</p>",
          "location":"querystring",
          "locationName":"filter"
        },
        "maxResults":{
          "shape":"ListExportJobsMaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"ListExportJobsNextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      },
      "documentation":"<p>Request to list dataset export jobs for a workspace.</p>"
    },
    "ListDatasetExportJobsResponse":{
      "type":"structure",
      "required":["jobs"],
      "members":{
        "jobs":{
          "shape":"ExportJobSummaryList",
          "documentation":"<p>A list of dataset export job summaries.</p>"
        },
        "nextToken":{
          "shape":"ListExportJobsNextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      },
      "documentation":"<p>Response for list dataset export jobs request.</p>"
    },
    "ListDatasetsRequest":{
      "type":"structure",
      "required":["sourceType"],
      "members":{
        "sourceType":{
          "shape":"DatasetSourceType",
          "documentation":"<p>The type of data source for the dataset.</p>",
          "location":"querystring",
          "locationName":"sourceType"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace to filter datasets by.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        },
        "datasetType":{
          "shape":"DatasetTypeEnum",
          "documentation":"<p>The type of dataset to filter by: a session dataset, a curated dataset, or a connection to an external datasource.</p>",
          "location":"querystring",
          "locationName":"datasetType"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListDatasetsResponse":{
      "type":"structure",
      "required":["datasetSummaries"],
      "members":{
        "datasetSummaries":{
          "shape":"DatasetSummaries",
          "documentation":"<p>A list that summarizes the dataset response.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        }
      }
    },
    "ListEnrichmentJobsRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the IoT SiteWise workspace to list enrichment jobs from.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>Filter jobs by dataset ID. Returns only jobs analyzing data from the specified dataset.</p>",
          "location":"querystring",
          "locationName":"datasetId"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>Filter by property alias (human-readable sensor name). Specify either propertyAlias or timeSeriesId, but not both. Returns only jobs analyzing the specified property alias.</p>",
          "location":"querystring",
          "locationName":"propertyAlias"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>Filter by time series ID (system identifier). Specify either timeSeriesId or propertyAlias, but not both. Returns only jobs analyzing the specified time series.</p>",
          "location":"querystring",
          "locationName":"timeSeriesId"
        },
        "status":{
          "shape":"EnrichmentJobStatus",
          "documentation":"<p>Filter by job status. Returns only jobs in the specified status. Use RUNNING to find active jobs, or FAILED to identify jobs requiring attention.</p>",
          "location":"querystring",
          "locationName":"status"
        },
        "jobType":{
          "shape":"JobType",
          "documentation":"<p>Filter by enrichment job type. Currently only EVENT_DETECTION is supported. Use this filter to future-proof queries when additional job types are added.</p>",
          "location":"querystring",
          "locationName":"jobType"
        },
        "startDate":{
          "shape":"Timestamp",
          "documentation":"<p>The exclusive start of the date range for filtering jobs by creation time. Jobs created after this timestamp are included. Use ISO 8601 format (e.g., 2024-01-01T00:00:00Z).</p>",
          "location":"querystring",
          "locationName":"startDate"
        },
        "endDate":{
          "shape":"Timestamp",
          "documentation":"<p>The inclusive end of the date range for filtering jobs by creation time. Jobs created on or before this timestamp are included. Use ISO 8601 format (e.g., 2024-01-31T23:59:59Z).</p>",
          "location":"querystring",
          "locationName":"endDate"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>Maximum number of jobs to return per page. Defaults to 50 if not specified. Use smaller values for faster responses, larger values to reduce API calls.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>Pagination token from a previous ListEnrichmentJobs response. Include this token to retrieve the next page of results. Omit for the first request.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListEnrichmentJobsResponse":{
      "type":"structure",
      "required":["jobs"],
      "members":{
        "jobs":{
          "shape":"EnrichmentJobSummaries",
          "documentation":"<p>Array of job summaries matching the filter criteria, ordered by creation time descending (newest first). Each summary includes key identifiers (jobId, datasetId, propertyAlias/timeSeriesId) and status information without the full job configuration. Use DescribeEnrichmentJob to retrieve complete details.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>Pagination token to retrieve the next page of results. If present, more jobs exist that match the filter criteria. Include this token in a subsequent ListEnrichmentJobs request to retrieve the next page. If absent, you have retrieved all matching jobs.</p>"
        }
      }
    },
    "ListExecutionsRequest":{
      "type":"structure",
      "required":[
        "targetResourceType",
        "targetResourceId"
      ],
      "members":{
        "targetResourceType":{
          "shape":"TargetResourceType",
          "documentation":"<p>The type of the target resource.</p>",
          "location":"querystring",
          "locationName":"targetResourceType"
        },
        "targetResourceId":{
          "shape":"ID",
          "documentation":"<p>The ID of the target resource.</p>",
          "location":"querystring",
          "locationName":"targetResourceId"
        },
        "resolveToResourceType":{
          "shape":"ResolveToResourceType",
          "documentation":"<p>The type of the resolved resource.</p>",
          "location":"querystring",
          "locationName":"resolveToResourceType"
        },
        "resolveToResourceId":{
          "shape":"ID",
          "documentation":"<p>The ID of the resolved resource.</p>",
          "location":"querystring",
          "locationName":"resolveToResourceId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results returned for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "actionType":{
          "shape":"Name",
          "documentation":"<p>The type of action exectued.</p>",
          "location":"querystring",
          "locationName":"actionType"
        }
      }
    },
    "ListExecutionsResponse":{
      "type":"structure",
      "required":["executionSummaries"],
      "members":{
        "executionSummaries":{
          "shape":"ExecutionSummaries",
          "documentation":"<p>Contains the list of execution summaries of the computation models.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListExportJobsMaxResults":{
      "type":"integer",
      "documentation":"&lt;p&gt;The maximum number of results to return for each paginated request.&lt;/p&gt;",
      "box":true,
      "max":250,
      "min":1
    },
    "ListExportJobsNextToken":{
      "type":"string",
      "documentation":"&lt;p&gt;The token to be used for the next set of paginated results.&lt;/p&gt;",
      "max":4096,
      "min":1
    },
    "ListGatewaysRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListGatewaysResponse":{
      "type":"structure",
      "required":["gatewaySummaries"],
      "members":{
        "gatewaySummaries":{
          "shape":"GatewaySummaries",
          "documentation":"<p>A list that summarizes each gateway.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListInterfaceRelationshipsRequest":{
      "type":"structure",
      "required":["interfaceAssetModelId"],
      "members":{
        "interfaceAssetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the interface asset model. This can be either the actual ID in UUID format, or else externalId: followed by the external ID.</p>",
          "location":"uri",
          "locationName":"interfaceAssetModelId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListInterfaceRelationshipsResponse":{
      "type":"structure",
      "required":["interfaceRelationshipSummaries"],
      "members":{
        "interfaceRelationshipSummaries":{
          "shape":"InterfaceRelationshipSummaries",
          "documentation":"<p>A list that summarizes each interface relationship.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListPipelineExecutionsRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline.</p>",
          "location":"uri",
          "locationName":"pipelineName"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListPipelineExecutionsRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return per request. This is an upper bound; the actual number of results may be less. Default: 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "state":{
          "shape":"PipelineExecutionState",
          "documentation":"<p>Filter by execution state. If not specified, executions in all states are returned.</p>",
          "location":"querystring",
          "locationName":"state"
        },
        "startTimeAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Inclusive lower bound on execution start time (ISO-8601). Only executions with startTime &gt;= startTimeAfter are returned. Cannot be combined with endTimeAfter or endTimeBefore.</p>",
          "location":"querystring",
          "locationName":"startTimeAfter"
        },
        "startTimeBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Exclusive upper bound on execution start time (ISO-8601). Only executions with startTime &lt; startTimeBefore are returned. Cannot be combined with endTimeAfter or endTimeBefore.</p>",
          "location":"querystring",
          "locationName":"startTimeBefore"
        },
        "endTimeAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Inclusive lower bound on execution end time (ISO-8601). Only executions with endTime &gt;= endTimeAfter are returned. Cannot be combined with startTimeAfter or startTimeBefore. Only matches executions in terminal states.</p>",
          "location":"querystring",
          "locationName":"endTimeAfter"
        },
        "endTimeBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Exclusive upper bound on execution end time (ISO-8601). Only executions with endTime &lt; endTimeBefore are returned. Cannot be combined with startTimeAfter or startTimeBefore. Only matches executions in terminal states.</p>",
          "location":"querystring",
          "locationName":"endTimeBefore"
        }
      },
      "documentation":"<p>Request structure for ListPipelineExecutions operation.</p>"
    },
    "ListPipelineExecutionsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":250,
      "min":1
    },
    "ListPipelineExecutionsResponse":{
      "type":"structure",
      "required":["pipelineExecutionSummaries"],
      "members":{
        "pipelineExecutionSummaries":{
          "shape":"PipelineExecutionSummaryList",
          "documentation":"<p>A list that summarizes each pipeline execution.</p>"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>"
        }
      },
      "documentation":"<p>Response structure for ListPipelineExecutions operation.</p>"
    },
    "ListPipelinesRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListPipelinesRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return for each paginated request. Default: 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p>Request structure for ListPipelines operation.</p>"
    },
    "ListPipelinesRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":250,
      "min":1
    },
    "ListPipelinesResponse":{
      "type":"structure",
      "required":["pipelineSummaries"],
      "members":{
        "pipelineSummaries":{
          "shape":"PipelineSummaries",
          "documentation":"<p>A list that summarizes each pipeline in the workspace.</p>"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>"
        }
      },
      "documentation":"<p>Response structure for ListPipelines operation.</p>"
    },
    "ListPortalsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListPortalsResponse":{
      "type":"structure",
      "members":{
        "portalSummaries":{
          "shape":"PortalSummaries",
          "documentation":"<p>A list that summarizes each portal.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListProjectAssetsRequest":{
      "type":"structure",
      "required":["projectId"],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>",
          "location":"uri",
          "locationName":"projectId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListProjectAssetsResponse":{
      "type":"structure",
      "required":["assetIds"],
      "members":{
        "assetIds":{
          "shape":"AssetIDs",
          "documentation":"<p>A list that contains the IDs of each asset associated with the project.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListProjectsRequest":{
      "type":"structure",
      "required":["portalId"],
      "members":{
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal.</p>",
          "location":"querystring",
          "locationName":"portalId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p> <p>Default: 50</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListProjectsResponse":{
      "type":"structure",
      "required":["projectSummaries"],
      "members":{
        "projectSummaries":{
          "shape":"ProjectSummaries",
          "documentation":"<p>A list that summarizes each project in the portal.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "ListQueriesRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace to list queries for.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "filter":{
          "shape":"QueryFilter",
          "documentation":"<p>An optional filter to return only queries with the specified status. The value must be one of the supported query statuses: SUBMITTED, RUNNING, COMPLETED, FAILED, CANCELED, or CANCELING.</p>",
          "location":"querystring",
          "locationName":"filter"
        },
        "maxResults":{
          "shape":"QueryMaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"QueryListNextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListQueriesResponse":{
      "type":"structure",
      "required":["queries"],
      "members":{
        "queries":{
          "shape":"QuerySummaryList",
          "documentation":"<p>A list of query summaries for the workspace.</p>"
        },
        "nextToken":{
          "shape":"QueryListNextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      },
      "documentation":"<p>Contains the response for the ListQueries operation.</p>"
    },
    "ListSearchesFilters":{
      "type":"structure",
      "members":{
        "statusFilter":{
          "shape":"SearchStatusFilterList",
          "documentation":"<p>Returns only searches whose status is one of the listed values.</p>"
        },
        "startedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Returns only searches started at or after this time.</p>"
        },
        "startedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Returns only searches started at or before this time.</p>"
        },
        "groupIdFilter":{
          "shape":"GroupIdFilterList",
          "documentation":"<p>Returns only searches whose <code>groupId</code> is one of the listed values.</p>"
        },
        "searchTypeFilter":{
          "shape":"SearchTypeFilterList",
          "documentation":"<p>Returns only searches whose <code>searchType</code> is one of the listed values.</p>"
        }
      },
      "documentation":"<p>Optional filters for ListSearches. When multiple filters are set, a search must match all of them.</p>"
    },
    "ListSearchesRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace whose searches are listed.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "maxResults":{
          "shape":"ListSearchesRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of searches to return in a single page. Valid range is 1 to 1,000; if omitted, a service-defined default is used.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token returned by a previous ListSearches call. Provide it to retrieve the next page; omit it to retrieve the first page.</p>"
        },
        "listSearchesFilters":{
          "shape":"ListSearchesFilters",
          "documentation":"<p>Optional filters that restrict which searches are returned.</p>"
        }
      },
      "documentation":"<p>Input for the ListSearches operation.</p>"
    },
    "ListSearchesRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":1000,
      "min":1
    },
    "ListSearchesResponse":{
      "type":"structure",
      "required":["searchSummaries"],
      "members":{
        "searchSummaries":{
          "shape":"SearchSummaries",
          "documentation":"<p>A page of search summaries, most recently started first.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token to use in a subsequent ListSearches call to retrieve the next page. Absent when there are no more searches.</p>"
        }
      },
      "documentation":"<p>Output of the ListSearches operation.</p>"
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the resource.</p>",
          "location":"querystring",
          "locationName":"resourceArn"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The list of key-value pairs that contain metadata for the resource. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "ListTasksRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListTasksRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return for each paginated request. Default: 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p>Request structure for ListTasks operation.</p>"
    },
    "ListTasksRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":250,
      "min":1
    },
    "ListTasksResponse":{
      "type":"structure",
      "required":["taskSummaries"],
      "members":{
        "taskSummaries":{
          "shape":"TaskSummaries",
          "documentation":"<p>A list that summarizes each task in the workspace.</p>"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>"
        }
      },
      "documentation":"<p>Response structure for ListTasks operation.</p>"
    },
    "ListTimeSeriesRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset in which the asset property was created. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"querystring",
          "locationName":"assetId"
        },
        "aliasPrefix":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias prefix of the time series.</p>",
          "location":"querystring",
          "locationName":"aliasPrefix"
        },
        "timeSeriesType":{
          "shape":"ListTimeSeriesType",
          "documentation":"<p>The type of the time series. The time series type can be one of the following values:</p> <ul> <li> <p> <code>ASSOCIATED</code> – The time series is associated with an asset property.</p> </li> <li> <p> <code>DISASSOCIATED</code> – The time series isn't associated with any asset property.</p> </li> </ul>",
          "location":"querystring",
          "locationName":"timeSeriesType"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"querystring",
          "locationName":"workspaceName"
        }
      }
    },
    "ListTimeSeriesResponse":{
      "type":"structure",
      "required":["TimeSeriesSummaries"],
      "members":{
        "TimeSeriesSummaries":{
          "shape":"TimeSeriesSummaries",
          "documentation":"<p>One or more time series summaries to list.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        }
      }
    },
    "ListTimeSeriesType":{
      "type":"string",
      "enum":[
        "ASSOCIATED",
        "DISASSOCIATED"
      ]
    },
    "ListWorkspacesRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to be used for the next set of paginated results.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return for each paginated request. Default: 50.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListWorkspacesResponse":{
      "type":"structure",
      "required":["workspaceSummaries"],
      "members":{
        "workspaceSummaries":{
          "shape":"WorkspaceSummaries",
          "documentation":"<p>A list that summarizes each workspace.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token for the next set of results, or null if there are no additional results.</p>"
        }
      }
    },
    "Location":{
      "type":"structure",
      "members":{
        "uri":{
          "shape":"String",
          "documentation":"<p>The URI of the location.</p>"
        }
      },
      "documentation":"<p>Contains location information about the cited text and where it's stored.</p>"
    },
    "LoggingLevel":{
      "type":"string",
      "enum":[
        "ERROR",
        "INFO",
        "OFF"
      ]
    },
    "LoggingOptions":{
      "type":"structure",
      "required":["level"],
      "members":{
        "level":{
          "shape":"LoggingLevel",
          "documentation":"<p>The IoT SiteWise logging verbosity level.</p>"
        }
      },
      "documentation":"<p>Contains logging options.</p>"
    },
    "Long":{
      "type":"long",
      "box":true
    },
    "Macro":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "MatchByPropertyName":{"type":"boolean"},
    "MatchedDataBinding":{
      "type":"structure",
      "required":["value"],
      "members":{
        "value":{
          "shape":"DataBindingValue",
          "documentation":"<p>The value of the matched data binding.</p>"
        }
      },
      "documentation":"<p>Represents a data binding that matches the specified filter criteria.</p>"
    },
    "MaxInterpolatedResults":{
      "type":"integer",
      "min":1
    },
    "MaxResults":{
      "type":"integer",
      "max":250,
      "min":1
    },
    "Measurement":{
      "type":"structure",
      "members":{
        "processingConfig":{
          "shape":"MeasurementProcessingConfig",
          "documentation":"<p>The processing configuration for the given measurement property. You can configure measurements to be kept at the edge or forwarded to the Amazon Web Services Cloud. By default, measurements are forwarded to the cloud.</p>"
        }
      },
      "documentation":"<p>Contains an asset measurement property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#measurements\">Measurements</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "MeasurementProcessingConfig":{
      "type":"structure",
      "required":["forwardingConfig"],
      "members":{
        "forwardingConfig":{
          "shape":"ForwardingConfig",
          "documentation":"<p>The forwarding configuration for the given measurement property. </p>"
        }
      },
      "documentation":"<p>The processing configuration for the given measurement property. You can configure measurements to be kept at the edge or forwarded to the Amazon Web Services Cloud. By default, measurements are forwarded to the cloud.</p>"
    },
    "MessageInput":{
      "type":"string",
      "max":10000,
      "min":1,
      "sensitive":true
    },
    "Metadata":{
      "type":"map",
      "key":{"shape":"MetadataKey"},
      "value":{"shape":"MetadataValue"}
    },
    "MetadataKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "MetadataValue":{
      "type":"string",
      "max":2048,
      "min":0
    },
    "Metric":{
      "type":"structure",
      "required":["window"],
      "members":{
        "expression":{
          "shape":"Expression",
          "documentation":"<p>The mathematical expression that defines the metric aggregation function. You can specify up to 10 variables per expression. You can specify up to 10 functions per expression. </p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "variables":{
          "shape":"ExpressionVariables",
          "documentation":"<p>The list of variables used in the expression.</p>"
        },
        "window":{
          "shape":"MetricWindow",
          "documentation":"<p>The window (time interval) over which IoT SiteWise computes the metric's aggregation expression. IoT SiteWise computes one data point per <code>window</code>.</p>"
        },
        "processingConfig":{
          "shape":"MetricProcessingConfig",
          "documentation":"<p>The processing configuration for the given metric property. You can configure metrics to be computed at the edge or in the Amazon Web Services Cloud. By default, metrics are forwarded to the cloud.</p>"
        }
      },
      "documentation":"<p>Contains an asset metric property. With metrics, you can calculate aggregate functions, such as an average, maximum, or minimum, as specified through an expression. A metric maps several values to a single value (such as a sum).</p> <p>The maximum number of dependent/cascading variables used in any one metric calculation is 10. Therefore, a <i>root</i> metric can have up to 10 cascading metrics in its computational dependency tree. Additionally, a metric can only have a data type of <code>DOUBLE</code> and consume properties with data types of <code>INTEGER</code> or <code>DOUBLE</code>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#metrics\">Metrics</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "MetricProcessingConfig":{
      "type":"structure",
      "required":["computeLocation"],
      "members":{
        "computeLocation":{
          "shape":"ComputeLocation",
          "documentation":"<p>The compute location for the given metric property. </p>"
        }
      },
      "documentation":"<p>The processing configuration for the given metric property. You can configure metrics to be computed at the edge or in the Amazon Web Services Cloud. By default, metrics are forwarded to the cloud.</p>"
    },
    "MetricWindow":{
      "type":"structure",
      "members":{
        "tumbling":{
          "shape":"TumblingWindow",
          "documentation":"<p>The tumbling time interval window.</p>"
        }
      },
      "documentation":"<p>Contains a time interval window used for data aggregate computations (for example, average, sum, count, and so on).</p>"
    },
    "MonitorErrorCode":{
      "type":"string",
      "enum":[
        "INTERNAL_FAILURE",
        "VALIDATION_ERROR",
        "LIMIT_EXCEEDED"
      ]
    },
    "MonitorErrorDetails":{
      "type":"structure",
      "members":{
        "code":{
          "shape":"MonitorErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"MonitorErrorMessage",
          "documentation":"<p>The error message.</p>"
        }
      },
      "documentation":"<p>Contains IoT SiteWise Monitor error details.</p>"
    },
    "MonitorErrorMessage":{"type":"string"},
    "Mp4":{
      "type":"structure",
      "members":{},
      "documentation":"<p>The MP4 video format configuration for bulk import files.</p>"
    },
    "MultiLayerStorage":{
      "type":"structure",
      "required":["customerManagedS3Storage"],
      "members":{
        "customerManagedS3Storage":{
          "shape":"CustomerManagedS3Storage",
          "documentation":"<p>Contains information about a customer managed Amazon S3 bucket.</p>"
        }
      },
      "documentation":"<p>Contains information about the storage destination.</p>"
    },
    "Name":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "NextToken":{
      "type":"string",
      "max":4096,
      "min":1,
      "pattern":"[A-Za-z0-9+/=]+"
    },
    "NullableBoolean":{
      "type":"boolean",
      "box":true
    },
    "NumberOfDays":{"type":"integer"},
    "Offset":{
      "type":"string",
      "max":25,
      "min":2
    },
    "OffsetInNanos":{
      "type":"integer",
      "max":999999999,
      "min":0
    },
    "PaginationToken":{
      "type":"string",
      "documentation":"<p>An opaque pagination token. Pass the value returned by a previous request to retrieve the next page of results.</p>",
      "max":4096,
      "min":1
    },
    "Parquet":{
      "type":"structure",
      "members":{},
      "documentation":"<p>A parquet file.</p>"
    },
    "Permission":{
      "type":"string",
      "enum":[
        "ADMINISTRATOR",
        "VIEWER"
      ]
    },
    "PipelineErrorCode":{
      "type":"string",
      "documentation":"<p>Classification of a pipeline execution failure.</p>",
      "enum":[
        "VALIDATION_ERROR",
        "INTERNAL_FAILURE",
        "EXECUTION_ERROR",
        "TIMED_OUT"
      ]
    },
    "PipelineExecutionState":{
      "type":"string",
      "documentation":"<p>The state of a pipeline execution.</p>",
      "enum":[
        "NOT_STARTED",
        "RUNNING",
        "SUCCEEDED",
        "FAILED",
        "CANCELLING",
        "CANCELLED"
      ]
    },
    "PipelineExecutionStateDetails":{
      "type":"structure",
      "required":["message"],
      "members":{
        "code":{
          "shape":"PipelineErrorCode",
          "documentation":"<p>Classification of the failure. Present when the execution failed.</p>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p>Human-readable description of the outcome. For a failed execution, this describes why it failed; for a cancelled execution, this is the reason you supplied when calling CancelPipelineExecution.</p>"
        },
        "details":{
          "shape":"DetailedErrorList",
          "documentation":"<p>Per-step error entries to help diagnose a failed execution. Present when the execution failed.</p>"
        }
      },
      "documentation":"<p>Additional information about the current execution status. Populated when the execution has terminated.</p>"
    },
    "PipelineExecutionStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"PipelineExecutionState",
          "documentation":"<p>Current state of the pipeline execution.</p>"
        },
        "stateDetails":{
          "shape":"PipelineExecutionStateDetails",
          "documentation":"<p>Additional information about the execution outcome. Populated when the execution has terminated (failed or cancelled).</p>"
        }
      },
      "documentation":"<p>Current execution status of a pipeline.</p>"
    },
    "PipelineExecutionSummary":{
      "type":"structure",
      "required":[
        "pipelineExecutionId",
        "pipelineVersion",
        "status"
      ],
      "members":{
        "pipelineExecutionId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the pipeline execution.</p>"
        },
        "pipelineVersion":{
          "shape":"Version",
          "documentation":"<p>The pipeline version this execution ran against.</p>"
        },
        "status":{
          "shape":"PipelineExecutionStatus",
          "documentation":"<p>The current execution status of the pipeline.</p>"
        },
        "executionPriority":{
          "shape":"ExecutionPriority",
          "documentation":"<p>Scheduling priority for the execution. When not specified, defaults to lowest priority.</p>"
        },
        "startTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline execution started, in Unix epoch time.</p>"
        },
        "endTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline execution completed, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains summary information about a pipeline execution.</p>"
    },
    "PipelineExecutionSummaryList":{
      "type":"list",
      "member":{"shape":"PipelineExecutionSummary"},
      "documentation":"<p>A list of pipeline execution summaries.</p>"
    },
    "PipelineSummaries":{
      "type":"list",
      "member":{"shape":"PipelineSummary"},
      "documentation":"<p>A list of pipeline summaries.</p>"
    },
    "PipelineSummary":{
      "type":"structure",
      "required":[
        "pipelineName",
        "pipelineArn",
        "version",
        "status",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the pipeline.</p>"
        },
        "pipelineArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the pipeline.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version of the pipeline.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the pipeline.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline was created, in Unix epoch time.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the pipeline was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains summary information about a pipeline.</p>"
    },
    "PortalClientId":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"^[!-~]*"
    },
    "PortalResource":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal.</p>"
        }
      },
      "documentation":"<p>Identifies an IoT SiteWise Monitor portal.</p>"
    },
    "PortalState":{
      "type":"string",
      "enum":[
        "CREATING",
        "PENDING",
        "UPDATING",
        "DELETING",
        "ACTIVE",
        "FAILED"
      ]
    },
    "PortalStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"PortalState",
          "documentation":"<p>The current state of the portal.</p>"
        },
        "error":{
          "shape":"MonitorErrorDetails",
          "documentation":"<p>Contains associated error information, if any.</p>"
        }
      },
      "documentation":"<p>Contains information about the current status of a portal.</p>"
    },
    "PortalSummaries":{
      "type":"list",
      "member":{"shape":"PortalSummary"}
    },
    "PortalSummary":{
      "type":"structure",
      "required":[
        "id",
        "name",
        "startUrl",
        "status"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the portal.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The portal's description.</p>"
        },
        "startUrl":{
          "shape":"Url",
          "documentation":"<p>The URL for the IoT SiteWise Monitor portal. You can use this URL to access portals that use IAM Identity Center for authentication. For portals that use IAM for authentication, you must use the IoT SiteWise console to get a URL that you can use to access the portal.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the portal was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the portal was last updated, in Unix epoch time.</p>"
        },
        "roleArn":{
          "shape":"IamArn",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the service role that allows the portal's users to access your IoT SiteWise resources on your behalf. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html\">Using service roles for IoT SiteWise Monitor</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "status":{"shape":"PortalStatus"},
        "portalType":{
          "shape":"PortalType",
          "documentation":"<p>Define the type of portal. The value for IoT SiteWise Monitor (Classic) is <code>SITEWISE_PORTAL_V1</code>. The value for IoT SiteWise Monitor (AI-aware) is <code>SITEWISE_PORTAL_V2</code>.</p>"
        }
      },
      "documentation":"<p>Contains a portal summary.</p>"
    },
    "PortalTools":{
      "type":"list",
      "member":{"shape":"Name"}
    },
    "PortalType":{
      "type":"string",
      "enum":[
        "SITEWISE_PORTAL_V1",
        "SITEWISE_PORTAL_V2"
      ]
    },
    "PortalTypeConfiguration":{
      "type":"map",
      "key":{"shape":"PortalTypeKey"},
      "value":{"shape":"PortalTypeEntry"}
    },
    "PortalTypeEntry":{
      "type":"structure",
      "members":{
        "portalTools":{
          "shape":"PortalTools",
          "documentation":"<p>The array of tools associated with the specified portal type. The possible values are <code>ASSISTANT</code> and <code>DASHBOARD</code>.</p>"
        }
      },
      "documentation":"<p>The configuration entry associated with the specific portal type. The <code>portalTypeConfiguration</code> is a map of the <code>portalTypeKey</code> to the <code>PortalTypeEntry</code>.</p>"
    },
    "PortalTypeKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "PositiveInteger":{
      "type":"integer",
      "documentation":"&lt;p&gt;A positive integer used for frames per second and video dimensions.&lt;/p&gt;",
      "box":true,
      "min":1
    },
    "PreconditionFailedException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceArn"
      ],
      "members":{
        "message":{"shape":"ErrorMessage"},
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource on which precondition failed with this operation.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The ARN of the resource on which precondition failed with this operation.</p>"
        }
      },
      "documentation":"<p>The precondition in one or more of the request-header fields evaluated to <code>FALSE</code>.</p>",
      "error":{"httpStatusCode":412},
      "exception":true
    },
    "PrimitiveBoolean":{"type":"boolean"},
    "ProcessingInput":{
      "type":"structure",
      "members":{
        "timeseries":{
          "shape":"TimeseriesList",
          "documentation":"&lt;p&gt;List of individual timeseries items to process.&lt;/p&gt;"
        },
        "dataset":{
          "shape":"DatasetItem",
          "documentation":"&lt;p&gt;A dataset containing multiple items to process.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;Input source for processing. Specify exactly one option.&lt;/p&gt;",
      "union":true
    },
    "ProcessingType":{
      "type":"string",
      "documentation":"<p>The processing type for compute resources. Determines whether the task runs on standard CPU or GPU-accelerated hardware.</p>",
      "enum":[
        "GENERIC_COMPUTE_PROCESSING",
        "HARDWARE_ACCELERATED_PROCESSING"
      ]
    },
    "ProcessingUnit":{
      "type":"string",
      "documentation":"<p>The processing unit allocation that determines the vCPU, memory, and GPU resources assigned to a task. Available units depend on the processing type.</p>",
      "enum":[
        "UNITS_2",
        "UNITS_4",
        "UNITS_8",
        "UNITS_12",
        "UNITS_16",
        "UNITS_24",
        "UNITS_32",
        "UNITS_36",
        "UNITS_48",
        "UNITS_60",
        "UNITS_64",
        "UNITS_72",
        "UNITS_84",
        "UNITS_96"
      ]
    },
    "ProjectResource":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>"
        }
      },
      "documentation":"<p>Identifies a specific IoT SiteWise Monitor project.</p>"
    },
    "ProjectSummaries":{
      "type":"list",
      "member":{"shape":"ProjectSummary"}
    },
    "ProjectSummary":{
      "type":"structure",
      "required":[
        "id",
        "name"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the project.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the project.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The project's description.</p>"
        },
        "creationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the project was created, in Unix epoch time.</p>"
        },
        "lastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date the project was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains project summary information.</p>"
    },
    "Property":{
      "type":"structure",
      "required":[
        "id",
        "name",
        "dataType"
      ],
      "members":{
        "id":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property.</p>"
        },
        "externalId":{
          "shape":"ExternalId",
          "documentation":"<p>The external ID of the asset property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the property.</p>"
        },
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "notification":{
          "shape":"PropertyNotification",
          "documentation":"<p>The asset property's notification topic and state. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The property data type.</p>"
        },
        "unit":{
          "shape":"PropertyUnit",
          "documentation":"<p>The unit (such as <code>Newtons</code> or <code>RPM</code>) of the asset property.</p>"
        },
        "type":{
          "shape":"PropertyType",
          "documentation":"<p>The property type (see <code>PropertyType</code>). A property contains one type.</p>"
        },
        "path":{
          "shape":"AssetPropertyPath",
          "documentation":"<p>The structured path to the property from the root of the asset.</p>"
        }
      },
      "documentation":"<p>Contains asset property information.</p>"
    },
    "PropertyAlias":{
      "type":"string",
      "min":1,
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "PropertyDataType":{
      "type":"string",
      "enum":[
        "STRING",
        "INTEGER",
        "DOUBLE",
        "BOOLEAN",
        "STRUCT",
        "VIDEO",
        "ANNOTATION",
        "JSON"
      ]
    },
    "PropertyMapping":{
      "type":"structure",
      "required":[
        "assetModelPropertyId",
        "interfaceAssetModelPropertyId"
      ],
      "members":{
        "assetModelPropertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the property in the asset model where the interface is applied.</p>"
        },
        "interfaceAssetModelPropertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the property in the interface asset model.</p>"
        }
      },
      "documentation":"<p>Maps a property from an interface asset model to a property in the asset model where the interface is applied.</p>"
    },
    "PropertyMappingConfiguration":{
      "type":"structure",
      "members":{
        "matchByPropertyName":{
          "shape":"MatchByPropertyName",
          "documentation":"<p>If true, properties are matched by name between the interface asset model and the asset model where the interface is applied.</p>"
        },
        "createMissingProperty":{
          "shape":"CreateMissingProperty",
          "documentation":"<p>If true, missing properties from the interface asset model are automatically created in the asset model where the interface is applied.</p>"
        },
        "overrides":{
          "shape":"PropertyMappings",
          "documentation":"<p>A list of specific property mappings that override the automatic mapping by name when an interface is applied to an asset model.</p>"
        }
      },
      "documentation":"<p>Contains configuration options for mapping properties from an interface asset model to an asset model where the interface is applied.</p>"
    },
    "PropertyMappings":{
      "type":"list",
      "member":{"shape":"PropertyMapping"}
    },
    "PropertyNotification":{
      "type":"structure",
      "required":[
        "topic",
        "state"
      ],
      "members":{
        "topic":{
          "shape":"PropertyNotificationTopic",
          "documentation":"<p>The MQTT topic to which IoT SiteWise publishes property value update notifications.</p>"
        },
        "state":{
          "shape":"PropertyNotificationState",
          "documentation":"<p>The current notification state.</p>"
        }
      },
      "documentation":"<p>Contains asset property value notification information. When the notification state is enabled, IoT SiteWise publishes property value updates to a unique MQTT topic. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/interact-with-other-services.html\">Interacting with other services</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "PropertyNotificationState":{
      "type":"string",
      "enum":[
        "ENABLED",
        "DISABLED"
      ]
    },
    "PropertyNotificationTopic":{"type":"string"},
    "PropertyType":{
      "type":"structure",
      "members":{
        "attribute":{
          "shape":"Attribute",
          "documentation":"<p>Specifies an asset attribute property. An attribute generally contains static information, such as the serial number of an <a href=\"https://en.wikipedia.org/wiki/Internet_of_things#Industrial_applications\">IIoT</a> wind turbine.</p>"
        },
        "measurement":{
          "shape":"Measurement",
          "documentation":"<p>Specifies an asset measurement property. A measurement represents a device's raw sensor data stream, such as timestamped temperature values or timestamped power values.</p>"
        },
        "transform":{
          "shape":"Transform",
          "documentation":"<p>Specifies an asset transform property. A transform contains a mathematical expression that maps a property's data points from one form to another, such as a unit conversion from Celsius to Fahrenheit.</p>"
        },
        "metric":{
          "shape":"Metric",
          "documentation":"<p>Specifies an asset metric property. A metric contains a mathematical expression that uses aggregate functions to process all input data points over a time interval and output a single data point, such as to calculate the average hourly temperature.</p>"
        }
      },
      "documentation":"<p>Contains a property type, which can be one of <code>attribute</code>, <code>measurement</code>, <code>metric</code>, or <code>transform</code>.</p>"
    },
    "PropertyUnit":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[^\\u0000-\\u001F\\u007F]+"
    },
    "PropertyValueBooleanValue":{"type":"boolean"},
    "PropertyValueDoubleValue":{"type":"double"},
    "PropertyValueIntegerValue":{"type":"integer"},
    "PropertyValueNullValue":{
      "type":"structure",
      "required":["valueType"],
      "members":{
        "valueType":{
          "shape":"RawValueType",
          "documentation":"<p>The type of null asset property data.</p>"
        }
      },
      "documentation":"<p>The value type of null asset property data with BAD and UNCERTAIN qualities.</p>"
    },
    "PropertyValueStringValue":{"type":"string"},
    "PutAssetModelInterfaceRelationshipRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "interfaceAssetModelId",
        "propertyMappingConfiguration"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model. This can be either the actual ID in UUID format, or else externalId: followed by the external ID.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "interfaceAssetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the interface asset model. This can be either the actual ID in UUID format, or else externalId: followed by the external ID.</p>",
          "location":"uri",
          "locationName":"interfaceAssetModelId"
        },
        "propertyMappingConfiguration":{
          "shape":"PropertyMappingConfiguration",
          "documentation":"<p>The configuration for mapping properties from the interface asset model to the asset model where the interface is applied. This configuration controls how properties are matched and created during the interface application process.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "PutAssetModelInterfaceRelationshipResponse":{
      "type":"structure",
      "required":[
        "assetModelId",
        "interfaceAssetModelId",
        "assetModelArn",
        "assetModelStatus"
      ],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        },
        "interfaceAssetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the interface asset model.</p>"
        },
        "assetModelArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the asset model, which has the following format. <code>arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model/${AssetModelId}</code> </p>"
        },
        "assetModelStatus":{"shape":"AssetModelStatus"}
      }
    },
    "PutAssetPropertyValueEntries":{
      "type":"list",
      "member":{"shape":"PutAssetPropertyValueEntry"}
    },
    "PutAssetPropertyValueEntry":{
      "type":"structure",
      "required":[
        "entryId",
        "propertyValues"
      ],
      "members":{
        "entryId":{
          "shape":"EntryId",
          "documentation":"<p>The user specified ID for the entry. You can use this ID to identify which entries failed.</p>"
        },
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset to update.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property for this entry.</p>"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "propertyValues":{
          "shape":"AssetPropertyValues",
          "documentation":"<p>The list of property values to upload. You can specify up to 10 <code>propertyValues</code> array elements. </p>"
        }
      },
      "documentation":"<p>Contains a list of value updates for an asset property in the list of asset entries consumed by the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html\">BatchPutAssetPropertyValue</a> API operation.</p>"
    },
    "PutDefaultEncryptionConfigurationRequest":{
      "type":"structure",
      "required":["encryptionType"],
      "members":{
        "encryptionType":{
          "shape":"EncryptionType",
          "documentation":"<p>The type of encryption used for the encryption configuration.</p>"
        },
        "kmsKeyId":{
          "shape":"KmsKeyId",
          "documentation":"<p>The Key ID of the customer managed key used for KMS encryption. This is required if you use <code>KMS_BASED_ENCRYPTION</code>.</p>"
        }
      }
    },
    "PutDefaultEncryptionConfigurationResponse":{
      "type":"structure",
      "required":[
        "encryptionType",
        "configurationStatus"
      ],
      "members":{
        "encryptionType":{
          "shape":"EncryptionType",
          "documentation":"<p>The type of encryption used for the encryption configuration.</p>"
        },
        "kmsKeyArn":{
          "shape":"ARN",
          "documentation":"<p>The Key ARN of the KMS key used for KMS encryption if you use <code>KMS_BASED_ENCRYPTION</code>.</p>"
        },
        "configurationStatus":{
          "shape":"ConfigurationStatus",
          "documentation":"<p>The status of the account configuration. This contains the <code>ConfigurationState</code>. If there is an error, it also contains the <code>ErrorDetails</code>.</p>"
        }
      }
    },
    "PutLoggingOptionsRequest":{
      "type":"structure",
      "required":["loggingOptions"],
      "members":{
        "loggingOptions":{
          "shape":"LoggingOptions",
          "documentation":"<p>The logging options to set.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        }
      }
    },
    "PutLoggingOptionsResponse":{
      "type":"structure",
      "members":{}
    },
    "PutStorageConfigurationRequest":{
      "type":"structure",
      "required":["storageType"],
      "members":{
        "storageType":{
          "shape":"StorageType",
          "documentation":"<p>The storage tier that you specified for your data. The <code>storageType</code> parameter can be one of the following values:</p> <ul> <li> <p> <code>SITEWISE_DEFAULT_STORAGE</code> – IoT SiteWise saves your data into the hot tier. The hot tier is a service-managed database.</p> </li> <li> <p> <code>MULTI_LAYER_STORAGE</code> – IoT SiteWise saves your data in both the cold tier and the hot tier. The cold tier is a customer-managed Amazon S3 bucket.</p> </li> </ul>"
        },
        "multiLayerStorage":{
          "shape":"MultiLayerStorage",
          "documentation":"<p>Identifies a storage destination. If you specified <code>MULTI_LAYER_STORAGE</code> for the storage type, you must specify a <code>MultiLayerStorage</code> object.</p>"
        },
        "disassociatedDataStorage":{
          "shape":"DisassociatedDataStorageState",
          "documentation":"<p>Contains the storage configuration for time series (data streams) that aren't associated with asset properties. The <code>disassociatedDataStorage</code> can be one of the following values:</p> <ul> <li> <p> <code>ENABLED</code> – IoT SiteWise accepts time series that aren't associated with asset properties.</p> <important> <p>After the <code>disassociatedDataStorage</code> is enabled, you can't disable it.</p> </important> </li> <li> <p> <code>DISABLED</code> – IoT SiteWise doesn't accept time series (data streams) that aren't associated with asset properties.</p> </li> </ul> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html\">Data streams</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "retentionPeriod":{"shape":"RetentionPeriod"},
        "warmTier":{
          "shape":"WarmTierState",
          "documentation":"<p>A service managed storage tier optimized for analytical queries. It stores periodically uploaded, buffered and historical data ingested with the CreaeBulkImportJob API.</p>"
        },
        "warmTierRetentionPeriod":{
          "shape":"WarmTierRetentionPeriod",
          "documentation":"<p>Set this period to specify how long your data is stored in the warm tier before it is deleted. You can set this only if cold tier is enabled.</p>"
        },
        "disallowIngestNullNaN":{
          "shape":"DisallowIngestNullNaN",
          "documentation":"<p>Describes the configuration for ingesting NULL and NaN data. By default the feature is allowed. The feature is disallowed if the value is <code>true</code>.</p>"
        }
      }
    },
    "PutStorageConfigurationResponse":{
      "type":"structure",
      "required":[
        "storageType",
        "configurationStatus"
      ],
      "members":{
        "storageType":{
          "shape":"StorageType",
          "documentation":"<p>The storage tier that you specified for your data. The <code>storageType</code> parameter can be one of the following values:</p> <ul> <li> <p> <code>SITEWISE_DEFAULT_STORAGE</code> – IoT SiteWise saves your data into the hot tier. The hot tier is a service-managed database.</p> </li> <li> <p> <code>MULTI_LAYER_STORAGE</code> – IoT SiteWise saves your data in both the cold tier and the hot tier. The cold tier is a customer-managed Amazon S3 bucket.</p> </li> </ul>"
        },
        "multiLayerStorage":{
          "shape":"MultiLayerStorage",
          "documentation":"<p>Contains information about the storage destination.</p>"
        },
        "disassociatedDataStorage":{
          "shape":"DisassociatedDataStorageState",
          "documentation":"<p>Contains the storage configuration for time series (data streams) that aren't associated with asset properties. The <code>disassociatedDataStorage</code> can be one of the following values:</p> <ul> <li> <p> <code>ENABLED</code> – IoT SiteWise accepts time series that aren't associated with asset properties.</p> <important> <p>After the <code>disassociatedDataStorage</code> is enabled, you can't disable it.</p> </important> </li> <li> <p> <code>DISABLED</code> – IoT SiteWise doesn't accept time series (data streams) that aren't associated with asset properties.</p> </li> </ul> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html\">Data streams</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "retentionPeriod":{"shape":"RetentionPeriod"},
        "configurationStatus":{"shape":"ConfigurationStatus"},
        "warmTier":{
          "shape":"WarmTierState",
          "documentation":"<p>A service managed storage tier optimized for analytical queries. It stores periodically uploaded, buffered and historical data ingested with the CreaeBulkImportJob API.</p>"
        },
        "warmTierRetentionPeriod":{
          "shape":"WarmTierRetentionPeriod",
          "documentation":"<p>Set this period to specify how long your data is stored in the warm tier before it is deleted. You can set this only if cold tier is enabled.</p>"
        },
        "disallowIngestNullNaN":{
          "shape":"DisallowIngestNullNaN",
          "documentation":"<p>Describes the configuration for ingesting NULL and NaN data. By default the feature is allowed. The feature is disallowed if the value is <code>true</code>.</p>"
        }
      }
    },
    "Qualities":{
      "type":"list",
      "member":{"shape":"Quality"},
      "max":1,
      "min":1
    },
    "Quality":{
      "type":"string",
      "enum":[
        "GOOD",
        "BAD",
        "UNCERTAIN"
      ]
    },
    "QueryErrorMessage":{
      "type":"string",
      "documentation":"<p>A human-readable error description for a failed query.</p>",
      "max":1024,
      "min":0
    },
    "QueryFilter":{
      "type":"string",
      "documentation":"<p>Filter for ListQueries. Returns only queries with the specified status.</p>",
      "max":64,
      "min":1
    },
    "QueryId":{
      "type":"string",
      "documentation":"<p>The unique identifier for a query execution.</p>",
      "max":64,
      "min":1,
      "pattern":"[a-zA-Z0-9-]+"
    },
    "QueryListNextToken":{
      "type":"string",
      "documentation":"<p>Pagination token for the query list.</p>",
      "max":4096,
      "min":1
    },
    "QueryMaxResults":{
      "type":"integer",
      "documentation":"<p>The maximum number of results to return for each paginated request.</p>",
      "box":true,
      "max":10000,
      "min":1
    },
    "QueryNextToken":{
      "type":"string",
      "documentation":"<p>Pagination token for query results.</p>",
      "max":4096,
      "min":1
    },
    "QueryStatement":{
      "type":"string",
      "max":10000,
      "min":1,
      "pattern":"^[\\s\\S]+$",
      "sensitive":true
    },
    "QueryStatistics":{
      "type":"structure",
      "required":[
        "rowCount",
        "bytesScanned",
        "executionTimeInMillis"
      ],
      "members":{
        "rowCount":{
          "shape":"Long",
          "documentation":"<p>The total number of rows returned by the query.</p>"
        },
        "bytesScanned":{
          "shape":"Long",
          "documentation":"<p>The total number of bytes scanned during query execution.</p>"
        },
        "executionTimeInMillis":{
          "shape":"Long",
          "documentation":"<p>The total query execution time, in milliseconds.</p>"
        }
      },
      "documentation":"<p>Contains statistics about a completed query execution.</p>"
    },
    "QueryStatus":{
      "type":"string",
      "documentation":"<p>The status of a query execution.</p>",
      "enum":[
        "SUBMITTED",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELED",
        "CANCELING"
      ]
    },
    "QueryString":{
      "type":"string",
      "documentation":"<p>The SQL query statement.</p>",
      "max":10240,
      "min":1,
      "sensitive":true
    },
    "QuerySummary":{
      "type":"structure",
      "required":[
        "queryId",
        "status",
        "submittedAt"
      ],
      "members":{
        "queryId":{
          "shape":"QueryId",
          "documentation":"<p>The unique identifier for the query execution.</p>"
        },
        "status":{
          "shape":"QueryStatus",
          "documentation":"<p>The current query status.</p>"
        },
        "submittedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the query was submitted, in Unix epoch time.</p>"
        },
        "completedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the query reached a terminal state, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains summary information about a query.</p>"
    },
    "QuerySummaryList":{
      "type":"list",
      "member":{"shape":"QuerySummary"},
      "documentation":"<p>A list of query summaries.</p>"
    },
    "QueryTimeoutException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The query timed out.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "RawValueType":{
      "type":"string",
      "enum":[
        "D",
        "B",
        "S",
        "I",
        "U"
      ]
    },
    "Reference":{
      "type":"structure",
      "members":{
        "dataset":{
          "shape":"DataSetReference",
          "documentation":"<p>Contains the dataset reference information.</p>"
        }
      },
      "documentation":"<p>Contains the reference information.</p>"
    },
    "Resolution":{
      "type":"string",
      "max":3,
      "min":2,
      "pattern":"1m|15m|1h|1d"
    },
    "ResolveTo":{
      "type":"structure",
      "required":["assetId"],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset that the resource resolves to.</p>"
        }
      },
      "documentation":"<p>The detailed resource this execution summary resolves to.</p>"
    },
    "ResolveToResourceType":{
      "type":"string",
      "enum":["ASSET"]
    },
    "Resource":{
      "type":"structure",
      "members":{
        "portal":{
          "shape":"PortalResource",
          "documentation":"<p>A portal resource.</p>"
        },
        "project":{
          "shape":"ProjectResource",
          "documentation":"<p>A project resource.</p>"
        }
      },
      "documentation":"<p>Contains an IoT SiteWise Monitor resource ID for a portal or project.</p>"
    },
    "ResourceAlreadyExistsException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceArn"
      ],
      "members":{
        "message":{"shape":"ErrorMessage"},
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource that already exists.</p>"
        },
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p>The ARN of the resource that already exists.</p>"
        }
      },
      "documentation":"<p>The resource already exists.</p>",
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "ResourceArn":{"type":"string"},
    "ResourceError":{
      "type":"structure",
      "members":{
        "code":{
          "shape":"ResourceErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p>The error message.</p>"
        }
      },
      "documentation":"<p>Contains the details of a resource error.</p>"
    },
    "ResourceErrorCode":{
      "type":"string",
      "documentation":"<p>The error code.</p>",
      "enum":[
        "VALIDATION_ERROR",
        "INTERNAL_FAILURE"
      ]
    },
    "ResourceId":{"type":"string"},
    "ResourceName":{
      "type":"string",
      "documentation":"<p>Reusable resource name with alphanumeric, hyphen, and underscore characters.</p>",
      "max":64,
      "min":1,
      "pattern":"[a-zA-Z0-9_-]+"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The requested resource can't be found.</p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "ResourceState":{
      "type":"string",
      "documentation":"<p>The lifecycle state of a resource.</p>",
      "enum":[
        "CREATING",
        "ACTIVE",
        "UPDATING",
        "DELETING",
        "FAILED"
      ]
    },
    "ResourceStatus":{
      "type":"structure",
      "members":{
        "error":{
          "shape":"ResourceError",
          "documentation":"<p>Contains associated error information, if any.</p>"
        },
        "state":{
          "shape":"ResourceState",
          "documentation":"<p>The current status of the resource.</p>"
        }
      },
      "documentation":"<p>Contains information about the current status of a resource.</p>"
    },
    "ResourceType":{
      "type":"string",
      "enum":[
        "PORTAL",
        "PROJECT"
      ]
    },
    "ResponseStream":{
      "type":"structure",
      "members":{
        "trace":{
          "shape":"Trace",
          "documentation":"<p>Contains tracing information of the SiteWise Assistant's reasoning and data access.</p>"
        },
        "output":{
          "shape":"InvocationOutput",
          "documentation":"<p>Contains the SiteWise Assistant's response.</p>"
        },
        "accessDeniedException":{"shape":"AccessDeniedException"},
        "conflictingOperationException":{"shape":"ConflictingOperationException"},
        "internalFailureException":{"shape":"InternalFailureException"},
        "invalidRequestException":{"shape":"InvalidRequestException"},
        "limitExceededException":{"shape":"LimitExceededException"},
        "resourceNotFoundException":{"shape":"ResourceNotFoundException"},
        "throttlingException":{"shape":"ThrottlingException"}
      },
      "documentation":"<p>Contains the response, citation, and trace from the SiteWise Assistant.</p>",
      "eventstream":true
    },
    "RestrictedDescription":{
      "type":"string",
      "max":2048,
      "min":1,
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@]+$"
    },
    "RestrictedName":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"^[a-zA-Z0-9 _\\-#$*!@.]+$"
    },
    "Result":{
      "type":"list",
      "member":{"shape":"ColumnValue"},
      "documentation":"<p>A single row of query results containing column values. Each element is a string-encoded column value, positional to match the columnInfo order.</p>",
      "sparse":true
    },
    "ResultProperty":{
      "type":"string",
      "max":67,
      "min":4,
      "pattern":"^\\$\\{[a-z][a-z0-9_]*\\}"
    },
    "RetentionPeriod":{
      "type":"structure",
      "members":{
        "numberOfDays":{
          "shape":"NumberOfDays",
          "documentation":"<p>The number of days that your data is kept.</p> <note> <p>If you specified a value for this parameter, the <code>unlimited</code> parameter must be <code>false</code>.</p> </note>"
        },
        "unlimited":{
          "shape":"Unlimited",
          "documentation":"<p>If true, your data is kept indefinitely.</p> <note> <p>If configured to <code>true</code>, you must not specify a value for the <code>numberOfDays</code> parameter.</p> </note>"
        }
      },
      "documentation":"<p>The number of days your data is kept in the hot tier. By default, your data is kept indefinitely in the hot tier.</p>"
    },
    "Row":{
      "type":"structure",
      "required":["data"],
      "members":{
        "data":{
          "shape":"DatumList",
          "documentation":"<p>List of data points in a single row of the result set.</p>"
        }
      },
      "documentation":"<p>Represents a single row in the query results.</p>"
    },
    "RowList":{
      "type":"list",
      "member":{"shape":"Result"},
      "documentation":"<p>A list of result rows returned by the query. Each element is a row containing column values.</p>"
    },
    "Rows":{
      "type":"list",
      "member":{"shape":"Row"}
    },
    "S3Uri":{
      "type":"string",
      "documentation":"&lt;p&gt;An S3 URI identifying an object location, in the form s3://bucket/key.&lt;/p&gt;",
      "max":1024,
      "min":1,
      "pattern":"s3://[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]/.+"
    },
    "SSOApplicationId":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[!-~]*"
    },
    "ScalarType":{
      "type":"string",
      "enum":[
        "BOOLEAN",
        "INT",
        "DOUBLE",
        "TIMESTAMP",
        "STRING"
      ]
    },
    "ScalarValue":{"type":"string"},
    "SearchFilters":{
      "type":"structure",
      "members":{
        "timeSeriesIds":{
          "shape":"TimeSeriesIdList",
          "documentation":"<p>Restricts the search to these time series.</p>"
        },
        "datasetIds":{
          "shape":"DataSetIdList",
          "documentation":"<p>Restricts the search to these datasets.</p>"
        },
        "timeIntervals":{
          "shape":"TimeIntervalList",
          "documentation":"<p>Restricts the search to these time intervals.</p>"
        }
      },
      "documentation":"<p>Optional filters that restrict a search to a subset of the workspace's data.</p>"
    },
    "SearchId":{
      "type":"string",
      "documentation":"<p>The unique identifier of a search, assigned by the service when the search is started.</p>",
      "max":36,
      "min":23,
      "pattern":"[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*"
    },
    "SearchQueryStatement":{
      "type":"string",
      "documentation":"<p>A natural-language query describing the data to search for. Treated as sensitive and not logged.</p>",
      "max":5000,
      "min":1,
      "sensitive":true
    },
    "SearchResult":{
      "type":"structure",
      "required":[
        "searchId",
        "workspaceName",
        "datasetId",
        "timeSeriesId",
        "startTimestamp",
        "endTimestamp",
        "topTimestamp",
        "score"
      ],
      "members":{
        "searchId":{
          "shape":"SearchId",
          "documentation":"<p>The identifier of the search that produced this result.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace the search ran against.</p>"
        },
        "datasetId":{
          "shape":"DatasetId",
          "documentation":"<p>The identifier of the dataset that contains the matching data.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The identifier of the time series that contains the matching data.</p>"
        },
        "startTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The start of the matching time-series segment, in nanoseconds since the Unix epoch.</p>"
        },
        "endTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The end of the matching time-series segment, in nanoseconds since the Unix epoch.</p>"
        },
        "topTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The timestamp of the most relevant point within the matching segment, in nanoseconds since the Unix epoch.</p>"
        },
        "score":{
          "shape":"Float",
          "documentation":"<p>The relevance score of this result. Higher scores indicate a stronger match.</p>"
        }
      },
      "documentation":"<p>A single matching segment of time-series data returned by a search.</p>"
    },
    "SearchResultList":{
      "type":"list",
      "member":{"shape":"SearchResult"},
      "documentation":"<p>A list of search results, ordered by descending relevance score.</p>"
    },
    "SearchStatus":{
      "type":"string",
      "documentation":"<p>The lifecycle status of a search.</p>",
      "enum":[
        "QUEUED",
        "RUNNING",
        "SUCCEEDED",
        "FAILED"
      ]
    },
    "SearchStatusFilterList":{
      "type":"list",
      "member":{"shape":"SearchStatus"},
      "documentation":"<p>A filter on search status. Matches searches whose status is any of the listed values.</p>",
      "max":4,
      "min":1
    },
    "SearchSummaries":{
      "type":"list",
      "member":{"shape":"SearchSummary"},
      "documentation":"<p>A list of search summaries returned by ListSearches.</p>"
    },
    "SearchSummary":{
      "type":"structure",
      "required":[
        "searchId",
        "workspaceName",
        "status",
        "queryStatement",
        "searchType"
      ],
      "members":{
        "searchId":{
          "shape":"SearchId",
          "documentation":"<p>The unique identifier of the search.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace the search runs against.</p>"
        },
        "status":{
          "shape":"SearchStatus",
          "documentation":"<p>The current status of the search.</p>"
        },
        "queryStatement":{
          "shape":"SearchQueryStatement",
          "documentation":"<p>The natural-language query that was submitted for the search.</p>"
        },
        "searchType":{
          "shape":"SearchType",
          "documentation":"<p>The search strategy used for the search.</p>"
        },
        "statusReason":{
          "shape":"String",
          "documentation":"<p>A human-readable explanation of the current status. Populated when the search has <code>FAILED</code>.</p>"
        },
        "startedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time at which the search was started.</p>"
        },
        "groupId":{
          "shape":"GroupId",
          "documentation":"<p>The group identifier associated with the search, if one was supplied on the request.</p>"
        }
      },
      "documentation":"<p>A summary of a single search as returned by ListSearches.</p>"
    },
    "SearchType":{
      "type":"string",
      "documentation":"<p>The search strategy, which trades off latency against recall. <code>DEEP</code> runs the full semantic and structured search for the highest-quality matches; <code>QUICK</code> returns faster, lower-recall results. When <code>searchType</code> is omitted on a request, the search defaults to <code>QUICK</code>.</p>",
      "enum":[
        "DEEP",
        "QUICK"
      ]
    },
    "SearchTypeFilterList":{
      "type":"list",
      "member":{"shape":"SearchType"},
      "documentation":"<p>A filter on search type. Matches searches whose <code>searchType</code> is any of the listed values.</p>",
      "max":2,
      "min":1
    },
    "SelectAll":{
      "type":"string",
      "pattern":"\\*"
    },
    "ServiceUnavailableException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The requested service is unavailable.</p>",
      "error":{"httpStatusCode":503},
      "exception":true,
      "fault":true
    },
    "SessionConfig":{
      "type":"structure",
      "required":[
        "sessionStartTimestamp",
        "sessionEndTimestamp"
      ],
      "members":{
        "sessionStartTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision start time of the session.</p>"
        },
        "sessionEndTimestamp":{
          "shape":"TimeInNanos",
          "documentation":"<p>The nanosecond-precision end time of the session.</p>"
        }
      },
      "documentation":"<p>Contains the session configuration for a session-type dataset.</p>"
    },
    "SiemensIE":{
      "type":"structure",
      "required":["iotCoreThingName"],
      "members":{
        "iotCoreThingName":{
          "shape":"IotCoreThingName",
          "documentation":"<p>The name of the IoT Thing for your SiteWise Edge gateway.</p>"
        }
      },
      "documentation":"<p>Contains details for a SiteWise Edge gateway that runs on a Siemens Industrial Edge Device.</p>"
    },
    "Source":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"String",
          "documentation":"<p>Contains the ARN of the dataset. If the source is Kendra, it's the ARN of the Kendra index.</p>"
        },
        "location":{
          "shape":"Location",
          "documentation":"<p>Contains the location information where the cited text is originally stored. For example, if the data source is Kendra, and the text synchronized is from an S3 bucket, then the location refers to an S3 object.</p>"
        }
      },
      "documentation":"<p>The data source for the dataset.</p>"
    },
    "SourceDetail":{
      "type":"structure",
      "members":{
        "kendra":{
          "shape":"KendraSourceDetail",
          "documentation":"<p>Contains details about the Kendra dataset source.</p>"
        }
      },
      "documentation":"<p>The details of the dataset source associated with the dataset.</p>"
    },
    "StartPipelineExecutionRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace containing the pipeline.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline to execute.</p>",
          "location":"uri",
          "locationName":"pipelineName"
        },
        "executionEnvironmentVariableOverrides":{
          "shape":"ExecutionEnvironmentVariables",
          "documentation":"<p>Runtime environment variable overrides for the execution. Includes global variables that apply to all compute nodes and computeNodes for per-node overrides. These take the highest priority in the environment variable hierarchy.</p>"
        },
        "executionPriority":{
          "shape":"ExecutionPriority",
          "documentation":"<p>Scheduling priority for the execution. Lower values indicate higher priority. Defaults to 2 when not specified.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you retry a request that completed successfully using the same client token, the server returns the cached result from the original successful request without performing the operation again.</p>",
          "idempotencyToken":true
        }
      },
      "documentation":"<p>Request structure for StartPipelineExecution operation.</p>"
    },
    "StartPipelineExecutionResponse":{
      "type":"structure",
      "required":["pipelineExecutionId"],
      "members":{
        "pipelineExecutionId":{
          "shape":"ID",
          "documentation":"<p>The unique identifier of the created pipeline execution.</p>"
        }
      },
      "documentation":"<p>Response structure for StartPipelineExecution operation.</p>"
    },
    "StartQueryRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "queryStatement"
      ],
      "members":{
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace to query.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "queryStatement":{
          "shape":"QueryString",
          "documentation":"<p>The SQL query to execute against the workspace telemetry, annotations, data segment, and dataset data.</p>"
        }
      }
    },
    "StartQueryResponse":{
      "type":"structure",
      "required":[
        "queryId",
        "status"
      ],
      "members":{
        "queryId":{
          "shape":"QueryId",
          "documentation":"<p>The unique identifier for the query execution.</p>"
        },
        "status":{
          "shape":"QueryStatus",
          "documentation":"<p>The initial query status. The value is always SUBMITTED upon creation.</p>"
        }
      },
      "documentation":"<p>Contains the response for the StartQuery operation.</p>"
    },
    "StartSearchRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "queryStatement"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace whose data is searched.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "queryStatement":{
          "shape":"SearchQueryStatement",
          "documentation":"<p>The natural-language query describing the data to search for.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier you provide to ensure the request is idempotent. Repeating a StartSearch call with the same <code>clientToken</code> returns the original search rather than starting a new one. If omitted, the SDK autogenerates one.</p>",
          "idempotencyToken":true
        },
        "searchType":{
          "shape":"SearchType",
          "documentation":"<p>The search strategy to use. Defaults to <code>QUICK</code> when omitted.</p>"
        },
        "searchFilters":{
          "shape":"SearchFilters",
          "documentation":"<p>Optional filters that restrict the search to a subset of the workspace's data.</p>"
        },
        "groupId":{
          "shape":"GroupId",
          "documentation":"<p>An optional caller-supplied identifier used to group related searches together.</p>"
        }
      },
      "documentation":"<p>Input for the StartSearch operation.</p>"
    },
    "StartSearchResponse":{
      "type":"structure",
      "required":[
        "searchId",
        "workspaceName",
        "status"
      ],
      "members":{
        "searchId":{
          "shape":"SearchId",
          "documentation":"<p>The unique identifier assigned to the newly started search.</p>"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace the search runs against.</p>"
        },
        "status":{
          "shape":"SearchStatus",
          "documentation":"<p>The initial status of the search. A newly started search is <code>QUEUED</code>.</p>"
        },
        "groupId":{
          "shape":"GroupId",
          "documentation":"<p>The group identifier associated with the search, if one was supplied on the request.</p>"
        }
      },
      "documentation":"<p>Output of the StartSearch operation.</p>"
    },
    "StorageType":{
      "type":"string",
      "enum":[
        "SITEWISE_DEFAULT_STORAGE",
        "MULTI_LAYER_STORAGE"
      ]
    },
    "String":{"type":"string"},
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "TagKeyList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":200,
      "min":0
    },
    "TagMap":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"},
      "max":50,
      "min":1
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tags"
      ],
      "members":{
        "resourceArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the resource to tag.</p>",
          "location":"querystring",
          "locationName":"resourceArn"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of key-value pairs that contain metadata for the resource. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html\">Tagging your IoT SiteWise resources</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{}
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "TargetResource":{
      "type":"structure",
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset, in UUID format.</p>"
        },
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>"
        }
      },
      "documentation":"<p>The resource the action will be taken on. This can include asset-based resources and computation model resources.</p>"
    },
    "TargetResourceType":{
      "type":"string",
      "enum":[
        "ASSET",
        "COMPUTATION_MODEL"
      ]
    },
    "TaskConfiguration":{
      "type":"structure",
      "members":{
        "containerTaskConfiguration":{
          "shape":"ContainerTaskConfiguration",
          "documentation":"<p>Configuration for running a custom container image on managed compute.</p>"
        }
      },
      "documentation":"<p>The task execution configuration. Specify a <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ContainerTaskConfiguration.html\">containerTaskConfiguration</a> for a custom container workload.</p>",
      "union":true
    },
    "TaskSummaries":{
      "type":"list",
      "member":{"shape":"TaskSummary"},
      "documentation":"<p>A list of task summaries.</p>"
    },
    "TaskSummary":{
      "type":"structure",
      "required":[
        "taskName",
        "taskArn",
        "version",
        "status",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the task.</p>"
        },
        "taskArn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the task.</p>"
        },
        "version":{
          "shape":"Version",
          "documentation":"<p>The version of the task.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the task.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the task was created, in Unix epoch time.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The time the task was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains summary information about a task.</p>"
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>Your request exceeded a rate limit. For example, you might have exceeded the number of IoT SiteWise assets that can be created per second, the allowed number of messages per second, and so on.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>",
      "error":{"httpStatusCode":429},
      "exception":true
    },
    "TimeInNanos":{
      "type":"structure",
      "required":["timeInSeconds"],
      "members":{
        "timeInSeconds":{
          "shape":"TimeInSeconds",
          "documentation":"<p>The timestamp date, in seconds, in the Unix epoch format. Fractional nanosecond data is provided by <code>offsetInNanos</code>.</p>"
        },
        "offsetInNanos":{
          "shape":"OffsetInNanos",
          "documentation":"<p>The nanosecond offset from <code>timeInSeconds</code>.</p>"
        }
      },
      "documentation":"<p>Contains a timestamp with optional nanosecond granularity.</p>"
    },
    "TimeInSeconds":{
      "type":"long",
      "max":9223372036854774,
      "min":1
    },
    "TimeInterval":{
      "type":"structure",
      "required":[
        "startTime",
        "endTime"
      ],
      "members":{
        "startTime":{
          "shape":"TimeInNanos",
          "documentation":"<p>The start of the time interval.</p>"
        },
        "endTime":{
          "shape":"TimeInNanos",
          "documentation":"<p>The end of the time interval.</p>"
        }
      },
      "documentation":"<p>Contains a time interval with a start time and an end time. Use a time interval to restrict an operation, such as a search, to a specific time range.</p>"
    },
    "TimeIntervalList":{
      "type":"list",
      "member":{"shape":"TimeInterval"},
      "documentation":"<p>A list of time intervals to restrict a search to.</p>",
      "max":100,
      "min":1
    },
    "TimeOrdering":{
      "type":"string",
      "enum":[
        "ASCENDING",
        "DESCENDING"
      ]
    },
    "TimeSeriesId":{
      "type":"string",
      "max":73,
      "min":36
    },
    "TimeSeriesIdList":{
      "type":"list",
      "member":{"shape":"TimeSeriesId"},
      "documentation":"<p>A list of time-series identifiers to restrict a search to.</p>",
      "max":100,
      "min":1
    },
    "TimeSeriesSummaries":{
      "type":"list",
      "member":{"shape":"TimeSeriesSummary"}
    },
    "TimeSeriesSummary":{
      "type":"structure",
      "required":[
        "timeSeriesId",
        "dataType",
        "timeSeriesCreationDate",
        "timeSeriesLastUpdateDate",
        "timeSeriesArn"
      ],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset in which the asset property was created.</p>"
        },
        "propertyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset property, in UUID format.</p>"
        },
        "alias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the time series.</p>"
        },
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"<p>The ID of the time series.</p>"
        },
        "dataType":{
          "shape":"PropertyDataType",
          "documentation":"<p>The data type of the time series.</p> <p>If you specify <code>STRUCT</code>, you must also specify <code>dataTypeSpec</code> to identify the type of the structure for this time series.</p>"
        },
        "dataTypeSpec":{
          "shape":"Name",
          "documentation":"<p>The data type of the structure for this time series. This parameter is required for time series that have the <code>STRUCT</code> data type.</p> <p>The options for this parameter depend on the type of the composite model in which you created the asset property that is associated with your time series. Use <code>AWS/ALARM_STATE</code> for alarm state in alarm composite models.</p>"
        },
        "timeSeriesCreationDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date that the time series was created, in Unix epoch time.</p>"
        },
        "timeSeriesLastUpdateDate":{
          "shape":"Timestamp",
          "documentation":"<p>The date that the time series was last updated, in Unix epoch time.</p>"
        },
        "timeSeriesArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the time series, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:time-series/${TimeSeriesId}</code> </p>"
        }
      },
      "documentation":"<p>Contains a summary of a time series (data stream).</p>"
    },
    "TimeoutSeconds":{
      "type":"long",
      "documentation":"<p>The timeout in seconds for task execution. Default: 3600 (1 hour).</p>",
      "box":true,
      "max":86400,
      "min":60
    },
    "TimeseriesItem":{
      "type":"structure",
      "members":{
        "timeSeriesId":{
          "shape":"TimeSeriesId",
          "documentation":"&lt;p&gt;The unique identifier for the timeseries. Mutually exclusive with propertyAlias.&lt;/p&gt;"
        },
        "propertyAlias":{
          "shape":"AssetPropertyAlias",
          "documentation":"&lt;p&gt;The customer-friendly alias for the timeseries. Mutually exclusive with timeSeriesId.&lt;/p&gt;"
        },
        "trimSettings":{
          "shape":"TrimSettings",
          "documentation":"&lt;p&gt;The trim settings for the time range to export. Required for VIDEO and TELEMETRY data types; optional for ANNOTATION data types.&lt;/p&gt;"
        },
        "formatSettings":{
          "shape":"FormatSettings",
          "documentation":"&lt;p&gt;The optional format settings for the output.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;A single timeseries item to process. Exactly one of timeSeriesId or propertyAlias must be provided.&lt;/p&gt;"
    },
    "TimeseriesList":{
      "type":"list",
      "member":{"shape":"TimeseriesItem"},
      "documentation":"&lt;p&gt;A list of timeseries items to process.&lt;/p&gt;",
      "max":100,
      "min":1
    },
    "Timestamp":{"type":"timestamp"},
    "Timestamps":{
      "type":"list",
      "member":{"shape":"TimeInNanos"}
    },
    "TooManyTagsException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ExceptionMessage"},
        "resourceName":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The name of the resource with too many tags.</p>"
        }
      },
      "documentation":"<p>You've reached the quota for the number of tags allowed for a resource. For more information, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html#tag-conventions\">Tag naming limits and requirements</a> in the <i>Amazon Web Services General Reference</i>.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "Trace":{
      "type":"structure",
      "members":{
        "text":{
          "shape":"String",
          "documentation":"<p>The cited text from the data source.</p>"
        }
      },
      "documentation":"<p>Contains tracing information of the SiteWise Assistant's reasoning and data access.</p>",
      "event":true
    },
    "Transform":{
      "type":"structure",
      "required":[
        "expression",
        "variables"
      ],
      "members":{
        "expression":{
          "shape":"Expression",
          "documentation":"<p>The mathematical expression that defines the transformation function. You can specify up to 10 variables per expression. You can specify up to 10 functions per expression. </p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "variables":{
          "shape":"ExpressionVariables",
          "documentation":"<p>The list of variables used in the expression.</p>"
        },
        "processingConfig":{
          "shape":"TransformProcessingConfig",
          "documentation":"<p>The processing configuration for the given transform property. You can configure transforms to be kept at the edge or forwarded to the Amazon Web Services Cloud. You can also configure transforms to be computed at the edge or in the cloud.</p>"
        }
      },
      "documentation":"<p>Contains an asset transform property. A transform is a one-to-one mapping of a property's data points from one form to another. For example, you can use a transform to convert a Celsius data stream to Fahrenheit by applying the transformation expression to each data point of the Celsius stream. A transform can only have a data type of <code>DOUBLE</code> and consume properties with data types of <code>INTEGER</code> or <code>DOUBLE</code>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#transforms\">Transforms</a> in the <i>IoT SiteWise User Guide</i>.</p>"
    },
    "TransformProcessingConfig":{
      "type":"structure",
      "required":["computeLocation"],
      "members":{
        "computeLocation":{
          "shape":"ComputeLocation",
          "documentation":"<p>The compute location for the given transform property. </p>"
        },
        "forwardingConfig":{"shape":"ForwardingConfig"}
      },
      "documentation":"<p>The processing configuration for the given transform property. You can configure transforms to be kept at the edge or forwarded to the Amazon Web Services Cloud. You can also configure transforms to be computed at the edge or in the cloud.</p>"
    },
    "TraversalDirection":{
      "type":"string",
      "enum":[
        "PARENT",
        "CHILD"
      ]
    },
    "TraversalType":{
      "type":"string",
      "enum":["PATH_TO_ROOT"]
    },
    "TrimSettings":{
      "type":"structure",
      "required":[
        "startTime",
        "endTime"
      ],
      "members":{
        "startTime":{
          "shape":"TimeInNanos",
          "documentation":"&lt;p&gt;The start time for the trim range.&lt;/p&gt;"
        },
        "endTime":{
          "shape":"TimeInNanos",
          "documentation":"&lt;p&gt;The end time for the trim range. Must be greater than startTime.&lt;/p&gt;"
        }
      },
      "documentation":"&lt;p&gt;Contains settings for trimming content to a specific time range.&lt;/p&gt;"
    },
    "TumblingWindow":{
      "type":"structure",
      "required":["interval"],
      "members":{
        "interval":{
          "shape":"Interval",
          "documentation":"<p>The time interval for the tumbling window. The interval time must be between 1 minute and 1 week.</p> <p>IoT SiteWise computes the <code>1w</code> interval the end of Sunday at midnight each week (UTC), the <code>1d</code> interval at the end of each day at midnight (UTC), the <code>1h</code> interval at the end of each hour, and so on. </p> <p>When IoT SiteWise aggregates data points for metric computations, the start of each interval is exclusive and the end of each interval is inclusive. IoT SiteWise places the computed data point at the end of the interval.</p>"
        },
        "offset":{
          "shape":"Offset",
          "documentation":"<p>The offset for the tumbling window. The <code>offset</code> parameter accepts the following:</p> <ul> <li> <p>The offset time.</p> <p>For example, if you specify <code>18h</code> for <code>offset</code> and <code>1d</code> for <code>interval</code>, IoT SiteWise aggregates data in one of the following ways:</p> <ul> <li> <p>If you create the metric before or at 6 PM (UTC), you get the first aggregation result at 6 PM (UTC) on the day when you create the metric.</p> </li> <li> <p>If you create the metric after 6 PM (UTC), you get the first aggregation result at 6 PM (UTC) the next day.</p> </li> </ul> </li> <li> <p>The ISO 8601 format.</p> <p>For example, if you specify <code>PT18H</code> for <code>offset</code> and <code>1d</code> for <code>interval</code>, IoT SiteWise aggregates data in one of the following ways:</p> <ul> <li> <p>If you create the metric before or at 6 PM (UTC), you get the first aggregation result at 6 PM (UTC) on the day when you create the metric.</p> </li> <li> <p>If you create the metric after 6 PM (UTC), you get the first aggregation result at 6 PM (UTC) the next day.</p> </li> </ul> </li> <li> <p>The 24-hour clock.</p> <p>For example, if you specify <code>00:03:00</code> for <code>offset</code>, <code>5m</code> for <code>interval</code>, and you create the metric at 2 PM (UTC), you get the first aggregation result at 2:03 PM (UTC). You get the second aggregation result at 2:08 PM (UTC). </p> </li> <li> <p>The offset time zone.</p> <p>For example, if you specify <code>2021-07-23T18:00-08</code> for <code>offset</code> and <code>1d</code> for <code>interval</code>, IoT SiteWise aggregates data in one of the following ways:</p> <ul> <li> <p>If you create the metric before or at 6 PM (PST), you get the first aggregation result at 6 PM (PST) on the day when you create the metric.</p> </li> <li> <p>If you create the metric after 6 PM (PST), you get the first aggregation result at 6 PM (PST) the next day.</p> </li> </ul> </li> </ul>"
        }
      },
      "documentation":"<p>Contains a tumbling window, which is a repeating fixed-sized, non-overlapping, and contiguous time window. You can use this window in metrics to aggregate data from properties and other assets.</p> <p>You can use <code>m</code>, <code>h</code>, <code>d</code>, and <code>w</code> when you specify an interval or offset. Note that <code>m</code> represents minutes, <code>h</code> represents hours, <code>d</code> represents days, and <code>w</code> represents weeks. You can also use <code>s</code> to represent seconds in <code>offset</code>.</p> <p>The <code>interval</code> and <code>offset</code> parameters support the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO 8601 format</a>. For example, <code>PT5S</code> represents 5 seconds, <code>PT5M</code> represents 5 minutes, and <code>PT5H</code> represents 5 hours.</p>"
    },
    "UnauthorizedException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>You are not authorized.</p>",
      "error":{"httpStatusCode":401},
      "exception":true
    },
    "Unlimited":{"type":"boolean"},
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the resource to untag.</p>",
          "location":"querystring",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p>A list of keys for tags to remove from the resource.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{}
    },
    "UpdateAccessPolicyRequest":{
      "type":"structure",
      "required":[
        "accessPolicyId",
        "accessPolicyIdentity",
        "accessPolicyResource",
        "accessPolicyPermission"
      ],
      "members":{
        "accessPolicyId":{
          "shape":"ID",
          "documentation":"<p>The ID of the access policy.</p>",
          "location":"uri",
          "locationName":"accessPolicyId"
        },
        "accessPolicyIdentity":{
          "shape":"Identity",
          "documentation":"<p>The identity for this access policy. Choose an IAM Identity Center user, an IAM Identity Center group, or an IAM user.</p>"
        },
        "accessPolicyResource":{
          "shape":"Resource",
          "documentation":"<p>The IoT SiteWise Monitor resource for this access policy. Choose either a portal or a project.</p>"
        },
        "accessPolicyPermission":{
          "shape":"Permission",
          "documentation":"<p>The permission level for this access policy. Note that a project <code>ADMINISTRATOR</code> is also known as a project owner.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "UpdateAccessPolicyResponse":{
      "type":"structure",
      "members":{}
    },
    "UpdateAssetModelCompositeModelRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelCompositeModelId",
        "assetModelCompositeModelName"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model, in UUID format.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "assetModelCompositeModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of a composite model on this asset model.</p>",
          "location":"uri",
          "locationName":"assetModelCompositeModelId"
        },
        "assetModelCompositeModelExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset model. You can only set the external ID of the asset model if it wasn't set when it was created, or you're setting it to the exact same thing as when it was created.</p>"
        },
        "assetModelCompositeModelDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the composite model.</p>"
        },
        "assetModelCompositeModelName":{
          "shape":"Name",
          "documentation":"<p>A unique name for the composite model.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "assetModelCompositeModelProperties":{
          "shape":"AssetModelProperties",
          "documentation":"<p>The property definitions of the composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html#inline-composite-models\"> Inline custom composite models</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "ifMatch":{
          "shape":"ETag",
          "documentation":"<p>The expected current entity tag (ETag) for the asset model’s latest or active version (specified using <code>matchForVersionType</code>). The update request is rejected if the tag does not match the latest or active version's current entity tag. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/opt-locking-for-model.html\">Optimistic locking for asset model writes</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"header",
          "locationName":"If-Match"
        },
        "ifNoneMatch":{
          "shape":"SelectAll",
          "documentation":"<p>Accepts <b>*</b> to reject the update request if an active version (specified using <code>matchForVersionType</code> as <code>ACTIVE</code>) already exists for the asset model.</p>",
          "location":"header",
          "locationName":"If-None-Match"
        },
        "matchForVersionType":{
          "shape":"AssetModelVersionType",
          "documentation":"<p>Specifies the asset model version type (<code>LATEST</code> or <code>ACTIVE</code>) used in conjunction with <code>If-Match</code> or <code>If-None-Match</code> headers to determine the target ETag for the update operation.</p>",
          "location":"header",
          "locationName":"Match-For-Version-Type"
        }
      }
    },
    "UpdateAssetModelCompositeModelResponse":{
      "type":"structure",
      "required":[
        "assetModelCompositeModelPath",
        "assetModelStatus"
      ],
      "members":{
        "assetModelCompositeModelPath":{
          "shape":"AssetModelCompositeModelPath",
          "documentation":"<p>The path to the composite model listing the parent composite models.</p>"
        },
        "assetModelStatus":{"shape":"AssetModelStatus"},
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        }
      }
    },
    "UpdateAssetModelRequest":{
      "type":"structure",
      "required":[
        "assetModelId",
        "assetModelName"
      ],
      "members":{
        "assetModelId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset model to update. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetModelId"
        },
        "assetModelExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset model. The asset model must not already have an external ID. The external ID must be unique within your Amazon Web Services account. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetModelName":{
          "shape":"Name",
          "documentation":"<p>A unique name for the asset model.</p>"
        },
        "assetModelDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the asset model.</p>"
        },
        "assetModelProperties":{
          "shape":"AssetModelProperties",
          "documentation":"<p>The updated property definitions of the asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html\">Asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetModelHierarchies":{
          "shape":"AssetModelHierarchies",
          "documentation":"<p>The updated hierarchy definitions of the asset model. Each hierarchy specifies an asset model whose assets can be children of any other assets created from this asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html\">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 10 hierarchies per asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetModelCompositeModels":{
          "shape":"AssetModelCompositeModels",
          "documentation":"<p>The composite models that are part of this asset model. It groups properties (such as attributes, measurements, transforms, and metrics) and child composite models that model parts of your industrial equipment. Each composite model has a type that defines the properties that the composite model supports. Use composite models to define alarms on this asset model.</p> <note> <p>When creating custom composite models, you need to use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\">CreateAssetModelCompositeModel</a>. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-custom-composite-models.html\">Creating custom composite models (Components)</a> in the <i>IoT SiteWise User Guide</i>.</p> </note>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "ifMatch":{
          "shape":"ETag",
          "documentation":"<p>The expected current entity tag (ETag) for the asset model’s latest or active version (specified using <code>matchForVersionType</code>). The update request is rejected if the tag does not match the latest or active version's current entity tag. See <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/opt-locking-for-model.html\">Optimistic locking for asset model writes</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"header",
          "locationName":"If-Match"
        },
        "ifNoneMatch":{
          "shape":"SelectAll",
          "documentation":"<p>Accepts <b>*</b> to reject the update request if an active version (specified using <code>matchForVersionType</code> as <code>ACTIVE</code>) already exists for the asset model.</p>",
          "location":"header",
          "locationName":"If-None-Match"
        },
        "matchForVersionType":{
          "shape":"AssetModelVersionType",
          "documentation":"<p>Specifies the asset model version type (<code>LATEST</code> or <code>ACTIVE</code>) used in conjunction with <code>If-Match</code> or <code>If-None-Match</code> headers to determine the target ETag for the update operation.</p>",
          "location":"header",
          "locationName":"Match-For-Version-Type"
        }
      }
    },
    "UpdateAssetModelResponse":{
      "type":"structure",
      "required":["assetModelStatus"],
      "members":{
        "assetModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset model.</p>"
        },
        "assetModelStatus":{
          "shape":"AssetModelStatus",
          "documentation":"<p>The status of the asset model, which contains a state (<code>UPDATING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "UpdateAssetPropertyRequest":{
      "type":"structure",
      "required":[
        "assetId",
        "propertyId"
      ],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset to be updated. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "propertyId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset property to be updated. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"propertyId"
        },
        "propertyAlias":{
          "shape":"PropertyAlias",
          "documentation":"<p>The alias that identifies the property, such as an OPC-UA server data stream path (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html\">Mapping industrial data streams to asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>If you omit this parameter, the alias is removed from the property.</p>"
        },
        "propertyNotificationState":{
          "shape":"PropertyNotificationState",
          "documentation":"<p>The MQTT notification state (enabled or disabled) for this asset property. When the notification state is enabled, IoT SiteWise publishes property value updates to a unique MQTT topic. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/interact-with-other-services.html\">Interacting with other services</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>If you omit this parameter, the notification state is set to <code>DISABLED</code>.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "propertyUnit":{
          "shape":"PropertyUnit",
          "documentation":"<p>The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the <code>assetModelProperty</code> in the asset model.</p>"
        }
      }
    },
    "UpdateAssetRequest":{
      "type":"structure",
      "required":[
        "assetId",
        "assetName"
      ],
      "members":{
        "assetId":{
          "shape":"CustomID",
          "documentation":"<p>The ID of the asset to update. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
          "location":"uri",
          "locationName":"assetId"
        },
        "assetExternalId":{
          "shape":"ExternalId",
          "documentation":"<p>An external ID to assign to the asset. The asset must not already have an external ID. The external ID must be unique within your Amazon Web Services account. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "assetName":{
          "shape":"Name",
          "documentation":"<p>A friendly name for the asset.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "assetDescription":{
          "shape":"Description",
          "documentation":"<p>A description for the asset.</p>"
        }
      }
    },
    "UpdateAssetResponse":{
      "type":"structure",
      "required":["assetStatus"],
      "members":{
        "assetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the asset.</p>"
        },
        "assetStatus":{
          "shape":"AssetStatus",
          "documentation":"<p>The status of the asset, which contains a state (<code>UPDATING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "UpdateComputationModelRequest":{
      "type":"structure",
      "required":[
        "computationModelId",
        "computationModelName",
        "computationModelConfiguration",
        "computationModelDataBinding"
      ],
      "members":{
        "computationModelId":{
          "shape":"ID",
          "documentation":"<p>The ID of the computation model.</p>",
          "location":"uri",
          "locationName":"computationModelId"
        },
        "computationModelName":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the computation model.</p>"
        },
        "computationModelDescription":{
          "shape":"RestrictedDescription",
          "documentation":"<p>The description of the computation model.</p>"
        },
        "computationModelConfiguration":{
          "shape":"ComputationModelConfiguration",
          "documentation":"<p>The configuration for the computation model.</p>"
        },
        "computationModelDataBinding":{
          "shape":"ComputationModelDataBinding",
          "documentation":"<p>The data binding for the computation model. Key is a variable name defined in configuration. Value is a <code>ComputationModelDataBindingValue</code> referenced by the variable.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "UpdateComputationModelResponse":{
      "type":"structure",
      "required":["computationModelStatus"],
      "members":{
        "computationModelStatus":{
          "shape":"ComputationModelStatus",
          "documentation":"<p>The status of the computation model. It contains a state (UPDATING after successfully calling this operation) and an error message if any.</p>"
        }
      }
    },
    "UpdateDashboardRequest":{
      "type":"structure",
      "required":[
        "dashboardId",
        "dashboardName",
        "dashboardDefinition"
      ],
      "members":{
        "dashboardId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dashboard to update.</p>",
          "location":"uri",
          "locationName":"dashboardId"
        },
        "dashboardName":{
          "shape":"Name",
          "documentation":"<p>A new friendly name for the dashboard.</p>"
        },
        "dashboardDescription":{
          "shape":"Description",
          "documentation":"<p>A new description for the dashboard.</p>"
        },
        "dashboardDefinition":{
          "shape":"DashboardDefinition",
          "documentation":"<p>The new dashboard definition, as specified in a JSON literal.</p> <ul> <li> <p>IoT SiteWise Monitor (Classic) see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html\">Create dashboards (CLI)</a> </p> </li> <li> <p>IoT SiteWise Monitor (AI-aware) see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-ai-dashboard-cli.html\">Create dashboards (CLI)</a> </p> </li> </ul> <p>in the <i>IoT SiteWise User Guide</i> </p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "UpdateDashboardResponse":{
      "type":"structure",
      "members":{}
    },
    "UpdateDatasetRequest":{
      "type":"structure",
      "required":[
        "datasetId",
        "datasetName",
        "datasetSource"
      ],
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>",
          "location":"uri",
          "locationName":"datasetId"
        },
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace that contains the dataset.</p>"
        },
        "datasetName":{
          "shape":"RestrictedName",
          "documentation":"<p>The name of the dataset.</p>"
        },
        "datasetDescription":{
          "shape":"Description",
          "documentation":"<p>A description about the dataset, and its functionality.</p>"
        },
        "datasetConfig":{
          "shape":"DatasetConfig",
          "documentation":"<p>The updated configuration for the dataset.</p>"
        },
        "metadata":{
          "shape":"Metadata",
          "documentation":"<p>The updated metadata for the dataset.</p>"
        },
        "datasetSource":{
          "shape":"DatasetSource",
          "documentation":"<p>The data source for the dataset.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "UpdateDatasetResponse":{
      "type":"structure",
      "members":{
        "datasetId":{
          "shape":"ID",
          "documentation":"<p>The ID of the dataset.</p>"
        },
        "datasetArn":{
          "shape":"ARN",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html\">ARN</a> of the dataset. The format is <code>arn:${Partition}:iotsitewise:${Region}:${Account}:dataset/${DatasetId}</code>.</p>"
        },
        "datasetStatus":{
          "shape":"DatasetStatus",
          "documentation":"<p>The status of the dataset. This contains the state and any error messages. State is <code>UPDATING</code> after a successfull call to this API, and any associated error message. The state is <code>ACTIVE</code> when ready to use.</p>"
        }
      }
    },
    "UpdateGatewayCapabilityConfigurationRequest":{
      "type":"structure",
      "required":[
        "gatewayId",
        "capabilityNamespace",
        "capabilityConfiguration"
      ],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway to be updated.</p>",
          "location":"uri",
          "locationName":"gatewayId"
        },
        "capabilityNamespace":{
          "shape":"CapabilityNamespace",
          "documentation":"<p>The namespace of the gateway capability configuration to be updated. For example, if you configure OPC UA sources for an MQTT-enabled gateway, your OPC-UA capability configuration has the namespace <code>iotsitewise:opcuacollector:3</code>.</p>"
        },
        "capabilityConfiguration":{
          "shape":"CapabilityConfiguration",
          "documentation":"<p>The JSON document that defines the configuration for the gateway capability. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli\">Configuring data sources (CLI)</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        }
      }
    },
    "UpdateGatewayCapabilityConfigurationResponse":{
      "type":"structure",
      "required":[
        "capabilityNamespace",
        "capabilitySyncStatus"
      ],
      "members":{
        "capabilityNamespace":{
          "shape":"CapabilityNamespace",
          "documentation":"<p>The namespace of the gateway capability.</p>"
        },
        "capabilitySyncStatus":{
          "shape":"CapabilitySyncStatus",
          "documentation":"<p>The synchronization status of the gateway capability configuration. The sync status can be one of the following:</p> <ul> <li> <p> <code>IN_SYNC</code> - The gateway is running with the latest configuration.</p> </li> <li> <p> <code>OUT_OF_SYNC</code> - The gateway hasn't received the latest configuration.</p> </li> <li> <p> <code>SYNC_FAILED</code> - The gateway rejected the latest configuration.</p> </li> <li> <p> <code>UNKNOWN</code> - The gateway hasn't reported its sync status.</p> </li> <li> <p> <code>NOT_APPLICABLE</code> - The gateway doesn't support this capability. This is most common when integrating partner data sources, because the data integration is handled externally by the partner.</p> </li> </ul> <p>After you update a capability configuration, its sync status is <code>OUT_OF_SYNC</code> until the gateway receives and applies or rejects the updated configuration.</p>"
        }
      }
    },
    "UpdateGatewayRequest":{
      "type":"structure",
      "required":[
        "gatewayId",
        "gatewayName"
      ],
      "members":{
        "gatewayId":{
          "shape":"ID",
          "documentation":"<p>The ID of the gateway to update.</p>",
          "location":"uri",
          "locationName":"gatewayId"
        },
        "gatewayName":{
          "shape":"GatewayName",
          "documentation":"<p>A unique name for the gateway.</p>"
        }
      }
    },
    "UpdatePipelineRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "pipelineName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "pipelineName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the pipeline to update.</p>",
          "location":"uri",
          "locationName":"pipelineName"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A new description for the pipeline.</p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariablesMap",
          "documentation":"<p>Updated environment variables shared across all compute nodes.</p>"
        },
        "computations":{
          "shape":"ComputeNodeList",
          "documentation":"<p>Updated list of compute nodes forming the pipeline DAG.</p>"
        }
      },
      "documentation":"<p>Request structure for UpdatePipeline operation.</p>"
    },
    "UpdatePipelineResponse":{
      "type":"structure",
      "required":[
        "version",
        "status"
      ],
      "members":{
        "version":{
          "shape":"Version",
          "documentation":"<p>The new version of the pipeline created by this update.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the pipeline.</p>"
        }
      },
      "documentation":"<p>Response structure for UpdatePipeline operation.</p>"
    },
    "UpdatePortalRequest":{
      "type":"structure",
      "required":[
        "portalId",
        "portalName",
        "portalContactEmail",
        "roleArn"
      ],
      "members":{
        "portalId":{
          "shape":"ID",
          "documentation":"<p>The ID of the portal to update.</p>",
          "location":"uri",
          "locationName":"portalId"
        },
        "portalName":{
          "shape":"Name",
          "documentation":"<p>A new friendly name for the portal.</p>"
        },
        "portalDescription":{
          "shape":"Description",
          "documentation":"<p>A new description for the portal.</p>"
        },
        "portalContactEmail":{
          "shape":"Email",
          "documentation":"<p>The Amazon Web Services administrator's contact email address.</p>"
        },
        "portalLogoImage":{"shape":"Image"},
        "roleArn":{
          "shape":"IamArn",
          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of a service role that allows the portal's users to access your IoT SiteWise resources on your behalf. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html\">Using service roles for IoT SiteWise Monitor</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        },
        "notificationSenderEmail":{
          "shape":"Email",
          "documentation":"<p>The email address that sends alarm notifications.</p>"
        },
        "alarms":{
          "shape":"Alarms",
          "documentation":"<p>Contains the configuration information of an alarm created in an IoT SiteWise Monitor portal. You can use the alarm to monitor an asset property and get notified when the asset property value is outside a specified range. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html\">Monitoring with alarms</a> in the <i>IoT SiteWise Application Guide</i>.</p>"
        },
        "portalType":{
          "shape":"PortalType",
          "documentation":"<p>Define the type of portal. The value for IoT SiteWise Monitor (Classic) is <code>SITEWISE_PORTAL_V1</code>. The value for IoT SiteWise Monitor (AI-aware) is <code>SITEWISE_PORTAL_V2</code>.</p>"
        },
        "portalTypeConfiguration":{
          "shape":"PortalTypeConfiguration",
          "documentation":"<p>The configuration entry associated with the specific portal type. The value for IoT SiteWise Monitor (Classic) is <code>SITEWISE_PORTAL_V1</code>. The value for IoT SiteWise Monitor (AI-aware) is <code>SITEWISE_PORTAL_V2</code>.</p>"
        }
      }
    },
    "UpdatePortalResponse":{
      "type":"structure",
      "required":["portalStatus"],
      "members":{
        "portalStatus":{
          "shape":"PortalStatus",
          "documentation":"<p>The status of the portal, which contains a state (<code>UPDATING</code> after successfully calling this operation) and any error message.</p>"
        }
      }
    },
    "UpdateProjectRequest":{
      "type":"structure",
      "required":[
        "projectId",
        "projectName"
      ],
      "members":{
        "projectId":{
          "shape":"ID",
          "documentation":"<p>The ID of the project to update.</p>",
          "location":"uri",
          "locationName":"projectId"
        },
        "projectName":{
          "shape":"Name",
          "documentation":"<p>A new friendly name for the project.</p>"
        },
        "projectDescription":{
          "shape":"Description",
          "documentation":"<p>A new description for the project.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique case-sensitive identifier that you can provide to ensure the idempotency of the request. Don't reuse this client token if a new idempotent request is required.</p>",
          "idempotencyToken":true
        }
      }
    },
    "UpdateProjectResponse":{
      "type":"structure",
      "members":{}
    },
    "UpdateTaskRequest":{
      "type":"structure",
      "required":[
        "workspaceName",
        "taskName"
      ],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "taskName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the task to update.</p>",
          "location":"uri",
          "locationName":"taskName"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>A new description for the task.</p>"
        },
        "taskConfiguration":{
          "shape":"TaskConfiguration",
          "documentation":"<p>The updated task execution configuration.</p>"
        }
      },
      "documentation":"<p>Request structure for UpdateTask operation.</p>"
    },
    "UpdateTaskResponse":{
      "type":"structure",
      "required":[
        "version",
        "status"
      ],
      "members":{
        "version":{
          "shape":"Version",
          "documentation":"<p>The new version of the task created by this update.</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current lifecycle status of the task.</p>"
        }
      },
      "documentation":"<p>Response structure for UpdateTask operation.</p>"
    },
    "UpdateWorkspaceRequest":{
      "type":"structure",
      "required":["workspaceName"],
      "members":{
        "workspaceName":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace to update.</p>",
          "location":"uri",
          "locationName":"workspaceName"
        },
        "workspaceDescription":{
          "shape":"Description",
          "documentation":"<p>A new description for the workspace.</p>"
        },
        "encryptionConfiguration":{
          "shape":"WorkspaceEncryptionConfiguration",
          "documentation":"<p>The encryption configuration for the workspace. Omit this field to leave encryption unchanged. After a customer managed key configuration becomes active, the key can't be changed; supplying the same key is accepted.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure that the request is idempotent. If you retry a request that completed successfully using the same client token, the retry succeeds without performing any further actions.</p>",
          "idempotencyToken":true
        }
      }
    },
    "UpdateWorkspaceResponse":{
      "type":"structure",
      "required":["workspaceStatus"],
      "members":{
        "workspaceStatus":{
          "shape":"WorkspaceStatus",
          "documentation":"<p>The status of the workspace after the update, which is <code>UPDATING</code> when the operation returns.</p>"
        }
      }
    },
    "Url":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"^(http|https)\\://\\S+"
    },
    "UserIdentity":{
      "type":"structure",
      "required":["id"],
      "members":{
        "id":{
          "shape":"IdentityId",
          "documentation":"<p>The IAM Identity Center ID of the user.</p>"
        }
      },
      "documentation":"<p>Contains information for a user identity in an access policy.</p>"
    },
    "ValidationException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The validation failed for this query.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "VariableName":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[a-z][a-z0-9_]*$"
    },
    "VariableValue":{
      "type":"structure",
      "members":{
        "propertyId":{
          "shape":"Macro",
          "documentation":"<p>The ID of the property to use as the variable. You can use the property <code>name</code> if it's from the same asset model. If the property has an external ID, you can specify <code>externalId:</code> followed by the external ID. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "hierarchyId":{
          "shape":"Macro",
          "documentation":"<p>The ID of the hierarchy to query for the property ID. You can use the hierarchy's name instead of the hierarchy's ID. If the hierarchy has an external ID, you can specify <code>externalId:</code> followed by the external ID. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-ids\">Using external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You use a hierarchy ID instead of a model ID because you can have several hierarchies using the same model and therefore the same <code>propertyId</code>. For example, you might have separately grouped assets that come from the same asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html\">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p>"
        },
        "propertyPath":{
          "shape":"AssetModelPropertyPath",
          "documentation":"<p>The path of the property.</p>"
        }
      },
      "documentation":"<p>Identifies a property value used in an expression.</p>"
    },
    "Variant":{
      "type":"structure",
      "members":{
        "stringValue":{
          "shape":"PropertyValueStringValue",
          "documentation":"<p> Asset property data of type string (sequence of characters). The allowed pattern: \"^$|[^\\u0000-\\u001F\\u007F]+\". The max length is 1024. </p>"
        },
        "integerValue":{
          "shape":"PropertyValueIntegerValue",
          "documentation":"<p>Asset property data of type integer (whole number).</p>"
        },
        "doubleValue":{
          "shape":"PropertyValueDoubleValue",
          "documentation":"<p> Asset property data of type double (floating point number). The min value is -10^10. The max value is 10^10. Double.NaN is allowed. </p>"
        },
        "booleanValue":{
          "shape":"PropertyValueBooleanValue",
          "documentation":"<p>Asset property data of type Boolean (true or false).</p>"
        },
        "nullValue":{
          "shape":"PropertyValueNullValue",
          "documentation":"<p>The type of null asset property data with BAD and UNCERTAIN qualities.</p>"
        }
      },
      "documentation":"<p>Contains an asset property value (of a single type only).</p>"
    },
    "Version":{
      "type":"string",
      "max":10,
      "min":1,
      "pattern":"^(0|([1-9]{1}\\d*))$"
    },
    "VideoDataType":{
      "type":"string",
      "documentation":"<p>The allowed video data types.</p>",
      "enum":["VIDEO-MP4"]
    },
    "WarmTierRetentionPeriod":{
      "type":"structure",
      "members":{
        "numberOfDays":{
          "shape":"NumberOfDays",
          "documentation":"<p>The number of days the data is stored in the warm tier.</p>"
        },
        "unlimited":{
          "shape":"Unlimited",
          "documentation":"<p>If set to true, the data is stored indefinitely in the warm tier.</p>"
        }
      },
      "documentation":"<p>Set this period to specify how long your data is stored in the warm tier before it is deleted. You can set this only if cold tier is enabled.</p>"
    },
    "WarmTierState":{
      "type":"string",
      "enum":[
        "ENABLED",
        "DISABLED"
      ]
    },
    "WorkspaceEncryptionConfiguration":{
      "type":"structure",
      "required":["encryptionType"],
      "members":{
        "encryptionType":{
          "shape":"EncryptionType",
          "documentation":"<p>The encryption scheme for the workspace. <code>SITEWISE_DEFAULT_ENCRYPTION</code> encrypts data with the IoT SiteWise default key. <code>KMS_BASED_ENCRYPTION</code> encrypts data with the customer managed KMS key identified by <code>kmsKeyId</code>.</p>"
        },
        "kmsKeyId":{
          "shape":"KmsKeyId",
          "documentation":"<p>The customer managed KMS key used when <code>encryptionType</code> is <code>KMS_BASED_ENCRYPTION</code>. Accepts a key ID, key ARN, or key alias. Required for <code>KMS_BASED_ENCRYPTION</code>; must be omitted for <code>SITEWISE_DEFAULT_ENCRYPTION</code>. After a workspace's customer managed key configuration becomes active, the key can't be changed.</p>"
        }
      },
      "documentation":"<p>Contains the encryption configuration for a workspace.</p>"
    },
    "WorkspaceEncryptionConfigurationInfo":{
      "type":"structure",
      "required":["encryptionType"],
      "members":{
        "encryptionType":{
          "shape":"EncryptionType",
          "documentation":"<p>The type of encryption used for the workspace.</p>"
        },
        "kmsKeyArn":{
          "shape":"ARN",
          "documentation":"<p>The key ARN of the KMS key used for KMS encryption if <code>encryptionType</code> is <code>KMS_BASED_ENCRYPTION</code>.</p>"
        }
      },
      "documentation":"<p>Contains the encryption configuration information for a workspace.</p>"
    },
    "WorkspaceErrorDetails":{
      "type":"structure",
      "required":[
        "code",
        "message"
      ],
      "members":{
        "code":{
          "shape":"ErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"Description",
          "documentation":"<p>The error message.</p>"
        }
      },
      "documentation":"<p>Contains the details of an error associated with a workspace.</p>"
    },
    "WorkspaceName":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[a-zA-Z0-9_-]+$"
    },
    "WorkspaceState":{
      "type":"string",
      "documentation":"<p>The current state of a workspace. The state changes as the workspace is created, updated, or deleted.</p>",
      "enum":[
        "CREATING",
        "ACTIVE",
        "UPDATING",
        "DELETING",
        "FAILED"
      ]
    },
    "WorkspaceStatus":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"WorkspaceState",
          "documentation":"<p>The current state of the workspace.</p>"
        },
        "error":{
          "shape":"WorkspaceErrorDetails",
          "documentation":"<p>Contains associated error information, if any.</p>"
        }
      },
      "documentation":"<p>Contains information about the current status of a workspace.</p>"
    },
    "WorkspaceSummaries":{
      "type":"list",
      "member":{"shape":"WorkspaceSummary"}
    },
    "WorkspaceSummary":{
      "type":"structure",
      "required":[
        "name",
        "arn",
        "status",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "name":{
          "shape":"WorkspaceName",
          "documentation":"<p>The name of the workspace.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>The ARN of the workspace.</p>"
        },
        "status":{
          "shape":"WorkspaceStatus",
          "documentation":"<p>The status of the workspace.</p>"
        },
        "createdAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date the workspace was created, in Unix epoch time.</p>"
        },
        "updatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>The date the workspace was last updated, in Unix epoch time.</p>"
        }
      },
      "documentation":"<p>Contains summary information about a workspace, including its name, ARN, status, and creation and update timestamps.</p>"
    }
  },
  "documentation":"<p>Welcome to the IoT SiteWise API Reference. IoT SiteWise is an Amazon Web Services service that connects <a href=\"https://en.wikipedia.org/wiki/Internet_of_things#Industrial_applications\">Industrial Internet of Things (IIoT)</a> devices to the power of the Amazon Web Services Cloud. For more information, see the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/\">IoT SiteWise User Guide</a>. For information about IoT SiteWise quotas, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
}
