{
  "openapi": "3.1.0",
  "info": {
    "title": "WardenCore API",
    "version": "v1"
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "bearerFormat": "wc_live_…",
        "scheme": "bearer",
        "type": "http"
      }
    },
    "schemas": {
      "ErrorEnvelope": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "conflict",
                  "gateway_timeout",
                  "idempotency_conflict",
                  "insufficient_scope",
                  "internal",
                  "ip_not_allowed",
                  "not_found",
                  "payload_too_large",
                  "precondition_failed",
                  "premium_required",
                  "rate_limited",
                  "server_unavailable",
                  "unauthorized",
                  "unsupported_media_type",
                  "validation_error"
                ],
                "description": "Stable machine-readable code — branch on this, not the message."
              },
              "details": {
                "description": "Optional structured context (e.g. missing_scope)."
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation."
              },
              "request_id": {
                "type": "string",
                "description": "Correlation id — include it when contacting support."
              }
            },
            "required": [
              "code",
              "message",
              "request_id"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false,
        "description": "Standard error envelope returned by every /v1 endpoint on failure."
      },
      "InventoryItem": {
        "type": "object",
        "properties": {
          "class": {
            "type": "string"
          },
          "contents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryItem"
            }
          },
          "contents_truncated": {
            "type": "boolean"
          },
          "health": {
            "type": "number"
          },
          "icon": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "is_container": {
            "type": "boolean"
          },
          "is_weapon": {
            "type": "boolean"
          },
          "max_health": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "weight": {
            "type": "number"
          }
        },
        "required": [
          "class",
          "contents",
          "contents_truncated",
          "health",
          "icon",
          "id",
          "is_container",
          "is_weapon",
          "max_health",
          "name",
          "weight"
        ],
        "additionalProperties": false
      }
    }
  },
  "paths": {
    "/openapi.json": {
      "get": {
        "responses": {
          "200": {
            "description": "Default Response"
          }
        },
        "security": []
      }
    },
    "/server": {
      "get": {
        "summary": "Get server identity and live status",
        "tags": [
          "Server"
        ],
        "responses": {
          "200": {
            "description": "Server identity and live status — a quick key/connection check.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "mod_version": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "online": {
                      "type": "boolean"
                    },
                    "player_count": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "server_id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "mod_version",
                    "name",
                    "online",
                    "player_count",
                    "server_id"
                  ],
                  "additionalProperties": false,
                  "description": "Server identity and live status — a quick key/connection check."
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players": {
      "get": {
        "summary": "List players",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "in": "query",
            "name": "discord_id",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "in": "query",
            "name": "online",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "search",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "in": "query",
            "name": "steam_id",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "attributes": {
                            "type": "object",
                            "properties": {
                              "constitution": {
                                "type": "number"
                              },
                              "dexterity": {
                                "type": "number"
                              },
                              "intelligence": {
                                "type": "number"
                              },
                              "strength": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "constitution",
                              "dexterity",
                              "intelligence",
                              "strength"
                            ],
                            "additionalProperties": false
                          },
                          "char_name": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "coins": {
                            "type": "integer"
                          },
                          "created_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "discord_id": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "fame_points": {
                            "type": "number"
                          },
                          "gold": {
                            "type": "number"
                          },
                          "is_admin": {
                            "type": "boolean"
                          },
                          "last_seen": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "money": {
                            "type": "number"
                          },
                          "online": {
                            "type": "boolean"
                          },
                          "play_time": {
                            "type": "integer"
                          },
                          "squad": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "id": {
                                "type": "integer"
                              },
                              "name": {
                                "type": "string"
                              },
                              "rank": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "rank"
                            ],
                            "additionalProperties": false
                          },
                          "steam_id": {
                            "type": "string"
                          },
                          "steam_name": {
                            "type": "string"
                          },
                          "user_profile_id": {
                            "type": "integer"
                          }
                        },
                        "required": [
                          "attributes",
                          "char_name",
                          "coins",
                          "created_at",
                          "discord_id",
                          "fame_points",
                          "gold",
                          "is_admin",
                          "last_seen",
                          "money",
                          "online",
                          "play_time",
                          "squad",
                          "steam_id",
                          "steam_name",
                          "user_profile_id"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/online": {
      "get": {
        "summary": "List online players (live)",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "in": "query",
            "name": "discord_id",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "in": "query",
            "name": "steam_id",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "alive": {
                            "type": "boolean"
                          },
                          "conscious": {
                            "type": "boolean"
                          },
                          "discord_id": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "fame_points": {
                            "type": "number"
                          },
                          "gold": {
                            "type": "number"
                          },
                          "immortal": {
                            "type": "boolean"
                          },
                          "is_admin": {
                            "type": "boolean"
                          },
                          "item_in_hands": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "money": {
                            "type": "number"
                          },
                          "name": {
                            "type": "string"
                          },
                          "ping": {
                            "type": "integer"
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          },
                          "stance": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "steam_id": {
                            "type": "string"
                          },
                          "super_jump": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "alive",
                          "conscious",
                          "discord_id",
                          "fame_points",
                          "gold",
                          "immortal",
                          "is_admin",
                          "item_in_hands",
                          "money",
                          "name",
                          "ping",
                          "position",
                          "stance",
                          "steam_id",
                          "super_jump"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "online": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "online"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}": {
      "get": {
        "summary": "Get a player profile",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "attributes": {
                      "type": "object",
                      "properties": {
                        "constitution": {
                          "type": "number"
                        },
                        "dexterity": {
                          "type": "number"
                        },
                        "intelligence": {
                          "type": "number"
                        },
                        "strength": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "constitution",
                        "dexterity",
                        "intelligence",
                        "strength"
                      ],
                      "additionalProperties": false
                    },
                    "char_name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "coins": {
                      "type": "integer"
                    },
                    "created_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "discord_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "fame_points": {
                      "type": "number"
                    },
                    "gold": {
                      "type": "number"
                    },
                    "is_admin": {
                      "type": "boolean"
                    },
                    "last_seen": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "money": {
                      "type": "number"
                    },
                    "online": {
                      "type": "boolean"
                    },
                    "play_time": {
                      "type": "integer"
                    },
                    "squad": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "name": {
                          "type": "string"
                        },
                        "rank": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "rank"
                      ],
                      "additionalProperties": false
                    },
                    "steam_id": {
                      "type": "string"
                    },
                    "steam_name": {
                      "type": "string"
                    },
                    "user_profile_id": {
                      "type": "integer"
                    },
                    "bases": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "avg_health": {
                            "type": "number"
                          },
                          "base_id": {
                            "type": "integer"
                          },
                          "element_count": {
                            "type": "integer"
                          },
                          "flag_id": {
                            "type": "integer"
                          },
                          "max_elements": {
                            "type": "integer"
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "avg_health",
                          "base_id",
                          "element_count",
                          "flag_id",
                          "max_elements",
                          "position"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "skills": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "experience": {
                            "type": "integer"
                          },
                          "level": {
                            "type": "number"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "experience",
                          "level",
                          "name"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "survival": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "activities": {
                          "type": "object",
                          "properties": {
                            "containers_looted": {
                              "type": "number"
                            },
                            "doors_claimed": {
                              "type": "number"
                            },
                            "items_picked_up": {
                              "type": "number"
                            },
                            "items_put_into_containers": {
                              "type": "number"
                            },
                            "lights_fired": {
                              "type": "number"
                            },
                            "locks_picked": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "containers_looted",
                            "doors_claimed",
                            "items_picked_up",
                            "items_put_into_containers",
                            "lights_fired",
                            "locks_picked"
                          ],
                          "additionalProperties": false
                        },
                        "combat": {
                          "type": "object",
                          "properties": {
                            "accuracy": {
                              "type": "number"
                            },
                            "archery_kills": {
                              "type": "number"
                            },
                            "bare_handed_kills": {
                              "type": "number"
                            },
                            "deaths": {
                              "type": "number"
                            },
                            "deaths_by_prisoners": {
                              "type": "number"
                            },
                            "firearm_kills": {
                              "type": "number"
                            },
                            "headshots": {
                              "type": "number"
                            },
                            "kd": {
                              "type": "number"
                            },
                            "kills": {
                              "type": "number"
                            },
                            "longest_animal_kill_distance": {
                              "type": "number"
                            },
                            "longest_kill_distance": {
                              "type": "number"
                            },
                            "melee_kills": {
                              "type": "number"
                            },
                            "players_knocked_out": {
                              "type": "number"
                            },
                            "prisoner_kills": {
                              "type": "number"
                            },
                            "sentry_kills": {
                              "type": "number"
                            },
                            "shots_fired": {
                              "type": "number"
                            },
                            "shots_hit": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "accuracy",
                            "archery_kills",
                            "bare_handed_kills",
                            "deaths",
                            "deaths_by_prisoners",
                            "firearm_kills",
                            "headshots",
                            "kd",
                            "kills",
                            "longest_animal_kill_distance",
                            "longest_kill_distance",
                            "melee_kills",
                            "players_knocked_out",
                            "prisoner_kills",
                            "sentry_kills",
                            "shots_fired",
                            "shots_hit"
                          ],
                          "additionalProperties": false
                        },
                        "crafting": {
                          "type": "object",
                          "properties": {
                            "arrows_crafted": {
                              "type": "number"
                            },
                            "clothing_crafted": {
                              "type": "number"
                            },
                            "guns_crafted": {
                              "type": "number"
                            },
                            "melee_weapons_crafted": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "arrows_crafted",
                            "clothing_crafted",
                            "guns_crafted",
                            "melee_weapons_crafted"
                          ],
                          "additionalProperties": false
                        },
                        "creatures": {
                          "type": "object",
                          "properties": {
                            "animals_killed": {
                              "type": "number"
                            },
                            "animals_skinned": {
                              "type": "number"
                            },
                            "bears_killed": {
                              "type": "number"
                            },
                            "boars_killed": {
                              "type": "number"
                            },
                            "chickens_killed": {
                              "type": "number"
                            },
                            "deers_killed": {
                              "type": "number"
                            },
                            "donkeys_killed": {
                              "type": "number"
                            },
                            "goats_killed": {
                              "type": "number"
                            },
                            "horses_killed": {
                              "type": "number"
                            },
                            "puppets_killed": {
                              "type": "number"
                            },
                            "puppets_knocked_out": {
                              "type": "number"
                            },
                            "rabbits_killed": {
                              "type": "number"
                            },
                            "times_attacked_by_bear": {
                              "type": "number"
                            },
                            "times_attacked_by_shark": {
                              "type": "number"
                            },
                            "times_escaped_shark_bite": {
                              "type": "number"
                            },
                            "wolves_killed": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "animals_killed",
                            "animals_skinned",
                            "bears_killed",
                            "boars_killed",
                            "chickens_killed",
                            "deers_killed",
                            "donkeys_killed",
                            "goats_killed",
                            "horses_killed",
                            "puppets_killed",
                            "puppets_knocked_out",
                            "rabbits_killed",
                            "times_attacked_by_bear",
                            "times_attacked_by_shark",
                            "times_escaped_shark_bite",
                            "wolves_killed"
                          ],
                          "additionalProperties": false
                        },
                        "misc": {
                          "type": "object",
                          "properties": {
                            "total_defecations": {
                              "type": "number"
                            },
                            "total_urinations": {
                              "type": "number"
                            },
                            "vomits": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "total_defecations",
                            "total_urinations",
                            "vomits"
                          ],
                          "additionalProperties": false
                        },
                        "records": {
                          "type": "object",
                          "properties": {
                            "fame_days_consecutive": {
                              "type": "number"
                            },
                            "highest_damage_taken": {
                              "type": "number"
                            },
                            "highest_fat": {
                              "type": "number"
                            },
                            "highest_muscle_mass": {
                              "type": "number"
                            },
                            "highest_positive_fame": {
                              "type": "number"
                            },
                            "highest_weight_carried": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "fame_days_consecutive",
                            "highest_damage_taken",
                            "highest_fat",
                            "highest_muscle_mass",
                            "highest_positive_fame",
                            "highest_weight_carried"
                          ],
                          "additionalProperties": false
                        },
                        "survival": {
                          "type": "object",
                          "properties": {
                            "distance_by_boat": {
                              "type": "number"
                            },
                            "distance_by_foot": {
                              "type": "number"
                            },
                            "distance_in_vehicle": {
                              "type": "number"
                            },
                            "distance_sailed": {
                              "type": "number"
                            },
                            "distance_swimming": {
                              "type": "number"
                            },
                            "foliage_cut": {
                              "type": "number"
                            },
                            "food_eaten": {
                              "type": "number"
                            },
                            "hours_survived": {
                              "type": "number"
                            },
                            "liquid_drank": {
                              "type": "number"
                            },
                            "minutes_survived": {
                              "type": "number"
                            },
                            "total_calories_intake": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "distance_by_boat",
                            "distance_by_foot",
                            "distance_in_vehicle",
                            "distance_sailed",
                            "distance_swimming",
                            "foliage_cut",
                            "food_eaten",
                            "hours_survived",
                            "liquid_drank",
                            "minutes_survived",
                            "total_calories_intake"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "activities",
                        "combat",
                        "crafting",
                        "creatures",
                        "misc",
                        "records",
                        "survival"
                      ],
                      "additionalProperties": false
                    },
                    "vehicles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "class_name": {
                            "type": "string"
                          },
                          "display_name": {
                            "type": "string"
                          },
                          "entity_id": {
                            "type": "string"
                          },
                          "health": {
                            "type": "number"
                          },
                          "is_functional": {
                            "type": "boolean"
                          },
                          "is_locked": {
                            "type": "boolean"
                          },
                          "last_access_time": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "lock_hp": {
                            "type": "number"
                          },
                          "lock_type": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "max_health": {
                            "type": "number"
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "profile_id": {
                                "type": [
                                  "integer",
                                  "null"
                                ]
                              },
                              "steam_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "name",
                              "profile_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "class_name",
                          "display_name",
                          "entity_id",
                          "health",
                          "is_functional",
                          "is_locked",
                          "last_access_time",
                          "lock_hp",
                          "lock_type",
                          "max_health",
                          "owner",
                          "position"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "warden_stats": {
                      "type": "object",
                      "properties": {
                        "alert_subscribed": {
                          "type": "boolean"
                        },
                        "current_kill_streak": {
                          "type": "integer"
                        },
                        "deaths": {
                          "type": "integer"
                        },
                        "first_seen_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "is_drone": {
                          "type": "boolean"
                        },
                        "is_linked": {
                          "type": "boolean"
                        },
                        "kills": {
                          "type": "integer"
                        },
                        "last_killed_by_steam_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "last_login_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "last_logout_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "login_streak": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "longest_kill_distance": {
                          "type": "number"
                        },
                        "longest_kill_victim_steam_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "referrer_steam_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "total_deaths": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "total_kills": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "alert_subscribed",
                        "current_kill_streak",
                        "deaths",
                        "first_seen_at",
                        "is_drone",
                        "is_linked",
                        "kills",
                        "last_killed_by_steam_id",
                        "last_login_at",
                        "last_logout_at",
                        "login_streak",
                        "longest_kill_distance",
                        "longest_kill_victim_steam_id",
                        "referrer_steam_id",
                        "total_deaths",
                        "total_kills"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "attributes",
                    "char_name",
                    "coins",
                    "created_at",
                    "discord_id",
                    "fame_points",
                    "gold",
                    "is_admin",
                    "last_seen",
                    "money",
                    "online",
                    "play_time",
                    "squad",
                    "steam_id",
                    "steam_name",
                    "user_profile_id",
                    "bases",
                    "skills",
                    "survival",
                    "vehicles",
                    "warden_stats"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/inventory": {
      "get": {
        "summary": "Get a player inventory",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InventoryItem"
                      }
                    }
                  },
                  "required": [
                    "items"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/moderation": {
      "get": {
        "summary": "Get a player moderation state",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ban": {
                      "type": "object",
                      "properties": {
                        "banned": {
                          "type": "boolean"
                        },
                        "banned_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "banned_by": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "discord_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "name": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "steam_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "discord_id",
                            "name",
                            "steam_id"
                          ],
                          "additionalProperties": false
                        },
                        "expires_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "banned",
                        "banned_at",
                        "banned_by",
                        "expires_at",
                        "permanent",
                        "reason"
                      ],
                      "additionalProperties": false
                    },
                    "mute": {
                      "type": "object",
                      "properties": {
                        "channels": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "duration_minutes": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "muted": {
                          "type": "boolean"
                        },
                        "muted_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "channels",
                        "duration_minutes",
                        "muted",
                        "muted_at",
                        "permanent"
                      ],
                      "additionalProperties": false
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "ban",
                    "mute",
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/violations": {
      "get": {
        "summary": "List a player moderation history",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "action": {
                            "type": "string"
                          },
                          "applied_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "duration_sec": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "expires_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "id": {
                            "type": "integer"
                          },
                          "issued_by": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "name": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "steam_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "discord_id",
                              "name",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "metadata": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": {}
                          },
                          "reason": {
                            "type": "string"
                          },
                          "source": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "action",
                          "applied_at",
                          "duration_sec",
                          "expires_at",
                          "id",
                          "issued_by",
                          "metadata",
                          "reason",
                          "source",
                          "type"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/ips": {
      "get": {
        "summary": "Get a player IP history",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "current_ip": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "history": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "first_seen": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "ip": {
                            "type": "string"
                          },
                          "last_seen": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "first_seen",
                          "ip",
                          "last_seen"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "current_ip",
                    "history"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/ban": {
      "post": {
        "summary": "Ban a player",
        "tags": [
          "Players"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "duration": {
                    "type": "integer",
                    "exclusiveMinimum": 0
                  },
                  "duration_unit": {
                    "type": "string",
                    "enum": [
                      "minutes",
                      "hours",
                      "days",
                      "months"
                    ]
                  },
                  "permanent": {
                    "type": "boolean"
                  },
                  "reason": {
                    "type": "string",
                    "maxLength": 500
                  },
                  "squad_ban": {
                    "type": "boolean"
                  },
                  "squad_id": {
                    "type": "string",
                    "pattern": "^\\d{1,20}$"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ban": {
                      "type": "object",
                      "properties": {
                        "banned": {
                          "type": "boolean"
                        },
                        "banned_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "banned_by": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "discord_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "name": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "steam_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "discord_id",
                            "name",
                            "steam_id"
                          ],
                          "additionalProperties": false
                        },
                        "expires_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "banned",
                        "banned_at",
                        "banned_by",
                        "expires_at",
                        "permanent",
                        "reason"
                      ],
                      "additionalProperties": false
                    },
                    "mute": {
                      "type": "object",
                      "properties": {
                        "channels": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "duration_minutes": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "muted": {
                          "type": "boolean"
                        },
                        "muted_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "channels",
                        "duration_minutes",
                        "muted",
                        "muted_at",
                        "permanent"
                      ],
                      "additionalProperties": false
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "ban",
                    "mute",
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Unban a player",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ban": {
                      "type": "object",
                      "properties": {
                        "banned": {
                          "type": "boolean"
                        },
                        "banned_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "banned_by": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "discord_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "name": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "steam_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "discord_id",
                            "name",
                            "steam_id"
                          ],
                          "additionalProperties": false
                        },
                        "expires_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "banned",
                        "banned_at",
                        "banned_by",
                        "expires_at",
                        "permanent",
                        "reason"
                      ],
                      "additionalProperties": false
                    },
                    "mute": {
                      "type": "object",
                      "properties": {
                        "channels": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "duration_minutes": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "muted": {
                          "type": "boolean"
                        },
                        "muted_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "channels",
                        "duration_minutes",
                        "muted",
                        "muted_at",
                        "permanent"
                      ],
                      "additionalProperties": false
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "ban",
                    "mute",
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/mute": {
      "post": {
        "summary": "Mute a player",
        "tags": [
          "Players"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "channels": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "Global",
                        "Local",
                        "Squad"
                      ]
                    },
                    "maxItems": 3
                  },
                  "duration": {
                    "type": "integer",
                    "exclusiveMinimum": 0
                  },
                  "duration_unit": {
                    "type": "string",
                    "enum": [
                      "minutes",
                      "hours",
                      "days"
                    ]
                  },
                  "permanent": {
                    "type": "boolean"
                  },
                  "reason": {
                    "type": "string",
                    "maxLength": 500
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ban": {
                      "type": "object",
                      "properties": {
                        "banned": {
                          "type": "boolean"
                        },
                        "banned_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "banned_by": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "discord_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "name": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "steam_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "discord_id",
                            "name",
                            "steam_id"
                          ],
                          "additionalProperties": false
                        },
                        "expires_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "banned",
                        "banned_at",
                        "banned_by",
                        "expires_at",
                        "permanent",
                        "reason"
                      ],
                      "additionalProperties": false
                    },
                    "mute": {
                      "type": "object",
                      "properties": {
                        "channels": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "duration_minutes": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "muted": {
                          "type": "boolean"
                        },
                        "muted_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "channels",
                        "duration_minutes",
                        "muted",
                        "muted_at",
                        "permanent"
                      ],
                      "additionalProperties": false
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "ban",
                    "mute",
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Unmute a player",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ban": {
                      "type": "object",
                      "properties": {
                        "banned": {
                          "type": "boolean"
                        },
                        "banned_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "banned_by": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "discord_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "name": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "steam_id": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "discord_id",
                            "name",
                            "steam_id"
                          ],
                          "additionalProperties": false
                        },
                        "expires_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "banned",
                        "banned_at",
                        "banned_by",
                        "expires_at",
                        "permanent",
                        "reason"
                      ],
                      "additionalProperties": false
                    },
                    "mute": {
                      "type": "object",
                      "properties": {
                        "channels": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "duration_minutes": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "muted": {
                          "type": "boolean"
                        },
                        "muted_at": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "permanent": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "channels",
                        "duration_minutes",
                        "muted",
                        "muted_at",
                        "permanent"
                      ],
                      "additionalProperties": false
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "ban",
                    "mute",
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/coins": {
      "post": {
        "summary": "Adjust a player coin balance",
        "tags": [
          "Players"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "amount": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "Signed delta: positive credits, negative debits. 0 is rejected.",
                    "not": {
                      "const": 0
                    }
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  }
                },
                "required": [
                  "amount",
                  "reason"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "amount": {
                      "type": "integer"
                    },
                    "balance": {
                      "type": "integer"
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "amount",
                    "balance",
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/discord": {
      "post": {
        "summary": "Link a player Discord account",
        "tags": [
          "Players"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "discord_id": {
                    "type": "string",
                    "pattern": "^\\d{17,20}$"
                  }
                },
                "required": [
                  "discord_id"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d{17}$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A Steam64 id (17 digits). Linking requires a steam id ref; a `discord:` ref is rejected (400).",
            "examples": {
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Unlink a player Discord account",
        "tags": [
          "Players"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "player"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/squads": {
      "get": {
        "summary": "List squads",
        "tags": [
          "Squads"
        ],
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "in": "query",
            "name": "active_within_days",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "in": "query",
            "name": "leader_discord_id",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "in": "query",
            "name": "leader_steam_id",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "in": "query",
            "name": "max_members",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "in": "query",
            "name": "min_members",
            "required": false
          },
          {
            "schema": {
              "type": "number"
            },
            "in": "query",
            "name": "min_score",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "search",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "last_active": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "leader": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "id": {
                                "type": "integer"
                              },
                              "name": {
                                "type": "string"
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "id",
                              "name",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "member_count": {
                            "type": "integer"
                          },
                          "member_limit": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "score": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "last_active",
                          "leader",
                          "member_count",
                          "member_limit",
                          "name",
                          "score"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/squads/{id}": {
      "get": {
        "summary": "Get a squad",
        "tags": [
          "Squads"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive SCUM squad id (no leading zeros).",
            "examples": {
              "squad": {
                "value": "42"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "last_active": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "leader": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "id": {
                          "type": "integer"
                        },
                        "name": {
                          "type": "string"
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "id",
                        "name",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    },
                    "member_count": {
                      "type": "integer"
                    },
                    "member_limit": {
                      "type": "integer"
                    },
                    "name": {
                      "type": "string"
                    },
                    "score": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "id",
                    "last_active",
                    "leader",
                    "member_count",
                    "member_limit",
                    "name",
                    "score"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/squads/{id}/members": {
      "get": {
        "summary": "List squad members",
        "tags": [
          "Squads"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive SCUM squad id (no leading zeros).",
            "examples": {
              "squad": {
                "value": "42"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "bank_money": {
                            "type": "integer"
                          },
                          "cash": {
                            "type": "integer"
                          },
                          "char_name": {
                            "type": "string"
                          },
                          "deaths": {
                            "type": "integer"
                          },
                          "discord_id": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "fame_points": {
                            "type": "integer"
                          },
                          "gold": {
                            "type": "integer"
                          },
                          "id": {
                            "type": "integer"
                          },
                          "kills": {
                            "type": "integer"
                          },
                          "last_logout": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "online": {
                            "type": "boolean"
                          },
                          "profile_id": {
                            "type": "integer"
                          },
                          "rank": {
                            "type": "integer"
                          },
                          "steam_id": {
                            "type": "string"
                          },
                          "steam_name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "bank_money",
                          "cash",
                          "char_name",
                          "deaths",
                          "discord_id",
                          "fame_points",
                          "gold",
                          "id",
                          "kills",
                          "last_logout",
                          "online",
                          "profile_id",
                          "rank",
                          "steam_id",
                          "steam_name"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/squads/{id}/summary": {
      "get": {
        "summary": "Get squad aggregate stats",
        "tags": [
          "Squads"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive SCUM squad id (no leading zeros).",
            "examples": {
              "squad": {
                "value": "42"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "member_count": {
                      "type": "integer"
                    },
                    "squad_id": {
                      "type": "integer"
                    },
                    "total_bank_money": {
                      "type": "integer"
                    },
                    "total_cash": {
                      "type": "integer"
                    },
                    "total_containers": {
                      "type": "integer"
                    },
                    "total_deaths": {
                      "type": "integer"
                    },
                    "total_fame": {
                      "type": "integer"
                    },
                    "total_gold": {
                      "type": "integer"
                    },
                    "total_kills": {
                      "type": "integer"
                    },
                    "total_vehicles": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "member_count",
                    "squad_id",
                    "total_bank_money",
                    "total_cash",
                    "total_containers",
                    "total_deaths",
                    "total_fame",
                    "total_gold",
                    "total_kills",
                    "total_vehicles"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/squads/{id}/bases": {
      "get": {
        "summary": "List squad bases",
        "tags": [
          "Squads"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive SCUM squad id (no leading zeros).",
            "examples": {
              "squad": {
                "value": "42"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "avg_health": {
                            "type": "number"
                          },
                          "base_id": {
                            "type": "integer"
                          },
                          "element_count": {
                            "type": "integer"
                          },
                          "flag_id": {
                            "type": "integer"
                          },
                          "max_elements": {
                            "type": "integer"
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "profile_id": {
                                "type": "integer"
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "name",
                              "profile_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "avg_health",
                          "base_id",
                          "element_count",
                          "flag_id",
                          "max_elements",
                          "owner",
                          "position"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/squads/{id}/vehicles": {
      "get": {
        "summary": "List squad vehicles",
        "tags": [
          "Squads"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive SCUM squad id (no leading zeros).",
            "examples": {
              "squad": {
                "value": "42"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "class_name": {
                            "type": "string"
                          },
                          "display_name": {
                            "type": "string"
                          },
                          "entity_id": {
                            "type": "string"
                          },
                          "health": {
                            "type": "number"
                          },
                          "is_functional": {
                            "type": "boolean"
                          },
                          "is_locked": {
                            "type": "boolean"
                          },
                          "item_count": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "last_access_time": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "lock_hp": {
                            "type": "number"
                          },
                          "lock_type": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "max_health": {
                            "type": "number"
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "profile_id": {
                                "type": "integer"
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "name",
                              "profile_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "class_name",
                          "display_name",
                          "entity_id",
                          "health",
                          "is_functional",
                          "is_locked",
                          "item_count",
                          "last_access_time",
                          "lock_hp",
                          "lock_type",
                          "max_health",
                          "owner",
                          "position"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/squads/{id}/containers": {
      "get": {
        "summary": "List squad containers",
        "tags": [
          "Squads"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive SCUM squad id (no leading zeros).",
            "examples": {
              "squad": {
                "value": "42"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "base_id": {
                            "type": "integer"
                          },
                          "base_name": {
                            "type": "string"
                          },
                          "class_name": {
                            "type": "string"
                          },
                          "custom_name": {
                            "type": "string"
                          },
                          "display_name": {
                            "type": "string"
                          },
                          "entity_id": {
                            "type": "string"
                          },
                          "is_buried": {
                            "type": "boolean"
                          },
                          "is_locked": {
                            "type": "boolean"
                          },
                          "item_count": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "last_access_time": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "lock_hp": {
                            "type": "number"
                          },
                          "lock_type": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "profile_id": {
                                "type": "integer"
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "name",
                              "profile_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "base_id",
                          "base_name",
                          "class_name",
                          "custom_name",
                          "display_name",
                          "entity_id",
                          "is_buried",
                          "is_locked",
                          "item_count",
                          "last_access_time",
                          "lock_hp",
                          "lock_type",
                          "owner",
                          "position"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/bases": {
      "get": {
        "summary": "List bases",
        "tags": [
          "Bases"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "in": "query",
            "name": "max_elements",
            "required": false
          },
          {
            "schema": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "in": "query",
            "name": "max_health",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "in": "query",
            "name": "min_elements",
            "required": false
          },
          {
            "schema": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "in": "query",
            "name": "min_health",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "owner_discord_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "owner_name",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "owner_steam_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "search",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "avg_health": {
                            "type": "number"
                          },
                          "base_id": {
                            "type": "integer"
                          },
                          "element_count": {
                            "type": "integer"
                          },
                          "flag_id": {
                            "type": "integer"
                          },
                          "max_elements": {
                            "type": "integer"
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "profile_id": {
                                "type": "integer"
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "name",
                              "profile_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "avg_health",
                          "base_id",
                          "element_count",
                          "flag_id",
                          "max_elements",
                          "owner",
                          "position"
                        ],
                        "additionalProperties": false,
                        "description": "A base flag and its owner"
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/bases/{id}": {
      "get": {
        "summary": "Get a base",
        "tags": [
          "Bases"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive base flag id (no leading zeros).",
            "examples": {
              "flag": {
                "value": "5"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A base flag and its owner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "avg_health": {
                      "type": "number"
                    },
                    "base_id": {
                      "type": "integer"
                    },
                    "element_count": {
                      "type": "integer"
                    },
                    "flag_id": {
                      "type": "integer"
                    },
                    "max_elements": {
                      "type": "integer"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "profile_id": {
                          "type": "integer"
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "name",
                        "profile_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    },
                    "position": {
                      "type": "object",
                      "properties": {
                        "x": {
                          "type": "number"
                        },
                        "y": {
                          "type": "number"
                        },
                        "z": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "z"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "avg_health",
                    "base_id",
                    "element_count",
                    "flag_id",
                    "max_elements",
                    "owner",
                    "position"
                  ],
                  "additionalProperties": false,
                  "description": "A base flag and its owner"
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/vehicles": {
      "get": {
        "summary": "List vehicles",
        "tags": [
          "Vehicles"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "alias",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "in": "query",
            "name": "is_functional",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "in": "query",
            "name": "is_locked",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "owner_discord_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "owner_name",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "owner_steam_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "search",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "class_name": {
                            "type": "string"
                          },
                          "display_name": {
                            "type": "string"
                          },
                          "entity_id": {
                            "type": "string"
                          },
                          "health": {
                            "type": "number"
                          },
                          "is_functional": {
                            "type": "boolean"
                          },
                          "is_locked": {
                            "type": "boolean"
                          },
                          "item_count": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "last_access_time": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "lock_hp": {
                            "type": "number"
                          },
                          "lock_type": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "max_health": {
                            "type": "number"
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "profile_id": {
                                "type": "integer"
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "name",
                              "profile_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "class_name",
                          "display_name",
                          "entity_id",
                          "health",
                          "is_functional",
                          "is_locked",
                          "item_count",
                          "last_access_time",
                          "lock_hp",
                          "lock_type",
                          "max_health",
                          "owner",
                          "position"
                        ],
                        "additionalProperties": false,
                        "description": "A vehicle and its owner"
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/vehicles/types": {
      "get": {
        "summary": "Vehicle type counts",
        "tags": [
          "Vehicles"
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "types": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    }
                  },
                  "required": [
                    "types"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/vehicles/{id}/inventory": {
      "get": {
        "summary": "Vehicle inventory",
        "tags": [
          "Vehicles"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive vehicle entity id (no leading zeros).",
            "examples": {
              "entity": {
                "value": "9"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InventoryItem"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "items",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/vehicles/{id}": {
      "get": {
        "summary": "Get a vehicle",
        "tags": [
          "Vehicles"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive vehicle entity id (no leading zeros).",
            "examples": {
              "entity": {
                "value": "9"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A vehicle and its owner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "class_name": {
                      "type": "string"
                    },
                    "display_name": {
                      "type": "string"
                    },
                    "entity_id": {
                      "type": "string"
                    },
                    "health": {
                      "type": "number"
                    },
                    "is_functional": {
                      "type": "boolean"
                    },
                    "is_locked": {
                      "type": "boolean"
                    },
                    "item_count": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "last_access_time": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "lock_hp": {
                      "type": "number"
                    },
                    "lock_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "max_health": {
                      "type": "number"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "profile_id": {
                          "type": "integer"
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "name",
                        "profile_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    },
                    "position": {
                      "type": "object",
                      "properties": {
                        "x": {
                          "type": "number"
                        },
                        "y": {
                          "type": "number"
                        },
                        "z": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "z"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "class_name",
                    "display_name",
                    "entity_id",
                    "health",
                    "is_functional",
                    "is_locked",
                    "item_count",
                    "last_access_time",
                    "lock_hp",
                    "lock_type",
                    "max_health",
                    "owner",
                    "position"
                  ],
                  "additionalProperties": false,
                  "description": "A vehicle and its owner"
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/containers": {
      "get": {
        "summary": "List containers",
        "tags": [
          "Containers"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "base_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "in": "query",
            "name": "is_buried",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "in": "query",
            "name": "is_locked",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "owner_discord_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "owner_name",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "owner_steam_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "search",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "base_id": {
                            "type": "integer"
                          },
                          "base_name": {
                            "type": "string"
                          },
                          "class_name": {
                            "type": "string"
                          },
                          "custom_name": {
                            "type": "string"
                          },
                          "display_name": {
                            "type": "string"
                          },
                          "entity_id": {
                            "type": "string"
                          },
                          "is_buried": {
                            "type": "boolean"
                          },
                          "is_locked": {
                            "type": "boolean"
                          },
                          "item_count": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "last_access_time": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "lock_hp": {
                            "type": "number"
                          },
                          "lock_type": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "profile_id": {
                                "type": "integer"
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "name",
                              "profile_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "base_id",
                          "base_name",
                          "class_name",
                          "custom_name",
                          "display_name",
                          "entity_id",
                          "is_buried",
                          "is_locked",
                          "item_count",
                          "last_access_time",
                          "lock_hp",
                          "lock_type",
                          "owner",
                          "position"
                        ],
                        "additionalProperties": false,
                        "description": "A container and its owner"
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/containers/types": {
      "get": {
        "summary": "Container type counts",
        "tags": [
          "Containers"
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "types": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    }
                  },
                  "required": [
                    "types"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/containers/{id}/inventory": {
      "get": {
        "summary": "Container inventory",
        "tags": [
          "Containers"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive container entity id (no leading zeros).",
            "examples": {
              "entity": {
                "value": "5"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InventoryItem"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "items",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/containers/{id}": {
      "get": {
        "summary": "Get a container",
        "tags": [
          "Containers"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive container entity id (no leading zeros).",
            "examples": {
              "entity": {
                "value": "5"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A container and its owner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "base_id": {
                      "type": "integer"
                    },
                    "base_name": {
                      "type": "string"
                    },
                    "class_name": {
                      "type": "string"
                    },
                    "custom_name": {
                      "type": "string"
                    },
                    "display_name": {
                      "type": "string"
                    },
                    "entity_id": {
                      "type": "string"
                    },
                    "is_buried": {
                      "type": "boolean"
                    },
                    "is_locked": {
                      "type": "boolean"
                    },
                    "item_count": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "last_access_time": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "lock_hp": {
                      "type": "number"
                    },
                    "lock_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "profile_id": {
                          "type": "integer"
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "name",
                        "profile_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    },
                    "position": {
                      "type": "object",
                      "properties": {
                        "x": {
                          "type": "number"
                        },
                        "y": {
                          "type": "number"
                        },
                        "z": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "z"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "base_id",
                    "base_name",
                    "class_name",
                    "custom_name",
                    "display_name",
                    "entity_id",
                    "is_buried",
                    "is_locked",
                    "item_count",
                    "last_access_time",
                    "lock_hp",
                    "lock_type",
                    "owner",
                    "position"
                  ],
                  "additionalProperties": false,
                  "description": "A container and its owner"
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/economy/coins": {
      "post": {
        "summary": "Bulk-adjust coin balances",
        "tags": [
          "Economy"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "amount": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "Signed delta: positive credits, negative debits. 0 is rejected.",
                    "not": {
                      "const": 0
                    }
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  },
                  "target": {
                    "type": "string",
                    "enum": [
                      "all",
                      "online"
                    ],
                    "default": "all"
                  }
                },
                "required": [
                  "amount",
                  "reason"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "affected_count": {
                      "type": "integer"
                    },
                    "amount": {
                      "type": "integer"
                    },
                    "target": {
                      "type": "string",
                      "enum": [
                        "all",
                        "online"
                      ]
                    }
                  },
                  "required": [
                    "affected_count",
                    "amount",
                    "target"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/packs": {
      "get": {
        "summary": "List packs",
        "tags": [
          "Packs"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "category_id",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "in": "query",
            "name": "enabled",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "search",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "buy_limit": {
                            "type": "object",
                            "properties": {
                              "count": {
                                "type": "integer"
                              },
                              "window_minutes": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "count",
                              "window_minutes"
                            ],
                            "additionalProperties": false
                          },
                          "category": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "id": {
                                "type": "integer"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name"
                            ],
                            "additionalProperties": false
                          },
                          "created_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "description": {
                            "type": "string"
                          },
                          "display_name": {
                            "type": "string"
                          },
                          "enabled": {
                            "type": "boolean"
                          },
                          "id": {
                            "type": "integer"
                          },
                          "image_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "name": {
                            "type": "string"
                          },
                          "price": {
                            "type": "integer"
                          },
                          "shop_enabled": {
                            "type": "boolean"
                          },
                          "updated_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "buy_limit",
                          "category",
                          "created_at",
                          "description",
                          "display_name",
                          "enabled",
                          "id",
                          "image_url",
                          "name",
                          "price",
                          "shop_enabled",
                          "updated_at"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/packs/deliveries": {
      "get": {
        "summary": "List pack deliveries",
        "tags": [
          "Packs"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "discord_id",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "pack_id",
            "required": false,
            "description": "Pack id: digits only, no leading zeros, within the JSON-safe integer range (≤ 9007199254740991)."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[a-z_]{1,20}$"
            },
            "in": "query",
            "name": "source",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[a-z_]{1,20}$"
            },
            "in": "query",
            "name": "status",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "steam_id",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "delivered_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "error_message": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "id": {
                            "type": "integer"
                          },
                          "pack": {
                            "type": "object",
                            "properties": {
                              "display_name": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "id": {
                                "type": "integer"
                              },
                              "name": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "display_name",
                              "id",
                              "name"
                            ],
                            "additionalProperties": false
                          },
                          "player": {
                            "type": "object",
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "steam_id": {
                                "type": "string",
                                "minLength": 1
                              }
                            },
                            "required": [
                              "discord_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "quantity": {
                            "type": "integer"
                          },
                          "source": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "total_price": {
                            "type": "integer"
                          }
                        },
                        "required": [
                          "delivered_at",
                          "error_message",
                          "id",
                          "pack",
                          "player",
                          "quantity",
                          "source",
                          "status",
                          "total_price"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/packs/{id}": {
      "get": {
        "summary": "Get a pack",
        "tags": [
          "Packs"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive pack id (no leading zeros).",
            "examples": {
              "pack": {
                "value": "5"
              }
            }
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "buy_limit": {
                      "type": "object",
                      "properties": {
                        "count": {
                          "type": "integer"
                        },
                        "window_minutes": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "count",
                        "window_minutes"
                      ],
                      "additionalProperties": false
                    },
                    "category": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false
                    },
                    "created_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "description": {
                      "type": "string"
                    },
                    "display_name": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "id": {
                      "type": "integer"
                    },
                    "image_url": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "name": {
                      "type": "string"
                    },
                    "price": {
                      "type": "integer"
                    },
                    "shop_enabled": {
                      "type": "boolean"
                    },
                    "updated_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "buy_limit",
                    "category",
                    "created_at",
                    "description",
                    "display_name",
                    "enabled",
                    "id",
                    "image_url",
                    "name",
                    "price",
                    "shop_enabled",
                    "updated_at"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/packs/{id}/deliver": {
      "post": {
        "summary": "Deliver a pack to a player",
        "tags": [
          "Packs"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "discord_id": {
                    "type": "string",
                    "pattern": "^\\d{17,20}$"
                  },
                  "quantity": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "default": 1
                  },
                  "steam_id": {
                    "type": "string",
                    "pattern": "^\\d{17}$"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "path",
            "name": "id",
            "required": true,
            "description": "A positive pack id (no leading zeros).",
            "examples": {
              "pack": {
                "value": "5"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "delivered": {
                      "type": "boolean"
                    },
                    "error_message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "pack": {
                      "type": "object",
                      "properties": {
                        "display_name": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "id": {
                          "type": "integer"
                        },
                        "name": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "display_name",
                        "id",
                        "name"
                      ],
                      "additionalProperties": false
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    },
                    "purchase_id": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "quantity": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "delivered",
                    "error_message",
                    "pack",
                    "player",
                    "purchase_id",
                    "quantity",
                    "status"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/claim-codes": {
      "post": {
        "summary": "Mint a claim code",
        "tags": [
          "Claim codes"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "expiry_days": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 3650
                  },
                  "max_uses": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 2147483647
                  },
                  "pack_id": {
                    "type": "string",
                    "pattern": "^[1-9]\\d*$",
                    "description": "Pack id: digits only, no leading zeros, within the JSON-safe integer range (≤ 9007199254740991)."
                  },
                  "steam_id": {
                    "type": "string",
                    "pattern": "^\\d{17}$"
                  }
                },
                "required": [
                  "pack_id",
                  "steam_id"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "dm_status": {
                      "type": "string"
                    },
                    "expires_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "max_uses": {
                      "type": "integer"
                    },
                    "pack": {
                      "type": "object",
                      "properties": {
                        "display_name": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "id": {
                          "type": "integer"
                        },
                        "name": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "display_name",
                        "id",
                        "name"
                      ],
                      "additionalProperties": false
                    },
                    "target": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "code",
                    "dm_status",
                    "expires_at",
                    "max_uses",
                    "pack",
                    "target"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "List claim codes",
        "tags": [
          "Claim codes"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            },
            "in": "query",
            "name": "pack_id",
            "required": false,
            "description": "Pack id: digits only, no leading zeros, within the JSON-safe integer range (≤ 9007199254740991)."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "wargm",
                "discord",
                "panel"
              ]
            },
            "in": "query",
            "name": "source",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "expired",
                "exhausted",
                "revoked"
              ]
            },
            "in": "query",
            "name": "status",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d{1,17}$"
            },
            "in": "query",
            "name": "target",
            "required": false
          },
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string"
                          },
                          "created_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "dm": {
                            "type": "object",
                            "properties": {
                              "channel_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "message_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "channel_id",
                              "message_id"
                            ],
                            "additionalProperties": false
                          },
                          "expires_at": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "max_uses": {
                            "type": "integer"
                          },
                          "pack": {
                            "type": "object",
                            "properties": {
                              "display_name": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "id": {
                                "type": "integer"
                              },
                              "name": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "display_name",
                              "id",
                              "name"
                            ],
                            "additionalProperties": false
                          },
                          "source": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "target": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "steam_id": {
                                "type": "string",
                                "minLength": 1
                              }
                            },
                            "required": [
                              "discord_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "uses_remaining": {
                            "type": "integer"
                          }
                        },
                        "required": [
                          "code",
                          "created_at",
                          "dm",
                          "expires_at",
                          "max_uses",
                          "pack",
                          "source",
                          "status",
                          "target",
                          "uses_remaining"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/claim-codes/{code}": {
      "delete": {
        "summary": "Revoke a claim code",
        "tags": [
          "Claim codes"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^[\\w-]{1,128}$"
            },
            "in": "path",
            "name": "code",
            "required": true,
            "description": "A claim code as returned by the mint endpoint. The game server mints them as `<pack name>-<6 characters>`, so they contain letters, digits, underscores and a hyphen.",
            "examples": {
              "code": {
                "value": "scrap_50units-VRBC7A"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "revoked": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "code",
                    "revoked"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/players/{ref}/currency": {
      "post": {
        "summary": "Adjust a player in-game currency balance",
        "tags": [
          "Currency"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "amount": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "Signed delta in delta mode (0 is rejected), or the absolute balance to write in set mode (must be >= 0)."
                  },
                  "currency": {
                    "type": "string",
                    "enum": [
                      "cash",
                      "gold"
                    ]
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "delta",
                      "set"
                    ],
                    "default": "delta"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "reason"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^(?:\\d{17}|discord:\\d{17,20})$"
            },
            "in": "path",
            "name": "ref",
            "required": true,
            "description": "A player identifier: a Steam64 id (17 digits) OR a Discord id prefixed `discord:`. A `discord:` ref resolves to the currently-linked player.",
            "examples": {
              "discord": {
                "value": "discord:123456789012345678"
              },
              "steam64": {
                "value": "76561198000000000"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The applied in-game currency adjustment, with the player's balances before and after.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "amount": {
                      "type": "integer"
                    },
                    "balance": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "cash": {
                          "type": "number"
                        },
                        "gold": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "cash",
                        "gold"
                      ],
                      "additionalProperties": false
                    },
                    "balance_before": {
                      "type": "object",
                      "properties": {
                        "cash": {
                          "type": "number"
                        },
                        "gold": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "cash",
                        "gold"
                      ],
                      "additionalProperties": false
                    },
                    "currency": {
                      "type": "string",
                      "enum": [
                        "cash",
                        "gold"
                      ]
                    },
                    "mode": {
                      "type": "string",
                      "enum": [
                        "delta",
                        "set"
                      ]
                    },
                    "player": {
                      "type": "object",
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    },
                    "transaction_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "amount",
                    "balance",
                    "balance_before",
                    "currency",
                    "mode",
                    "player",
                    "transaction_id"
                  ],
                  "additionalProperties": false,
                  "description": "The applied in-game currency adjustment, with the player's balances before and after."
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/economy/currency": {
      "post": {
        "summary": "Bulk-adjust in-game currency balances",
        "tags": [
          "Currency"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "amount": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "Signed delta in delta mode (0 is rejected), or the absolute balance to write in set mode (must be >= 0)."
                  },
                  "currency": {
                    "type": "string",
                    "enum": [
                      "cash",
                      "gold"
                    ]
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "delta",
                      "set"
                    ],
                    "default": "delta"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  },
                  "target": {
                    "type": "string",
                    "enum": [
                      "all",
                      "online"
                    ],
                    "default": "all"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "reason"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The applied server-wide in-game currency adjustment.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "affected_count": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "amount": {
                      "type": "integer"
                    },
                    "currency": {
                      "type": "string",
                      "enum": [
                        "cash",
                        "gold"
                      ]
                    },
                    "mode": {
                      "type": "string",
                      "enum": [
                        "delta",
                        "set"
                      ]
                    },
                    "target": {
                      "type": "string",
                      "enum": [
                        "all",
                        "online"
                      ]
                    },
                    "transaction_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "affected_count",
                    "amount",
                    "currency",
                    "mode",
                    "target",
                    "transaction_id"
                  ],
                  "additionalProperties": false,
                  "description": "The applied server-wide in-game currency adjustment."
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/economy/transactions": {
      "get": {
        "summary": "List economy ledger entries",
        "tags": [
          "Economy"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "cash",
                "coins",
                "gold"
              ]
            },
            "in": "query",
            "name": "asset",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$"
            },
            "in": "query",
            "name": "end_date",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "online",
                "player"
              ]
            },
            "in": "query",
            "name": "scope",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[a-z_]{1,20}$"
            },
            "in": "query",
            "name": "source",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$"
            },
            "in": "query",
            "name": "start_date",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "in": "query",
            "name": "steam_id",
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "A page of economy ledger entries, newest first.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "amount": {
                            "type": "integer"
                          },
                          "actor": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "asset": {
                            "type": "string",
                            "enum": [
                              "cash",
                              "coins",
                              "gold"
                            ]
                          },
                          "at": {
                            "type": "string"
                          },
                          "affected_count": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "balance_after": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "balance_before": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "mode": {
                            "type": "string",
                            "enum": [
                              "delta",
                              "set"
                            ]
                          },
                          "pack_name": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "player": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "steam_id": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "discord_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "reason": {
                            "type": "string"
                          },
                          "scope": {
                            "type": "string",
                            "enum": [
                              "all",
                              "online",
                              "player"
                            ]
                          },
                          "source": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "amount",
                          "actor",
                          "asset",
                          "at",
                          "affected_count",
                          "balance_after",
                          "balance_before",
                          "id",
                          "mode",
                          "pack_name",
                          "player",
                          "reason",
                          "scope",
                          "source"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor"
                  ],
                  "additionalProperties": false,
                  "description": "A page of economy ledger entries, newest first."
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/commands": {
      "post": {
        "summary": "Execute an admin console command",
        "tags": [
          "Commands"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "args": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^[^\\p{Cc}]*$"
                    },
                    "maxItems": 32,
                    "default": []
                  },
                  "subject": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "player": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          }
                        },
                        "required": [
                          "player"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "x": {
                            "type": "number"
                          },
                          "y": {
                            "type": "number"
                          },
                          "z": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "x",
                          "y",
                          "z"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "verb": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64,
                    "pattern": "^\\S+$"
                  }
                },
                "required": [
                  "verb"
                ],
                "additionalProperties": false,
                "description": "An admin console command to dispatch, addressed at a player, a point, or the server."
              }
            }
          },
          "description": "An admin console command to dispatch, addressed at a player, a point, or the server."
        },
        "responses": {
          "200": {
            "description": "The dispatched admin command and its game-server result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "string"
                    },
                    "subject": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "discord_id": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "steam_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "discord_id",
                        "steam_id"
                      ],
                      "additionalProperties": false
                    },
                    "success": {
                      "type": "boolean"
                    },
                    "verb": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "result",
                    "subject",
                    "success",
                    "verb"
                  ],
                  "additionalProperties": false,
                  "description": "The dispatched admin command and its game-server result."
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/commands/catalog": {
      "get": {
        "summary": "List available admin commands",
        "tags": [
          "Commands"
        ],
        "responses": {
          "200": {
            "description": "The game server’s live admin-command catalog: every verb with its typed arguments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "args": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "completion": {
                                  "type": "string"
                                },
                                "data_type": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "repeating": {
                                  "type": "boolean"
                                },
                                "required": {
                                  "type": "boolean"
                                },
                                "type_name": {
                                  "type": "string"
                                },
                                "values": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              },
                              "required": [
                                "completion",
                                "data_type",
                                "description",
                                "name",
                                "repeating",
                                "required",
                                "type_name",
                                "values"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "direct_spawn_capable": {
                            "type": "boolean"
                          },
                          "level": {
                            "type": "integer"
                          },
                          "output_mode": {
                            "type": "string"
                          },
                          "requires_online": {
                            "type": "boolean"
                          },
                          "target_mode": {
                            "type": "string"
                          },
                          "verb": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "args",
                          "direct_spawn_capable",
                          "level",
                          "output_mode",
                          "requires_online",
                          "target_mode",
                          "verb"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "data",
                    "version"
                  ],
                  "additionalProperties": false,
                  "description": "The game server’s live admin-command catalog: every verb with its typed arguments."
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "A strong validator for the response body — send it back as If-None-Match to receive a 304 when unchanged.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified — the resource is unchanged since the ETag supplied in If-None-Match."
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "description": "A strong ETag from a previous response. If it still matches, the server returns 304 Not Modified with no body.",
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/commands/history": {
      "get": {
        "summary": "List executed admin commands",
        "tags": [
          "Commands"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "maxLength": 200
            },
            "in": "query",
            "name": "command",
            "required": false
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "query",
            "name": "cursor",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?)?$"
            },
            "in": "query",
            "name": "end_date",
            "required": false
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?)?$"
            },
            "in": "query",
            "name": "start_date",
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "A page of executed admin commands, newest first.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "actor": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "discord_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "steam_id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "discord_id",
                              "steam_id"
                            ],
                            "additionalProperties": false
                          },
                          "at": {
                            "type": "string"
                          },
                          "command": {
                            "type": "string"
                          },
                          "result": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "actor",
                          "at",
                          "command",
                          "result"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "has_more",
                    "next_cursor"
                  ],
                  "additionalProperties": false,
                  "description": "A page of executed admin commands, newest first."
                }
              }
            }
          },
          "400": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "415": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "Standard error envelope returned by every /v1 endpoint on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://api.wardencore.ru/v1"
    }
  ],
  "security": [
    {
      "apiKey": []
    }
  ]
}
