anchor.diff:  
   ## Goals of the Project
   
  -- Provide single management/monitoring system for medium-to-large scale applications.
  -- Reduce amount of work needed in other componens by orchestrating common functionalities.
  -- Control response time and get answer "what happened" even in a single request perspective. Provide data for in-deepth service analysis.
  +- Provide single easy to use API management system for medium-to-large scale applications.
  +- Reduce amount of work needed in other components by orchestrating common functionalities.
  +- Monitoring - control response time and get answer "what happened" even in a single request perspective. Provide data for in-depth analysis.
  +- Authorization - set authentication and authorization requirements for each resource and reject requests that do not satisfy them.
   - Improve platform scalability.
   
   ## General Features
   
  -### Caching and Perfomance
  -
  -For perfomance issues Annon has build-in cache manager, it will load data from DB only once, all futher work will be based on this cached data.
  +### Caching and Performance
  +
  +For performance issues Annon has build-in cache manager, it will load data from DB only once, all further work will be based on this cached data.
   
   Whenever a single node receives request that changes cached data, it's responsible to notify all other nodes in cluster about change, and they should reload configurations from DB.
   
   Whenever new node joins to a cluster, all other nodes should drop their cache, to resolve consistency issues.
   
  -This feature is done via [skycluster](https://github.com/Nebo15/skycluster) package. All gateway nodes is connected via Erlang distribution protocol. 
  -It support different discovery strategies: 
  +This feature is done via [skycluster](https://github.com/Nebo15/skycluster) package. All gateway nodes is connected via Erlang distribution protocol.
  +It support different discovery strategies:
   
   - `kubernetes` - selecting pods via Kubernetes API;
   - `gossip` - multicast UDP gossip, using a configurable port/multicast address;
  
positive.code: 
  All metrics have tags: `http_host`, `http_port`, `http_method`, `api_name` and `api_id` (if matches any), `request_id`. This allows to set different aggregated views on counter data.
  
  We recommend you to try [DataDog](https://www.datadoghq.com/) for collecting and displaying perfomance metrics. But this is not a hard containt, instead you can use any StatsD collector.
  
  ### Requests Idempotency
  
  Annon guarantess that replayed requests with same `X-Idempotency-Key: <key>` and same request will get permanent response. This is useful in a financial application, where you need good protection from duplicate user actions.
  
  ### Requests Tracing
  
  Annon supports [OpenTracing](http://opentracing.io/) in Erlang via [Otter](https://github.com/Bluehouse-Technology/otter) libruary. This means that by implementing OpenTracing API in other services you can trace complete request impact for each of your services.
  
  ## Installation
  
  
negative.code: 
  + Request (application/json)
      + Attributes
          + `rate_limit` (`Plugin_Rate_Limit__Request`)
  
  + Response 200 (application/json)
      + Attributes (Response_OK)
          + data (`Plugin_Rate_Limit__Response`)
  
  + Response 201 (application/json)
      + Attributes (Response_OK)
          + meta (Response__Meta)
              + code: 201 (number)
          + data (`Plugin_Rate_Limit__Response`)
  
  ## Load Shedding [/apis/{api_id}/plugins/load_shedding]
  
  This plugin allows to set requests rate limits for an API and drops requests that go over the limit.
  
  **This plugin is in development.**
  
  ### Bind or Update Rate Limiter Plugin [PUT]
  
  + Parameters
      + api_id: 1 (string, required) - API ID.
  
  + Request (application/json)
      + Attributes
          + `load_shedding` (`Plugin_Load_Shedding__Request`)
  
  + Response 200 (application/json)
      + Attributes (Response_OK)
          + data (`Plugin_Load_Shedding__Response`)
  
  + Response 201 (application/json)
      + Attributes (Response_OK)
          + meta (Response__Meta)
              + code: 201 (number)
          + data (`Plugin_Load_Shedding__Response`)
  
  ## Static Responses [/apis/{api_id}/plugins/static_responses]
  
  This plugin allows to serve static responses to API requests, wich allows you to build some responses directly at the edge instead of forwarding them to an internal cluster.
  
  It can be used to mock service responses or to push common responses to the edge service.
  
  **This plugin is in development.**
  
  ### Bind or Update Rate Limiter Plugin [PUT]
  
  + Parameters
      + api_id: 1 (string, required) - API ID.
  
  + Request (application/json)
      + Attributes
          + `static_responses` (`Plugin_Static_Responses__Request`)
  
  + Response 200 (application/json)
      + Attributes (Response_OK)
          + data (`Plugin_Static_Responses__Response`)
  
  + Response 201 (application/json)
      + Attributes (Response_OK)
          + meta (Response__Meta)
              + code: 201 (number)
          + data (`Plugin_Static_Responses__Response`)
  
  # Group Requests
  
  