anchor.diff:  DELETE  /port_groups/:portGroupId/ports/:portId
   -----------------------------------------------
   
  -PortGroupPort represents membership of ports in port groups.
  +A port group port represents a port membership in a port group.
   
   [width="100%",cols="17%,7%,11%,11%,54%",options="header",]
   |=======================================================================
   |Field Name |Type |POST/PUT |Required |Description
  -|uri |URI | | |A GET
  -against this URI refreshes the representation of this resource
  -
  -|portGroupId |UUID | |
  -|ID of the port group that a port is a member of
  +|uri |URI | |
  +|A GET against this URI refreshes the representation of this resource.
  +
  +|port |URI | |
  +|A GET against this URI returns the port for this port membership.
   
   |portGroup |URI | |
  -|URI to fetch the port group
  -
  -|portId |UUID |POST |Yes |ID of the port in a port group membership
  -
  -|port |URI | | |URI to
  -fetch the port
  -|=======================================================================
  -
  -[[ip-address-group]]
  -IP Address Group
  -^^^^^^^^^^^^^^^^
  -
  -_Media Type_: `[application/vnd.org.midonet.IpAddrGroup-v1+json]`
  -
  ---------------------------------------
  -GET     /ip_addr_groups
  -GET     /ip_addr_groups/:ipAddrGroupId
  -POST    /ip_addr_groups
  -DELETE  /ip_addr_groups/:ipAddrGroupId
  ---------------------------------------
  -
  -IP address group is a group of IP addresss. Currently only IPv4 is
  -supported. An IP address group can be specified in the chain rule to
  -filter the traffic coming from all the addresses belonging to that the
  -specified group.
  -
  -[width="100%",cols="16%,8%,11%,11%,54%",options="header",]
  -|=======================================================================
  -|Field Name |Type |POST/PUT |Required |Description
  -|uri |URI | | |A GET
  -against this URI refreshes the representation of this resource
  -
  -|id |UUID | | |A
  -unique identifier of the resource
  -
  -|name |String |POST |Yes |Name of the group.
  -
  -|addrs |URI | | |URI
  -for address membership operations
  -|=======================================================================
  -
  -[[ip-address-group-address]]
  -IP Address Group Address
  -^^^^^^^^^^^^^^^^^^^^^^^^
  -
  -_Media Type_: `[application/vnd.org.midonet.IpAddrGroupAddr-v1+json]`
  -
  -----------------------------------------------------------
  -GET     /ip_addr_groups/:ipAddrGroupId/versions/4/ip_addrs
  -GET     /ip_addr_groups/:ipAddrGroupId/ip_addrs/:ip_addr
  -POST    /ip_addr_groups/:ipAddrGroupId/ip_addrs
  -DELETE  /ip_addr_groups/:ipAddrGroupId/ip_addrs/:ip_addr
  -----------------------------------------------------------
  -
  -IpAddrGroupAddr represents membership of IP address in IP address
  -groups.
  -
  -[width="100%",cols="20%,8%,11%,11%,50%",options="header",]
  -|=======================================================================
  -|Field Name |Type |POST/PUT |Required |Description
  -|uri |URI | | |A GET
  -against this URI refreshes the representation of this resource
  -
  -|ipAddrGroupId |UUID |
  -| |ID of the IP address group that this IP
  -address is a member of
  -
  -|ipAddrGroup |URI | |
  -|URI to fetch the IP address group
  -
  -|addr |String |POST |Yes |IP Address member in an IP address group
  -|=======================================================================
  -
  -[[chain]]
  -Chain
  -^^^^^
  -
  -_Media Type_: `[application/vnd.org.midonet.Chain-v1+json]`
  -
  ------------------------------------
  -GET     /chains
  -GET     /chains?tenant_id=:tenantId
  -GET     /chains/:chainId
  -POST    /chains
  -DELETE  /chains/:chainId
  ------------------------------------
  -
  -Chain is an entity that represents a rule chain on a virtual router in
  +|A GET against this URI returns the corresponding port group.
  +
  +|portGroupId |UUID |POST |Yes
  +|The identifier of the port group.
  +
  +|portId |UUID |POST |Yes
  +|The identifier of the port in a port group membership.
  +|=======================================================================
  +
  +
  +[[route]]
  +=== Route
  +
  +_Media Type_: `[application/vnd.org.midonet.Route-v1+json]`
  +
  +------------------------------------------
  +GET     /routers/:routerId/routes
  +GET     /routes/:routeId
  +POST    /routers/:routerId/routes
  +DELETE  /routes/:routeId
  +------------------------------------------
  +
  +Route is an entity that represents a route on a virtual router in
   MidoNet. It contains the following fields:
   
  -[width="100%",cols="16%,8%,11%,11%,54%",]
  -|=======================================================================
  -|Field Name |Type |POST/PUT |Required |Description
  -
  -|uri |URI | | |A GET
  -against this URI refreshes the representation of this resource
  -
  -|id |UUID | | |A
  -unique identifier of the resource
  -
  -|tenantId |UUID | |
  -|ID of the tenant that this chain belongs to
  -
  -|name |String |POST |Yes |Name of the chain. Unique per tenant
  -
  -|rules |URI | | |A GET
  -against this URI retrieves the representation of the rules set for this
  -chain
  -|=======================================================================
  -
  -[[query-parameters-5]]
  -Query Parameters
  -++++++++++++++++
  +[width="100%",cols="24%,8%,11%,11%,46%",options="header",]
  +|=======================================================================
  +|Field Name |Type |POST/PUT |Required |Description
  +|uri |URI | |
  +|A GET against this URI refreshes the representation of this resource.
  +
  +|router |URI | |
  +|A GET against this URI returns the router resource.
  +
  +|id |UUID | |
  +|A unique identifier of the resource. If this field is omitted in the POST
  +request, a random UUID is generated.
  +
  +|dstNetworkAddr |String |POST |Yes
  +|The destination IP network address.
  +
  +|dstNetworkLength |Integer |POST |Yes
  +|The destination IP network prefix length. The value must belong to the
  +interval [0, 32].
  +
  +|nextHopGateway |String |POST |Yes
  +|The IP address of the gateway router to which the traffic is forwarded. This
  +field must be present only for `Normal` routes.
  +
  +|nextHopPort |UUID |POST |Yes
  +|The identifier of the next hop port. This field must be present only for
  +`Normal` routes.
  +
  +|srcNetworkAddr |String |POST |Yes
  +|The source IP network address.
  +
  +|srcNetworkLength |Integer |POST |Yes
  +|The source IP network prefix length. The value must belong to the interval
  +[0, 32].
  +
  +|type |String |POST |Yes
  +|The route type. It can be one of the following: `Normal`, `BlackHole`,
  +`Reject`, `Local`.
  +
  +|weight |Integer |POST |Yes
  +|The priority weight of the route. Lower weights take precedence over higher
  +weights. The value must be greater or equal to zero.
  +
  +|learned |Boolean | |
  +|Indicates whether the route was learned dynamically using a routing protocol.
  +
  +|routerId |UUID | |
  +|The identifier of the router to which the route belongs.
  +|=======================================================================
  +
  +
  +[[router]]
  +=== Router
  +
  +_Media Type_:::
  +  `[application/vnd.org.midonet.Router-v3+json]`
  +_Collection Media Type_:::
  +  `[application/vnd.org.midonet.collection.Router-v3+json]`
  +
  +------------------------------------
  +GET     /routers
  +GET     /routers?tenant_id=:tenantId
  +GET     /routers/:routerId
  +POST    /routers
  +PUT     /routers/:routerId
  +DELETE  /routers/:routerId
  +------------------------------------
  +
  +Router is an entity that represents a virtual router device in MidoNet.
  +It contains the following fields:
  +
  +[width="100%",cols="24%,8%,11%,11%,46%",options="header",]
  +|=======================================================================
  +|Field Name |Type |POST/PUT |Required |Description
  +|uri |URI | |
  +|A GET against this URI refreshes the representation of this resource.
  +
  +|bgpNetworks |URI | |
  +|A GET against this URI returns the BGP networks advertised by this router.
  +
  +|bgpPeers |URI | |
  +|A GET against this URI returns the BGP neighbors for this router.
  +
  +|inboundFilter |URI | |
  +|A GET against this URI returns the inbound filter chain.
  +
  +|loadBalancer |URI | |
  +|A GET against this URI returns the load balancer for this router.
  +
  +|outboundFilter |URI | |
  +|A GET against this URI returns the outbound filter chain.
  +
  +|peerPorts |URI | |
  +|A GET against this URI returns the interior ports attached to this router.
  +
  +|ports |URI | |
  +|A GET against this URI returns the list of ports for this router.
  +
  +|routes |URI | |
  +|A GET against this URI returns the routes for this router.
  +
  +|id |UUID |POST |No |A unique identifier of the resource. If this field
  +is omitted in the POST request, a random UUID is generated.
  +
  +|adminStateUp |Boolean |POST/PUT |No
  +|The administrative state of the router. If _false_ (down), the router replies
  +with a _Communication administratively prohibited_ ICMP response and stops
  +forwarding packets. The default is _true_ (up).
  +
  +|asNumber |Integer |POST/PUT |No
  +|The Autonomous System Number (ASN) used for BGP routing.
  +
  +|inboundFilterId |UUID |POST/PUT |No
  +|The identifier of the filter chain to be applied to ingress packets before
  +routing.
  +
  +|inboundMirrorIds |Array of UUID |POST/PUT |No
  +|The list of IDs for the mirrors applied to ingress packets.
  +
  +|loadBalancerId |UUID | |
  +|The layer 4 load balancer for this router.
  +
  +|name |String |POST/PUT |No
  +|The name of the router. The maximum length is 255 characters.
  +
  +|outboundFilterId |UUID |POST/PUT |No
  +|The identifier of the filter chain to be applied to egress packets after
  +routing.
  +
  +|outboundMirrorIds |Array of UUID |POST/PUT |No
  +|The list of IDs for the mirrors applied to egress packets.
  +
  +|tenantId |String |POST/PUT |No
  +|The identifier of the tenant that owns the router.
  +|=======================================================================
  +
  +[[router-query-parameters]]
  +==== Query Parameters
   
   [width="73%",cols="19%,81%",options="header",]
  -|=====================================================
  +|=============================================================
   |Name |Description
  -|tenant_id |ID of the tenant to filter the search with
  -|=====================================================
  -
  -[[healthmonitor]]
  -HealthMonitor
  -^^^^^^^^^^^^^
  -
  -_Media Type_: `[application/vnd.org.midonet.HealthMonitor-v1+json]`
  -
  -------------------------------------------
  -GET      /health_monitors
  -POST     /health_monitors
  -GET      /health_monitors/:healthMonitorId
  -PUT      /health_monitors/:healthMonitorId
  -DELETE   /health_monitors/:healthMonitorId
  -------------------------------------------
  -
  -[NOTE]
  -To use this feature, please make sure that health monitoring is activated in the
  -MidoNet Host Agent configuration. See "HAProxy configuration" in the Operation
  -Guide for details.
  -
  -A HealthMonitor is an entity that represents a virtual health monitor
  -device for use with load balancers in MidoNet. It contains the following
  -fields:
  -
  -[width="100%",cols="24%,8%,11%,11%,46%",options="header",]
  -|=======================================================================
  -|Field Name |Type |POST/PUT |Required |Description
  -|uri |URI | | |A GET
  -against this URI refreshes the representation of this resource.
  -
  -|id |UUID |POST |No |A unique identifier of the resource. If this field
  -is omitted in the POST request, a random UUID is generated
  -
  -|delay |Int |POST/PUT |No |Delay for the health check interval in
  -seconds. Defaults to `0`.
  -
  -|timeout |Int |POST/PUT |No |Timeout value for the health check in
  -seconds. Defaults to `0`.
  -
  -|maxRetries |int |POST/PUT |No |Number of times to retry for health
  -check. Defaults to `0`.
  -
  -|type |String |POST/PUT |Yes |A type of the health monitor checking
  -protocol. Only "TCP" is supported in the current version. Read-only
  -property.
  -
  -|adminStateUp |Bool |POST/PUT |No |Administrative state of the object.
  -
  -|status |String | |
  -|
  -
  -|pools |URI | | |A GET
  -against this URI retrieves the pools
  -|=======================================================================
  +|tenant_id |The identifier of the tenant to filter the search.
  +|=============================================================
  +
   
   [[rule]]
  -Rule
  -^^^^
  -
  -_Media Type_: `[application/vnd.org.midonet.Rule-v2+json]`
  +=== Rule
  +
  +_Media Type_:::
  +  `[application/vnd.org.midonet.Rule-v2+json]`
   
   ------------------------------
   GET     /chains/:chainId/rules
  
