// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.apimanagement.fluent;

import com.azure.core.http.HttpPipeline;
import java.time.Duration;

/** The interface for ApiManagementClient class. */
public interface ApiManagementClient {
    /**
     * Gets Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms
     * part of the URI for every service call.
     *
     * @return the subscriptionId value.
     */
    String getSubscriptionId();

    /**
     * Gets server parameter.
     *
     * @return the endpoint value.
     */
    String getEndpoint();

    /**
     * Gets Api Version.
     *
     * @return the apiVersion value.
     */
    String getApiVersion();

    /**
     * Gets The HTTP pipeline to send requests through.
     *
     * @return the httpPipeline value.
     */
    HttpPipeline getHttpPipeline();

    /**
     * Gets The default poll interval for long-running operation.
     *
     * @return the defaultPollInterval value.
     */
    Duration getDefaultPollInterval();

    /**
     * Gets the ApisClient object to access its operations.
     *
     * @return the ApisClient object.
     */
    ApisClient getApis();

    /**
     * Gets the ApiRevisionsClient object to access its operations.
     *
     * @return the ApiRevisionsClient object.
     */
    ApiRevisionsClient getApiRevisions();

    /**
     * Gets the ApiReleasesClient object to access its operations.
     *
     * @return the ApiReleasesClient object.
     */
    ApiReleasesClient getApiReleases();

    /**
     * Gets the ApiOperationsClient object to access its operations.
     *
     * @return the ApiOperationsClient object.
     */
    ApiOperationsClient getApiOperations();

    /**
     * Gets the ApiOperationPoliciesClient object to access its operations.
     *
     * @return the ApiOperationPoliciesClient object.
     */
    ApiOperationPoliciesClient getApiOperationPolicies();

    /**
     * Gets the TagsClient object to access its operations.
     *
     * @return the TagsClient object.
     */
    TagsClient getTags();

    /**
     * Gets the ApiProductsClient object to access its operations.
     *
     * @return the ApiProductsClient object.
     */
    ApiProductsClient getApiProducts();

    /**
     * Gets the ApiPoliciesClient object to access its operations.
     *
     * @return the ApiPoliciesClient object.
     */
    ApiPoliciesClient getApiPolicies();

    /**
     * Gets the ApiSchemasClient object to access its operations.
     *
     * @return the ApiSchemasClient object.
     */
    ApiSchemasClient getApiSchemas();

    /**
     * Gets the ApiDiagnosticsClient object to access its operations.
     *
     * @return the ApiDiagnosticsClient object.
     */
    ApiDiagnosticsClient getApiDiagnostics();

    /**
     * Gets the ApiIssuesClient object to access its operations.
     *
     * @return the ApiIssuesClient object.
     */
    ApiIssuesClient getApiIssues();

    /**
     * Gets the ApiIssueCommentsClient object to access its operations.
     *
     * @return the ApiIssueCommentsClient object.
     */
    ApiIssueCommentsClient getApiIssueComments();

    /**
     * Gets the ApiIssueAttachmentsClient object to access its operations.
     *
     * @return the ApiIssueAttachmentsClient object.
     */
    ApiIssueAttachmentsClient getApiIssueAttachments();

    /**
     * Gets the ApiTagDescriptionsClient object to access its operations.
     *
     * @return the ApiTagDescriptionsClient object.
     */
    ApiTagDescriptionsClient getApiTagDescriptions();

    /**
     * Gets the OperationsClient object to access its operations.
     *
     * @return the OperationsClient object.
     */
    OperationsClient getOperations();

    /**
     * Gets the ApiExportsClient object to access its operations.
     *
     * @return the ApiExportsClient object.
     */
    ApiExportsClient getApiExports();

    /**
     * Gets the ApiVersionSetsClient object to access its operations.
     *
     * @return the ApiVersionSetsClient object.
     */
    ApiVersionSetsClient getApiVersionSets();

    /**
     * Gets the AuthorizationServersClient object to access its operations.
     *
     * @return the AuthorizationServersClient object.
     */
    AuthorizationServersClient getAuthorizationServers();

    /**
     * Gets the BackendsClient object to access its operations.
     *
     * @return the BackendsClient object.
     */
    BackendsClient getBackends();

    /**
     * Gets the CachesClient object to access its operations.
     *
     * @return the CachesClient object.
     */
    CachesClient getCaches();

    /**
     * Gets the CertificatesClient object to access its operations.
     *
     * @return the CertificatesClient object.
     */
    CertificatesClient getCertificates();

    /**
     * Gets the ResourceProvidersClient object to access its operations.
     *
     * @return the ResourceProvidersClient object.
     */
    ResourceProvidersClient getResourceProviders();

    /**
     * Gets the ContentTypesClient object to access its operations.
     *
     * @return the ContentTypesClient object.
     */
    ContentTypesClient getContentTypes();

