You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2014/12/08 21:29:46 UTC

[23/51] [partial] incubator-nifi git commit: Initial code contribution

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/SystemDiagnosticsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/SystemDiagnosticsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/SystemDiagnosticsDTO.java
new file mode 100644
index 0000000..0b20852
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/SystemDiagnosticsDTO.java
@@ -0,0 +1,461 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto;
+
+import java.util.Date;
+import java.util.Set;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.TimeAdapter;
+
+/**
+ * The diagnostics of the system this NiFi is running on.
+ */
+@XmlType(name = "systemDiagnostics")
+public class SystemDiagnosticsDTO {
+
+    private String totalNonHeap;
+    private String usedNonHeap;
+    private String freeNonHeap;
+    private String maxNonHeap;
+    private String nonHeapUtilization;
+
+    private String totalHeap;
+    private String usedHeap;
+    private String freeHeap;
+    private String maxHeap;
+    private String heapUtilization;
+
+    private Integer availableProcessors;
+    private Double processorLoadAverage;
+
+    private Integer totalThreads;
+    private Integer daemonThreads;
+
+    private StorageUsageDTO flowFileRepositoryStorageUsage;
+    private Set<StorageUsageDTO> contentRepositoryStorageUsage;
+    private Set<GarbageCollectionDTO> garbageCollection;
+
+    private Date statsLastRefreshed;
+
+    /* getters / setters */
+    /**
+     * The number of available processors, if supported.
+     *
+     * @return
+     */
+    public Integer getAvailableProcessors() {
+        return availableProcessors;
+    }
+
+    public void setAvailableProcessors(Integer availableProcessors) {
+        this.availableProcessors = availableProcessors;
+    }
+
+    /**
+     * The number of daemon threads.
+     *
+     * @return
+     */
+    public Integer getDaemonThreads() {
+        return daemonThreads;
+    }
+
+    public void setDaemonThreads(Integer daemonThreads) {
+        this.daemonThreads = daemonThreads;
+    }
+
+    /**
+     * The amount of free heap.
+     *
+     * @return
+     */
+    public String getFreeHeap() {
+        return freeHeap;
+    }
+
+    public void setFreeHeap(String freeHeap) {
+        this.freeHeap = freeHeap;
+    }
+
+    /**
+     * The amount of free non-heap.
+     *
+     * @return
+     */
+    public String getFreeNonHeap() {
+        return freeNonHeap;
+    }
+
+    public void setFreeNonHeap(String freeNonHeap) {
+        this.freeNonHeap = freeNonHeap;
+    }
+
+    /**
+     * The max size of the heap.
+     *
+     * @return
+     */
+    public String getMaxHeap() {
+        return maxHeap;
+    }
+
+    public void setMaxHeap(String maxHeap) {
+        this.maxHeap = maxHeap;
+    }
+
+    /**
+     * The max size of the non-heap.
+     *
+     * @return
+     */
+    public String getMaxNonHeap() {
+        return maxNonHeap;
+    }
+
+    public void setMaxNonHeap(String maxNonHeap) {
+        this.maxNonHeap = maxNonHeap;
+    }
+
+    /**
+     * The processor load average, if supported.
+     *
+     * @return
+     */
+    public Double getProcessorLoadAverage() {
+        return processorLoadAverage;
+    }
+
+    public void setProcessorLoadAverage(Double processorLoadAverage) {
+        this.processorLoadAverage = processorLoadAverage;
+    }
+
+    /**
+     * The total size of the heap.
+     *
+     * @return
+     */
+    public String getTotalHeap() {
+        return totalHeap;
+    }
+
+    public void setTotalHeap(String totalHeap) {
+        this.totalHeap = totalHeap;
+    }
+
+    /**
+     * The total size of non-heap.
+     *
+     * @return
+     */
+    public String getTotalNonHeap() {
+        return totalNonHeap;
+    }
+
+    public void setTotalNonHeap(String totalNonHeap) {
+        this.totalNonHeap = totalNonHeap;
+    }
+
+    /**
+     * The total number of threads.
+     *
+     * @return
+     */
+    public Integer getTotalThreads() {
+        return totalThreads;
+    }
+
+    public void setTotalThreads(Integer totalThreads) {
+        this.totalThreads = totalThreads;
+    }
+
+    /**
+     * The amount of used heap.
+     *
+     * @return
+     */
+    public String getUsedHeap() {
+        return usedHeap;
+    }
+
+    public void setUsedHeap(String usedHeap) {
+        this.usedHeap = usedHeap;
+    }
+
+    /**
+     * The amount of used non-heap.
+     *
+     * @return
+     */
+    public String getUsedNonHeap() {
+        return usedNonHeap;
+    }
+
+    public void setUsedNonHeap(String usedNonHeap) {
+        this.usedNonHeap = usedNonHeap;
+    }
+
+    /**
+     * The heap utilization.
+     *
+     * @return
+     */
+    public String getHeapUtilization() {
+        return heapUtilization;
+    }
+
+    public void setHeapUtilization(String heapUtilization) {
+        this.heapUtilization = heapUtilization;
+    }
+
+    /**
+     * The non-heap utilization.
+     *
+     * @return
+     */
+    public String getNonHeapUtilization() {
+        return nonHeapUtilization;
+    }
+
+    public void setNonHeapUtilization(String nonHeapUsage) {
+        this.nonHeapUtilization = nonHeapUsage;
+    }
+
+    /**
+     * The content repository storage usage.
+     *
+     * @return
+     */
+    public Set<StorageUsageDTO> getContentRepositoryStorageUsage() {
+        return contentRepositoryStorageUsage;
+    }
+
+    public void setContentRepositoryStorageUsage(Set<StorageUsageDTO> contentRepositoryStorageUsage) {
+        this.contentRepositoryStorageUsage = contentRepositoryStorageUsage;
+    }
+
+    /**
+     * The flowfile repository storage usage.
+     *
+     * @return
+     */
+    public StorageUsageDTO getFlowFileRepositoryStorageUsage() {
+        return flowFileRepositoryStorageUsage;
+    }
+
+    public void setFlowFileRepositoryStorageUsage(StorageUsageDTO flowFileRepositoryStorageUsage) {
+        this.flowFileRepositoryStorageUsage = flowFileRepositoryStorageUsage;
+    }
+
+    /**
+     * Garbage collection details.
+     *
+     * @return
+     */
+    public Set<GarbageCollectionDTO> getGarbageCollection() {
+        return garbageCollection;
+    }
+
+    public void setGarbageCollection(Set<GarbageCollectionDTO> garbageCollection) {
+        this.garbageCollection = garbageCollection;
+    }
+
+    /**
+     * When these diagnostics were generated.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(TimeAdapter.class)
+    public Date getStatsLastRefreshed() {
+        return statsLastRefreshed;
+    }
+
+    public void setStatsLastRefreshed(Date statsLastRefreshed) {
+        this.statsLastRefreshed = statsLastRefreshed;
+    }
+
+    /**
+     * Details of storage usage.
+     */
+    @XmlType(name = "storageUsage")
+    public static class StorageUsageDTO {
+
+        private String identifier;
+        private String freeSpace;
+        private String totalSpace;
+        private String usedSpace;
+        private Long freeSpaceBytes;
+        private Long totalSpaceBytes;
+        private Long usedSpaceBytes;
+        private String utilization;
+
+        /**
+         * The identifier for this storage location.
+         *
+         * @return
+         */
+        public String getIdentifier() {
+            return identifier;
+        }
+
+        public void setIdentifier(String identifier) {
+            this.identifier = identifier;
+        }
+
+        /**
+         * The amount of free space.
+         *
+         * @return
+         */
+        public String getFreeSpace() {
+            return freeSpace;
+        }
+
+        public void setFreeSpace(String freeSpace) {
+            this.freeSpace = freeSpace;
+        }
+
+        /**
+         * The amount of total space.
+         *
+         * @param freeSpace
+         */
+        public String getTotalSpace() {
+            return totalSpace;
+        }
+
+        public void setTotalSpace(String totalSpace) {
+            this.totalSpace = totalSpace;
+        }
+
+        /**
+         * The amount of used space.
+         *
+         * @return
+         */
+        public String getUsedSpace() {
+            return usedSpace;
+        }
+
+        public void setUsedSpace(String usedSpace) {
+            this.usedSpace = usedSpace;
+        }
+
+        /**
+         * The utilization of this storage location.
+         *
+         * @return
+         */
+        public String getUtilization() {
+            return utilization;
+        }
+
+        public void setUtilization(String utilization) {
+            this.utilization = utilization;
+        }
+
+        /**
+         * The number of bytes of free space.
+         *
+         * @return
+         */
+        public Long getFreeSpaceBytes() {
+            return freeSpaceBytes;
+        }
+
+        public void setFreeSpaceBytes(Long freeSpaceBytes) {
+            this.freeSpaceBytes = freeSpaceBytes;
+        }
+
+        /**
+         * The number of bytes of total space.
+         *
+         * @return
+         */
+        public Long getTotalSpaceBytes() {
+            return totalSpaceBytes;
+        }
+
+        public void setTotalSpaceBytes(Long totalSpaceBytes) {
+            this.totalSpaceBytes = totalSpaceBytes;
+        }
+
+        /**
+         * The number of bytes of used space.
+         *
+         * @return
+         */
+        public Long getUsedSpaceBytes() {
+            return usedSpaceBytes;
+        }
+
+        public void setUsedSpaceBytes(Long usedSpaceBytes) {
+            this.usedSpaceBytes = usedSpaceBytes;
+        }
+    }
+
+    /**
+     * Details for garbage collection.
+     */
+    @XmlType(name = "garbageCollection")
+    public static class GarbageCollectionDTO {
+
+        private String name;
+        private long collectionCount;
+        private String collectionTime;
+
+        /**
+         * The name of the garbage collector.
+         *
+         * @return
+         */
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public long getCollectionCount() {
+            return collectionCount;
+        }
+
+        /**
+         * The number of times garbage collection has run.
+         *
+         * @param collectionCount
+         */
+        public void setCollectionCount(long collectionCount) {
+            this.collectionCount = collectionCount;
+        }
+
+        /**
+         * The total amount of time spent garbage collecting.
+         *
+         * @return
+         */
+        public String getCollectionTime() {
+            return collectionTime;
+        }
+
+        public void setCollectionTime(String collectionTime) {
+            this.collectionTime = collectionTime;
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/TemplateDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/TemplateDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/TemplateDTO.java
new file mode 100644
index 0000000..156a6e9
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/TemplateDTO.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto;
+
+import java.util.Date;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.DateTimeAdapter;
+
+/**
+ * Defines a template.
+ */
+@XmlRootElement(name = "template")
+public class TemplateDTO {
+
+    private String uri;
+
+    private String id;
+    private String name;
+    private String description;
+    private Date timestamp;
+
+    private FlowSnippetDTO snippet;
+
+    /**
+     * The id for this template.
+     *
+     * @return
+     */
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    /**
+     * The uri for this template.
+     *
+     * @return
+     */
+    public String getUri() {
+        return uri;
+    }
+
+    public void setUri(String uri) {
+        this.uri = uri;
+    }
+
+    /**
+     * The name of this template.
+     *
+     * @return
+     */
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * The description of this template.
+     *
+     * @return
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    /**
+     * The timestamp when this template was created.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(Date timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    /**
+     * The snippet in this template.
+     *
+     * @return
+     */
+    public FlowSnippetDTO getSnippet() {
+        return snippet;
+    }
+
+    public void setSnippet(FlowSnippetDTO snippet) {
+        this.snippet = snippet;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserDTO.java
new file mode 100644
index 0000000..85c82dc
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserDTO.java
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto;
+
+import java.util.Date;
+import java.util.Set;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.DateTimeAdapter;
+
+/**
+ * A user of this NiFi.
+ */
+@XmlType(name = "user")
+public class UserDTO {
+
+    private String id;
+    private String dn;
+    private String userName;
+    private String userGroup;
+    private String justification;
+    private Date creation;
+    private String status;
+
+    private Date lastVerified;
+    private Date lastAccessed;
+    private Set<String> authorities;
+
+    /**
+     * The user id.
+     *
+     * @return
+     */
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    /**
+     * The users authorities.
+     *
+     * @return
+     */
+    public Set<String> getAuthorities() {
+        return authorities;
+    }
+
+    public void setAuthorities(Set<String> authorities) {
+        this.authorities = authorities;
+    }
+
+    /**
+     * The creation time for this users account.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getCreation() {
+        return creation;
+    }
+
+    public void setCreation(Date creation) {
+        this.creation = creation;
+    }
+
+    /**
+     * The users DN.
+     *
+     * @return
+     */
+    public String getDn() {
+        return dn;
+    }
+
+    public void setDn(String dn) {
+        this.dn = dn;
+    }
+
+    /**
+     * The users name. If the name could not be extracted from the DN, this
+     * value will be the entire DN.
+     *
+     * @return
+     */
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * The user group.
+     *
+     * @return
+     */
+    public String getUserGroup() {
+        return userGroup;
+    }
+
+    public void setUserGroup(String userGroup) {
+        this.userGroup = userGroup;
+    }
+
+    /**
+     * The users account justification.
+     *
+     * @return
+     */
+    public String getJustification() {
+        return justification;
+    }
+
+    public void setJustification(String justification) {
+        this.justification = justification;
+    }
+
+    /**
+     * The time that the user last accessed the system.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getLastAccessed() {
+        return lastAccessed;
+    }
+
+    public void setLastAccessed(Date lastAccessed) {
+        this.lastAccessed = lastAccessed;
+    }
+
+    /**
+     * The time that the users credentials were last verified.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getLastVerified() {
+        return lastVerified;
+    }
+
+    public void setLastVerified(Date lastVerified) {
+        this.lastVerified = lastVerified;
+    }
+
+    /**
+     * The status of the users account.
+     *
+     * @return
+     */
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserGroupDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserGroupDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserGroupDTO.java
new file mode 100644
index 0000000..285c355
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/UserGroupDTO.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto;
+
+import java.util.Set;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * A user group in this NiFi.
+ */
+@XmlType(name = "userGroup")
+public class UserGroupDTO {
+
+    private String group;
+    private Set<String> userIds;
+    private Set<String> authorities;
+    private String status;
+
+    /**
+     * The user group.
+     *
+     * @return
+     */
+    public String getGroup() {
+        return group;
+    }
+
+    public void setGroup(String group) {
+        this.group = group;
+    }
+
+    /**
+     * The users in this group.
+     *
+     * @return
+     */
+    public Set<String> getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(Set<String> userIds) {
+        this.userIds = userIds;
+    }
+
+    /**
+     * The status of the users account.
+     *
+     * @return
+     */
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    /**
+     * The users authorities.
+     *
+     * @return
+     */
+    public Set<String> getAuthorities() {
+        return authorities;
+    }
+
+    public void setAuthorities(Set<String> authorities) {
+        this.authorities = authorities;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/ActionDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/ActionDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/ActionDTO.java
new file mode 100644
index 0000000..8402480
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/ActionDTO.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action;
+
+import java.util.Date;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.action.component.details.ComponentDetailsDTO;
+import org.apache.nifi.web.api.dto.action.details.ActionDetailsDTO;
+import org.apache.nifi.web.api.dto.util.DateTimeAdapter;
+
+/**
+ * An action performed in this NiFi.
+ */
+@XmlType(name = "action")
+public class ActionDTO {
+
+    private Integer id;
+    private String userDn;
+    private String userName;
+    private Date timestamp;
+
+    private String sourceId;
+    private String sourceName;
+    private String sourceType;
+    private ComponentDetailsDTO componentDetails;
+
+    private String operation;
+    private ActionDetailsDTO actionDetails;
+
+    /**
+     * The action id.
+     *
+     * @return
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * The user dn who perform this action.
+     *
+     * @return
+     */
+    public String getUserDn() {
+        return userDn;
+    }
+
+    public void setUserDn(String userDn) {
+        this.userDn = userDn;
+    }
+
+    /**
+     * The user name who perform this action.
+     *
+     * @return
+     */
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * This action's timestamp.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(Date timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    /**
+     * The id of the source component of this action.
+     *
+     * @return
+     */
+    public String getSourceId() {
+        return sourceId;
+    }
+
+    public void setSourceId(String sourceId) {
+        this.sourceId = sourceId;
+    }
+
+    /**
+     * The name of the source component of this action.
+     *
+     * @return
+     */
+    public String getSourceName() {
+        return sourceName;
+    }
+
+    public void setSourceName(String sourceName) {
+        this.sourceName = sourceName;
+    }
+
+    /**
+     * The type of the source component of this action.
+     *
+     * @return
+     */
+    public String getSourceType() {
+        return sourceType;
+    }
+
+    public void setSourceType(String sourceType) {
+        this.sourceType = sourceType;
+    }
+
+    /**
+     * The component details (if any) for this action.
+     *
+     * @return
+     */
+    public ComponentDetailsDTO getComponentDetails() {
+        return componentDetails;
+    }
+
+    public void setComponentDetails(ComponentDetailsDTO componentDetails) {
+        this.componentDetails = componentDetails;
+    }
+
+    /**
+     * The operation being performed in this action.
+     *
+     * @return
+     */
+    public String getOperation() {
+        return operation;
+    }
+
+    public void setOperation(String operation) {
+        this.operation = operation;
+    }
+
+    /**
+     * The action details (if any) for this action.
+     *
+     * @return
+     */
+    public ActionDetailsDTO getActionDetails() {
+        return actionDetails;
+    }
+
+    public void setActionDetails(ActionDetailsDTO actionDetails) {
+        this.actionDetails = actionDetails;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryDTO.java
new file mode 100644
index 0000000..9ab47ed
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryDTO.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action;
+
+import java.util.Collection;
+import java.util.Date;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.TimeAdapter;
+
+/**
+ * NiFi action history.
+ */
+@XmlType(name = "history")
+public class HistoryDTO {
+
+    private Integer total;
+    private Date lastRefreshed;
+    private Collection<ActionDTO> actions;
+
+    /**
+     * The total number of actions.
+     *
+     * @return
+     */
+    public Integer getTotal() {
+        return total;
+    }
+
+    public void setTotal(Integer total) {
+        this.total = total;
+    }
+
+    /**
+     * Timestamp when these records were returned.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(TimeAdapter.class)
+    public Date getLastRefreshed() {
+        return lastRefreshed;
+    }
+
+    public void setLastRefreshed(Date lastRefreshed) {
+        this.lastRefreshed = lastRefreshed;
+    }
+
+    /**
+     * The actions for this range.
+     *
+     * @return
+     */
+    public Collection<ActionDTO> getActions() {
+        return actions;
+    }
+
+    public void setActions(Collection<ActionDTO> actions) {
+        this.actions = actions;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryQueryDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryQueryDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryQueryDTO.java
new file mode 100644
index 0000000..e8e11e5
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/HistoryQueryDTO.java
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action;
+
+import java.util.Date;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.DateTimeAdapter;
+
+/**
+ * A history query to find desired actions.
+ */
+@XmlType(name = "historyQuery")
+public class HistoryQueryDTO {
+
+    private String userName;
+    private String sourceId;
+    private Date startDate;
+    private Date endDate;
+    private Integer offset;
+    private Integer count;
+    private String sortColumn;
+    private String sortOrder;
+
+    /**
+     * The user name.
+     *
+     * @return
+     */
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * The source component id.
+     *
+     * @return
+     */
+    public String getSourceId() {
+        return sourceId;
+    }
+
+    public void setSourceId(String sourceId) {
+        this.sourceId = sourceId;
+    }
+
+    /**
+     * The start date.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    /**
+     * The end date.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    /**
+     * The offset.
+     *
+     * @return
+     */
+    public Integer getOffset() {
+        return offset;
+    }
+
+    public void setOffset(Integer offset) {
+        this.offset = offset;
+    }
+
+    /**
+     * The desired row count.
+     *
+     * @return
+     */
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
+
+    /**
+     * The desired sort column.
+     *
+     * @return
+     */
+    public String getSortColumn() {
+        return sortColumn;
+    }
+
+    public void setSortColumn(String sortColumn) {
+        this.sortColumn = sortColumn;
+    }
+
+    /**
+     * The desired sort order.
+     *
+     * @return
+     */
+    public String getSortOrder() {
+        return sortOrder;
+    }
+
+    public void setSortOrder(String sortOrder) {
+        this.sortOrder = sortOrder;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ComponentDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ComponentDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ComponentDetailsDTO.java
new file mode 100644
index 0000000..58086ce
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ComponentDetailsDTO.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.component.details;
+
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ *
+ */
+@XmlType(name = "componentDetails")
+@XmlSeeAlso({
+    ProcessorDetailsDTO.class,
+    RemoteProcessGroupDetailsDTO.class
+})
+public class ComponentDetailsDTO {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ProcessorDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ProcessorDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ProcessorDetailsDTO.java
new file mode 100644
index 0000000..3523f62
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/ProcessorDetailsDTO.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.component.details;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Processor details for an action.
+ */
+@XmlType(name = "processorDetails")
+public class ProcessorDetailsDTO extends ComponentDetailsDTO {
+
+    private String type;
+
+    /**
+     * The processors type.
+     *
+     * @return
+     */
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/RemoteProcessGroupDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/RemoteProcessGroupDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/RemoteProcessGroupDetailsDTO.java
new file mode 100644
index 0000000..2809398
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/component/details/RemoteProcessGroupDetailsDTO.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.component.details;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Remote process group details for an action.
+ */
+@XmlType(name = "remoteProcessGroupDetails")
+public class RemoteProcessGroupDetailsDTO extends ComponentDetailsDTO {
+
+    private String uri;
+
+    /**
+     * The URI of the remote process group.
+     *
+     * @return
+     */
+    public String getUri() {
+        return uri;
+    }
+
+    public void setUri(String uri) {
+        this.uri = uri;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ActionDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ActionDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ActionDetailsDTO.java
new file mode 100644
index 0000000..4074cba
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ActionDetailsDTO.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.details;
+
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ *
+ */
+@XmlType(name = "details")
+@XmlSeeAlso({
+    ConfigureDetailsDTO.class,
+    MoveDetailsDTO.class,
+    ConnectDetailsDTO.class,
+    PurgeDetailsDTO.class
+})
+public class ActionDetailsDTO {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConfigureDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConfigureDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConfigureDetailsDTO.java
new file mode 100644
index 0000000..4011b00
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConfigureDetailsDTO.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.details;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Configuration details for an Action.
+ */
+@XmlType(name = "configureDetails")
+public class ConfigureDetailsDTO extends ActionDetailsDTO {
+
+    private String name;
+    private String previousValue;
+    private String value;
+
+    /**
+     * The name of the property that was modified.
+     *
+     * @return
+     */
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * The previous value.
+     *
+     * @return
+     */
+    public String getPreviousValue() {
+        return previousValue;
+    }
+
+    public void setPreviousValue(String previousValue) {
+        this.previousValue = previousValue;
+    }
+
+    /**
+     * The new value.
+     *
+     * @return
+     */
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConnectDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConnectDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConnectDetailsDTO.java
new file mode 100644
index 0000000..ba88bd1
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/ConnectDetailsDTO.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.details;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Details for connect Actions.
+ */
+@XmlType(name = "connectDetails")
+public class ConnectDetailsDTO extends ActionDetailsDTO {
+
+    private String sourceId;
+    private String sourceName;
+    private String sourceType;
+    private String relationship;
+    private String destinationId;
+    private String destinationName;
+    private String destinationType;
+
+    /**
+     * The id of the source of the connection.
+     *
+     * @return
+     */
+    public String getSourceId() {
+        return sourceId;
+    }
+
+    public void setSourceId(String sourceId) {
+        this.sourceId = sourceId;
+    }
+
+    /**
+     * The name of the source of the connection.
+     *
+     * @return
+     */
+    public String getSourceName() {
+        return sourceName;
+    }
+
+    public void setSourceName(String sourceName) {
+        this.sourceName = sourceName;
+    }
+
+    /**
+     * The type of the source of the connection.
+     *
+     * @return
+     */
+    public String getSourceType() {
+        return sourceType;
+    }
+
+    public void setSourceType(String sourceType) {
+        this.sourceType = sourceType;
+    }
+
+    /**
+     * The name of the relationship that was connected.
+     *
+     * @return
+     */
+    public String getRelationship() {
+        return relationship;
+    }
+
+    public void setRelationship(String relationship) {
+        this.relationship = relationship;
+    }
+
+    /**
+     * The id of the destination of the connection.
+     *
+     * @return
+     */
+    public String getDestinationId() {
+        return destinationId;
+    }
+
+    public void setDestinationId(String destinationId) {
+        this.destinationId = destinationId;
+    }
+
+    /**
+     * The name of the destination of the connection.
+     *
+     * @return
+     */
+    public String getDestinationName() {
+        return destinationName;
+    }
+
+    public void setDestinationName(String destinationName) {
+        this.destinationName = destinationName;
+    }
+
+    /**
+     * The type of the destination of the connection.
+     *
+     * @return
+     */
+    public String getDestinationType() {
+        return destinationType;
+    }
+
+    public void setDestinationType(String destinationType) {
+        this.destinationType = destinationType;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/MoveDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/MoveDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/MoveDetailsDTO.java
new file mode 100644
index 0000000..c6f0450
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/MoveDetailsDTO.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.details;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Details of the move operation.
+ */
+@XmlType(name = "moveDetails")
+public class MoveDetailsDTO extends ActionDetailsDTO {
+
+    private String previousGroupId;
+    private String previousGroup;
+    private String groupId;
+    private String group;
+
+    /**
+     * The id of the group the components previously belonged to.
+     *
+     * @return
+     */
+    public String getPreviousGroupId() {
+        return previousGroupId;
+    }
+
+    public void setPreviousGroupId(String previousGroupId) {
+        this.previousGroupId = previousGroupId;
+    }
+
+    /**
+     * The name of the group of the components previously belonged to.
+     *
+     * @return
+     */
+    public String getPreviousGroup() {
+        return previousGroup;
+    }
+
+    public void setPreviousGroup(String previousGroup) {
+        this.previousGroup = previousGroup;
+    }
+
+    /**
+     * The id of the group the components belong to.
+     *
+     * @return
+     */
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    /**
+     * The name of the group the components belong to.
+     *
+     * @return
+     */
+    public String getGroup() {
+        return group;
+    }
+
+    public void setGroup(String group) {
+        this.group = group;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/PurgeDetailsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/PurgeDetailsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/PurgeDetailsDTO.java
new file mode 100644
index 0000000..b5a5bcb
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/action/details/PurgeDetailsDTO.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.action.details;
+
+import java.util.Date;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.DateTimeAdapter;
+
+/**
+ * Details of a purge operation.
+ */
+@XmlType(name = "purgeDetails")
+public class PurgeDetailsDTO extends ActionDetailsDTO {
+
+    private Date endDate;
+
+    /**
+     * The end date for this purge action.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/AttributeDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/AttributeDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/AttributeDTO.java
new file mode 100644
index 0000000..ed58077
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/AttributeDTO.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.provenance;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Represents a processor's attribute for a provenance event.
+ */
+@XmlType(name = "attribute")
+public class AttributeDTO {
+
+    private String name;
+    private String value;
+    private String previousValue;
+
+    /**
+     * The attribute name.
+     *
+     * @return
+     */
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * The attribute value.
+     *
+     * @return
+     */
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * The value of this attribute before the event took place.
+     *
+     * @return
+     */
+    public String getPreviousValue() {
+        return previousValue;
+    }
+
+    public void setPreviousValue(String previousValue) {
+        this.previousValue = previousValue;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceDTO.java
new file mode 100644
index 0000000..90dd119
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceDTO.java
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.provenance;
+
+import java.util.Date;
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.nifi.web.api.dto.util.TimestampAdapter;
+
+/**
+ * A provenance submission. Incorporates the request, its current status, and
+ * the results.
+ */
+@XmlType(name = "provenance")
+public class ProvenanceDTO {
+
+    private String id;
+    private String uri;
+    private String clusterNodeId;
+
+    private Date submissionTime;
+    private Date expiration;
+
+    private Integer percentCompleted;
+    private Boolean finished;
+
+    private ProvenanceRequestDTO request;
+    private ProvenanceResultsDTO results;
+
+    /**
+     * The id of this provenance query.
+     *
+     * @return
+     */
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    /**
+     * The URI for this query. Used for obtaining the requests at a later time.
+     *
+     * @return
+     */
+    public String getUri() {
+        return uri;
+    }
+
+    public void setUri(String uri) {
+        this.uri = uri;
+    }
+
+    /**
+     * The id of the node in the cluster where this provenance originated.
+     *
+     * @return
+     */
+    public String getClusterNodeId() {
+        return clusterNodeId;
+    }
+
+    public void setClusterNodeId(String clusterNodeId) {
+        this.clusterNodeId = clusterNodeId;
+    }
+
+    /**
+     * The time the query was submitted.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(TimestampAdapter.class)
+    public Date getSubmissionTime() {
+        return submissionTime;
+    }
+
+    public void setSubmissionTime(Date submissionTime) {
+        this.submissionTime = submissionTime;
+    }
+
+    /**
+     * The expiration time of the query results.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(TimestampAdapter.class)
+    public Date getExpiration() {
+        return expiration;
+    }
+
+    public void setExpiration(Date expiration) {
+        this.expiration = expiration;
+    }
+
+    /**
+     * The percent completed.
+     *
+     * @return
+     */
+    public Integer getPercentCompleted() {
+        return percentCompleted;
+    }
+
+    public void setPercentCompleted(Integer percentCompleted) {
+        this.percentCompleted = percentCompleted;
+    }
+
+    /**
+     * Whether the query has finished.
+     *
+     * @return
+     */
+    public Boolean isFinished() {
+        return finished;
+    }
+
+    public void setFinished(Boolean finished) {
+        this.finished = finished;
+    }
+
+    /**
+     * The provenance request.
+     *
+     * @return
+     */
+    public ProvenanceRequestDTO getRequest() {
+        return request;
+    }
+
+    public void setRequest(ProvenanceRequestDTO request) {
+        this.request = request;
+    }
+
+    /**
+     * The results of this query.
+     *
+     * @return
+     */
+    public ProvenanceResultsDTO getResults() {
+        return results;
+    }
+
+    public void setResults(ProvenanceResultsDTO results) {
+        this.results = results;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java
new file mode 100644
index 0000000..b1ead42
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java
@@ -0,0 +1,630 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.provenance;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.nifi.web.api.dto.util.TimestampAdapter;
+
+/**
+ * A provenance event.
+ */
+@XmlType(name = "provenanceEvent")
+public class ProvenanceEventDTO {
+
+    private String id;
+
+    // in search results table
+    private Long eventId;
+    private Date eventTime;
+    private Long eventDuration;
+    private Long lineageDuration;
+    private String eventType;
+    private String flowFileUuid;
+    private String fileSize;
+    private Long fileSizeBytes;
+    private String clusterNodeId;    // include when clustered
+    private String clusterNodeAddress; // include when clustered
+
+    private String groupId;
+    private String componentId;
+    private String componentType;
+    private String componentName;
+    private String sourceSystemFlowFileId;
+    private String alternateIdentifierUri;
+    private Collection<AttributeDTO> attributes;
+    private List<String> parentUuids;
+    private List<String> childUuids;
+
+    private String transitUri;
+
+    private String relationship;
+    private String details;
+
+    // content
+    private Boolean contentEqual;
+    private Boolean inputContentAvailable;
+    private String inputContentClaimSection;
+    private String inputContentClaimContainer;
+    private String inputContentClaimIdentifier;
+    private Long inputContentClaimOffset;
+    private String inputContentClaimFileSize;
+    private Long inputContentClaimFileSizeBytes;
+    private Boolean outputContentAvailable;
+    private String outputContentClaimSection;
+    private String outputContentClaimContainer;
+    private String outputContentClaimIdentifier;
+    private Long outputContentClaimOffset;
+    private String outputContentClaimFileSize;
+    private Long outputContentClaimFileSizeBytes;
+
+    // replay
+    private Boolean replayAvailable;
+    private String replayExplanation;
+    private String sourceConnectionIdentifier;
+
+    /**
+     * The event uuid.
+     *
+     * @return
+     */
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    /**
+     * The event id.
+     *
+     * @return
+     */
+    public Long getEventId() {
+        return eventId;
+    }
+
+    public void setEventId(Long eventId) {
+        this.eventId = eventId;
+    }
+
+    /**
+     * The time the event occurred.
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(TimestampAdapter.class)
+    public Date getEventTime() {
+        return eventTime;
+    }
+
+    public void setEventTime(Date eventTime) {
+        this.eventTime = eventTime;
+    }
+
+    /**
+     * The UUID of the FlowFile for this event.
+     *
+     * @return
+     */
+    public String getFlowFileUuid() {
+        return flowFileUuid;
+    }
+
+    public void setFlowFileUuid(String flowFileUuid) {
+        this.flowFileUuid = flowFileUuid;
+    }
+
+    /**
+     * The size of the FlowFile for this event.
+     *
+     * @return
+     */
+    public String getFileSize() {
+        return fileSize;
+    }
+
+    public void setFileSize(String fileSize) {
+        this.fileSize = fileSize;
+    }
+
+    /**
+     * The size of the FlowFile in bytes for this event.
+     *
+     * @return
+     */
+    public Long getFileSizeBytes() {
+        return fileSizeBytes;
+    }
+
+    public void setFileSizeBytes(Long fileSizeBytes) {
+        this.fileSizeBytes = fileSizeBytes;
+    }
+
+    /**
+     * The type of this event.
+     *
+     * @return
+     */
+    public String getEventType() {
+        return eventType;
+    }
+
+    public void setEventType(String eventType) {
+        this.eventType = eventType;
+    }
+
+    /**
+     * The attributes for the FlowFile for this event.
+     *
+     * @return
+     */
+    public Collection<AttributeDTO> getAttributes() {
+        return attributes;
+    }
+
+    public void setAttributes(Collection<AttributeDTO> attributes) {
+        this.attributes = attributes;
+    }
+
+    /**
+     * The id of the group that this component resides in. If the component is
+     * no longer in the flow, the group id will not be set.
+     *
+     * @return
+     */
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    /**
+     * The id of the component that generated this event.
+     *
+     * @return
+     */
+    public String getComponentId() {
+        return componentId;
+    }
+
+    public void setComponentId(String componentId) {
+        this.componentId = componentId;
+    }
+
+    /**
+     * The name of the component that generated this event.
+     *
+     * @return
+     */
+    public String getComponentName() {
+        return componentName;
+    }
+
+    public void setComponentName(String componentName) {
+        this.componentName = componentName;
+    }
+
+    /**
+     * The type of the component that generated this event.
+     *
+     * @return
+     */
+    public String getComponentType() {
+        return componentType;
+    }
+
+    public void setComponentType(String componentType) {
+        this.componentType = componentType;
+    }
+
+    /**
+     * The source/destination system URI if the event was a RECEIVE/SEND.
+     *
+     * @return
+     */
+    public String getTransitUri() {
+        return transitUri;
+    }
+
+    public void setTransitUri(String transitUri) {
+        this.transitUri = transitUri;
+    }
+
+    /**
+     * The alternate identifier URI for the FlowFile for this event.
+     *
+     * @return
+     */
+    public String getAlternateIdentifierUri() {
+        return alternateIdentifierUri;
+    }
+
+    public void setAlternateIdentifierUri(String alternateIdentifierUri) {
+        this.alternateIdentifierUri = alternateIdentifierUri;
+    }
+
+    /**
+     * The identifier of the node where this event originated.
+     *
+     * @return
+     */
+    public String getClusterNodeId() {
+        return clusterNodeId;
+    }
+
+    public void setClusterNodeId(String clusterNodeId) {
+        this.clusterNodeId = clusterNodeId;
+    }
+
+    /**
+     * The label to use to show which node this event originated from.
+     *
+     * @return
+     */
+    public String getClusterNodeAddress() {
+        return clusterNodeAddress;
+    }
+
+    public void setClusterNodeAddress(String clusterNodeAddress) {
+        this.clusterNodeAddress = clusterNodeAddress;
+    }
+
+    /**
+     * The parent uuids for this event.
+     *
+     * @return
+     */
+    public List<String> getParentUuids() {
+        return parentUuids;
+    }
+
+    public void setParentUuids(List<String> parentUuids) {
+        this.parentUuids = parentUuids;
+    }
+
+    /**
+     * The child uuids for this event.
+     *
+     * @return
+     */
+    public List<String> getChildUuids() {
+        return childUuids;
+    }
+
+    public void setChildUuids(List<String> childUuids) {
+        this.childUuids = childUuids;
+    }
+
+    /**
+     * The duration of the event, in milliseconds.
+     *
+     * @return
+     */
+    public Long getEventDuration() {
+        return eventDuration;
+    }
+
+    public void setEventDuration(Long eventDuration) {
+        this.eventDuration = eventDuration;
+    }
+
+    /**
+     * The duration since the lineage began, in milliseconds.
+     *
+     * @return
+     */
+    public Long getLineageDuration() {
+        return lineageDuration;
+    }
+
+    public void setLineageDuration(Long lineageDuration) {
+        this.lineageDuration = lineageDuration;
+    }
+
+    /**
+     * The source system FlowFile id.
+     *
+     * @return
+     */
+    public String getSourceSystemFlowFileId() {
+        return sourceSystemFlowFileId;
+    }
+
+    public void setSourceSystemFlowFileId(String sourceSystemFlowFileId) {
+        this.sourceSystemFlowFileId = sourceSystemFlowFileId;
+    }
+
+    /**
+     * If this represents a route event, this is the relationship to which the
+     * flowfile was routed.
+     *
+     * @return
+     */
+    public String getRelationship() {
+        return relationship;
+    }
+
+    public void setRelationship(String relationship) {
+        this.relationship = relationship;
+    }
+
+    /**
+     * The event details.
+     *
+     * @return
+     */
+    public String getDetails() {
+        return details;
+    }
+
+    public void setDetails(String details) {
+        this.details = details;
+    }
+
+    /**
+     * Whether or not the input and output content claim is the same.
+     *
+     * @return
+     */
+    public Boolean getContentEqual() {
+        return contentEqual;
+    }
+
+    public void setContentEqual(Boolean contentEqual) {
+        this.contentEqual = contentEqual;
+    }
+
+    /**
+     * Returns whether or not the output content is still available.
+     *
+     * @return
+     */
+    public Boolean getOutputContentAvailable() {
+        return outputContentAvailable;
+    }
+
+    public void setOutputContentAvailable(Boolean outputContentAvailable) {
+        this.outputContentAvailable = outputContentAvailable;
+    }
+
+    /**
+     * Returns the Section in which the output Content Claim lives, or
+     * <code>null</code> if no Content Claim exists.
+     *
+     * @return
+     */
+    public String getOutputContentClaimSection() {
+        return outputContentClaimSection;
+    }
+
+    public void setOutputContentClaimSection(String contentClaimSection) {
+        this.outputContentClaimSection = contentClaimSection;
+    }
+
+    /**
+     * Returns the Container in which the output Content Claim lives, or
+     * <code>null</code> if no Content Claim exists.
+     *
+     * @return
+     */
+    public String getOutputContentClaimContainer() {
+        return outputContentClaimContainer;
+    }
+
+    public void setOutputContentClaimContainer(String outputContentClaimContainer) {
+        this.outputContentClaimContainer = outputContentClaimContainer;
+    }
+
+    /**
+     * Returns the Identifier of the output Content Claim, or <code>null</code>
+     * if no Content Claim exists.
+     *
+     * @return
+     */
+    public String getOutputContentClaimIdentifier() {
+        return outputContentClaimIdentifier;
+    }
+
+    public void setOutputContentClaimIdentifier(String outputContentClaimIdentifier) {
+        this.outputContentClaimIdentifier = outputContentClaimIdentifier;
+    }
+
+    /**
+     * Returns the offset into the the output Content Claim where the FlowFile's
+     * content begins, or <code>null</code> if no Content Claim exists.
+     *
+     * @return
+     */
+    public Long getOutputContentClaimOffset() {
+        return outputContentClaimOffset;
+    }
+
+    public void setOutputContentClaimOffset(Long outputContentClaimOffset) {
+        this.outputContentClaimOffset = outputContentClaimOffset;
+    }
+
+    /**
+     * Returns the formatted file size of the input content claim.
+     *
+     * @return
+     */
+    public String getOutputContentClaimFileSize() {
+        return outputContentClaimFileSize;
+    }
+
+    public void setOutputContentClaimFileSize(String outputContentClaimFileSize) {
+        this.outputContentClaimFileSize = outputContentClaimFileSize;
+    }
+
+    /**
+     * Returns the number of bytes of the input content claim.
+     *
+     * @return
+     */
+    public Long getOutputContentClaimFileSizeBytes() {
+        return outputContentClaimFileSizeBytes;
+    }
+
+    public void setOutputContentClaimFileSizeBytes(Long outputContentClaimFileSizeBytes) {
+        this.outputContentClaimFileSizeBytes = outputContentClaimFileSizeBytes;
+    }
+
+    /**
+     * Returns whether or not the input content is still available.
+     *
+     * @return
+     */
+    public Boolean getInputContentAvailable() {
+        return inputContentAvailable;
+    }
+
+    public void setInputContentAvailable(Boolean inputContentAvailable) {
+        this.inputContentAvailable = inputContentAvailable;
+    }
+
+    /**
+     * Returns the Section in which the input Content Claim lives, or
+     * <code>null</code> if no Content Claim exists.
+     *
+     * @return
+     */
+    public String getInputContentClaimSection() {
+        return inputContentClaimSection;
+    }
+
+    public void setInputContentClaimSection(String inputContentClaimSection) {
+        this.inputContentClaimSection = inputContentClaimSection;
+    }
+
+    /**
+     * Returns the Container in which the input Content Claim lives, or
+     * <code>null</code> if no Content Claim exists.
+     *
+     * @return
+     */
+    public String getInputContentClaimContainer() {
+        return inputContentClaimContainer;
+    }
+
+    public void setInputContentClaimContainer(String inputContentClaimContainer) {
+        this.inputContentClaimContainer = inputContentClaimContainer;
+    }
+
+    /**
+     * Returns the Identifier of the input Content Claim, or <code>null</code>
+     * if no Content Claim exists.
+     *
+     * @return
+     */
+    public String getInputContentClaimIdentifier() {
+        return inputContentClaimIdentifier;
+    }
+
+    public void setInputContentClaimIdentifier(String inputContentClaimIdentifier) {
+        this.inputContentClaimIdentifier = inputContentClaimIdentifier;
+    }
+
+    /**
+     * Returns the offset into the the input Content Claim where the FlowFile's
+     * content begins, or <code>null</code> if no Content Claim exists.
+     *
+     * @return
+     */
+    public Long getInputContentClaimOffset() {
+        return inputContentClaimOffset;
+    }
+
+    public void setInputContentClaimOffset(Long inputContentClaimOffset) {
+        this.inputContentClaimOffset = inputContentClaimOffset;
+    }
+
+    /**
+     * Returns the formatted file size of the input content claim.
+     *
+     * @return
+     */
+    public String getInputContentClaimFileSize() {
+        return inputContentClaimFileSize;
+    }
+
+    public void setInputContentClaimFileSize(String inputContentClaimFileSize) {
+        this.inputContentClaimFileSize = inputContentClaimFileSize;
+    }
+
+    /**
+     * Returns the number of bytes of the input content claim.
+     *
+     * @return
+     */
+    public Long getInputContentClaimFileSizeBytes() {
+        return inputContentClaimFileSizeBytes;
+    }
+
+    public void setInputContentClaimFileSizeBytes(Long inputContentClaimFileSizeBytes) {
+        this.inputContentClaimFileSizeBytes = inputContentClaimFileSizeBytes;
+    }
+
+    /**
+     * Returns whether or not replay is available.
+     *
+     * @return
+     */
+    public Boolean getReplayAvailable() {
+        return replayAvailable;
+    }
+
+    public void setReplayAvailable(Boolean replayAvailable) {
+        this.replayAvailable = replayAvailable;
+    }
+
+    /**
+     * Returns the explanation as to why replay is unavailable.
+     *
+     * @return
+     */
+    public String getReplayExplanation() {
+        return replayExplanation;
+    }
+
+    public void setReplayExplanation(String replayExplanation) {
+        this.replayExplanation = replayExplanation;
+    }
+
+    /**
+     * Returns identifier of the FlowFile Queue / Connection from which the
+     * FlowFile was pulled to generate this event, or <code>null</code> if
+     * either the queue is unknown or the FlowFile was created by this event.
+     *
+     * @return
+     */
+    public String getSourceConnectionIdentifier() {
+        return sourceConnectionIdentifier;
+    }
+
+    public void setSourceConnectionIdentifier(String sourceConnectionIdentifier) {
+        this.sourceConnectionIdentifier = sourceConnectionIdentifier;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceOptionsDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceOptionsDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceOptionsDTO.java
new file mode 100644
index 0000000..7f939b9
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceOptionsDTO.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.provenance;
+
+import java.util.List;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * A provenance search options.
+ */
+@XmlType(name = "provenanceOptions")
+public class ProvenanceOptionsDTO {
+
+    private List<ProvenanceSearchableFieldDTO> searchableFields;
+
+    /**
+     * The available searchable fields for this NiFi instance.
+     *
+     * @return
+     */
+    public List<ProvenanceSearchableFieldDTO> getSearchableFields() {
+        return searchableFields;
+    }
+
+    public void setSearchableFields(List<ProvenanceSearchableFieldDTO> searchableFields) {
+        this.searchableFields = searchableFields;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4d998c12/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceRequestDTO.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceRequestDTO.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceRequestDTO.java
new file mode 100644
index 0000000..e9e5453
--- /dev/null
+++ b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceRequestDTO.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.api.dto.provenance;
+
+import java.util.Date;
+import java.util.Map;
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.DateTimeAdapter;
+
+/**
+ * A request for provenance.
+ */
+@XmlType(name = "provenanceRequest")
+public class ProvenanceRequestDTO {
+
+    private Map<String, String> searchTerms;
+    private Date startDate;
+    private Date endDate;
+    private String minimumFileSize;
+    private String maximumFileSize;
+    private Integer maxResults;
+
+    /**
+     * Returns the search terms to use for this search
+     *
+     * @return
+     */
+    public Map<String, String> getSearchTerms() {
+        return searchTerms;
+    }
+
+    public void setSearchTerms(final Map<String, String> searchTerms) {
+        this.searchTerms = searchTerms;
+    }
+
+    /**
+     * The earliest event time to include in the query
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    /**
+     * The latest event time to include in the query
+     *
+     * @return
+     */
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    /**
+     * The minimum file size to include in the query.
+     *
+     * @return
+     */
+    public String getMinimumFileSize() {
+        return minimumFileSize;
+    }
+
+    public void setMinimumFileSize(String minimumFileSize) {
+        this.minimumFileSize = minimumFileSize;
+    }
+
+    /**
+     * The maximum file size to include in the query.
+     *
+     * @return
+     */
+    public String getMaximumFileSize() {
+        return maximumFileSize;
+    }
+
+    public void setMaximumFileSize(String maximumFileSize) {
+        this.maximumFileSize = maximumFileSize;
+    }
+
+    /**
+     * The number of max results.
+     *
+     * @return
+     */
+    public Integer getMaxResults() {
+        return maxResults;
+    }
+
+    public void setMaxResults(Integer maxResults) {
+        this.maxResults = maxResults;
+    }
+}