/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 */

package com.microsoft.azure.management.apimanagement.v2019_01_01;

import rx.Completable;
import rx.Observable;
import com.microsoft.azure.management.apimanagement.v2019_01_01.implementation.PortalSignupSettingsInner;
import com.microsoft.azure.management.apimanagement.v2019_01_01.implementation.SignUpSettingsInner;
import com.microsoft.azure.arm.model.HasInner;

/**
 * Type representing SignUpSettings.
 */
public interface SignUpSettings extends HasInner<SignUpSettingsInner> {
    /**
     * Gets the entity state (Etag) version of the SignUpSettings.
     *
     * @param resourceGroupName The name of the resource group.
     * @param serviceName The name of the API Management service.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable for the request
     */
    Completable getEntityTagAsync(String resourceGroupName, String serviceName);

    /**
     * Get Sign Up Settings for the Portal.
     *
     * @param resourceGroupName The name of the resource group.
     * @param serviceName The name of the API Management service.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable for the request
     */
    Observable<PortalSignupSettings> getAsync(String resourceGroupName, String serviceName);

    /**
     * Update Sign-Up settings.
     *
     * @param resourceGroupName The name of the resource group.
     * @param serviceName The name of the API Management service.
     * @param parameters Update Sign-Up settings.
     * @param ifMatch ETag of the Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable for the request
     */
    Completable updateAsync(String resourceGroupName, String serviceName, PortalSignupSettingsInner parameters, String ifMatch);

    /**
     * Create or Update Sign-Up settings.
     *
     * @param resourceGroupName The name of the resource group.
     * @param serviceName The name of the API Management service.
     * @param parameters Create or update parameters.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable for the request
     */
    Observable<PortalSignupSettings> createOrUpdateAsync(String resourceGroupName, String serviceName, PortalSignupSettingsInner parameters);

}
