# CharacterApi document shapes

This service expects JSON request bodies for character creation and stores
character documents in MongoDB.

Inbound JSON documents
- CreateCharacterRequest (`POST /api/characters`)
  ```json
  {
    "name": "string"
  }
  ```
- UpdateCharacterCoordRequest (`PUT /api/characters/{id}/coord`)
  ```json
  {
    "coord": {
      "x": "number",
      "y": "number"
    }
  }
  ```

Stored documents (MongoDB)
- Character
  ```json
  {
    "id": "string (ObjectId)",
    "ownerUserId": "string",
    "name": "string",
    "coord": {
      "x": "number",
      "y": "number"
    },
    "visionRadius": "number",
    "createdUtc": "string (ISO-8601 datetime)"
  }
  ```

Outbound JSON documents
- VisibleLocation (`GET /api/characters/{id}/visible-locations`)
  ```json
  [
    {
      "id": "string (ObjectId)",
      "name": "string",
      "coord": {
        "x": "number",
        "y": "number"
      },
      "biomeKey": "plains",
      "resources": [
        {
          "itemKey": "wood",
          "remainingQuantity": 100,
          "gatherQuantity": 3
        }
      ]
    }
  ]
  ```
  Missing locations within the character's vision window are created automatically before this response is returned.
