anchor.diff:  
   + Parameters
       + properties (required, string) ... a JSON string specifying the properties that need to be present in order to return a match. The JSON uses the filtering syntax as documented above.
  +    + participating (optional) ... pass this parameter to only list matches to which you are participating.
  +    + finished (optional) ... pass this to include finished matches in the result. Not recommended but can be used with the `participating` filter to gather info about your past games.
  +    + invited (optional) ... pass this to filter by matches to which you are currently invited. You are only marked as invited to a match until you join it.
       + limit (optional, number) ... the maximum number of matches to return. Used for pagination. Defaults to 30.
       + skip (optional, number) ... the index of the first item to return. Used for pagination. Zero-based, defaults to 0.
   
  
positive.code: |players|array| list of IDs of players participating to the match (read only)
  |status|string| either "running" (meaning that the match is running), either "finished" (meaning that nobody can join the match anymore) (read only)
  
  + Request (application/json)
  
      + Headers
  
negative.code:             "name": "InvalidMatch",
              "message": "The match does not exist",
              "status": 404
          }
  
  + Response 433 (application/json)
  
          {
              "name": "BadMatchID",
              "message": "This match does not exist or is not active"
          }
  
  ## POST /v1/gamer/matches/{id}/invite/{gamer_id}
  
  Allows to invite another person to a match. Should be used with private matches. Matches can be made private by using a filter when listing matches. For instance, you may require a property to be present in the match, such as `customProperties: {"public": 1}` and filter out by `?properties={"public": 1}` when listing the matches available. In that case, if you want to play against a given set of opponents, you may simply limit the maximum number of players, and invite each of your opponents.
  
  When someone is invited, a message as follows will be received:
  
      {
          "type": "match.invite",
          "event": {
              "_id": "54784d07a0fcf2000086457d",
              "match_id": "54784d07f10c190000cb96e3"
              "inviter": {
                  "gamer_id": "5487260cf45e5f84c7cd7223",
                  "profile": {
                      "displayName": "Guest",
                      "lang": "en"
                  }
              }
          },
          "id": "d2f908d1-40d8-4f73-802e-fe0086bb6cd9"
      }
  
  + Request (application/json)
  
      + Parameters
          + id (required, string) ... the ID of the match to operate on.
          + gamer_id (required, string) ... the ID of the gamer to invite on this match.
  
      + Headers
  
              x-apikey : testgame-key
              x-apisecret : testgame-secret
              Authorization: Basic gamer_id:gamer_secret
  
  + Response 200 (application/json)
  
          {
              "match": {
                  "_id": "5488121cebc67955fb8f42e2",
                  "lastEventId": "5488121c4d95f055fbadde9a",
                  "status": "running"
              }
          }
  
  + Response 431 (application/json)
  
          {
              "message": "The player is already invited to the match",
              "name": "AlreadyInvitedToMatch"
          }
  
  + Response 433 (application/json)
  
          {
              "message": "A passed gamer ID is invalid",
              "name": "BadGamerID"
          }
  
  + Response 433 (application/json)
  