blob: b1faac46c063fe3e4ca51892649cdecb1e69406e [file] [log] [blame]
/*
* 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.registry.web.service;
import org.apache.nifi.registry.RegistryConfiguration;
import org.apache.nifi.registry.authorization.AccessPolicy;
import org.apache.nifi.registry.authorization.CurrentUser;
import org.apache.nifi.registry.authorization.Resource;
import org.apache.nifi.registry.authorization.User;
import org.apache.nifi.registry.authorization.UserGroup;
import org.apache.nifi.registry.bucket.Bucket;
import org.apache.nifi.registry.bucket.BucketItem;
import org.apache.nifi.registry.diff.VersionedFlowDifference;
import org.apache.nifi.registry.extension.bundle.Bundle;
import org.apache.nifi.registry.extension.bundle.BundleFilterParams;
import org.apache.nifi.registry.extension.bundle.BundleType;
import org.apache.nifi.registry.extension.bundle.BundleVersion;
import org.apache.nifi.registry.extension.bundle.BundleVersionFilterParams;
import org.apache.nifi.registry.extension.bundle.BundleVersionMetadata;
import org.apache.nifi.registry.extension.component.ExtensionFilterParams;
import org.apache.nifi.registry.extension.component.ExtensionMetadata;
import org.apache.nifi.registry.extension.component.TagCount;
import org.apache.nifi.registry.extension.component.manifest.Extension;
import org.apache.nifi.registry.extension.component.manifest.ProvidedServiceAPI;
import org.apache.nifi.registry.extension.repo.ExtensionRepoArtifact;
import org.apache.nifi.registry.extension.repo.ExtensionRepoBucket;
import org.apache.nifi.registry.extension.repo.ExtensionRepoExtensionMetadata;
import org.apache.nifi.registry.extension.repo.ExtensionRepoGroup;
import org.apache.nifi.registry.extension.repo.ExtensionRepoVersion;
import org.apache.nifi.registry.extension.repo.ExtensionRepoVersionSummary;
import org.apache.nifi.registry.flow.VersionedFlow;
import org.apache.nifi.registry.flow.VersionedFlowSnapshot;
import org.apache.nifi.registry.flow.VersionedFlowSnapshotMetadata;
import org.apache.nifi.registry.revision.entity.RevisionInfo;
import org.apache.nifi.registry.security.authorization.RequestAction;
import javax.ws.rs.core.StreamingOutput;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
public interface ServiceFacade {
// ---------------------- Bucket methods ----------------------------------------------
Bucket createBucket(Bucket bucket);
Bucket getBucket(String bucketIdentifier);
List<Bucket> getBuckets();
Bucket updateBucket(Bucket bucket);
Bucket deleteBucket(String bucketIdentifier, RevisionInfo revisionInfo);
// ---------------------- BucketItem methods ----------------------------------------------
List<BucketItem> getBucketItems(String bucketIdentifier);
List<BucketItem> getBucketItems();
// ---------------------- Flow methods ----------------------------------------------
VersionedFlow createFlow(String bucketIdentifier, VersionedFlow versionedFlow);
VersionedFlow getFlow(String bucketIdentifier, String flowIdentifier);
VersionedFlow getFlow(String flowIdentifier);
List<VersionedFlow> getFlows(String bucketId);
VersionedFlow updateFlow(VersionedFlow versionedFlow);
VersionedFlow deleteFlow(String bucketIdentifier, String flowIdentifier, RevisionInfo revisionInfo);
// ---------------------- Flow Snapshot methods ----------------------------------------------
VersionedFlowSnapshot createFlowSnapshot(VersionedFlowSnapshot flowSnapshot);
VersionedFlowSnapshot getFlowSnapshot(String bucketIdentifier, String flowIdentifier, Integer version);
VersionedFlowSnapshot getFlowSnapshot(String flowIdentifier, Integer version);
VersionedFlowSnapshot getLatestFlowSnapshot(String bucketIdentifier, String flowIdentifier);
VersionedFlowSnapshot getLatestFlowSnapshot(String flowIdentifier);
SortedSet<VersionedFlowSnapshotMetadata> getFlowSnapshots(String bucketIdentifier, String flowIdentifier);
SortedSet<VersionedFlowSnapshotMetadata> getFlowSnapshots(String flowIdentifier);
VersionedFlowSnapshotMetadata getLatestFlowSnapshotMetadata(String bucketIdentifier, String flowIdentifier);
VersionedFlowSnapshotMetadata getLatestFlowSnapshotMetadata(String flowIdentifier);
VersionedFlowDifference getFlowDiff(String bucketIdentifier, String flowIdentifier, Integer versionA, Integer versionB);
// ---------------------- Bundle methods ----------------------------------------------
List<Bundle> getBundles(BundleFilterParams filterParams);
List<Bundle> getBundlesByBucket(String bucketIdentifier);
Bundle getBundle(String bundleIdentifier);
Bundle deleteBundle(String bundleIdentifier);
// ---------------------- Bundle Version methods ----------------------------------------------
BundleVersion createBundleVersion(String bucketIdentifier, BundleType bundleType, InputStream inputStream, String clientSha256) throws IOException;
SortedSet<BundleVersionMetadata> getBundleVersions(BundleVersionFilterParams filterParams);
SortedSet<BundleVersionMetadata> getBundleVersions(String bundleIdentifier);
BundleVersion getBundleVersion(String bundleId, String version);
StreamingContent getBundleVersionContent(String bundleId, String version);
BundleVersion deleteBundleVersion(String bundleId, String version);
// ---------------------- Extension methods ----------------------------------------------
SortedSet<ExtensionMetadata> getExtensionMetadata(ExtensionFilterParams filterParams);
SortedSet<ExtensionMetadata> getExtensionMetadata(ProvidedServiceAPI serviceAPI);
SortedSet<ExtensionMetadata> getExtensionMetadata(String bundleIdentifier, String version);
Extension getExtension(String bundleIdentifier, String version, String name);
StreamingOutput getExtensionDocs(String bundleIdentifier, String version, String name);
StreamingOutput getAdditionalDetailsDocs(String bundleIdentifier, String version, String name);
SortedSet<TagCount> getExtensionTags();
// ---------------------- Extension Repository methods ----------------------------------------------
SortedSet<ExtensionRepoBucket> getExtensionRepoBuckets(URI baseUri);
SortedSet<ExtensionRepoGroup> getExtensionRepoGroups(URI baseUri, String bucketName);
SortedSet<ExtensionRepoArtifact> getExtensionRepoArtifacts(URI baseUri, String bucketName, String groupId);
SortedSet<ExtensionRepoVersionSummary> getExtensionRepoVersions(URI baseUri, String bucketName, String groupId, String artifactId);
ExtensionRepoVersion getExtensionRepoVersion(URI baseUri, String bucketName, String groupId, String artifactId, String version);
StreamingContent getExtensionRepoVersionContent(String bucketName, String groupId, String artifactId, String version);
String getExtensionRepoVersionSha256(String bucketName, String groupId, String artifactId, String version);
List<ExtensionRepoExtensionMetadata> getExtensionRepoExtensions(URI baseUri, String bucketName, String groupId, String artifactId, String version);
Extension getExtensionRepoExtension(URI baseUri, String bucketName, String groupId, String artifactId, String version, String extensionName);
StreamingOutput getExtensionRepoExtensionDocs(URI baseUri, String bucketName, String groupId, String artifactId, String version, String extensionName);
StreamingOutput getExtensionRepoExtensionAdditionalDocs(URI baseUri, String bucketName, String groupId, String artifactId, String version, String extensionName);
// ---------------------- Field methods ---------------------------------------------
Set<String> getBucketFields();
Set<String> getBucketItemFields();
Set<String> getFlowFields();
// ---------------------- User methods ----------------------------------------------
User createUser(User user);
List<User> getUsers();
User getUser(String identifier);
User updateUser(User user);
User deleteUser(String identifier, RevisionInfo revisionInfo);
// ---------------------- User Group methods --------------------------------------
UserGroup createUserGroup(UserGroup userGroup);
List<UserGroup> getUserGroups();
UserGroup getUserGroup(String identifier);
UserGroup updateUserGroup(UserGroup userGroup);
UserGroup deleteUserGroup(String identifier, RevisionInfo revisionInfo);
// ---------------------- Access Policy methods ----------------------------------------
AccessPolicy createAccessPolicy(AccessPolicy accessPolicy);
AccessPolicy getAccessPolicy(String identifier);
AccessPolicy getAccessPolicy(String resource, RequestAction action);
List<AccessPolicy> getAccessPolicies();
AccessPolicy updateAccessPolicy(AccessPolicy accessPolicy);
AccessPolicy deleteAccessPolicy(String identifier, RevisionInfo revisionInfo);
List<Resource> getResources();
// ---------------------- Permission methods ----------------------------------------
CurrentUser getCurrentUser();
// ---------------------- Configuration methods ------------------------------------
RegistryConfiguration getRegistryConfiguration();
}