{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2021-11-29",
    "endpointPrefix":"iottwinmaker",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceFullName":"AWS IoT TwinMaker",
    "serviceId":"IoTTwinMaker",
    "signatureVersion":"v4",
    "signingName":"iottwinmaker",
    "uid":"iottwinmaker-2021-11-29"
  },
  "operations":{
    "BatchPutPropertyValues":{
      "name":"BatchPutPropertyValues",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/entity-properties",
        "responseCode":200
      },
      "input":{"shape":"BatchPutPropertyValuesRequest"},
      "output":{"shape":"BatchPutPropertyValuesResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Sets values for multiple time series properties.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "CreateComponentType":{
      "name":"CreateComponentType",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/component-types/{componentTypeId}",
        "responseCode":200
      },
      "input":{"shape":"CreateComponentTypeRequest"},
      "output":{"shape":"CreateComponentTypeResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates a component type.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateEntity":{
      "name":"CreateEntity",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/entities",
        "responseCode":200
      },
      "input":{"shape":"CreateEntityRequest"},
      "output":{"shape":"CreateEntityResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates an entity.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateScene":{
      "name":"CreateScene",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/scenes",
        "responseCode":200
      },
      "input":{"shape":"CreateSceneRequest"},
      "output":{"shape":"CreateSceneResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates a scene.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "CreateWorkspace":{
      "name":"CreateWorkspace",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}",
        "responseCode":200
      },
      "input":{"shape":"CreateWorkspaceRequest"},
      "output":{"shape":"CreateWorkspaceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates a workplace.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteComponentType":{
      "name":"DeleteComponentType",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceId}/component-types/{componentTypeId}",
        "responseCode":200
      },
      "input":{"shape":"DeleteComponentTypeRequest"},
      "output":{"shape":"DeleteComponentTypeResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Deletes a component type.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteEntity":{
      "name":"DeleteEntity",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceId}/entities/{entityId}",
        "responseCode":200
      },
      "input":{"shape":"DeleteEntityRequest"},
      "output":{"shape":"DeleteEntityResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Deletes an entity.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteScene":{
      "name":"DeleteScene",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceId}/scenes/{sceneId}",
        "responseCode":200
      },
      "input":{"shape":"DeleteSceneRequest"},
      "output":{"shape":"DeleteSceneResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Deletes a scene.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "DeleteWorkspace":{
      "name":"DeleteWorkspace",
      "http":{
        "method":"DELETE",
        "requestUri":"/workspaces/{workspaceId}",
        "responseCode":200
      },
      "input":{"shape":"DeleteWorkspaceRequest"},
      "output":{"shape":"DeleteWorkspaceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Deletes a workspace.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "GetComponentType":{
      "name":"GetComponentType",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceId}/component-types/{componentTypeId}",
        "responseCode":200
      },
      "input":{"shape":"GetComponentTypeRequest"},
      "output":{"shape":"GetComponentTypeResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Retrieves information about a component type.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "GetEntity":{
      "name":"GetEntity",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceId}/entities/{entityId}",
        "responseCode":200
      },
      "input":{"shape":"GetEntityRequest"},
      "output":{"shape":"GetEntityResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Retrieves information about an entity.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "GetPropertyValue":{
      "name":"GetPropertyValue",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/entity-properties/value",
        "responseCode":200
      },
      "input":{"shape":"GetPropertyValueRequest"},
      "output":{"shape":"GetPropertyValueResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ConnectorFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConnectorTimeoutException"}
      ],
      "documentation":"<p>Gets the property values for a component, component type, entity, or workspace.</p> <p>You must specify a value for either <code>componentName</code>, <code>componentTypeId</code>, <code>entityId</code>, or <code>workspaceId</code>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "GetPropertyValueHistory":{
      "name":"GetPropertyValueHistory",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/entity-properties/history",
        "responseCode":200
      },
      "input":{"shape":"GetPropertyValueHistoryRequest"},
      "output":{"shape":"GetPropertyValueHistoryResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ConnectorFailureException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConnectorTimeoutException"}
      ],
      "documentation":"<p>Retrieves information about the history of a time series property value for a component, component type, entity, or workspace.</p> <p>You must specify a value for <code>workspaceId</code>. For entity-specific queries, specify values for <code>componentName</code> and <code>entityId</code>. For cross-entity quries, specify a value for <code>componentTypeId</code>.</p>",
      "endpoint":{"hostPrefix":"data."}
    },
    "GetScene":{
      "name":"GetScene",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceId}/scenes/{sceneId}",
        "responseCode":200
      },
      "input":{"shape":"GetSceneRequest"},
      "output":{"shape":"GetSceneResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Retrieves information about a scene.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "GetWorkspace":{
      "name":"GetWorkspace",
      "http":{
        "method":"GET",
        "requestUri":"/workspaces/{workspaceId}",
        "responseCode":200
      },
      "input":{"shape":"GetWorkspaceRequest"},
      "output":{"shape":"GetWorkspaceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Retrieves information about a workspace.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListComponentTypes":{
      "name":"ListComponentTypes",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/component-types-list",
        "responseCode":200
      },
      "input":{"shape":"ListComponentTypesRequest"},
      "output":{"shape":"ListComponentTypesResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Lists all component types in a workspace.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListEntities":{
      "name":"ListEntities",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/entities-list",
        "responseCode":200
      },
      "input":{"shape":"ListEntitiesRequest"},
      "output":{"shape":"ListEntitiesResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Lists all entities in a workspace.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListScenes":{
      "name":"ListScenes",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces/{workspaceId}/scenes-list",
        "responseCode":200
      },
      "input":{"shape":"ListScenesRequest"},
      "output":{"shape":"ListScenesResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Lists all scenes in a workspace.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags-list",
        "responseCode":200
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Lists all tags associated with a resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "ListWorkspaces":{
      "name":"ListWorkspaces",
      "http":{
        "method":"POST",
        "requestUri":"/workspaces-list",
        "responseCode":200
      },
      "input":{"shape":"ListWorkspacesRequest"},
      "output":{"shape":"ListWorkspacesResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Retrieves information about workspaces in the current account.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags",
        "responseCode":200
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"TooManyTagsException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Adds tags to a resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags",
        "responseCode":200
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Removes tags from a resource.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateComponentType":{
      "name":"UpdateComponentType",
      "http":{
        "method":"PUT",
        "requestUri":"/workspaces/{workspaceId}/component-types/{componentTypeId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateComponentTypeRequest"},
      "output":{"shape":"UpdateComponentTypeResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Updates information in a component type.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateEntity":{
      "name":"UpdateEntity",
      "http":{
        "method":"PUT",
        "requestUri":"/workspaces/{workspaceId}/entities/{entityId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateEntityRequest"},
      "output":{"shape":"UpdateEntityResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Updates an entity.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateScene":{
      "name":"UpdateScene",
      "http":{
        "method":"PUT",
        "requestUri":"/workspaces/{workspaceId}/scenes/{sceneId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateSceneRequest"},
      "output":{"shape":"UpdateSceneResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Updates a scene.</p>",
      "endpoint":{"hostPrefix":"api."}
    },
    "UpdateWorkspace":{
      "name":"UpdateWorkspace",
      "http":{
        "method":"PUT",
        "requestUri":"/workspaces/{workspaceId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateWorkspaceRequest"},
      "output":{"shape":"UpdateWorkspaceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Updates a workspace.</p>",
      "endpoint":{"hostPrefix":"api."}
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>Access is denied.</p>",
      "error":{
        "httpStatusCode":403,
        "senderFault":true
      },
      "exception":true
    },
    "BatchPutPropertyError":{
      "type":"structure",
      "required":[
        "entry",
        "errorCode",
        "errorMessage"
      ],
      "members":{
        "entry":{
          "shape":"PropertyValueEntry",
          "documentation":"<p>An object that contains information about errors returned by the <code>BatchPutProperty</code> action.</p>"
        },
        "errorCode":{
          "shape":"String",
          "documentation":"<p>The error code.</p>"
        },
        "errorMessage":{
          "shape":"String",
          "documentation":"<p>The error message.</p>"
        }
      },
      "documentation":"<p>An error returned by the <code>BatchPutProperty</code> action.</p>"
    },
    "BatchPutPropertyErrorEntry":{
      "type":"structure",
      "required":["errors"],
      "members":{
        "errors":{
          "shape":"Errors",
          "documentation":"<p>A list of objects that contain information about errors returned by the <code>BatchPutProperty</code> action.</p>"
        }
      },
      "documentation":"<p>An object that contains information about errors returned by the <code>BatchPutProperty</code> action.</p>"
    },
    "BatchPutPropertyValuesRequest":{
      "type":"structure",
      "required":[
        "entries",
        "workspaceId"
      ],
      "members":{
        "entries":{
          "shape":"Entries",
          "documentation":"<p>An object that maps strings to the property value entries to set. Each string in the mapping must be unique to this object.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the properties to set.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "BatchPutPropertyValuesResponse":{
      "type":"structure",
      "required":["errorEntries"],
      "members":{
        "errorEntries":{
          "shape":"ErrorEntries",
          "documentation":"<p>Entries that caused errors in the batch put operation.</p>"
        }
      }
    },
    "Boolean":{
      "type":"boolean",
      "box":true
    },
    "ComponentRequest":{
      "type":"structure",
      "members":{
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the component request.</p>"
        },
        "properties":{
          "shape":"PropertyRequests",
          "documentation":"<p>An object that maps strings to the properties to set in the component type. Each string in the mapping must be unique to this object.</p>"
        }
      },
      "documentation":"<p>An object that sets information about a component type create or update request.</p>"
    },
    "ComponentResponse":{
      "type":"structure",
      "members":{
        "componentName":{
          "shape":"Name",
          "documentation":"<p>The name of the component.</p>"
        },
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>"
        },
        "definedIn":{
          "shape":"String",
          "documentation":"<p>The name of the property definition set in the request.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the component type.</p>"
        },
        "properties":{
          "shape":"PropertyResponses",
          "documentation":"<p>An object that maps strings to the properties to set in the component type. Each string in the mapping must be unique to this object.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the component type.</p>"
        }
      },
      "documentation":"<p>An object that returns information about a component type create or update request.</p>"
    },
    "ComponentTypeId":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[a-zA-Z_\\.\\-0-9:]+"
    },
    "ComponentTypeSummaries":{
      "type":"list",
      "member":{"shape":"ComponentTypeSummary"}
    },
    "ComponentTypeSummary":{
      "type":"structure",
      "required":[
        "arn",
        "componentTypeId",
        "creationDateTime",
        "updateDateTime"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the component type.</p>"
        },
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the component type was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the component type.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The current status of the component type.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the component type was last updated.</p>"
        }
      },
      "documentation":"<p>An object that contains information about a component type.</p>"
    },
    "ComponentUpdateRequest":{
      "type":"structure",
      "members":{
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the component type.</p>"
        },
        "propertyUpdates":{
          "shape":"PropertyRequests",
          "documentation":"<p>An object that maps strings to the properties to set in the component type update. Each string in the mapping must be unique to this object.</p>"
        },
        "updateType":{
          "shape":"ComponentUpdateType",
          "documentation":"<p>The update type of the component update request.</p>"
        }
      },
      "documentation":"<p>The component update request.</p>"
    },
    "ComponentUpdateType":{
      "type":"string",
      "enum":[
        "CREATE",
        "UPDATE",
        "DELETE"
      ]
    },
    "ComponentUpdatesMapRequest":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"ComponentUpdateRequest"}
    },
    "ComponentsMap":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"ComponentResponse"}
    },
    "ComponentsMapRequest":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"ComponentRequest"}
    },
    "Configuration":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"Value"}
    },
    "ConflictException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>A conflict occurred.</p>",
      "error":{
        "httpStatusCode":409,
        "senderFault":true
      },
      "exception":true
    },
    "ConnectorFailureException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The connector failed.</p>",
      "error":{
        "httpStatusCode":424,
        "senderFault":true
      },
      "exception":true
    },
    "ConnectorTimeoutException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The connector timed out.</p>",
      "error":{
        "httpStatusCode":424,
        "senderFault":true
      },
      "exception":true
    },
    "CreateComponentTypeRequest":{
      "type":"structure",
      "required":[
        "componentTypeId",
        "workspaceId"
      ],
      "members":{
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>",
          "location":"uri",
          "locationName":"componentTypeId"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the component type.</p>"
        },
        "extendsFrom":{
          "shape":"ExtendsFrom",
          "documentation":"<p>Specifies the parent component type to extend.</p>"
        },
        "functions":{
          "shape":"FunctionsRequest",
          "documentation":"<p>An object that maps strings to the functions in the component type. Each string in the mapping must be unique to this object.</p>"
        },
        "isSingleton":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether an entity can have more than one component of this type.</p>"
        },
        "propertyDefinitions":{
          "shape":"PropertyDefinitionsRequest",
          "documentation":"<p>An object that maps strings to the property definitions in the component type. Each string in the mapping must be unique to this object.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Metadata that you can use to manage the component type.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the component type.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "CreateComponentTypeResponse":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime",
        "state"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the component type.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the entity was created.</p>"
        },
        "state":{
          "shape":"State",
          "documentation":"<p>The current state of the component type.</p>"
        }
      }
    },
    "CreateEntityRequest":{
      "type":"structure",
      "required":[
        "entityName",
        "workspaceId"
      ],
      "members":{
        "components":{
          "shape":"ComponentsMapRequest",
          "documentation":"<p>An object that maps strings to the components in the entity. Each string in the mapping must be unique to this object.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the entity.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>"
        },
        "entityName":{
          "shape":"EntityName",
          "documentation":"<p>The name of the entity.</p>"
        },
        "parentEntityId":{
          "shape":"ParentEntityId",
          "documentation":"<p>The ID of the entity's parent entity.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Metadata that you can use to manage the entity.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the entity.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "CreateEntityResponse":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime",
        "entityId",
        "state"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the entity.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the entity was created.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>"
        },
        "state":{
          "shape":"State",
          "documentation":"<p>The current state of the entity.</p>"
        }
      }
    },
    "CreateSceneRequest":{
      "type":"structure",
      "required":[
        "contentLocation",
        "sceneId",
        "workspaceId"
      ],
      "members":{
        "capabilities":{
          "shape":"SceneCapabilities",
          "documentation":"<p>A list of capabilities that the scene uses to render itself.</p>"
        },
        "contentLocation":{
          "shape":"S3Url",
          "documentation":"<p>The relative path that specifies the location of the content definition file.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description for this scene.</p>"
        },
        "sceneId":{
          "shape":"Id",
          "documentation":"<p>The ID of the scene.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Metadata that you can use to manage the scene.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the scene.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "CreateSceneResponse":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the scene.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the scene was created.</p>"
        }
      }
    },
    "CreateWorkspaceRequest":{
      "type":"structure",
      "required":[
        "role",
        "s3Location",
        "workspaceId"
      ],
      "members":{
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the workspace.</p>"
        },
        "role":{
          "shape":"RoleArn",
          "documentation":"<p>The ARN of the execution role associated with the workspace.</p>"
        },
        "s3Location":{
          "shape":"S3Location",
          "documentation":"<p>The ARN of the S3 bucket where resources associated with the workspace are stored.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Metadata that you can use to manage the workspace</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "CreateWorkspaceResponse":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the workspace.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the workspace was created.</p>"
        }
      }
    },
    "DataConnector":{
      "type":"structure",
      "members":{
        "isNative":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the data connector is native to IoT TwinMaker.</p>"
        },
        "lambda":{
          "shape":"LambdaFunction",
          "documentation":"<p>The Lambda function associated with this data connector.</p>"
        }
      },
      "documentation":"<p>The data connector.</p>"
    },
    "DataType":{
      "type":"structure",
      "required":["type"],
      "members":{
        "allowedValues":{
          "shape":"DataValueList",
          "documentation":"<p>The allowed values for this data type.</p>"
        },
        "nestedType":{
          "shape":"DataType",
          "documentation":"<p>The nested type in the data type.</p>"
        },
        "relationship":{
          "shape":"Relationship",
          "documentation":"<p>A relationship that associates a component with another component.</p>"
        },
        "type":{
          "shape":"Type",
          "documentation":"<p>The underlying type of the data type.</p>"
        },
        "unitOfMeasure":{
          "shape":"String",
          "documentation":"<p>The unit of measure used in this data type.</p>"
        }
      },
      "documentation":"<p>An object that specifies the data type of a property.</p>"
    },
    "DataValue":{
      "type":"structure",
      "members":{
        "booleanValue":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value.</p>"
        },
        "doubleValue":{
          "shape":"Double",
          "documentation":"<p>A double value.</p>"
        },
        "expression":{
          "shape":"Expression",
          "documentation":"<p>An expression that produces the value.</p>"
        },
        "integerValue":{
          "shape":"Integer",
          "documentation":"<p>An integer value.</p>"
        },
        "listValue":{
          "shape":"DataValueList",
          "documentation":"<p>A list of multiple values.</p>"
        },
        "longValue":{
          "shape":"Long",
          "documentation":"<p>A long value.</p>"
        },
        "mapValue":{
          "shape":"DataValueMap",
          "documentation":"<p>An object that maps strings to multiple <code>DataValue</code> objects.</p>"
        },
        "relationshipValue":{
          "shape":"RelationshipValue",
          "documentation":"<p>A value that relates a component to another component.</p>"
        },
        "stringValue":{
          "shape":"String",
          "documentation":"<p>A string value.</p>"
        }
      },
      "documentation":"<p>An object that specifies a value for a property.</p>"
    },
    "DataValueList":{
      "type":"list",
      "member":{"shape":"DataValue"},
      "max":50,
      "min":0
    },
    "DataValueMap":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"DataValue"},
      "max":50,
      "min":0
    },
    "DeleteComponentTypeRequest":{
      "type":"structure",
      "required":[
        "componentTypeId",
        "workspaceId"
      ],
      "members":{
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type to delete.</p>",
          "location":"uri",
          "locationName":"componentTypeId"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the component type.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "DeleteComponentTypeResponse":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"State",
          "documentation":"<p>The current state of the component type to be deleted.</p>"
        }
      }
    },
    "DeleteEntityRequest":{
      "type":"structure",
      "required":[
        "entityId",
        "workspaceId"
      ],
      "members":{
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity to delete.</p>",
          "location":"uri",
          "locationName":"entityId"
        },
        "isRecursive":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the operation deletes child entities.</p>",
          "location":"querystring",
          "locationName":"isRecursive"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the entity to delete.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "DeleteEntityResponse":{
      "type":"structure",
      "required":["state"],
      "members":{
        "state":{
          "shape":"State",
          "documentation":"<p>The current state of the deleted entity.</p>"
        }
      }
    },
    "DeleteSceneRequest":{
      "type":"structure",
      "required":[
        "sceneId",
        "workspaceId"
      ],
      "members":{
        "sceneId":{
          "shape":"Id",
          "documentation":"<p>The ID of the scene to delete.</p>",
          "location":"uri",
          "locationName":"sceneId"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "DeleteSceneResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteWorkspaceRequest":{
      "type":"structure",
      "required":["workspaceId"],
      "members":{
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace to delete.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "DeleteWorkspaceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "Description":{
      "type":"string",
      "max":512,
      "min":0,
      "pattern":".*"
    },
    "Double":{
      "type":"double",
      "box":true
    },
    "EntityId":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+"
    },
    "EntityName":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[a-zA-Z_0-9-.][a-zA-Z_0-9-. ]*[a-zA-Z0-9]+"
    },
    "EntityPropertyReference":{
      "type":"structure",
      "required":["propertyName"],
      "members":{
        "componentName":{
          "shape":"Name",
          "documentation":"<p>The name of the component.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>"
        },
        "externalIdProperty":{
          "shape":"ExternalIdProperty",
          "documentation":"<p>A mapping of external IDs to property names. External IDs uniquely identify properties from external data stores.</p>"
        },
        "propertyName":{
          "shape":"Name",
          "documentation":"<p>The name of the property.</p>"
        }
      },
      "documentation":"<p>An object that uniquely identifies an entity property.</p>"
    },
    "EntitySummaries":{
      "type":"list",
      "member":{"shape":"EntitySummary"}
    },
    "EntitySummary":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime",
        "entityId",
        "entityName",
        "status",
        "updateDateTime"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the entity.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the entity was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the entity.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>"
        },
        "entityName":{
          "shape":"EntityName",
          "documentation":"<p>The name of the entity.</p>"
        },
        "hasChildEntities":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the entity has child entities or not.</p>"
        },
        "parentEntityId":{
          "shape":"ParentEntityId",
          "documentation":"<p>The ID of the parent entity.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The current status of the entity.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last date and time when the entity was updated.</p>"
        }
      },
      "documentation":"<p>An object that contains information about an entity.</p>"
    },
    "Entries":{
      "type":"list",
      "member":{"shape":"PropertyValueEntry"},
      "max":10,
      "min":1
    },
    "ErrorCode":{
      "type":"string",
      "enum":[
        "VALIDATION_ERROR",
        "INTERNAL_FAILURE"
      ]
    },
    "ErrorDetails":{
      "type":"structure",
      "members":{
        "code":{
          "shape":"ErrorCode",
          "documentation":"<p>The error code.</p>"
        },
        "message":{
          "shape":"ErrorMessage",
          "documentation":"<p>The error message.</p>"
        }
      },
      "documentation":"<p>The error details.</p>"
    },
    "ErrorEntries":{
      "type":"list",
      "member":{"shape":"BatchPutPropertyErrorEntry"},
      "max":10,
      "min":1
    },
    "ErrorMessage":{
      "type":"string",
      "max":2048,
      "min":0
    },
    "Errors":{
      "type":"list",
      "member":{"shape":"BatchPutPropertyError"},
      "max":10,
      "min":1
    },
    "ExceptionMessage":{"type":"string"},
    "Expression":{
      "type":"string",
      "max":316,
      "min":1,
      "pattern":"(^\\$\\{Parameters\\.[a-zA-z]+([a-zA-z_0-9]*)}$)"
    },
    "ExtendsFrom":{
      "type":"list",
      "member":{"shape":"ComponentTypeId"}
    },
    "ExternalIdProperty":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"String"}
    },
    "FunctionRequest":{
      "type":"structure",
      "members":{
        "implementedBy":{
          "shape":"DataConnector",
          "documentation":"<p>The data connector.</p>"
        },
        "requiredProperties":{
          "shape":"RequiredProperties",
          "documentation":"<p>The required properties of the function.</p>"
        },
        "scope":{
          "shape":"Scope",
          "documentation":"<p>The scope of the function.</p>"
        }
      },
      "documentation":"<p>The function request body.</p>"
    },
    "FunctionResponse":{
      "type":"structure",
      "members":{
        "implementedBy":{
          "shape":"DataConnector",
          "documentation":"<p>The data connector.</p>"
        },
        "isInherited":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether this function is inherited.</p>"
        },
        "requiredProperties":{
          "shape":"RequiredProperties",
          "documentation":"<p>The required properties of the function.</p>"
        },
        "scope":{
          "shape":"Scope",
          "documentation":"<p>The scope of the function.</p>"
        }
      },
      "documentation":"<p>The function response.</p>"
    },
    "FunctionsRequest":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"FunctionRequest"}
    },
    "FunctionsResponse":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"FunctionResponse"}
    },
    "GetComponentTypeRequest":{
      "type":"structure",
      "required":[
        "componentTypeId",
        "workspaceId"
      ],
      "members":{
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>",
          "location":"uri",
          "locationName":"componentTypeId"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the component type.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "GetComponentTypeResponse":{
      "type":"structure",
      "required":[
        "arn",
        "componentTypeId",
        "creationDateTime",
        "updateDateTime",
        "workspaceId"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the component type.</p>"
        },
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the component type was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the component type.</p>"
        },
        "extendsFrom":{
          "shape":"ExtendsFrom",
          "documentation":"<p>The name of the parent component type that this component type extends.</p>"
        },
        "functions":{
          "shape":"FunctionsResponse",
          "documentation":"<p>An object that maps strings to the functions in the component type. Each string in the mapping must be unique to this object.</p>"
        },
        "isAbstract":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the component type is abstract.</p>"
        },
        "isSchemaInitialized":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the component type has a schema initializer and that the schema initializer has run.</p>"
        },
        "isSingleton":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether an entity can have more than one component of this type.</p>"
        },
        "propertyDefinitions":{
          "shape":"PropertyDefinitionsResponse",
          "documentation":"<p>An object that maps strings to the property definitions in the component type. Each string in the mapping must be unique to this object.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The current status of the component type.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the component was last updated.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the component type.</p>"
        }
      }
    },
    "GetEntityRequest":{
      "type":"structure",
      "required":[
        "entityId",
        "workspaceId"
      ],
      "members":{
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>",
          "location":"uri",
          "locationName":"entityId"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "GetEntityResponse":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime",
        "entityId",
        "entityName",
        "hasChildEntities",
        "parentEntityId",
        "status",
        "updateDateTime",
        "workspaceId"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the entity.</p>"
        },
        "components":{
          "shape":"ComponentsMap",
          "documentation":"<p>An object that maps strings to the components in the entity. Each string in the mapping must be unique to this object.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the entity was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the entity.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>"
        },
        "entityName":{
          "shape":"EntityName",
          "documentation":"<p>The name of the entity.</p>"
        },
        "hasChildEntities":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the entity has associated child entities.</p>"
        },
        "parentEntityId":{
          "shape":"ParentEntityId",
          "documentation":"<p>The ID of the parent entity for this entity.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The current status of the entity.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the entity was last updated.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>"
        }
      }
    },
    "GetPropertyValueHistoryRequest":{
      "type":"structure",
      "required":[
        "selectedProperties",
        "workspaceId"
      ],
      "members":{
        "componentName":{
          "shape":"Name",
          "documentation":"<p>The name of the component.</p>"
        },
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>"
        },
        "endDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time of the latest property value to return.</p>",
          "deprecated":true,
          "deprecatedMessage":"This field is deprecated and will throw an error in the future. Use endTime instead."
        },
        "endTime":{
          "shape":"Time",
          "documentation":"<p>The ISO8601 DateTime of the latest property value to return.</p> <p>For more information about the ISO8601 DateTime format, see the data type <a href=\"https://docs.aws.amazon.com/roci/latest/roci-api/API_PropertyValue.html\">PropertyValue</a>.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>"
        },
        "interpolation":{
          "shape":"InterpolationParameters",
          "documentation":"<p>An object that specifies the interpolation type and the interval over which to interpolate data.</p>"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "orderByTime":{
          "shape":"OrderByTime",
          "documentation":"<p>The time direction to use in the result order.</p>"
        },
        "propertyFilters":{
          "shape":"PropertyFilters",
          "documentation":"<p>A list of objects that filter the property value history request.</p>"
        },
        "selectedProperties":{
          "shape":"SelectedPropertyList",
          "documentation":"<p>A list of properties whose value histories the request retrieves.</p>"
        },
        "startDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time of the earliest property value to return.</p>",
          "deprecated":true,
          "deprecatedMessage":"This field is deprecated and will throw an error in the future. Use startTime instead."
        },
        "startTime":{
          "shape":"Time",
          "documentation":"<p>The ISO8601 DateTime of the earliest property value to return.</p> <p>For more information about the ISO8601 DateTime format, see the data type <a href=\"https://docs.aws.amazon.com/roci/latest/roci-api/API_PropertyValue.html\">PropertyValue</a>.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "GetPropertyValueHistoryResponse":{
      "type":"structure",
      "required":["propertyValues"],
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "propertyValues":{
          "shape":"PropertyValueList",
          "documentation":"<p>An object that maps strings to the property definitions in the component type. Each string in the mapping must be unique to this object.</p>"
        }
      }
    },
    "GetPropertyValueRequest":{
      "type":"structure",
      "required":[
        "selectedProperties",
        "workspaceId"
      ],
      "members":{
        "componentName":{
          "shape":"Name",
          "documentation":"<p>The name of the component whose property values the operation returns.</p>"
        },
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type whose property values the operation returns.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity whose property values the operation returns.</p>"
        },
        "selectedProperties":{
          "shape":"SelectedPropertyList",
          "documentation":"<p>The properties whose values the operation returns.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace whose values the operation returns.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "GetPropertyValueResponse":{
      "type":"structure",
      "required":["propertyValues"],
      "members":{
        "propertyValues":{
          "shape":"PropertyLatestValueMap",
          "documentation":"<p>An object that maps strings to the properties and latest property values in the response. Each string in the mapping must be unique to this object.</p>"
        }
      }
    },
    "GetSceneRequest":{
      "type":"structure",
      "required":[
        "sceneId",
        "workspaceId"
      ],
      "members":{
        "sceneId":{
          "shape":"Id",
          "documentation":"<p>The ID of the scene.</p>",
          "location":"uri",
          "locationName":"sceneId"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the scene.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "GetSceneResponse":{
      "type":"structure",
      "required":[
        "arn",
        "contentLocation",
        "creationDateTime",
        "sceneId",
        "updateDateTime",
        "workspaceId"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the scene.</p>"
        },
        "capabilities":{
          "shape":"SceneCapabilities",
          "documentation":"<p>A list of capabilities that the scene uses to render.</p>"
        },
        "contentLocation":{
          "shape":"S3Url",
          "documentation":"<p>The relative path that specifies the location of the content definition file.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the scene was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the scene.</p>"
        },
        "sceneId":{
          "shape":"Id",
          "documentation":"<p>The ID of the scene.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the scene was last updated.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the scene.</p>"
        }
      }
    },
    "GetWorkspaceRequest":{
      "type":"structure",
      "required":["workspaceId"],
      "members":{
        "workspaceId":{
          "shape":"IdOrArn",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "GetWorkspaceResponse":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime",
        "role",
        "s3Location",
        "updateDateTime",
        "workspaceId"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the workspace.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the workspace was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the workspace.</p>"
        },
        "role":{
          "shape":"RoleArn",
          "documentation":"<p>The ARN of the execution role associated with the workspace.</p>"
        },
        "s3Location":{
          "shape":"S3Location",
          "documentation":"<p>The ARN of the S3 bucket where resources associated with the workspace are stored.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the workspace was last updated.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>"
        }
      }
    },
    "Id":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+"
    },
    "IdOrArn":{
      "type":"string",
      "max":2048,
      "min":1,
      "pattern":"[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+$|^arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_-]+"
    },
    "Integer":{
      "type":"integer",
      "box":true
    },
    "InternalServerException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>An unexpected error has occurred.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "InterpolationParameters":{
      "type":"structure",
      "members":{
        "interpolationType":{
          "shape":"InterpolationType",
          "documentation":"<p>The interpolation type.</p>"
        },
        "intervalInSeconds":{
          "shape":"IntervalInSeconds",
          "documentation":"<p>The interpolation time interval in seconds.</p>"
        }
      },
      "documentation":"<p>An object that specifies how to interpolate data in a list.</p>"
    },
    "InterpolationType":{
      "type":"string",
      "enum":["LINEAR"]
    },
    "IntervalInSeconds":{
      "type":"long",
      "box":true
    },
    "LambdaArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:((aws)|(aws-cn)|(aws-us-gov)):lambda:[a-z0-9-]+:[0-9]{12}:function:[\\/a-zA-Z0-9_-]+"
    },
    "LambdaFunction":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{
          "shape":"LambdaArn",
          "documentation":"<p>The ARN of the Lambda function.</p>"
        }
      },
      "documentation":"<p>The Lambda function.</p>"
    },
    "ListComponentTypesFilter":{
      "type":"structure",
      "members":{
        "extendsFrom":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The component type that the component types in the list extend.</p>"
        },
        "isAbstract":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the component types in the list are abstract.</p>"
        },
        "namespace":{
          "shape":"String",
          "documentation":"<p>The namespace to which the component types in the list belong.</p>"
        }
      },
      "documentation":"<p>An object that filters items in a list of component types.</p> <note> <p>Only one object is accepted as a valid input.</p> </note>",
      "union":true
    },
    "ListComponentTypesFilters":{
      "type":"list",
      "member":{"shape":"ListComponentTypesFilter"}
    },
    "ListComponentTypesRequest":{
      "type":"structure",
      "required":["workspaceId"],
      "members":{
        "filters":{
          "shape":"ListComponentTypesFilters",
          "documentation":"<p>A list of objects that filter the request.</p>"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to display.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "ListComponentTypesResponse":{
      "type":"structure",
      "required":[
        "componentTypeSummaries",
        "workspaceId"
      ],
      "members":{
        "componentTypeSummaries":{
          "shape":"ComponentTypeSummaries",
          "documentation":"<p>A list of objects that contain information about the component types.</p>"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>Specifies the maximum number of results to display.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>"
        }
      }
    },
    "ListEntitiesFilter":{
      "type":"structure",
      "members":{
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type in the entities in the list.</p>"
        },
        "externalId":{
          "shape":"String",
          "documentation":"<p>The external-Id property of a component. The external-Id property is the primary key of an external storage system.</p>"
        },
        "parentEntityId":{
          "shape":"ParentEntityId",
          "documentation":"<p>The parent of the entities in the list.</p>"
        }
      },
      "documentation":"<p>An object that filters items in a list of entities.</p>",
      "union":true
    },
    "ListEntitiesFilters":{
      "type":"list",
      "member":{"shape":"ListEntitiesFilter"}
    },
    "ListEntitiesRequest":{
      "type":"structure",
      "required":["workspaceId"],
      "members":{
        "filters":{
          "shape":"ListEntitiesFilters",
          "documentation":"<p>A list of objects that filter the request.</p> <note> <p>Only one object is accepted as a valid input.</p> </note>"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to display.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "ListEntitiesResponse":{
      "type":"structure",
      "members":{
        "entitySummaries":{
          "shape":"EntitySummaries",
          "documentation":"<p>A list of objects that contain information about the entities.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        }
      }
    },
    "ListScenesRequest":{
      "type":"structure",
      "required":["workspaceId"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>Specifies the maximum number of results to display.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the scenes.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "ListScenesResponse":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "sceneSummaries":{
          "shape":"SceneSummaries",
          "documentation":"<p>A list of objects that contain information about the scenes.</p>"
        }
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceARN"],
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to display.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "resourceARN":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the resource.</p>"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Metadata that you can use to manage a resource.</p>"
        }
      }
    },
    "ListWorkspacesRequest":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to display.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        }
      }
    },
    "ListWorkspacesResponse":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that specifies the next page of results.</p>"
        },
        "workspaceSummaries":{
          "shape":"WorkspaceSummaries",
          "documentation":"<p>A list of objects that contain information about the workspaces.</p>"
        }
      }
    },
    "Long":{
      "type":"long",
      "box":true
    },
    "MaxResults":{
      "type":"integer",
      "box":true,
      "max":200,
      "min":0
    },
    "Name":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[a-zA-Z_\\-0-9]+"
    },
    "NextToken":{
      "type":"string",
      "max":17880,
      "min":0,
      "pattern":".*"
    },
    "OrderByTime":{
      "type":"string",
      "enum":[
        "ASCENDING",
        "DESCENDING"
      ]
    },
    "ParentEntityId":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"\\$ROOT|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+"
    },
    "ParentEntityUpdateRequest":{
      "type":"structure",
      "required":["updateType"],
      "members":{
        "parentEntityId":{
          "shape":"ParentEntityId",
          "documentation":"<p>The ID of the parent entity.</p>"
        },
        "updateType":{
          "shape":"ParentEntityUpdateType",
          "documentation":"<p>The type of the update.</p>"
        }
      },
      "documentation":"<p>The parent entity update request.</p>"
    },
    "ParentEntityUpdateType":{
      "type":"string",
      "enum":[
        "UPDATE",
        "DELETE"
      ]
    },
    "PropertyDefinitionRequest":{
      "type":"structure",
      "members":{
        "configuration":{
          "shape":"Configuration",
          "documentation":"<p>A mapping that specifies configuration information about the property. Use this field to specify information that you read from and write to an external source.</p>"
        },
        "dataType":{
          "shape":"DataType",
          "documentation":"<p>An object that contains information about the data type.</p>"
        },
        "defaultValue":{
          "shape":"DataValue",
          "documentation":"<p>An object that contains the default value.</p>"
        },
        "isExternalId":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property ID comes from an external data store.</p>"
        },
        "isRequiredInEntity":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property is required.</p>"
        },
        "isStoredExternally":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property is stored externally.</p>"
        },
        "isTimeSeries":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property consists of time series data.</p>"
        }
      },
      "documentation":"<p>An object that sets information about a property.</p>"
    },
    "PropertyDefinitionResponse":{
      "type":"structure",
      "required":[
        "dataType",
        "isExternalId",
        "isFinal",
        "isImported",
        "isInherited",
        "isRequiredInEntity",
        "isStoredExternally",
        "isTimeSeries"
      ],
      "members":{
        "configuration":{
          "shape":"Configuration",
          "documentation":"<p>A mapping that specifies configuration information about the property.</p>"
        },
        "dataType":{
          "shape":"DataType",
          "documentation":"<p>An object that contains information about the data type.</p>"
        },
        "defaultValue":{
          "shape":"DataValue",
          "documentation":"<p>An object that contains the default value.</p>"
        },
        "isExternalId":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property ID comes from an external data store.</p>"
        },
        "isFinal":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property definition can be updated.</p>"
        },
        "isImported":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property definition is imported from an external data store.</p>"
        },
        "isInherited":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property definition is inherited from a parent entity.</p>"
        },
        "isRequiredInEntity":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property is required in an entity.</p>"
        },
        "isStoredExternally":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property is stored externally.</p>"
        },
        "isTimeSeries":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether the property consists of time series data.</p>"
        }
      },
      "documentation":"<p>An object that contains response data from a property definition request.</p>"
    },
    "PropertyDefinitionsRequest":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"PropertyDefinitionRequest"}
    },
    "PropertyDefinitionsResponse":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"PropertyDefinitionResponse"}
    },
    "PropertyFilter":{
      "type":"structure",
      "members":{
        "operator":{
          "shape":"String",
          "documentation":"<p>The operator associated with this property filter.</p>"
        },
        "propertyName":{
          "shape":"String",
          "documentation":"<p>The property name associated with this property filter.</p>"
        },
        "value":{
          "shape":"DataValue",
          "documentation":"<p>The value associated with this property filter.</p>"
        }
      },
      "documentation":"<p>An object that filters items returned by a property request.</p>"
    },
    "PropertyFilters":{
      "type":"list",
      "member":{"shape":"PropertyFilter"},
      "max":10,
      "min":1
    },
    "PropertyLatestValue":{
      "type":"structure",
      "required":["propertyReference"],
      "members":{
        "propertyReference":{
          "shape":"EntityPropertyReference",
          "documentation":"<p>An object that specifies information about a property.&gt;</p>"
        },
        "propertyValue":{
          "shape":"DataValue",
          "documentation":"<p>The value of the property.</p>"
        }
      },
      "documentation":"<p>The latest value of the property.</p>"
    },
    "PropertyLatestValueMap":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"PropertyLatestValue"}
    },
    "PropertyRequest":{
      "type":"structure",
      "members":{
        "definition":{
          "shape":"PropertyDefinitionRequest",
          "documentation":"<p>An object that specifies information about a property.</p>"
        },
        "updateType":{
          "shape":"PropertyUpdateType",
          "documentation":"<p>The update type of the update property request.</p>"
        },
        "value":{
          "shape":"DataValue",
          "documentation":"<p>The value of the property.</p>"
        }
      },
      "documentation":"<p>An object that sets information about a property.</p>"
    },
    "PropertyRequests":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"PropertyRequest"}
    },
    "PropertyResponse":{
      "type":"structure",
      "members":{
        "definition":{
          "shape":"PropertyDefinitionResponse",
          "documentation":"<p>An object that specifies information about a property.</p>"
        },
        "value":{
          "shape":"DataValue",
          "documentation":"<p>The value of the property.</p>"
        }
      },
      "documentation":"<p>An object that contains information about a property response.</p>"
    },
    "PropertyResponses":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"PropertyResponse"}
    },
    "PropertyUpdateType":{
      "type":"string",
      "enum":[
        "UPDATE",
        "DELETE",
        "CREATE"
      ]
    },
    "PropertyValue":{
      "type":"structure",
      "required":["value"],
      "members":{
        "time":{
          "shape":"Time",
          "documentation":"<p>ISO8601 DateTime of a value for a time series property.</p> <p>The time for when the property value was recorded in ISO 8601 format: <i>YYYY-MM-DDThh:mm:ss[.SSSSSSSSS][Z/±HH:mm]</i>.</p> <ul> <li> <p> <i>[YYYY]</i>: year</p> </li> <li> <p> <i>[MM]</i>: month</p> </li> <li> <p> <i>[DD]</i>: day</p> </li> <li> <p> <i>[hh]</i>: hour</p> </li> <li> <p> <i>[mm]</i>: minute</p> </li> <li> <p> <i>[ss]</i>: seconds</p> </li> <li> <p> <i>[.SSSSSSSSS]</i>: additional precision, where precedence is maintained. For example: [.573123] is equal to 573123000 nanoseconds.</p> </li> <li> <p> <i>Z</i>: default timezone UTC</p> </li> <li> <p> <i>± HH:mm</i>: time zone offset in Hours and Minutes.</p> </li> </ul> <p> <i>Required sub-fields</i>: YYYY-MM-DDThh:mm:ss and [Z/±HH:mm]</p>"
        },
        "timestamp":{
          "shape":"Timestamp",
          "documentation":"<p>The timestamp of a value for a time series property.</p>",
          "deprecated":true,
          "deprecatedMessage":"This field is deprecated and will throw an error in the future. Use time instead."
        },
        "value":{
          "shape":"DataValue",
          "documentation":"<p>An object that specifies a value for a time series property.</p>"
        }
      },
      "documentation":"<p>An object that contains information about a value for a time series property.</p>"
    },
    "PropertyValueEntry":{
      "type":"structure",
      "required":["entityPropertyReference"],
      "members":{
        "entityPropertyReference":{
          "shape":"EntityPropertyReference",
          "documentation":"<p>An object that contains information about the entity that has the property.</p>"
        },
        "propertyValues":{
          "shape":"PropertyValues",
          "documentation":"<p>A list of objects that specify time series property values.</p>"
        }
      },
      "documentation":"<p>An object that specifies information about time series property values. This object is used and consumed by the <a href=\"https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_BatchPutPropertyValues.html\">BatchPutPropertyValues</a> action.</p>"
    },
    "PropertyValueHistory":{
      "type":"structure",
      "required":["entityPropertyReference"],
      "members":{
        "entityPropertyReference":{
          "shape":"EntityPropertyReference",
          "documentation":"<p>An object that uniquely identifies an entity property.</p>"
        },
        "values":{
          "shape":"Values",
          "documentation":"<p>A list of objects that contain information about the values in the history of a time series property.</p>"
        }
      },
      "documentation":"<p>The history of values for a time series property.</p>"
    },
    "PropertyValueList":{
      "type":"list",
      "member":{"shape":"PropertyValueHistory"}
    },
    "PropertyValues":{
      "type":"list",
      "member":{"shape":"PropertyValue"},
      "max":10,
      "min":1
    },
    "Relationship":{
      "type":"structure",
      "members":{
        "relationshipType":{
          "shape":"String",
          "documentation":"<p>The type of the relationship.</p>"
        },
        "targetComponentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the target component type associated with this relationship.</p>"
        }
      },
      "documentation":"<p>An object that specifies a relationship with another component type.</p>"
    },
    "RelationshipValue":{
      "type":"structure",
      "members":{
        "targetComponentName":{
          "shape":"Name",
          "documentation":"<p>The name of the target component associated with the relationship value.</p>"
        },
        "targetEntityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the target entity associated with this relationship value.</p>"
        }
      },
      "documentation":"<p>A value that associates a component and an entity.</p>"
    },
    "RequiredProperties":{
      "type":"list",
      "member":{"shape":"Name"}
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The resource wasn't found.</p>",
      "error":{
        "httpStatusCode":404,
        "senderFault":true
      },
      "exception":true
    },
    "RoleArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:((aws)|(aws-cn)|(aws-us-gov)):iam::[0-9]{12}:role/.*"
    },
    "S3Location":{
      "type":"string",
      "max":1024,
      "min":0,
      "pattern":".*(^arn:((aws)|(aws-cn)|(aws-us-gov)):s3:::)([a-zA-Z0-9_-]+$).*"
    },
    "S3Url":{
      "type":"string",
      "max":256,
      "min":0,
      "pattern":"[sS]3://[A-Za-z0-9._/-]+"
    },
    "SceneCapabilities":{
      "type":"list",
      "member":{"shape":"SceneCapability"},
      "max":50,
      "min":0
    },
    "SceneCapability":{
      "type":"string",
      "max":256,
      "min":0,
      "pattern":".*"
    },
    "SceneSummaries":{
      "type":"list",
      "member":{"shape":"SceneSummary"}
    },
    "SceneSummary":{
      "type":"structure",
      "required":[
        "arn",
        "contentLocation",
        "creationDateTime",
        "sceneId",
        "updateDateTime"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the scene.</p>"
        },
        "contentLocation":{
          "shape":"S3Url",
          "documentation":"<p>The relative path that specifies the location of the content definition file.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the scene was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The scene description.</p>"
        },
        "sceneId":{
          "shape":"Id",
          "documentation":"<p>The ID of the scene.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the scene was last updated.</p>"
        }
      },
      "documentation":"<p>An object that contains information about a scene.</p>"
    },
    "Scope":{
      "type":"string",
      "enum":[
        "ENTITY",
        "WORKSPACE"
      ]
    },
    "SelectedPropertyList":{
      "type":"list",
      "member":{"shape":"String"},
      "max":10,
      "min":1
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The service quota was exceeded.</p>",
      "error":{
        "httpStatusCode":402,
        "senderFault":true
      },
      "exception":true
    },
    "State":{
      "type":"string",
      "enum":[
        "CREATING",
        "UPDATING",
        "DELETING",
        "ACTIVE",
        "ERROR"
      ]
    },
    "Status":{
      "type":"structure",
      "members":{
        "error":{
          "shape":"ErrorDetails",
          "documentation":"<p>The error message.</p>"
        },
        "state":{
          "shape":"State",
          "documentation":"<p>The current state of the entity, component, component type, or workspace.</p>"
        }
      },
      "documentation":"<p>An object that represents the status of an entity, component, component type, or workspace.</p>"
    },
    "String":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":".*"
    },
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)"
    },
    "TagKeyList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":50,
      "min":0
    },
    "TagMap":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"},
      "max":50,
      "min":0
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceARN",
        "tags"
      ],
      "members":{
        "resourceARN":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the resource.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Metadata to add to this resource.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":".*"
    },
    "ThrottlingException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The rate exceeds the limit.</p>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true
    },
    "Time":{
      "type":"string",
      "documentation":"<p>Timestamp represented in ISO 8601 format</p>",
      "max":35,
      "min":20
    },
    "Timestamp":{
      "type":"timestamp",
      "documentation":"<p>supports epoch seconds value</p>"
    },
    "TooManyTagsException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ExceptionMessage"}
      },
      "documentation":"<p>The number of tags exceeds the limit.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "TwinMakerArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+"
    },
    "Type":{
      "type":"string",
      "enum":[
        "RELATIONSHIP",
        "STRING",
        "LONG",
        "BOOLEAN",
        "INTEGER",
        "DOUBLE",
        "LIST",
        "MAP"
      ]
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceARN",
        "tagKeys"
      ],
      "members":{
        "resourceARN":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the resource.</p>",
          "location":"querystring",
          "locationName":"resourceARN"
        },
        "tagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p>A list of tag key names to remove from the resource. You don't specify the value. Both the key and its associated value are removed.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateComponentTypeRequest":{
      "type":"structure",
      "required":[
        "componentTypeId",
        "workspaceId"
      ],
      "members":{
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>",
          "location":"uri",
          "locationName":"componentTypeId"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the component type.</p>"
        },
        "extendsFrom":{
          "shape":"ExtendsFrom",
          "documentation":"<p>Specifies the component type that this component type extends.</p>"
        },
        "functions":{
          "shape":"FunctionsRequest",
          "documentation":"<p>An object that maps strings to the functions in the component type. Each string in the mapping must be unique to this object.</p>"
        },
        "isSingleton":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that specifies whether an entity can have more than one component of this type.</p>"
        },
        "propertyDefinitions":{
          "shape":"PropertyDefinitionsRequest",
          "documentation":"<p>An object that maps strings to the property definitions in the component type. Each string in the mapping must be unique to this object.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the component type.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "UpdateComponentTypeResponse":{
      "type":"structure",
      "required":[
        "arn",
        "componentTypeId",
        "state",
        "workspaceId"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the component type.</p>"
        },
        "componentTypeId":{
          "shape":"ComponentTypeId",
          "documentation":"<p>The ID of the component type.</p>"
        },
        "state":{
          "shape":"State",
          "documentation":"<p>The current state of the component type.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the component type.</p>"
        }
      }
    },
    "UpdateEntityRequest":{
      "type":"structure",
      "required":[
        "entityId",
        "workspaceId"
      ],
      "members":{
        "componentUpdates":{
          "shape":"ComponentUpdatesMapRequest",
          "documentation":"<p>An object that maps strings to the component updates in the request. Each string in the mapping must be unique to this object.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the entity.</p>"
        },
        "entityId":{
          "shape":"EntityId",
          "documentation":"<p>The ID of the entity.</p>",
          "location":"uri",
          "locationName":"entityId"
        },
        "entityName":{
          "shape":"EntityName",
          "documentation":"<p>The name of the entity.</p>"
        },
        "parentEntityUpdate":{
          "shape":"ParentEntityUpdateRequest",
          "documentation":"<p>An object that describes the update request for a parent entity.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the entity.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "UpdateEntityResponse":{
      "type":"structure",
      "required":[
        "state",
        "updateDateTime"
      ],
      "members":{
        "state":{
          "shape":"State",
          "documentation":"<p>The current state of the entity update.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the entity was last updated.</p>"
        }
      }
    },
    "UpdateSceneRequest":{
      "type":"structure",
      "required":[
        "sceneId",
        "workspaceId"
      ],
      "members":{
        "capabilities":{
          "shape":"SceneCapabilities",
          "documentation":"<p>A list of capabilities that the scene uses to render.</p>"
        },
        "contentLocation":{
          "shape":"S3Url",
          "documentation":"<p>The relative path that specifies the location of the content definition file.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of this scene.</p>"
        },
        "sceneId":{
          "shape":"Id",
          "documentation":"<p>The ID of the scene.</p>",
          "location":"uri",
          "locationName":"sceneId"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace that contains the scene.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "UpdateSceneResponse":{
      "type":"structure",
      "required":["updateDateTime"],
      "members":{
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the scene was last updated.</p>"
        }
      }
    },
    "UpdateWorkspaceRequest":{
      "type":"structure",
      "required":["workspaceId"],
      "members":{
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the workspace.</p>"
        },
        "role":{
          "shape":"RoleArn",
          "documentation":"<p>The ARN of the execution role associated with the workspace.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>",
          "location":"uri",
          "locationName":"workspaceId"
        }
      }
    },
    "UpdateWorkspaceResponse":{
      "type":"structure",
      "required":["updateDateTime"],
      "members":{
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time of the current update.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>Failed</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "Value":{
      "type":"string",
      "pattern":".*"
    },
    "Values":{
      "type":"list",
      "member":{"shape":"PropertyValue"}
    },
    "WorkspaceSummaries":{
      "type":"list",
      "member":{"shape":"WorkspaceSummary"}
    },
    "WorkspaceSummary":{
      "type":"structure",
      "required":[
        "arn",
        "creationDateTime",
        "updateDateTime",
        "workspaceId"
      ],
      "members":{
        "arn":{
          "shape":"TwinMakerArn",
          "documentation":"<p>The ARN of the workspace.</p>"
        },
        "creationDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the workspace was created.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the workspace.</p>"
        },
        "updateDateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the workspace was last updated.</p>"
        },
        "workspaceId":{
          "shape":"Id",
          "documentation":"<p>The ID of the workspace.</p>"
        }
      },
      "documentation":"<p>An object that contains information about a workspace.</p>"
    }
  },
  "documentation":"<p>IoT TwinMaker is a service that enables you to build operational digital twins of physical systems. IoT TwinMaker overlays measurements and analysis from real-world sensors, cameras, and enterprise applications so you can create data visualizations to monitor your physical factory, building, or industrial plant. You can use this real-world data to monitor operations and diagnose and repair errors.</p>"
}
