{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "management.azure.com",
  "info": {
    "description": "Use these REST APIs to manage Azure API Management deployment.",
    "title": "ApiManagementClient",
    "version": "2016-07-07",
    "x-apisguru-categories": [
      "cloud"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/apimanagement/resource-manager/Microsoft.ApiManagement/stable/2016-07-07/apimdeployment.json",
        "version": "2.0"
      }
    ],
    "x-preferred": false,
    "x-providerName": "azure.com",
    "x-serviceName": "apimanagement-apimdeployment",
    "x-tags": [
      "Azure",
      "Microsoft"
    ]
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "azure_auth": {
      "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
      "description": "Azure Active Directory OAuth2 Flow.",
      "flow": "implicit",
      "scopes": {
        "user_impersonation": "impersonate your user account"
      },
      "type": "oauth2"
    }
  },
  "security": [
    {
      "azure_auth": [
        "user_impersonation"
      ]
    }
  ],
  "parameters": {
    "ApiVersionParameter": {
      "description": "Version of the API to be used with the client request.",
      "in": "query",
      "name": "api-version",
      "required": true,
      "type": "string"
    },
    "ResourceGroupNameParameter": {
      "description": "The name of the resource group.",
      "in": "path",
      "name": "resourceGroupName",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "ServiceNameParameter": {
      "description": "The name of the API Management service.",
      "in": "path",
      "maxLength": 50,
      "minLength": 1,
      "name": "serviceName",
      "pattern": "^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "SubscriptionIdParameter": {
      "description": "Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.",
      "in": "path",
      "name": "subscriptionId",
      "required": true,
      "type": "string"
    }
  },
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/checkNameAvailability": {
      "post": {
        "description": "Checks availability and correctness of a name for an API Management service.",
        "operationId": "ApiManagementServices_CheckNameAvailability",
        "parameters": [
          {
            "description": "Parameters supplied to the CheckNameAvailability operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceCheckNameAvailabilityParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The result of check name availability.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceNameAvailabilityResult"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/service/": {
      "get": {
        "description": "Lists all API Management services within an Azure subscription.",
        "operationId": "ApiManagementServices_List",
        "parameters": [
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The API Management service list.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceListResult"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/": {
      "get": {
        "description": "List all API Management services within a resource group.",
        "operationId": "ApiManagementServices_ListByResourceGroup",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The API Management service list.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceListResult"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}": {
      "delete": {
        "description": "Deletes an existing API Management service.",
        "operationId": "ApiManagementServices_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Service was successfully deleted."
          },
          "204": {
            "description": "Service is already deleted."
          },
          "404": {
            "description": "ApiManagement Service not found.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ]
      },
      "get": {
        "description": "Gets an API Management service resource description.",
        "operationId": "ApiManagementServices_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully got the API Management Service Resource.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "404": {
            "description": "ApiManagement Service not found.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ]
      },
      "patch": {
        "description": "Updates an existing API Management service.",
        "operationId": "ApiManagementServices_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters supplied to the CreateOrUpdate API Management service operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceBaseParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully updated the current API Management service.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "202": {
            "description": "Accepted: Location header contains the URL where the status of the long running operation can be checked."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ],
        "x-ms-long-running-operation": true
      },
      "put": {
        "description": "Creates or updates an API Management service. This is long running operation and could take several minutes to complete.",
        "operationId": "ApiManagementServices_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters supplied to the CreateOrUpdate API Management service operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The service was successfully set up.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "202": {
            "description": "Accepted: Location header contains the URL where the status of the long running operation can be checked."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backup": {
      "post": {
        "description": "Creates a backup of the API Management service to the given Azure Storage Account. This is long running operation and could take several minutes to complete.",
        "operationId": "ApiManagementServices_Backup",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters supplied to the ApiManagementServices_Backup operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceBackupRestoreParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully backed up the API Management service to the storage account.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "202": {
            "description": "Accepted: Location header contains the URL where the status of the long running operation can be checked."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/getssotoken": {
      "get": {
        "description": "Gets the Single-Sign-On token for the API Management Service which is valid for 5 Minutes.",
        "operationId": "ApiManagementServices_GetSsoToken",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK if successful with the SSO Redirect URI.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceGetSsoTokenResult",
              "x-ms-client-flatten": true
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/managedeployments": {
      "post": {
        "description": "Manages deployments of an API Management service. This operation can be used to do the following: Change SKU, Change SKU Units, Change Service Tier (Developer/Standard/Premium) and Manage VPN Configuration. This is a long running operation and can take several minutes to complete.",
        "operationId": "ApiManagementServices_ManageDeployments",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters supplied to the ManageDeployments operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceManageDeploymentsParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully applied the new deployment Configuration on the API Management service.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "202": {
            "description": "Accepted. The location header contains the URL where the status of the long running operation can be checked."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/restore": {
      "post": {
        "description": "Restores a backup of an API Management service created using the ApiManagementServices_Backup operation on the current service. This is a long running operation and could take several minutes to complete.",
        "operationId": "ApiManagementServices_Restore",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters supplied to the Restore API Management service from backup operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceBackupRestoreParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully restored the backup onto the API Management service.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "202": {
            "description": "Accepted: Location header contains the URL where the status of the long running operation can be checked."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/updatecertificate": {
      "post": {
        "description": "Upload Custom Domain SSL certificate for an API Management service.",
        "operationId": "ApiManagementServices_UploadCertificate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters supplied to the Upload SSL certificate for an API Management service operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceUploadCertificateParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully uploaded certificate to the API Management Service.",
            "schema": {
              "$ref": "#/definitions/CertificateInformation"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/updatehostname": {
      "post": {
        "description": "Creates, updates, or deletes the custom hostnames for an API Management service. The custom hostname can be applied to the Proxy and Portal endpoint. This is a long running operation and could take several minutes to complete.",
        "operationId": "ApiManagementServices_UpdateHostname",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters supplied to the UpdateHostname operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceUpdateHostnameParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Service was successfully updated with desired hostnames.",
            "schema": {
              "$ref": "#/definitions/ApiManagementServiceResource"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "ApiManagementService"
        ],
        "x-ms-long-running-operation": true
      }
    }
  },
  "definitions": {
    "AdditionalRegion": {
      "description": "Description of an additional API Management resource location.",
      "properties": {
        "location": {
          "description": "The location name of the additional region among Azure Data center regions.",
          "type": "string"
        },
        "skuType": {
          "description": "The SKU type in the location.",
          "enum": [
            "Developer",
            "Standard",
            "Premium"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "SkuType"
          }
        },
        "skuUnitCount": {
          "default": 1,
          "description": "The SKU Unit count at the location. The maximum SKU Unit count depends on the SkuType. Maximum allowed for Developer SKU is 1, for Standard SKU is 4, and for Premium SKU is 10, at a location.",
          "format": "int32",
          "maximum": 10,
          "type": "integer"
        },
        "staticIPs": {
          "description": "Static IP addresses of the location's virtual machines.",
          "items": {
            "type": "string"
          },
          "readOnly": true,
          "type": "array"
        },
        "vpnconfiguration": {
          "$ref": "#/definitions/VirtualNetworkConfiguration",
          "description": "Virtual network configuration for the location."
        }
      },
      "required": [
        "location",
        "skuType"
      ]
    },
    "ApiManagementServiceBackupRestoreParameters": {
      "description": "Parameters supplied to the Backup/Restore of an API Management service operation.",
      "properties": {
        "accessKey": {
          "description": "Azure Cloud Storage account (used to place/retrieve the backup) access key.",
          "type": "string"
        },
        "backupName": {
          "description": "The name of the backup file to create.",
          "type": "string"
        },
        "containerName": {
          "description": "Azure Cloud Storage blob container name used to place/retrieve the backup.",
          "type": "string"
        },
        "storageAccount": {
          "description": "Azure Cloud Storage account (used to place/retrieve the backup) name.",
          "type": "string"
        }
      },
      "required": [
        "storageAccount",
        "accessKey",
        "containerName",
        "backupName"
      ]
    },
    "ApiManagementServiceBaseParameters": {
      "description": "Parameters supplied to the Update API Management service operation.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/ApiManagementServiceProperties",
          "description": "Properties of the API Management service.",
          "x-ms-client-flatten": true
        },
        "sku": {
          "$ref": "#/definitions/ApiManagementServiceSkuProperties",
          "description": "SKU properties of the API Management service."
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "API Management service tags. A maximum of 10 tags can be provided for a resource, and each tag must have a key no greater than 128 characters (and a value no greater than 256 characters).",
          "type": "object"
        }
      }
    },
    "ApiManagementServiceCheckNameAvailabilityParameters": {
      "description": "Parameters supplied to the CheckNameAvailability operation.",
      "properties": {
        "name": {
          "description": "The name to check for availability.",
          "type": "string"
        }
      },
      "required": [
        "name"
      ]
    },
    "ApiManagementServiceGetSsoTokenResult": {
      "description": "The response of the GetSsoToken operation.",
      "properties": {
        "redirect_uri": {
          "description": "Redirect URL containing the SSO token.",
          "type": "string"
        }
      }
    },
    "ApiManagementServiceListResult": {
      "description": "The response of the List API Management services operation.",
      "properties": {
        "nextLink": {
          "description": "Link to the next set of results. Not empty if Value contains incomplete list of API Management services.",
          "type": "string"
        },
        "value": {
          "description": "Result of the List API Management services operation.",
          "items": {
            "$ref": "#/definitions/ApiManagementServiceResource"
          },
          "type": "array"
        }
      },
      "required": [
        "value"
      ]
    },
    "ApiManagementServiceManageDeploymentsParameters": {
      "description": "Parameters supplied to the ManageDeployments operation.",
      "properties": {
        "additionalLocations": {
          "description": "Additional data center locations for the API Management service.",
          "items": {
            "$ref": "#/definitions/AdditionalRegion"
          },
          "type": "array"
        },
        "location": {
          "description": "Location of the API Management service Azure data center.",
          "type": "string"
        },
        "skuType": {
          "description": "SKU type of the API Management service.",
          "enum": [
            "Developer",
            "Standard",
            "Premium"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "SkuType"
          }
        },
        "skuUnitCount": {
          "default": 1,
          "description": "SKU Unit count of the API Management service. Default value is 1.",
          "format": "int32",
          "type": "integer"
        },
        "vpnConfiguration": {
          "$ref": "#/definitions/VirtualNetworkConfiguration",
          "description": "Virtual network configuration."
        },
        "vpnType": {
          "default": "None",
          "description": "The type of VPN in which API Management service needs to be configured in. None (Default Value) means the API Management service is not part of any Virtual Network, External means the API Management deployment is set up inside a Virtual Network having an Internet Facing Endpoint, and Internal means that the API Management service deployment is set up inside a Virtual Network having an Intranet Facing Endpoint only. When vpnConfiguration is specified, vpnType must be specified.",
          "enum": [
            "None",
            "External",
            "Internal"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "VirtualNetworkType"
          }
        }
      },
      "required": [
        "location",
        "skuType"
      ]
    },
    "ApiManagementServiceNameAvailabilityResult": {
      "description": "Response of the CheckNameAvailability operation.",
      "properties": {
        "message": {
          "description": "If reason == invalid, provide the user with the reason why the given name is invalid, and provide the resource naming requirements so that the user can select a valid name. If reason == AlreadyExists, explain that <resourceName> is already in use, and direct them to select a different name.",
          "type": "string"
        },
        "nameAvailable": {
          "description": "True if the name is available and can be used to create a new API Management service; otherwise false.",
          "type": "boolean"
        },
        "reason": {
          "description": "Invalid indicates the name provided does not match the resource provider’s naming requirements (incorrect length, unsupported characters, etc.)  AlreadyExists indicates that the name is already in use and is therefore unavailable.",
          "enum": [
            "Valid",
            "Invalid",
            "AlreadyExists"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "NameAvailabilityReason"
          }
        }
      },
      "required": [
        "nameAvailable"
      ]
    },
    "ApiManagementServiceProperties": {
      "description": "Properties of an API Management service resource description.",
      "properties": {
        "additionalLocations": {
          "description": "Additional datacenter locations of the API Management service.",
          "items": {
            "$ref": "#/definitions/AdditionalRegion"
          },
          "type": "array"
        },
        "addresserEmail": {
          "description": "Addresser email.",
          "type": "string"
        },
        "createdAtUtc": {
          "description": "Creation UTC date of the API Management service.The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "customProperties": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom properties of the API Management service, like disabling TLS 1.0.",
          "type": "object"
        },
        "hostnameConfigurations": {
          "description": "Custom hostname configuration of the API Management service.",
          "items": {
            "$ref": "#/definitions/HostnameConfiguration"
          },
          "type": "array"
        },
        "managementApiUrl": {
          "description": "Management API endpoint URL of the API Management service.",
          "readOnly": true,
          "type": "string"
        },
        "portalUrl": {
          "description": "Publisher portal endpoint Url of the API Management service.",
          "readOnly": true,
          "type": "string"
        },
        "provisioningState": {
          "description": "The current provisioning state of the API Management service which can be one of the following: Created/Activating/Succeeded/Updating/Failed/Stopped/Terminating/TerminationFailed/Deleted.",
          "readOnly": true,
          "type": "string"
        },
        "publisherEmail": {
          "description": "Publisher email.",
          "maxLength": 100,
          "type": "string"
        },
        "publisherName": {
          "description": "Publisher name.",
          "type": "string"
        },
        "runtimeUrl": {
          "description": "Proxy endpoint URL of the API Management service.",
          "readOnly": true,
          "type": "string"
        },
        "scmUrl": {
          "description": "SCM endpoint URL of the API Management service.",
          "readOnly": true,
          "type": "string"
        },
        "staticIPs": {
          "description": "Static IP addresses of the API Management service virtual machines. Available only for Standard and Premium SKU.",
          "items": {
            "type": "string"
          },
          "readOnly": true,
          "type": "array"
        },
        "targetProvisioningState": {
          "description": "The provisioning state of the API Management service, which is targeted by the long running operation started on the service.",
          "readOnly": true,
          "type": "string"
        },
        "vpnType": {
          "default": "None",
          "description": "The type of VPN in which API Management service needs to be configured in. None (Default Value) means the API Management service is not part of any Virtual Network, External means the API Management deployment is set up inside a Virtual Network having an Internet Facing Endpoint, and Internal means that API Management deployment is setup inside a Virtual Network having an Intranet Facing Endpoint only.",
          "enum": [
            "None",
            "External",
            "Internal"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "VirtualNetworkType"
          }
        },
        "vpnconfiguration": {
          "$ref": "#/definitions/VirtualNetworkConfiguration",
          "description": "Virtual network configuration of the API Management service."
        }
      },
      "required": [
        "publisherEmail",
        "publisherName"
      ]
    },
    "ApiManagementServiceResource": {
      "allOf": [
        {
          "$ref": "#/definitions/ApiManagementServiceBaseParameters"
        }
      ],
      "description": "Description of an API Management service resource.",
      "properties": {
        "etag": {
          "description": "ETag of the resource.",
          "type": "string"
        },
        "id": {
          "description": "The ID of the created API Management service.",
          "readOnly": true,
          "type": "string"
        },
        "location": {
          "description": "Datacenter location of the API Management service.",
          "type": "string"
        },
        "name": {
          "description": "Name of the API Management service.",
          "readOnly": true,
          "type": "string"
        },
        "type": {
          "description": "Resource type of the API Management service.",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "sku",
        "properties",
        "location"
      ]
    },
    "ApiManagementServiceSkuProperties": {
      "description": "API Management service resource SKU properties.",
      "properties": {
        "capacity": {
          "default": 1,
          "description": "Capacity of the SKU (number of deployed units of the SKU). The default value is 1.",
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "description": "Name of the Sku.",
          "enum": [
            "Developer",
            "Standard",
            "Premium"
          ],
          "externalDocs": {
            "url": "https://azure.microsoft.com/en-us/pricing/details/api-management/"
          },
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "SkuType"
          }
        }
      },
      "required": [
        "name"
      ]
    },
    "ApiManagementServiceUpdateHostnameParameters": {
      "description": "Parameters supplied to the UpdateHostname operation.",
      "properties": {
        "delete": {
          "description": "Hostnames types to delete.",
          "items": {
            "enum": [
              "Proxy",
              "Portal",
              "Management",
              "Scm"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "HostnameType"
            }
          },
          "type": "array"
        },
        "update": {
          "description": "Hostnames to create or update.",
          "items": {
            "$ref": "#/definitions/HostnameConfiguration"
          },
          "type": "array"
        }
      }
    },
    "ApiManagementServiceUploadCertificateParameters": {
      "description": "Parameters supplied to the Upload SSL certificate for an API Management service operation.",
      "properties": {
        "certificate": {
          "description": "Base64 Encoded certificate.",
          "type": "string"
        },
        "certificate_password": {
          "description": "Certificate password.",
          "type": "string"
        },
        "type": {
          "description": "Hostname type.",
          "enum": [
            "Proxy",
            "Portal",
            "Management",
            "Scm"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "HostnameType"
          }
        }
      },
      "required": [
        "type",
        "certificate",
        "certificate_password"
      ]
    },
    "CertificateInformation": {
      "description": "SSL certificate information.",
      "properties": {
        "expiry": {
          "description": "Expiration date of the certificate. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.",
          "format": "date-time",
          "type": "string"
        },
        "subject": {
          "description": "Subject of the certificate.",
          "type": "string"
        },
        "thumbprint": {
          "description": "Thumbprint of the certificate.",
          "type": "string"
        }
      },
      "required": [
        "expiry",
        "thumbprint",
        "subject"
      ]
    },
    "ErrorResponse": {
      "description": "Error Response.",
      "properties": {
        "code": {
          "description": "Error code.",
          "type": "string"
        },
        "message": {
          "description": "Error message indicating why the operation failed.",
          "type": "string"
        }
      }
    },
    "HostnameConfiguration": {
      "description": "Custom hostname configuration.",
      "properties": {
        "certificate": {
          "$ref": "#/definitions/CertificateInformation",
          "description": "Certificate information."
        },
        "hostname": {
          "description": "Hostname.",
          "type": "string"
        },
        "type": {
          "description": "Hostname type.",
          "enum": [
            "Proxy",
            "Portal",
            "Management",
            "Scm"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "HostnameType"
          }
        }
      },
      "required": [
        "type",
        "hostname",
        "certificate"
      ]
    },
    "VirtualNetworkConfiguration": {
      "description": "Configuration of a virtual network to which API Management service is deployed.",
      "properties": {
        "location": {
          "description": "The location of the virtual network.",
          "type": "string"
        },
        "subnetResourceId": {
          "description": "The name of the subnet Resource ID. This has format /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/Microsoft.{Network|ClassicNetwork}/VirtualNetworks/{virtual network name}/subnets/{subnet name}.",
          "type": "string"
        },
        "subnetname": {
          "description": "The name of the subnet.",
          "readOnly": true,
          "type": "string"
        },
        "vnetid": {
          "description": "The virtual network ID. This is typically a GUID. Expect a null GUID by default.",
          "readOnly": true,
          "type": "string"
        }
      }
    }
  }
}