> For the complete documentation index, see [llms.txt](https://docs.ggwp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ggwp.com/api-docs-contextual-information/player-progression.md).

# Player Progression

\[ Base URL: `api.ggwp.com`]

`POST` /data/v1/ingest

## **Description**

Reports any relevant metrics that reflect a player’s skill level at a given moment in time. This information is used to apply severity modifiers to incidents, to normalize reputation and credibility scores based on player experience and to provide additional context when reviewing incidents or players in GGWP’s moderation tool.

Similar to the match summary stats described in the previous section, progression metrics can vary significantly by game genre, so the same guidelines and examples are applicable here. The main difference is that player progression is looking at cumulative player metrics over the entire player’s game time.

## **Parameters**

`body`: Dictionary containing the following fields:

* **type**: `player-progression`
* **user\_id**: unique identifier of the user.
* **username**: friendly display name.
* **date\_joined**: date of account creation in *YYYY-MM-DD HH:MM:SS* format, in UTC.
* **total\_time\_played**: cumulative amount of time played by the user since account creation, in minutes.
* **total\_sessions\_played**: total number of sessions played by the user since account creation.
* **user\_level**: lifetime cumulative level.
* **progression\_stats**: lifetime value of any relevant positive, negative or neutral stats (please refer to the table in the match summary section).
* Sample Call

  ```bash
  curl --request POST 'https://api.ggwp.com/data/v1/ingest' \
  --header 'x-api-key: api_key' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "type": "player-progression",
    "user_id": "<id1>",
    "username": "SweetPoison",
    "date_joined": "2023-02-24 12:15:07",
    "total_time_played": 805,
    "total_sessions_played": 67,
    "user_level": "75",
    "progression_stats": {
      "positive_stats": {
        "wins": 169,
        "kills": 236,
        "headshots": 54,
        "assists": 295
      },
      "negative_stats": {
        "losses": 198,
        "deaths": 502
      },
      "neutral_stats": {
      }		
    }
  }'
  ```

## **Output**

* 200 - successful operation

  ```json
  {
    "status": "success"
  }
  ```
* 400
  * Error response. The event has not been inserted into the system. This error is thrown in the following cases:
    * `Invalid Body. Expected JSON input`
      * Data payload is not JSON format
    * `Data payload too large`
      * Data payload exceeds 1MB in size
* 403
  * Invalid or missing API key.
* 500
  * Error response. The event has not been inserted into the system. There was some error on the server while processing the request.
