
## IDataApiCall
---
IDataApiCall is a public interface used to execute requests with parameterized objects.

**Java**:

<pre><code class="language-java">public interface IDataApiCall&lt;T&gt; {
/**
     * It is recommended to call the {@link #cancel()} method before next execution.
     *
     * @param onSuccessListener callback with response
     * @param onFailureListener callback with Throwable instance
     */
    void execute(@NonNull DataActionListener&lt;T&gt; onSuccessListener, @NonNull DataActionListener&lt;ApiError&gt; onFailureListener);
    /**
     * Cancels the API request, therefore no response will be provided nor callback fired. &lt;br&gt;
     * It is recommended to call this method when an activity/fragment is being stopped.
     */
    void cancel();
    /**
     * Specify a reactive Scheduler for your request. &lt;br&gt;
     * By default, all internal methods use the {@link Schedulers#io()} scheduler.
     * See {@link io.reactivex.schedulers.Schedulers} factory for more info.
     *
     * @param scheduler reactive scheduler.
     */
    BasicDataApiCall&lt;T&gt; subscribeOn(Scheduler scheduler);
    /**
     * Specify your action when the request is being subscribed. This action will be fired just before calling the API.
     *
     * @param onSubscribeListener callback
     */
    BasicDataApiCall&lt;T&gt; onSubscribe(ActionListener onSubscribeListener);
    /**
     * Specify your action when the request succeeds, fails, or is cancelled.
     *
     * @param doFinallyListener callback
     */
    BasicDataApiCall&lt;T&gt; doFinally(ActionListener doFinallyListener);
    /**
     * Get the original reactive observable to chain your requests.&lt;br&gt;
     * Note that some of the SDK methods not only wrap observables in IDataApiCall,
     * but also add some extra logic, which shouldn't be skipped.&lt;br&gt;
     *
     * @return original reactive observable.
     */
    Observable&lt;T&gt; getObservable();
}</code></pre>


## IApiCall
---
IApiCall is a public interface used to execute requests.

**Java**:

<pre><code class="language-java">public interface IApiCall&lt;T&gt; {
    /**
     * It is recommended to call the {@link #cancel()} method before next execution.
     *
     * @param onSuccessListener successful callback with no response
     * @param onFailureListener callback with Throwable instance
     */
    void execute(@NonNull ActionListener onSuccessListener, @NonNull DataActionListener&lt;ApiError&gt; onFailureListener);
    /**
     * Cancels the API request, therefore no response will be provided nor callback fired. &lt;br&gt;
     * It is recommended to call this method when an activity/fragment is being stopped.
     */
    void cancel();
    /**
     * Specify a reactive Scheduler for your request. &lt;br&gt;
     * By default, all internal methods use the {@link Schedulers#io()} scheduler.
     * See {@link io.reactivex.schedulers.Schedulers} factory for more info.
     *
     * @param scheduler reactive scheduler.
     */
    BasicApiCall&lt;T&gt; subscribeOn(Scheduler scheduler);
    /**
     * Specify your action when the request is being subscribed. This action will be fired just before calling API.
     *
     * @param onSubscribeListener callback.
     */
    BasicApiCall&lt;T&gt; onSubscribe(ActionListener onSubscribeListener);
    /**
     * Specify your action when the request succeeds, fails, or is cancelled.
     *
     * @param doFinallyListener callback.
     */
    BasicApiCall&lt;T&gt; doFinally(ActionListener doFinallyListener);
    /**
     * Get the original reactive observable to chain your requests.&lt;br&gt;
     * Note that some of SDK methods not only wrap observables in IApiCall,
     * but also add some extra logic, which shouldn't be skipped.&lt;br&gt;
     *
     * @return original reactive observable.
     */
    Observable&lt;T&gt; getObservable();
}</code></pre>
