import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages an API Management Service.
 *
 * ## Disclaimers
 *
 * > **Note:** When creating a new API Management resource in version 3.0 of the AzureRM Provider and later, please be aware that the AzureRM Provider will now clean up any sample APIs and Products created by the Azure API during the creation of the API Management resource.
 *
 * > **Note:** Version 2.77 and later of the Azure Provider include a Feature Toggle which will purge an API Management resource on destroy, rather than the default soft-delete. See the Features block documentation for more information on Feature Toggles within Terraform.
 *
 * > **Note:** It's possible to define Custom Domains both within the `azure.apimanagement.Service` resource via the `hostnameConfigurations` block and by using the `azure.apimanagement.CustomDomain` resource. However it's not possible to use both methods to manage Custom Domains within an API Management Service, since there'll be conflicts.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 *
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-resources",
 *     location: "West Europe",
 * });
 * const exampleService = new azure.apimanagement.Service("example", {
 *     name: "example-apim",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     publisherName: "My Company",
 *     publisherEmail: "company@exmaple.com",
 *     skuName: "Developer_1",
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.ApiManagement` - 2024-05-01, 2022-08-01
 *
 * ## Import
 *
 * API Management Services can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:apimanagement/service:Service example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.ApiManagement/service/instance1
 * ```
 */
export declare class Service extends pulumi.CustomResource {
    /**
     * Get an existing Service resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ServiceState, opts?: pulumi.CustomResourceOptions): Service;
    /**
     * Returns true if the given object is an instance of Service.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Service;
    /**
     * One or more `additionalLocation` blocks as defined below.
     */
    readonly additionalLocations: pulumi.Output<outputs.apimanagement.ServiceAdditionalLocation[] | undefined>;
    /**
     * One or more `certificate` blocks (up to 10) as defined below.
     */
    readonly certificates: pulumi.Output<outputs.apimanagement.ServiceCertificate[] | undefined>;
    /**
     * Enforce a client certificate to be presented on each request to the gateway? This is only supported when SKU type is `Consumption`.
     */
    readonly clientCertificateEnabled: pulumi.Output<boolean | undefined>;
    /**
     * A `delegation` block as defined below.
     */
    readonly delegation: pulumi.Output<outputs.apimanagement.ServiceDelegation>;
    /**
     * The URL for the Developer Portal associated with this API Management service.
     */
    readonly developerPortalUrl: pulumi.Output<string>;
    /**
     * Disable the gateway in main region? This is only supported when `additionalLocation` is set.
     */
    readonly gatewayDisabled: pulumi.Output<boolean | undefined>;
    /**
     * The URL of the Regional Gateway for the API Management Service in the specified region.
     */
    readonly gatewayRegionalUrl: pulumi.Output<string>;
    /**
     * The URL of the Gateway for the API Management Service.
     */
    readonly gatewayUrl: pulumi.Output<string>;
    /**
     * A `hostnameConfiguration` block as defined below.
     */
    readonly hostnameConfiguration: pulumi.Output<outputs.apimanagement.ServiceHostnameConfiguration>;
    /**
     * An `identity` block as defined below.
     */
    readonly identity: pulumi.Output<outputs.apimanagement.ServiceIdentity | undefined>;
    /**
     * The Azure location where the API Management Service exists. Changing this forces a new resource to be created.
     */
    readonly location: pulumi.Output<string>;
    /**
     * The URL for the Management API associated with this API Management service.
     */
    readonly managementApiUrl: pulumi.Output<string>;
    /**
     * The version which the control plane API calls to API Management service are limited with version equal to or newer than.
     */
    readonly minApiVersion: pulumi.Output<string | undefined>;
    /**
     * The name of the API Management Service. Changing this forces a new resource to be created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Email address from which the notification will be sent.
     */
    readonly notificationSenderEmail: pulumi.Output<string>;
    /**
     * The URL for the Publisher Portal associated with this API Management service.
     */
    readonly portalUrl: pulumi.Output<string>;
    /**
     * The Private IP addresses of the API Management Service. Available only when the API Manager instance is using Virtual Network mode.
     */
    readonly privateIpAddresses: pulumi.Output<string[]>;
    /**
     * A `protocols` block as defined below.
     */
    readonly protocols: pulumi.Output<outputs.apimanagement.ServiceProtocols>;
    /**
     * ID of a standard SKU IPv4 Public IP.
     *
     * > **Note:** Custom public IPs are only supported on the `Premium` and `Developer` tiers when deployed in a virtual network.
     */
    readonly publicIpAddressId: pulumi.Output<string | undefined>;
    /**
     * Public Static Load Balanced IP addresses of the API Management service in the additional location. Available only for Basic, Standard and Premium SKU.
     */
    readonly publicIpAddresses: pulumi.Output<string[]>;
    /**
     * Is public access to the service allowed? Defaults to `true`.
     *
     * > **Note:** This option is applicable only to the Management plane, not the API gateway or Developer portal. It is required to be `true` on the creation.
     */
    readonly publicNetworkAccessEnabled: pulumi.Output<boolean | undefined>;
    /**
     * The email of publisher/company.
     */
    readonly publisherEmail: pulumi.Output<string>;
    /**
     * The name of publisher/company.
     */
    readonly publisherName: pulumi.Output<string>;
    /**
     * The name of the Resource Group in which the API Management Service should exist. Changing this forces a new resource to be created.
     */
    readonly resourceGroupName: pulumi.Output<string>;
    /**
     * The URL for the SCM (Source Code Management) Endpoint associated with this API Management service.
     */
    readonly scmUrl: pulumi.Output<string>;
    /**
     * A `security` block as defined below.
     */
    readonly security: pulumi.Output<outputs.apimanagement.ServiceSecurity>;
    /**
     * A `signIn` block as defined below.
     */
    readonly signIn: pulumi.Output<outputs.apimanagement.ServiceSignIn>;
    /**
     * A `signUp` block as defined below.
     */
    readonly signUp: pulumi.Output<outputs.apimanagement.ServiceSignUp>;
    /**
     * `skuName` is a string consisting of two parts separated by an underscore(\_). The first part is the `name`, valid values include: `Consumption`, `Developer`, `Basic`, `BasicV2`, `Standard`, `StandardV2`, `Premium` and `PremiumV2`. The second part is the `capacity` (e.g. the number of deployed units of the `sku`), which must be a positive `integer` (e.g. `Developer_1`).
     *
     * > **Note:** Premium SKUs are limited to a default maximum of 12 (i.e. `Premium_12`), this can, however, be increased via support request.
     *
     * > **Note:** Consumption SKU capacity should be 0 (e.g. `Consumption_0`) as this tier includes automatic scaling.
     */
    readonly skuName: pulumi.Output<string>;
    /**
     * A mapping of tags assigned to the resource.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * A `tenantAccess` block as defined below.
     */
    readonly tenantAccess: pulumi.Output<outputs.apimanagement.ServiceTenantAccess>;
    /**
     * A `virtualNetworkConfiguration` block as defined below. Required when `virtualNetworkType` is `External` or `Internal`.
     */
    readonly virtualNetworkConfiguration: pulumi.Output<outputs.apimanagement.ServiceVirtualNetworkConfiguration | undefined>;
    /**
     * The type of virtual network you want to use, valid values include: `None`, `External`, `Internal`. Defaults to `None`.
     *
     * > **Note:** Please ensure that in the subnet, inbound port 3443 is open when `virtualNetworkType` is `Internal` or `External`. Additionally, please ensure other necessary ports are open according to [api management network configuration](https://learn.microsoft.com/azure/api-management/virtual-network-reference).
     */
    readonly virtualNetworkType: pulumi.Output<string | undefined>;
    /**
     * Specifies a list of Availability Zones in which this API Management service should be located.
     *
     * > **Note:** Availability zones are only supported in the Premium tier.
     */
    readonly zones: pulumi.Output<string[] | undefined>;
    /**
     * Create a Service resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ServiceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Service resources.
 */
export interface ServiceState {
    /**
     * One or more `additionalLocation` blocks as defined below.
     */
    additionalLocations?: pulumi.Input<pulumi.Input<inputs.apimanagement.ServiceAdditionalLocation>[] | undefined>;
    /**
     * One or more `certificate` blocks (up to 10) as defined below.
     */
    certificates?: pulumi.Input<pulumi.Input<inputs.apimanagement.ServiceCertificate>[] | undefined>;
    /**
     * Enforce a client certificate to be presented on each request to the gateway? This is only supported when SKU type is `Consumption`.
     */
    clientCertificateEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * A `delegation` block as defined below.
     */
    delegation?: pulumi.Input<inputs.apimanagement.ServiceDelegation | undefined>;
    /**
     * The URL for the Developer Portal associated with this API Management service.
     */
    developerPortalUrl?: pulumi.Input<string | undefined>;
    /**
     * Disable the gateway in main region? This is only supported when `additionalLocation` is set.
     */
    gatewayDisabled?: pulumi.Input<boolean | undefined>;
    /**
     * The URL of the Regional Gateway for the API Management Service in the specified region.
     */
    gatewayRegionalUrl?: pulumi.Input<string | undefined>;
    /**
     * The URL of the Gateway for the API Management Service.
     */
    gatewayUrl?: pulumi.Input<string | undefined>;
    /**
     * A `hostnameConfiguration` block as defined below.
     */
    hostnameConfiguration?: pulumi.Input<inputs.apimanagement.ServiceHostnameConfiguration | undefined>;
    /**
     * An `identity` block as defined below.
     */
    identity?: pulumi.Input<inputs.apimanagement.ServiceIdentity | undefined>;
    /**
     * The Azure location where the API Management Service exists. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * The URL for the Management API associated with this API Management service.
     */
    managementApiUrl?: pulumi.Input<string | undefined>;
    /**
     * The version which the control plane API calls to API Management service are limited with version equal to or newer than.
     */
    minApiVersion?: pulumi.Input<string | undefined>;
    /**
     * The name of the API Management Service. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Email address from which the notification will be sent.
     */
    notificationSenderEmail?: pulumi.Input<string | undefined>;
    /**
     * The URL for the Publisher Portal associated with this API Management service.
     */
    portalUrl?: pulumi.Input<string | undefined>;
    /**
     * The Private IP addresses of the API Management Service. Available only when the API Manager instance is using Virtual Network mode.
     */
    privateIpAddresses?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * A `protocols` block as defined below.
     */
    protocols?: pulumi.Input<inputs.apimanagement.ServiceProtocols | undefined>;
    /**
     * ID of a standard SKU IPv4 Public IP.
     *
     * > **Note:** Custom public IPs are only supported on the `Premium` and `Developer` tiers when deployed in a virtual network.
     */
    publicIpAddressId?: pulumi.Input<string | undefined>;
    /**
     * Public Static Load Balanced IP addresses of the API Management service in the additional location. Available only for Basic, Standard and Premium SKU.
     */
    publicIpAddresses?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Is public access to the service allowed? Defaults to `true`.
     *
     * > **Note:** This option is applicable only to the Management plane, not the API gateway or Developer portal. It is required to be `true` on the creation.
     */
    publicNetworkAccessEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The email of publisher/company.
     */
    publisherEmail?: pulumi.Input<string | undefined>;
    /**
     * The name of publisher/company.
     */
    publisherName?: pulumi.Input<string | undefined>;
    /**
     * The name of the Resource Group in which the API Management Service should exist. Changing this forces a new resource to be created.
     */
    resourceGroupName?: pulumi.Input<string | undefined>;
    /**
     * The URL for the SCM (Source Code Management) Endpoint associated with this API Management service.
     */
    scmUrl?: pulumi.Input<string | undefined>;
    /**
     * A `security` block as defined below.
     */
    security?: pulumi.Input<inputs.apimanagement.ServiceSecurity | undefined>;
    /**
     * A `signIn` block as defined below.
     */
    signIn?: pulumi.Input<inputs.apimanagement.ServiceSignIn | undefined>;
    /**
     * A `signUp` block as defined below.
     */
    signUp?: pulumi.Input<inputs.apimanagement.ServiceSignUp | undefined>;
    /**
     * `skuName` is a string consisting of two parts separated by an underscore(\_). The first part is the `name`, valid values include: `Consumption`, `Developer`, `Basic`, `BasicV2`, `Standard`, `StandardV2`, `Premium` and `PremiumV2`. The second part is the `capacity` (e.g. the number of deployed units of the `sku`), which must be a positive `integer` (e.g. `Developer_1`).
     *
     * > **Note:** Premium SKUs are limited to a default maximum of 12 (i.e. `Premium_12`), this can, however, be increased via support request.
     *
     * > **Note:** Consumption SKU capacity should be 0 (e.g. `Consumption_0`) as this tier includes automatic scaling.
     */
    skuName?: pulumi.Input<string | undefined>;
    /**
     * A mapping of tags assigned to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * A `tenantAccess` block as defined below.
     */
    tenantAccess?: pulumi.Input<inputs.apimanagement.ServiceTenantAccess | undefined>;
    /**
     * A `virtualNetworkConfiguration` block as defined below. Required when `virtualNetworkType` is `External` or `Internal`.
     */
    virtualNetworkConfiguration?: pulumi.Input<inputs.apimanagement.ServiceVirtualNetworkConfiguration | undefined>;
    /**
     * The type of virtual network you want to use, valid values include: `None`, `External`, `Internal`. Defaults to `None`.
     *
     * > **Note:** Please ensure that in the subnet, inbound port 3443 is open when `virtualNetworkType` is `Internal` or `External`. Additionally, please ensure other necessary ports are open according to [api management network configuration](https://learn.microsoft.com/azure/api-management/virtual-network-reference).
     */
    virtualNetworkType?: pulumi.Input<string | undefined>;
    /**
     * Specifies a list of Availability Zones in which this API Management service should be located.
     *
     * > **Note:** Availability zones are only supported in the Premium tier.
     */
    zones?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
/**
 * The set of arguments for constructing a Service resource.
 */
export interface ServiceArgs {
    /**
     * One or more `additionalLocation` blocks as defined below.
     */
    additionalLocations?: pulumi.Input<pulumi.Input<inputs.apimanagement.ServiceAdditionalLocation>[] | undefined>;
    /**
     * One or more `certificate` blocks (up to 10) as defined below.
     */
    certificates?: pulumi.Input<pulumi.Input<inputs.apimanagement.ServiceCertificate>[] | undefined>;
    /**
     * Enforce a client certificate to be presented on each request to the gateway? This is only supported when SKU type is `Consumption`.
     */
    clientCertificateEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * A `delegation` block as defined below.
     */
    delegation?: pulumi.Input<inputs.apimanagement.ServiceDelegation | undefined>;
    /**
     * Disable the gateway in main region? This is only supported when `additionalLocation` is set.
     */
    gatewayDisabled?: pulumi.Input<boolean | undefined>;
    /**
     * A `hostnameConfiguration` block as defined below.
     */
    hostnameConfiguration?: pulumi.Input<inputs.apimanagement.ServiceHostnameConfiguration | undefined>;
    /**
     * An `identity` block as defined below.
     */
    identity?: pulumi.Input<inputs.apimanagement.ServiceIdentity | undefined>;
    /**
     * The Azure location where the API Management Service exists. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * The version which the control plane API calls to API Management service are limited with version equal to or newer than.
     */
    minApiVersion?: pulumi.Input<string | undefined>;
    /**
     * The name of the API Management Service. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Email address from which the notification will be sent.
     */
    notificationSenderEmail?: pulumi.Input<string | undefined>;
    /**
     * A `protocols` block as defined below.
     */
    protocols?: pulumi.Input<inputs.apimanagement.ServiceProtocols | undefined>;
    /**
     * ID of a standard SKU IPv4 Public IP.
     *
     * > **Note:** Custom public IPs are only supported on the `Premium` and `Developer` tiers when deployed in a virtual network.
     */
    publicIpAddressId?: pulumi.Input<string | undefined>;
    /**
     * Is public access to the service allowed? Defaults to `true`.
     *
     * > **Note:** This option is applicable only to the Management plane, not the API gateway or Developer portal. It is required to be `true` on the creation.
     */
    publicNetworkAccessEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The email of publisher/company.
     */
    publisherEmail: pulumi.Input<string>;
    /**
     * The name of publisher/company.
     */
    publisherName: pulumi.Input<string>;
    /**
     * The name of the Resource Group in which the API Management Service should exist. Changing this forces a new resource to be created.
     */
    resourceGroupName: pulumi.Input<string>;
    /**
     * A `security` block as defined below.
     */
    security?: pulumi.Input<inputs.apimanagement.ServiceSecurity | undefined>;
    /**
     * A `signIn` block as defined below.
     */
    signIn?: pulumi.Input<inputs.apimanagement.ServiceSignIn | undefined>;
    /**
     * A `signUp` block as defined below.
     */
    signUp?: pulumi.Input<inputs.apimanagement.ServiceSignUp | undefined>;
    /**
     * `skuName` is a string consisting of two parts separated by an underscore(\_). The first part is the `name`, valid values include: `Consumption`, `Developer`, `Basic`, `BasicV2`, `Standard`, `StandardV2`, `Premium` and `PremiumV2`. The second part is the `capacity` (e.g. the number of deployed units of the `sku`), which must be a positive `integer` (e.g. `Developer_1`).
     *
     * > **Note:** Premium SKUs are limited to a default maximum of 12 (i.e. `Premium_12`), this can, however, be increased via support request.
     *
     * > **Note:** Consumption SKU capacity should be 0 (e.g. `Consumption_0`) as this tier includes automatic scaling.
     */
    skuName: pulumi.Input<string>;
    /**
     * A mapping of tags assigned to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * A `tenantAccess` block as defined below.
     */
    tenantAccess?: pulumi.Input<inputs.apimanagement.ServiceTenantAccess | undefined>;
    /**
     * A `virtualNetworkConfiguration` block as defined below. Required when `virtualNetworkType` is `External` or `Internal`.
     */
    virtualNetworkConfiguration?: pulumi.Input<inputs.apimanagement.ServiceVirtualNetworkConfiguration | undefined>;
    /**
     * The type of virtual network you want to use, valid values include: `None`, `External`, `Internal`. Defaults to `None`.
     *
     * > **Note:** Please ensure that in the subnet, inbound port 3443 is open when `virtualNetworkType` is `Internal` or `External`. Additionally, please ensure other necessary ports are open according to [api management network configuration](https://learn.microsoft.com/azure/api-management/virtual-network-reference).
     */
    virtualNetworkType?: pulumi.Input<string | undefined>;
    /**
     * Specifies a list of Availability Zones in which this API Management service should be located.
     *
     * > **Note:** Availability zones are only supported in the Premium tier.
     */
    zones?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
//# sourceMappingURL=service.d.ts.map