/*
* 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.serviceinstances;
import reactor.core.publisher.Mono;
/**
* Main entry point to the Cloud Foundry Service Instances Client API
*/
public interface ServiceInstances {
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/binding_a_service_instance_to_a_route.html">Bind Service Instance To a Route</a> request
*
* @param request the Bind Service Instance To Route request
* @return the response from the Bind Service Instance To Route request
*/
Mono<BindServiceInstanceRouteResponse> bindRoute(BindServiceInstanceRouteRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/creating_a_service_instance.html">Create Service Instance</a> request
*
* @param request the Create Service Instance request
* @return the response from the Create Service Instance request
*/
Mono<CreateServiceInstanceResponse> create(CreateServiceInstanceRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/delete_a_service_instance.html">Delete the Service Instance</a> request
*
* @param request the Delete Service Instance request
* @return the response from the Delete Service Instance request
*/
Mono<DeleteServiceInstanceResponse> delete(DeleteServiceInstanceRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/retrieve_a_particular_service_instance.html">Retrieve a Particular Service Instance</a> request
*
* @param request the Get Service Instance request
* @return the response from the Get Service Instance request
*/
Mono<GetServiceInstanceResponse> get(GetServiceInstanceRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/retrieving_permissions_on_a_service_instance.html">Retrieving permissions on a Service Instance</a> request
*
* @param request the Get Permissions request
* @return the response from the Get Permissions request
*/
Mono<GetServiceInstancePermissionsResponse> getPermissions(GetServiceInstancePermissionsRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/list_all_service_instances.html">List Service Instances</a> request
*
* @param request the List Service Instances request
* @return the response from the List Service Instances request
*/
Mono<ListServiceInstancesResponse> list(ListServiceInstancesRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/list_all_routes_for_the_service_instance.html">List all Routes for the Service Instance</a> request
*
* @param request the List Routes request
* @return the response from the List Routes request
*/
Mono<ListServiceInstanceRoutesResponse> listRoutes(ListServiceInstanceRoutesRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/list_all_service_bindings_for_the_service_instance.html">List all Service Bindings for the Service
* Instance</a> request
*
* @param request the List Service Bindings request
* @return the response from the List Service Bindings request
*/
Mono<ListServiceInstanceServiceBindingsResponse> listServiceBindings(ListServiceInstanceServiceBindingsRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/retrieving_service_keys_associated_with_a_service_instance.html">List all Service keys for the Service
* Instance</a> request
*
* @param request the List Service Keys request
* @return the response from the List Service Keys request
*/
Mono<ListServiceInstanceServiceKeysResponse> listServiceKeys(ListServiceInstanceServiceKeysRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/unbinding_a_service_instance_from_a_route.html">Unbinding a Service Instance from a Route</a> request
*
* @param request the Unbind Service Instance from a Route request
* @return the response from the Unbind Service Instance from a Route request
*/
Mono<Void> unbindRoute(UnbindServiceInstanceRouteRequest request);
/**
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/service_instances/update_a_service_instance.html">Update Service Instance</a> request
*
* @param request the Update Service Instance request
* @return the response from the Update Service Instance request
*/
Mono<UpdateServiceInstanceResponse> update(UpdateServiceInstanceRequest request);
}