/*
* Copyright 2013-2017 the original author or authors.
*
* Licensed 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.cloudfoundry.client.v2.applications;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
/**
* Main entry point to the Cloud Foundry Applications V2 Client API
*/
public interface ApplicationsV2 {
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/associate_route_with_the_app.html">Associate Route with the Application</a> request
*
* @param request the Associate Route with the Application request
* @return the response from the Associate Route with the Application request
*/
Mono<AssociateApplicationRouteResponse> associateRoute(AssociateApplicationRouteRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/copy_the_app_bits_for_an_app.html">Copy the app bits for an Application</a> request
*
* @param request the Copy Application request
* @return the response from the Copy Application request
*/
Mono<CopyApplicationResponse> copy(CopyApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/creating_an_app.html">Creating an App</a> request and the <a
* href="http://apidocs.cloudfoundry.org/latest-release/apps/creating_a_docker_app_%28experimental%29.html">Creating a Docker App</a> request.
*
* @param request the Create Application request
* @return the response from the Create Application request
*/
Mono<CreateApplicationResponse> create(CreateApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/delete_a_particular_app.html">Delete the App</a> request
*
* @param request the Delete Application request
* @return the response from the Delete Application request
*/
Mono<Void> delete(DeleteApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/downloads_the_bits_for_an_app.html">Downloads the bits for an App</a> request
*
* @param request the Download Application request
* @return the response from the Download Application request
*/
Flux<byte[]> download(DownloadApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/downloads_the_staged_droplet_for_an_app.html">Downloads the staged droplet for an App</a> request
*
* @param request the Download Droplet request
* @return the response from the Download Droplet request
*/
Flux<byte[]> downloadDroplet(DownloadApplicationDropletRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/get_the_env_for_an_app.html">Get the env for an App</a> request
*
* @param request the Get Application Environment request
* @return the response from the Get Application Environment request
*/
Mono<ApplicationEnvironmentResponse> environment(ApplicationEnvironmentRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/retrieve_a_particular_app.html">Retrieve a Particular App</a> request
*
* @param request the Get Application request
* @return the response from the Get Application request
*/
Mono<GetApplicationResponse> get(GetApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/get_the_instance_information_for_a_started_app.html">Get the instance information for a STARTED App</a> request
*
* @param request the Get Instance Information request
* @return the response from the Get Instance Information request
*/
Mono<ApplicationInstancesResponse> instances(ApplicationInstancesRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/list_all_apps.html">List all Apps</a> request
*
* @param request the List Applications request
* @return the response from the List Applications request
*/
Mono<ListApplicationsResponse> list(ListApplicationsRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/list_all_routes_for_the_app.html">List all Routes for the Application</a> request
*
* @param request the List all Routes for the Application request
* @return the response from the List all Routes for the Application request
*/
Mono<ListApplicationRoutesResponse> listRoutes(ListApplicationRoutesRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/list_all_service_bindings_for_the_app.html">List all Service Bindings for the App</a> request
*
* @param request the List Service Bindings request
* @return the response from the List Service Bindings request
*/
Mono<ListApplicationServiceBindingsResponse> listServiceBindings(ListApplicationServiceBindingsRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/remove_route_from_the_app.html">Remove Route from the Application</a> request
*
* @param request the Remove Route from the Application request
* @return the response from the Remove Route from the Application request
*/
Mono<Void> removeRoute(RemoveApplicationRouteRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/remove_service_binding_from_the_app.html">Remove Service Binding from the Application</a> request
*
* @param request the Remove a Service Binding from an Application request
* @return the response from the Remove a Service Binding from an Application request
*/
Mono<Void> removeServiceBinding(RemoveApplicationServiceBindingRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/restage_an_app.html">Restage an App</a> request
*
* @param request the Restage an Application request
* @return the response from the Restage an Application request
*/
Mono<RestageApplicationResponse> restage(RestageApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/get_detailed_stats_for_a_started_app.html">Get detailed stats for a STARTED App</a> request
*
* @param request the Get Statistics request
* @return the response from the Get Statistics request
*/
Mono<ApplicationStatisticsResponse> statistics(ApplicationStatisticsRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/get_app_summary.html">Get Application Summary</a> request
*
* @param request the Get Application Summary request
* @return the response from the Get Application Summary request
*/
Mono<SummaryApplicationResponse> summary(SummaryApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/terminate_the_running_app_instance_at_the_given_index.html">Terminate Application Instance</a> request
*
* @param request the Terminate Application Instance request
* @return the response form the Terminate Application Instance request
*/
Mono<Void> terminateInstance(TerminateApplicationInstanceRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/updating_an_app.html">Updating an App</a> request
*
* @param request the Update Application request
* @return the response from the Update Application request
*/
Mono<UpdateApplicationResponse> update(UpdateApplicationRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/apps/uploads_the_bits_for_an_app.html">Upload the bits for an App</a> request
*
* @param request the Upload Application request
* @return the response from the Upload Application request
*/
Mono<UploadApplicationResponse> upload(UploadApplicationRequest request);
}