positive.code: |=======================================================================
  |HTTP Status |Description
  |200 OK |The request was successfully completed, and the response body
  contains the resource data
  
  |201 Created |A new resource was successfully created. A Location header
  contains the URI of the resource
  
  |204 No Content |The server fulfilled the request, but does not need to
  return anything
  
  |400 Bad Request |The request could not be processed because it
  contained missing or invalid information
  
  |401 Unauthorized |The authentication credentials included with the
  request are missing or invalid
  
  |403 Forbidden |The server recognized the credentials, but the user is
  not authorized to perform this request
  
  |404 Not Found |The requested URI does not exist
  
  |405 Method Not Allowed |The HTTP verb specified in the request (GET,
  POST, PUT, DELETE, HEAD) is not supported for this URI
  
  |406 Not Acceptable |The resource identified by this request is not
  capable of generating a representation corresponding to one of the media
  types in the Accept header
  
  |409 Conflict |A creation or update request could not be completed
  because it would cause a conflict in the current state of the resources.
  One example is when a request attempts to create a resource with an ID
  that already exists
  
  |500 Internal Server Error |The server encountered an unexpected
  condition which prevented the request to be completed
  
  |503 Service Unavailable |The server is currently unable to handle the
  request due to temporary overloading or maintenance of the server
  |=======================================================================
  
  [[uri-templates]]
  URI Templates
  ^^^^^^^^^^^^^
  
  A URI may contain a part that is left out to the client to fill. These
  parts are enclosed inside '\{' and '}'.
  
  For example, given a URI template, `http://example.org/routers/{id}` and
  a router ID `d7435bb0-3bc8-11e2-81c1-0800200c9a66`, after doing the
  replacement, the final URI becomes:
  `http://example.org/routers/d7435bb0-3bc8-11e2-81c1-0800200c9a66`.
  
  