    /**
     * Gets the ContentItemsClient object to access its operations.
     *
     * @return the ContentItemsClient object.
     */
    ContentItemsClient getContentItems();

    /**
     * Gets the DeletedServicesClient object to access its operations.
     *
     * @return the DeletedServicesClient object.
     */
    DeletedServicesClient getDeletedServices();

    /**
     * Gets the ApiManagementOperationsClient object to access its operations.
     *
     * @return the ApiManagementOperationsClient object.
     */
    ApiManagementOperationsClient getApiManagementOperations();

    /**
     * Gets the ApiManagementServiceSkusClient object to access its operations.
     *
     * @return the ApiManagementServiceSkusClient object.
     */
    ApiManagementServiceSkusClient getApiManagementServiceSkus();

    /**
     * Gets the ApiManagementServicesClient object to access its operations.
     *
     * @return the ApiManagementServicesClient object.
     */
    ApiManagementServicesClient getApiManagementServices();

    /**
     * Gets the DiagnosticsClient object to access its operations.
     *
     * @return the DiagnosticsClient object.
     */
    DiagnosticsClient getDiagnostics();

    /**
     * Gets the EmailTemplatesClient object to access its operations.
     *
     * @return the EmailTemplatesClient object.
     */
    EmailTemplatesClient getEmailTemplates();

    /**
     * Gets the GatewaysClient object to access its operations.
     *
     * @return the GatewaysClient object.
     */
    GatewaysClient getGateways();

    /**
     * Gets the GatewayHostnameConfigurationsClient object to access its operations.
     *
     * @return the GatewayHostnameConfigurationsClient object.
     */
    GatewayHostnameConfigurationsClient getGatewayHostnameConfigurations();

    /**
     * Gets the GatewayApisClient object to access its operations.
     *
     * @return the GatewayApisClient object.
     */
    GatewayApisClient getGatewayApis();

    /**
     * Gets the GatewayCertificateAuthoritiesClient object to access its operations.
     *
     * @return the GatewayCertificateAuthoritiesClient object.
     */
    GatewayCertificateAuthoritiesClient getGatewayCertificateAuthorities();

    /**
     * Gets the GroupsClient object to access its operations.
     *
     * @return the GroupsClient object.
     */
    GroupsClient getGroups();

    /**
     * Gets the GroupUsersClient object to access its operations.
     *
     * @return the GroupUsersClient object.
     */
    GroupUsersClient getGroupUsers();

    /**
     * Gets the IdentityProvidersClient object to access its operations.
     *
     * @return the IdentityProvidersClient object.
     */
    IdentityProvidersClient getIdentityProviders();

    /**
     * Gets the IssuesClient object to access its operations.
     *
     * @return the IssuesClient object.
     */
    IssuesClient getIssues();

    /**
     * Gets the LoggersClient object to access its operations.
     *
     * @return the LoggersClient object.
     */
    LoggersClient getLoggers();

    /**
     * Gets the NamedValuesClient object to access its operations.
     *
     * @return the NamedValuesClient object.
     */
    NamedValuesClient getNamedValues();

    /**
     * Gets the NetworkStatusClient object to access its operations.
     *
     * @return the NetworkStatusClient object.
     */
    NetworkStatusClient getNetworkStatus();

    /**
     * Gets the NotificationsClient object to access its operations.
     *
     * @return the NotificationsClient object.
     */
    NotificationsClient getNotifications();

    /**
     * Gets the NotificationRecipientUsersClient object to access its operations.
     *
     * @return the NotificationRecipientUsersClient object.
     */
    NotificationRecipientUsersClient getNotificationRecipientUsers();

    /**
     * Gets the NotificationRecipientEmailsClient object to access its operations.
     *
     * @return the NotificationRecipientEmailsClient object.
     */
    NotificationRecipientEmailsClient getNotificationRecipientEmails();

    /**
     * Gets the OpenIdConnectProvidersClient object to access its operations.
     *
     * @return the OpenIdConnectProvidersClient object.
     */
    OpenIdConnectProvidersClient getOpenIdConnectProviders();

    /**
     * Gets the OutboundNetworkDependenciesEndpointsClient object to access its operations.
     *
     * @return the OutboundNetworkDependenciesEndpointsClient object.
     */
    OutboundNetworkDependenciesEndpointsClient getOutboundNetworkDependenciesEndpoints();

    /**
     * Gets the PoliciesClient object to access its operations.
     *
     * @return the PoliciesClient object.
     */
    PoliciesClient getPolicies();

    /**
     * Gets the PolicyDescriptionsClient object to access its operations.
     *
     * @return the PolicyDescriptionsClient object.
     */
    PolicyDescriptionsClient getPolicyDescriptions();

    /**
     * Gets the PortalRevisionsClient object to access its operations.
     *
     * @return the PortalRevisionsClient object.
     */
    PortalRevisionsClient getPortalRevisions();

