[
    {
      "name" : "BASIC Authentication Policy",
      "description" : "Enables HTTP BASIC Authentication on a service.  Some configuration required.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.BasicAuthenticationPolicy",
      "icon" : "lock",
      "templates" : [
        {
          "language" : null,
          "template" : "Access to the service is protected by BASIC Authentication through the '@{realm}' authentication realm.  @if{forwardIdentityHttpHeader != null}Successfully authenticated requests will forward the authenticated identity to the back end service via the '@{forwardIdentityHttpHeader}' custom HTTP header.@end{}"
        }
      ]
    },
    {
      "name" : "Authorization Policy",
      "description" : "Enables fine grained authorization to API resources based on authenticated user roles.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.AuthorizationPolicy",
      "icon" : "users",
      "templates" : [
        {
          "language" : null,
          "template" : "Appropriate authorization roles are required.  There are @{rules.size()} authorization rules defined."
        }
      ]
    },
    {
      "name" : "IP Whitelist Policy",
      "description" : "Only requests that originate from a specified set of valid IP addresses will be allowed through.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.IPWhitelistPolicy",
      "icon" : "thumbs-up",
      "templates" : [
        {
          "language" : null,
          "template" : "Only requests that originate from the set of @{ipList.size()} configured IP address(es) will be allowed to invoke the managed service."
        }
      ]
    },
    {
      "name" : "IP Blacklist Policy",
      "description" : "Requests that originate from a specified set of valid IP addresses will be denied access.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.IPBlacklistPolicy",
      "icon" : "thumbs-down",
      "templates" : [
        {
          "language" : null,
          "template" : "Requests that originate from the set of @{ipList.size()} configured IP address(es) will be denied access to the managed service."
        }
      ]
    },
    {
      "name" : "Rate Limiting Policy",
      "description" : "Enforces rate configurable request rate limits on a service.  This ensures that consumers can't overload a service with too many requests.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.RateLimitingPolicy",
      "icon" : "tachometer",
      "templates" : [
        {
          "language" : null,
          "template" : "Consumers are limited to @{limit} requests per @{granularity} per @{period}."
        }
      ]
    },
    {
      "name" : "Quota Policy",
      "description" : "Provides a way to limit the total number of requests that can be sent to an API.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.QuotaPolicy",
      "icon" : "exchange",
      "templates" : [
        {
          "language" : null,
          "template" : "Consumers cannot exceed their quota of @{limit} requests per @{granularity} per @{period}."
        }
      ]
    },
    {
      "name" : "Transfer Quota Policy",
      "description" : "Provides a way to limit the total number of bytes that can be transferred from (or to) an API.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.TransferQuotaPolicy",
      "icon" : "download",
      "templates" : [
        {
          "language" : null,
          "template" : "Consumers are limited to transferring @{limit} bytes per per @{granularity} per @{period}."
        }
      ]
    },
    {
      "name" : "Caching Policy",
      "description" : "Allows caching of API responses in the Gateway to reduce overall traffic to the back-end API.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.CachingPolicy",
      "icon" : "hdd-o",
      "templates" : [
        {
          "language" : null,
          "template" : "API responses will be cached for @{ttl} seconds."
        }
      ]
    },
    {
      "name" : "Ignored Resources Policy",
      "description" : "Requests satisfying the provided regular expression will be ignored.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.IgnoredResourcesPolicy",
      "icon" : "eye-slash",
      "templates" : [
        {
          "language" : null,
          "template" : "Requests matching any of the @{pathsToIgnore.size()} regular expressions provided will receive a 404 error code."
        }
      ]
    },
    {
      "name" : "URL Rewriting Policy",
      "description" : "Responses from the back-end API will be modified by fixing up any incorrect URLs found with modified ones.  This is useful because apiman works through an API Gateway.",
      "policyImpl" : "class:io.apiman.gateway.engine.policies.URLRewritingPolicy",
      "icon" : "pencil-square",
      "templates" : [
        {
          "language" : null,
          "template" : "Responses will be modified by finding all text matching regular expression '@{fromRegex}' with '@{toReplacement}'."
        }
      ]
    }
]