negative.code: [width="100%",cols="19%,8%,11%,21%,41%",options="header",]
  |=======================================================================
  |Field Name |Type |POST/PUT |Required |Description
  |uri |URI | |
  |A GET against this URI refreshes the representation of this resource.
  
  |host |URI | |
  |A GET against this URI returns the host corresponding to this tunnel zone
  member.
  
  |tunnelZone |URI | |
  |A GET against this URI returns the tunnel zone.
  
  |hostId |UUID |POST |Yes
  |The identifier of the host member.
  
  |ipAddress |String |POST |Yes
  |The IP address uses by the host as an end-point for the tunnel in this
  tunnel zone.
  
  |tunnelZoneId |UUID | |
  |The identifier of the tunnel zone.
  |=======================================================================
  
  
  [[vip]]
  === VIP
  
  _Media Type_:::
    `[application/vnd.org.midonet.VIP-v1+json]`
  _Collection Media Type_:::
    `[application/vnd.org.midonet.collection.VIP-v1+json]`
  
  --------------------------------------------
  GET     /vips
  GET     /vips/:vipId
  GET     /pools/:poolId/vips
  GET     /load_balancers/:loadBalancerId/vips
  POST    /vips
  POST    /pools/:poolId/vips
  PUT     /vips/:vipId
  DELETE  /vips/:vipId
  --------------------------------------------
  