    /**
     * Gets the PortalSettingsClient object to access its operations.
     *
     * @return the PortalSettingsClient object.
     */
    PortalSettingsClient getPortalSettings();

    /**
     * Gets the SignInSettingsClient object to access its operations.
     *
     * @return the SignInSettingsClient object.
     */
    SignInSettingsClient getSignInSettings();

    /**
     * Gets the SignUpSettingsClient object to access its operations.
     *
     * @return the SignUpSettingsClient object.
     */
    SignUpSettingsClient getSignUpSettings();

    /**
     * Gets the DelegationSettingsClient object to access its operations.
     *
     * @return the DelegationSettingsClient object.
     */
    DelegationSettingsClient getDelegationSettings();

    /**
     * Gets the PrivateEndpointConnectionsClient object to access its operations.
     *
     * @return the PrivateEndpointConnectionsClient object.
     */
    PrivateEndpointConnectionsClient getPrivateEndpointConnections();

    /**
     * Gets the ProductsClient object to access its operations.
     *
     * @return the ProductsClient object.
     */
    ProductsClient getProducts();

    /**
     * Gets the ProductApisClient object to access its operations.
     *
     * @return the ProductApisClient object.
     */
    ProductApisClient getProductApis();

    /**
     * Gets the ProductGroupsClient object to access its operations.
     *
     * @return the ProductGroupsClient object.
     */
    ProductGroupsClient getProductGroups();

    /**
     * Gets the ProductSubscriptionsClient object to access its operations.
     *
     * @return the ProductSubscriptionsClient object.
     */
    ProductSubscriptionsClient getProductSubscriptions();

    /**
     * Gets the ProductPoliciesClient object to access its operations.
     *
     * @return the ProductPoliciesClient object.
     */
    ProductPoliciesClient getProductPolicies();

    /**
     * Gets the QuotaByCounterKeysClient object to access its operations.
     *
     * @return the QuotaByCounterKeysClient object.
     */
    QuotaByCounterKeysClient getQuotaByCounterKeys();

    /**
     * Gets the QuotaByPeriodKeysClient object to access its operations.
     *
     * @return the QuotaByPeriodKeysClient object.
     */
    QuotaByPeriodKeysClient getQuotaByPeriodKeys();

    /**
     * Gets the RegionsClient object to access its operations.
     *
     * @return the RegionsClient object.
     */
    RegionsClient getRegions();

    /**
     * Gets the ReportsClient object to access its operations.
     *
     * @return the ReportsClient object.
     */
    ReportsClient getReports();

    /**
     * Gets the GlobalSchemasClient object to access its operations.
     *
     * @return the GlobalSchemasClient object.
     */
    GlobalSchemasClient getGlobalSchemas();

    /**
     * Gets the TenantSettingsClient object to access its operations.
     *
     * @return the TenantSettingsClient object.
     */
    TenantSettingsClient getTenantSettings();

    /**
     * Gets the ApiManagementSkusClient object to access its operations.
     *
     * @return the ApiManagementSkusClient object.
     */
    ApiManagementSkusClient getApiManagementSkus();

    /**
     * Gets the SubscriptionsClient object to access its operations.
     *
     * @return the SubscriptionsClient object.
     */
    SubscriptionsClient getSubscriptions();

    /**
     * Gets the TagResourcesClient object to access its operations.
     *
     * @return the TagResourcesClient object.
     */
    TagResourcesClient getTagResources();

    /**
     * Gets the TenantAccessClient object to access its operations.
     *
     * @return the TenantAccessClient object.
     */
    TenantAccessClient getTenantAccess();

    /**
     * Gets the TenantAccessGitsClient object to access its operations.
     *
     * @return the TenantAccessGitsClient object.
     */
    TenantAccessGitsClient getTenantAccessGits();

    /**
     * Gets the TenantConfigurationsClient object to access its operations.
     *
     * @return the TenantConfigurationsClient object.
     */
    TenantConfigurationsClient getTenantConfigurations();

    /**
     * Gets the UsersClient object to access its operations.
     *
     * @return the UsersClient object.
     */
    UsersClient getUsers();

    /**
     * Gets the UserGroupsClient object to access its operations.
     *
     * @return the UserGroupsClient object.
     */
    UserGroupsClient getUserGroups();

    /**
     * Gets the UserSubscriptionsClient object to access its operations.
     *
     * @return the UserSubscriptionsClient object.
     */
    UserSubscriptionsClient getUserSubscriptions();

    /**
     * Gets the UserIdentitiesClient object to access its operations.
     *
     * @return the UserIdentitiesClient object.
     */
    UserIdentitiesClient getUserIdentities();

    /**
     * Gets the UserConfirmationPasswordsClient object to access its operations.
     *
     * @return the UserConfirmationPasswordsClient object.
     */
    UserConfirmationPasswordsClient getUserConfirmationPasswords();
}
