{"id":18578847,"url":"https://github.com/libre-devops/terraform-azurerm-api-management","last_synced_at":"2026-03-19T05:09:06.482Z","repository":{"id":118714200,"uuid":"609348330","full_name":"libre-devops/terraform-azurerm-api-management","owner":"libre-devops","description":"A module used to deploy API Management resources","archived":false,"fork":false,"pushed_at":"2024-10-24T18:15:21.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-30T15:44:27.837Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libre-devops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-03T23:23:33.000Z","updated_at":"2024-10-24T18:15:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"b4ad40d7-fcda-4991-9248-e419a8cc3a2b","html_url":"https://github.com/libre-devops/terraform-azurerm-api-management","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":"libre-devops/terraform-module-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-api-management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-api-management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-api-management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-api-management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libre-devops","download_url":"https://codeload.github.com/libre-devops/terraform-azurerm-api-management/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453625,"owners_count":22073618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T23:38:01.615Z","updated_at":"2026-01-24T12:38:30.259Z","avatar_url":"https://github.com/libre-devops.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"```hcl\nresource \"azurerm_api_management\" \"apim\" {\n  for_each = { for instance in var.apim_instances : instance.name =\u003e instance }\n\n  name                          = each.value.name\n  resource_group_name           = each.value.rg_name\n  location                      = each.value.location\n  tags                          = each.value.tags\n  sku_name                      = each.value.sku_name\n  publisher_name                = each.value.publisher_name\n  publisher_email               = each.value.publisher_email\n  client_certificate_enabled    = each.value.client_cetuficate_enabled\n  gateway_disabled              = each.value.gateway_disabled\n  min_api_version               = each.value.min_api_version\n  public_ip_address_id          = each.value.public_ip_address_id\n  public_network_access_enabled = each.value.public_network_access_enabled\n  virtual_network_type          = each.value.virtual_network_type\n\n  dynamic \"additional_location\" {\n    for_each = each.value.additional_location != null ? each.value.additional_location : []\n    content {\n      location             = additional_location.value.location\n      capacity             = additional_location.value.capacity\n      zones                = additional_location.value.zones\n      public_ip_address_id = additional_location.value.public_ip_address_id\n\n      dynamic \"virtual_network_configuration\" {\n        for_each = additional_location.value.virtual_network_configuration != null ? [additional_location.value.virtual_network_configuration] : []\n        content {\n          subnet_id = virtual_network_configuration.value.subnet_id\n        }\n      }\n      gateway_disabled = additional_location.value.gateway_disabled\n    }\n  }\n\n  dynamic \"certificate\" {\n    for_each = each.value.certificate != null ? each.value.certificate : []\n    content {\n      encoded_certificate  = certificate.value.encoded_certificate\n      store_name           = certificate.value.store_name\n      certificate_password = certificate.value.certificate_password\n    }\n  }\n\n  dynamic \"hostname_configuration\" {\n    for_each = each.value.hostname_configuration != null ? [each.value.hostname_configuration] : []\n    content {\n      dynamic \"management\" {\n        for_each = try(each.value.hostname_configuration.management, [])\n        content {\n          host_name                       = management.value.host_name\n          key_vault_id                    = management.value.key_vault_id\n          certificate                     = management.value.certificate\n          certificate_password            = management.value.certificate_password\n          negotiate_client_certificate    = management.value.negotiate_client_certificate\n          ssl_keyvault_identity_client_id = management.value.ssl_keyvault_identity_client_id\n        }\n      }\n\n      dynamic \"portal\" {\n        for_each = try(each.value.hostname_configuration.portal, [])\n        content {\n          host_name                       = portal.value.host_name\n          key_vault_id                    = portal.value.key_vault_id\n          certificate                     = portal.value.certificate\n          certificate_password            = portal.value.certificate_password\n          negotiate_client_certificate    = portal.value.negotiate_client_certificate\n          ssl_keyvault_identity_client_id = portal.value.ssl_keyvault_identity_client_id\n        }\n      }\n\n      dynamic \"developer_portal\" {\n        for_each = try(each.value.hostname_configuration.developer_portal, [])\n        content {\n          host_name                       = developer_portal.value.host_name\n          key_vault_id                    = developer_portal.value.key_vault_id\n          certificate                     = developer_portal.value.certificate\n          certificate_password            = developer_portal.value.certificate_password\n          negotiate_client_certificate    = developer_portal.value.negotiate_client_certificate\n          ssl_keyvault_identity_client_id = developer_portal.value.ssl_keyvault_identity_client_id\n        }\n      }\n\n      dynamic \"proxy\" {\n        for_each = try(each.value.hostname_configuration.proxy, [])\n        content {\n          default_ssl_binding             = proxy.value.default_ssl_binding\n          host_name                       = proxy.value.host_name\n          key_vault_id                    = proxy.value.key_vault_id\n          certificate                     = proxy.value.certificate\n          certificate_password            = proxy.value.certificate_password\n          negotiate_client_certificate    = proxy.value.negotiate_client_certificate\n          ssl_keyvault_identity_client_id = proxy.value.ssl_keyvault_identity_client_id\n        }\n      }\n\n      dynamic \"scm\" {\n        for_each = try(each.value.hostname_configuration.scm, [])\n        content {\n          host_name                       = scm.value.host_name\n          key_vault_id                    = scm.value.key_vault_id\n          certificate                     = scm.value.certificate\n          certificate_password            = scm.value.certificate_password\n          negotiate_client_certificate    = scm.value.negotiate_client_certificate\n          ssl_keyvault_identity_client_id = scm.value.ssl_keyvault_identity_client_id\n        }\n      }\n    }\n  }\n\n  dynamic \"delegation\" {\n    for_each = each.value.delegation != null ? [each.value.delegation] : []\n    content {\n      subscriptions_enabled     = delegation.value.subscriptions_enabled\n      user_registration_enabled = delegation.value.user_registration_enabled\n      url                       = delegation.value.url\n      validation_key            = delegation.value.validation_key\n    }\n  }\n\n  dynamic \"sign_in\" {\n    for_each = each.value.sign_in != null ? [each.value.sign_in] : []\n    content {\n      enabled = sign_in.value.enabled\n    }\n  }\n\n  dynamic \"sign_up\" {\n    for_each = each.value.sign_up != null ? [each.value.sign_up] : []\n    content {\n      enabled = sign_up.value.enabled\n\n      dynamic \"terms_of_service\" {\n        for_each = sign_up.value.terms_of_service != null ? [sign_up.value.terms_of_service] : []\n        content {\n          enabled          = terms_of_service.value.enabled\n          consent_required = terms_of_service.value.consent_required\n          text             = terms_of_service.value.text\n        }\n      }\n    }\n  }\n\n  dynamic \"security\" {\n    for_each = each.value.security != null ? [each.value.security] : []\n    content {\n      enable_backend_ssl30                                = security.value.enable_backend_ssl30\n      enable_backend_tls10                                = security.value.enable_backend_tls10\n      enable_backend_tls11                                = security.value.enable_backend_tls11\n      enable_frontend_ssl30                               = security.value.enable_frontend_ssl30\n      enable_frontend_tls10                               = security.value.enable_frontend_tls10\n      enable_frontend_tls11                               = security.value.enable_frontend_tls11\n      tls_ecdhe_ecdsa_with_aes128_cbc_sha_ciphers_enabled = security.value.tls_ecdhe_ecdsa_with_aes128_cbc_sha_ciphers_enabled\n      tls_ecdhe_ecdsa_with_aes256_cbc_sha_ciphers_enabled = security.value.tls_ecdhe_ecdsa_with_aes256_cbc_sha_ciphers_enabled\n      tls_ecdhe_rsa_with_aes128_cbc_sha_ciphers_enabled   = security.value.tls_ecdhe_rsa_with_aes128_cbc_sha_ciphers_enabled\n      tls_ecdhe_rsa_with_aes256_cbc_sha_ciphers_enabled   = security.value.tls_ecdhe_rsa_with_aes256_cbc_sha_ciphers_enabled\n      tls_rsa_with_aes128_cbc_sha256_ciphers_enabled      = security.value.tls_rsa_with_aes128_cbc_sha256_ciphers_enabled\n      tls_rsa_with_aes128_cbc_sha_ciphers_enabled         = security.value.tls_rsa_with_aes128_cbc_sha_ciphers_enabled\n      tls_rsa_with_aes128_gcm_sha256_ciphers_enabled      = security.value.tls_rsa_with_aes128_gcm_sha256_ciphers_enabled\n      tls_rsa_with_aes256_gcm_sha384_ciphers_enabled      = security.value.tls_rsa_with_aes256_gcm_sha384_ciphers_enabled\n      tls_rsa_with_aes256_cbc_sha256_ciphers_enabled      = security.value.tls_rsa_with_aes256_cbc_sha256_ciphers_enabled\n      tls_rsa_with_aes256_cbc_sha_ciphers_enabled         = security.value.tls_rsa_with_aes256_cbc_sha_ciphers_enabled\n      triple_des_ciphers_enabled                          = security.value.triple_des_ciphers_enabled\n    }\n  }\n  dynamic \"identity\" {\n    for_each = each.value.identity_type == \"SystemAssigned\" ? [each.value.identity_type] : []\n    content {\n      type = each.value.identity_type\n    }\n  }\n\n  dynamic \"identity\" {\n    for_each = each.value.identity_type == \"SystemAssigned, UserAssigned\" ? [each.value.identity_type] : []\n    content {\n      type         = each.value.identity_type\n      identity_ids = try(each.value.identity_ids, [])\n    }\n  }\n\n\n  dynamic \"identity\" {\n    for_each = each.value.identity_type == \"UserAssigned\" ? [each.value.identity_type] : []\n    content {\n      type         = each.value.identity_type\n      identity_ids = length(try(each.value.identity_ids, [])) \u003e 0 ? each.value.identity_ids : []\n    }\n  }\n}\n```\n## Requirements\n\nNo requirements.\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_azurerm\"\u003e\u003c/a\u003e [azurerm](#provider\\_azurerm) | n/a |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [azurerm_api_management.apim](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_apim_instances\"\u003e\u003c/a\u003e [apim\\_instances](#input\\_apim\\_instances) | The APIM instances to make | \u003cpre\u003elist(object({\u003cbr\u003e    name                      = string\u003cbr\u003e    rg_name                   = string\u003cbr\u003e    location                  = optional(string, \"uksouth\")\u003cbr\u003e    tags                      = map(string)\u003cbr\u003e    publisher_name            = string\u003cbr\u003e    publisher_email           = string\u003cbr\u003e    sku_name                  = string\u003cbr\u003e    client_cetuficate_enabled = optional(bool)\u003cbr\u003e    gateway_disabled          = optional(bool)\u003cbr\u003e    min_api_version           = optional(string)\u003cbr\u003e    zones                     = optional(list(string))\u003cbr\u003e    identity_ids              = optional(list(string))\u003cbr\u003e    identity_type             = optional(string)\u003cbr\u003e    additional_location = optional(list(object({\u003cbr\u003e      location             = string\u003cbr\u003e      capacity             = optional(string)\u003cbr\u003e      zones                = optional(list(string))\u003cbr\u003e      public_ip_address_id = optional(string)\u003cbr\u003e      virtual_network_configuration = optional(object({\u003cbr\u003e        subnet_id = string\u003cbr\u003e      }))\u003cbr\u003e      gateway_disabled = optional(bool)\u003cbr\u003e    })))\u003cbr\u003e    certificate = optional(list(object({\u003cbr\u003e      encoded_certificate  = string\u003cbr\u003e      store_name           = string\u003cbr\u003e      certificate_password = optional(string)\u003cbr\u003e    })))\u003cbr\u003e    delegation = optional(object({\u003cbr\u003e      subscriptions_enabled     = optional(bool)\u003cbr\u003e      user_registration_enabled = optional(bool)\u003cbr\u003e      url                       = optional(string)\u003cbr\u003e      validation_key            = optional(string)\u003cbr\u003e    }))\u003cbr\u003e    hostname_configuration = optional(object({\u003cbr\u003e      management = optional(list(object({\u003cbr\u003e        host_name                       = string\u003cbr\u003e        key_vault_id                    = optional(string)\u003cbr\u003e        certificate                     = optional(string)\u003cbr\u003e        certificate_password            = optional(string)\u003cbr\u003e        negotiate_client_certificate    = optional(bool)\u003cbr\u003e        ssl_keyvault_identity_client_id = optional(string)\u003cbr\u003e      })))\u003cbr\u003e      portal = optional(list(object({\u003cbr\u003e        host_name                       = string\u003cbr\u003e        key_vault_id                    = optional(string)\u003cbr\u003e        certificate                     = optional(string)\u003cbr\u003e        certificate_password            = optional(string)\u003cbr\u003e        negotiate_client_certificate    = optional(bool)\u003cbr\u003e        ssl_keyvault_identity_client_id = optional(string)\u003cbr\u003e      })))\u003cbr\u003e      developer_portal = optional(list(object({\u003cbr\u003e        host_name                       = string\u003cbr\u003e        key_vault_id                    = optional(string)\u003cbr\u003e        certificate                     = optional(string)\u003cbr\u003e        certificate_password            = optional(string)\u003cbr\u003e        negotiate_client_certificate    = optional(bool)\u003cbr\u003e        ssl_keyvault_identity_client_id = optional(string)\u003cbr\u003e      })))\u003cbr\u003e      proxy = optional(list(object({\u003cbr\u003e        default_ssl_binding             = optional(bool)\u003cbr\u003e        host_name                       = string\u003cbr\u003e        key_vault_id                    = optional(string)\u003cbr\u003e        certificate                     = optional(string)\u003cbr\u003e        certificate_password            = optional(string)\u003cbr\u003e        negotiate_client_certificate    = optional(bool)\u003cbr\u003e        ssl_keyvault_identity_client_id = optional(string)\u003cbr\u003e      })))\u003cbr\u003e      scm = optional(list(object({\u003cbr\u003e        host_name                       = string\u003cbr\u003e        key_vault_id                    = optional(string)\u003cbr\u003e        certificate                     = optional(string)\u003cbr\u003e        certificate_password            = optional(string)\u003cbr\u003e        negotiate_client_certificate    = optional(bool)\u003cbr\u003e        ssl_keyvault_identity_client_id = optional(string)\u003cbr\u003e      })))\u003cbr\u003e\u003cbr\u003e    }))\u003cbr\u003e    notification_sender_email = optional(string)\u003cbr\u003e    protocols = optional(object({\u003cbr\u003e      enable_http2 = optional(bool)\u003cbr\u003e    }))\u003cbr\u003e    security = optional(object({\u003cbr\u003e      enable_backend_ssl30                                = optional(bool)\u003cbr\u003e      enable_backend_tls10                                = optional(bool)\u003cbr\u003e      enable_backend_tls11                                = optional(bool)\u003cbr\u003e      enable_frontend_ssl30                               = optional(bool)\u003cbr\u003e      enable_frontend_tls10                               = optional(bool)\u003cbr\u003e      enable_frontend_tls11                               = optional(bool)\u003cbr\u003e      tls_ecdhe_ecdsa_with_aes128_cbc_sha_ciphers_enabled = optional(bool)\u003cbr\u003e      tls_ecdhe_ecdsa_with_aes256_cbc_sha_ciphers_enabled = optional(bool)\u003cbr\u003e      tls_ecdhe_rsa_with_aes128_cbc_sha_ciphers_enabled   = optional(bool)\u003cbr\u003e      tls_ecdhe_rsa_with_aes256_cbc_sha_ciphers_enabled   = optional(bool)\u003cbr\u003e      tls_rsa_with_aes128_cbc_sha256_ciphers_enabled      = optional(bool)\u003cbr\u003e      tls_rsa_with_aes128_cbc_sha_ciphers_enabled         = optional(bool)\u003cbr\u003e      tls_rsa_with_aes128_gcm_sha256_ciphers_enabled      = optional(bool)\u003cbr\u003e      tls_rsa_with_aes256_gcm_sha384_ciphers_enabled      = optional(bool)\u003cbr\u003e      tls_rsa_with_aes256_cbc_sha256_ciphers_enabled      = optional(bool)\u003cbr\u003e      tls_rsa_with_aes256_cbc_sha_ciphers_enabled         = optional(bool)\u003cbr\u003e      triple_des_ciphers_enabled                          = optional(bool)\u003cbr\u003e    }))\u003cbr\u003e    sign_in = optional(object({\u003cbr\u003e      enabled = bool\u003cbr\u003e    }))\u003cbr\u003e    sign_up = optional(object({\u003cbr\u003e      enabled = bool\u003cbr\u003e      terms_of_service = optional(object({\u003cbr\u003e        enabled          = bool\u003cbr\u003e        consent_required = bool\u003cbr\u003e        text             = optional(string)\u003cbr\u003e      }))\u003cbr\u003e    }))\u003cbr\u003e    tenant_access = optional(object({\u003cbr\u003e      enabled = bool\u003cbr\u003e    }))\u003cbr\u003e    public_ip_address_id          = optional(string)\u003cbr\u003e    public_network_access_enabled = optional(bool, true)\u003cbr\u003e    virtual_network_type          = optional(string)\u003cbr\u003e    virtual_network_configuration = optional(object({\u003cbr\u003e      subnet_id = string\u003cbr\u003e    }))\u003cbr\u003e  }))\u003c/pre\u003e | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_apim_certificate_expiries\"\u003e\u003c/a\u003e [apim\\_certificate\\_expiries](#output\\_apim\\_certificate\\_expiries) | The expiration dates of the certificates for all the API Management instances. |\n| \u003ca name=\"output_apim_certificate_subjects\"\u003e\u003c/a\u003e [apim\\_certificate\\_subjects](#output\\_apim\\_certificate\\_subjects) | The subjects of the certificates for all the API Management instances. |\n| \u003ca name=\"output_apim_certificate_thumbprints\"\u003e\u003c/a\u003e [apim\\_certificate\\_thumbprints](#output\\_apim\\_certificate\\_thumbprints) | The thumbprints of the certificates for all the API Management instances. |\n| \u003ca name=\"output_apim_developer_portal_urls\"\u003e\u003c/a\u003e [apim\\_developer\\_portal\\_urls](#output\\_apim\\_developer\\_portal\\_urls) | The Developer Portal URLs of all the API Management instances. |\n| \u003ca name=\"output_apim_gateway_regional_urls\"\u003e\u003c/a\u003e [apim\\_gateway\\_regional\\_urls](#output\\_apim\\_gateway\\_regional\\_urls) | The Regional Gateway URLs of all the API Management instances. |\n| \u003ca name=\"output_apim_gateway_urls\"\u003e\u003c/a\u003e [apim\\_gateway\\_urls](#output\\_apim\\_gateway\\_urls) | The Gateway URLs of all the API Management instances. |\n| \u003ca name=\"output_apim_hostname_configuration_proxy_certificate_sources\"\u003e\u003c/a\u003e [apim\\_hostname\\_configuration\\_proxy\\_certificate\\_sources](#output\\_apim\\_hostname\\_configuration\\_proxy\\_certificate\\_sources) | The certificate sources for proxy hostname configurations in all the API Management instances. |\n| \u003ca name=\"output_apim_hostname_configuration_proxy_certificate_statuses\"\u003e\u003c/a\u003e [apim\\_hostname\\_configuration\\_proxy\\_certificate\\_statuses](#output\\_apim\\_hostname\\_configuration\\_proxy\\_certificate\\_statuses) | The certificate statuses for proxy hostname configurations in all the API Management instances. |\n| \u003ca name=\"output_apim_hostname_configurations\"\u003e\u003c/a\u003e [apim\\_hostname\\_configurations](#output\\_apim\\_hostname\\_configurations) | The hostname configurations for all the API Management instances. |\n| \u003ca name=\"output_apim_identities\"\u003e\u003c/a\u003e [apim\\_identities](#output\\_apim\\_identities) | The identity blocks for all the API Management instances. |\n| \u003ca name=\"output_apim_ids\"\u003e\u003c/a\u003e [apim\\_ids](#output\\_apim\\_ids) | The IDs of all the API Management instances. |\n| \u003ca name=\"output_apim_management_api_urls\"\u003e\u003c/a\u003e [apim\\_management\\_api\\_urls](#output\\_apim\\_management\\_api\\_urls) | The Management API URLs of all the API Management instances. |\n| \u003ca name=\"output_apim_portal_urls\"\u003e\u003c/a\u003e [apim\\_portal\\_urls](#output\\_apim\\_portal\\_urls) | The Publisher Portal URLs of all the API Management instances. |\n| \u003ca name=\"output_apim_private_ip_addresses\"\u003e\u003c/a\u003e [apim\\_private\\_ip\\_addresses](#output\\_apim\\_private\\_ip\\_addresses) | The Private IP addresses of all the API Management instances. |\n| \u003ca name=\"output_apim_public_ip_addresses\"\u003e\u003c/a\u003e [apim\\_public\\_ip\\_addresses](#output\\_apim\\_public\\_ip\\_addresses) | The Public IP addresses of all the API Management instances. |\n| \u003ca name=\"output_apim_scm_urls\"\u003e\u003c/a\u003e [apim\\_scm\\_urls](#output\\_apim\\_scm\\_urls) | The SCM URLs of all the API Management instances. |\n| \u003ca name=\"output_apim_tenant_accesses\"\u003e\u003c/a\u003e [apim\\_tenant\\_accesses](#output\\_apim\\_tenant\\_accesses) | The tenant access blocks for all the API Management instances. |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-devops%2Fterraform-azurerm-api-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibre-devops%2Fterraform-azurerm-api-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-devops%2Fterraform-azurerm-api-management/lists"}