openapi: 3.0.3
info:
  description: |
    # Introduction

    Paladium API opens doors to a wealth of game data, from player profiles to faction insights and leaderboards. Whether you're a seasoned developer crafting innovative gaming experiences or simply a curious enthusiast diving into game statistics, our API caters to your needs.

    We're currently in the beta phase, constantly evolving with new features in the pipeline. Embrace the cutting-edge as we refine and expand our offerings to elevate your gaming experience.
    You can access the old swagger UI [here](https://api.paladium.games/docs/swagger.html).

    ## Usage and Limits

    To access this information, simply direct your API requests to our base URI: https://api.paladium.games/. By adhering to this standard, you unlock a lot of possibilities, seamlessly integrating Paladium data into your projects.

    Before you dive in, we kindly ask you to familiarize yourself with our Terms of Service (ToS). By utilizing our API, you agree to abide by these terms, ensuring a harmonious and productive experience for all users. Failure to comply may result in access restrictions. We reserve the right to block access to users who violate our policies, ensuring fairness and security for everyone.

    Please note that the data access and associated limitations is subject to change. As we refine our services and respond to user feedback, occasional adjustments may occur to better serve our community.
    The [changelog is available here](https://api.paladium.games/docs/CHANGELOG.txt).
    
    All routes are subject to rate limits, ensuring fair access to our resources and maintaining system stability. These limits vary depending on the specific route.

    To keep track of your usage and ensure compliance, we provide the following headers:

    - `X-RateLimit-Limit`: Indicates the maximum number of requests allowed per minute for the particular route.
    - `X-RateLimit-Remaining`: Displays the remaining number of requests allowed within the current minute.
    - `X-RateLimit-Reset`: Specifies the duration in seconds until the next minute when your usage will reset.

    By monitoring these headers, you can effectively manage your requests and optimize your interaction with our API.
    We strongly recommend implementing a cache mechanism to ensure a reasonable number of requests and avoid unnecessary load on our servers. By caching responses, you can enhance performance and minimize the risk of exceeding rate limits.

    ## Reference

    Our API operates under the REST architecture, offering easily navigable URLs structured around resources. Requests can be sent with form-encoded bodies, while responses are consistently formatted in JSON. By utilizing standard HTTP response codes, communication between clients and servers is streamlined, fostering reliability and interoperability.

    ## Authentication

    To ensure the security and integrity of our API, all requests must be authenticated using API keys. These keys act as a unique identifier, allowing you to access our resources securely. You can view, create, and manage your API keys through the [Developer Apps section](https://account.paladium.games/settings/developer/apps) of your account.

    Each API key is tied to an app you create, and it is crucial to treat these keys with the utmost care. Never expose your secret API keys in publicly accessible areas like GitHub repositories, client-side code, or any other environment where unauthorized individuals could gain access. The misuse or leakage of your API keys can lead to unauthorized access, data breaches, and unexpected charges due to uncontrolled API usage.

    All API requests must be sent over HTTPS to ensure data is transmitted securely. Any requests made without proper authentication will be automatically rejected. To authenticate your API requests, include the API key in the "Authorization" header as follows:

    ```http
    Authorization: Bearer YOUR_API_KEY
    ```
    Remember that API rate limits are enforced on a per-key basis. By managing your API keys effectively, you can ensure that your application remains within usage limits and avoid disruptions in service. If you ever suspect that your API key has been compromised, immediately regenerate it through the Developer Apps section to prevent any unauthorized access.

    By implementing these best practices, you can securely integrate our API into your applications while protecting your data and maintaining compliance with our usage policies.

    ## Rate Limits
    
    Every day, many developers interact with the Paladium Games API, making a wide range of requests. To ensure the reliability and scalability of our services, we enforce rate limits on the number of requests that can be made within a specific time frame. These limits help us maintain a high-quality experience for the entire developer community.
  
    Rate limits are determined by the number of requests allowed within a specified time window, typically measured in minutes. For example, if an endpoint has a rate limit of 500 requests per 5-minute interval, your application can make up to 500 requests within any given 5-minute period.
    
    Rate limits are applied based on the authentication method used, specifically tied to the API key associated with your application. This ensures that each application is managed independently, preventing any single app from monopolizing resources and affecting others' access.
    
    Below, you will find a table detailing the rate limits for basic access to the Paladium API. These limits are also visible in the developer portal's application section, allowing you to monitor your usage in real-time and adjust your application's behavior accordingly.

    | **Route**                                       | **Requests** | **Window of time** | **Per** |
    | ----------------------------------------------- | ------------ | ------------------ | ------- |
    | /v1/status                                      | 600          | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid/username}     | 50           | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid}/friends      | 50           | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid}/jobs         | 50           | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid}/mount        | 50           | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid}/pet          | 50           | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid}/clicker      | 50           | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid}/games        | 50           | 5 minutes          | per app |
    | /v1/paladium/player/profile/{uuid}/achievements | 50           | 5 minutes          | per app |
    | /v1/paladium/faction/leaderboard                | 50           | 5 minutes          | per app |
    | /v1/paladium/faction/quest                      | 50           | 5 minutes          | per app |
    | /v1/paladium/faction/onyourmarks                | 50           | 5 minutes          | per app |
    | /v1/paladium/faction/profile/{name}             | 50           | 5 minutes          | per app |
    | /v1/paladium/faction/profile/{name}/players     | 50           | 5 minutes          | per app |
    | /v1/paladium/ranking/leaderboard/{id}/{page}    | 600          | 5 minutes          | per app |
    | /v1/paladium/ranking/position/{uuid}            | 600          | 5 minutes          | per app |
    | /v1/paladium/ranking/position/{id}/{uuid}       | 600          | 5 minutes          | per app |
    | /v1/paladium/ranking/trixium/player             | 10           | 5 minutes          | per app |
    | /v1/paladium/ranking/trixium/player/{uuid}      | 50           | 5 minutes          | per app |
    | /v1/paladium/ranking/trixium/faction            | 10           | 5 minutes          | per app |
    | /v1/paladium/ranking/trixium/faction/{uuid}     | 50           | 5 minutes          | per app |
    | /v1/paladium/shop/admin/items                   | 20           | 5 minutes          | per app |
    | /v1/paladium/shop/admin/items/{item}            | 20           | 5 minutes          | per app |
    | /v1/paladium/shop/market/categories             | 300          | 5 minutes          | per app |
    | /v1/paladium/shop/market/items                  | 300          | 5 minutes          | per app |
    | /v1/paladium/shop/market/items/{item}           | 300          | 5 minutes          | per app |
    | /v1/paladium/shop/market/items/{item}/history   | 300          | 5 minutes          | per app |
    | /v1/paladium/shop/market/players/{uuid}/items   | 30           | 5 minutes          | per app |
    | /v1/paladium/achievements                       | 30           | 5 minutes          | per app |
    | /v1/paladium/events                             | 10           | 5 minutes          | per app |
    | /v1/paladium/events/upcoming                    | 10           | 5 minutes          | per app |
    
    ## Error Handling

    Paladium API adheres to standard HTTP response codes to communicate the status of API requests. Here's what they mean:

    - **2xx codes** indicate a successful request.
    - **4xx codes** signal a client error, such as a missing parameter or a request for a non-existent entity.
    - **5xx codes** point to server-side issues.

    When an error occurs, the API returns a formatted JSON response. By interpreting the HTTP status codes and the JSON content, you can diagnose and resolve issues more effectively.


    ### Attributes

    |||
    |--|--|
    |type|The type of error returned.|
    |message|A human-readable explanation of the error.|

    #### Example
    ```json
    {
      "type": "INVALID_REQUEST_ERROR",
      "message": "Entity FuzeIII not found."
    }
    ```

    ### Error Types
    |**type**|**Description**|
    |--|--|
    |API_ERROR|This error occurs due to internal API issues unrelated to input, such as temporary server problems. This type of error is rare.|
    |INVALID_REQUEST_ERROR|This error is triggered by invalid requests such as bad input or non-existent entities.|
    |AUTHORIZATION_ERROR|This error is raised when the request is blocked due to reasons such as a missing API key, insufficient permissions, or exceeding the rate limit.|



    ## Pagination

    For endpoints that return multiple items, we implement pagination to ensure efficient data retrieval. By specifying the `offset` and `limit` parameters, you can navigate through the data, accessing the desired subset of information. This approach enhances performance and simplifies the handling of large datasets.

    ## Common data formats

    ### UUID

    Universally Unique Identifier, a 128-bit number used to uniquely identify players, factions and other objects. 

    ### Time and dates

    A Unix timestamp, representing the number of seconds that have elapsed since the Unix epoch (January 1, 1970).
    
    ### Server types
    
    |**Trend**|**Description**|
    |--|--|
    |LOBBY|The central server hub where players can gather, socialize, and access different game modes and servers.|
    |FACTION|The server dedicated to faction gameplay, where players can form or join factions and compete.|
    |MINAGE|The server focused on mining resources and gathering materials.|
    |FARMLAND|The server designed for farming activities, allowing players kill mobs.|
    |GAME|The server hosting various mini-games.|
    |[DIM_MINER](https://wiki.paladium-pvp.fr/les-metiers/mineur/dimension-mineur)|A dimension where players have they very own mining space, with exclusive minerals.|
    
    ### Response

    All responses are in JSON format.
  version: 2024.1.10
  title: Paladium Public API
  termsOfService: https://paladium-pvp.fr/pages/tos
  x-logo:
    url: https://cdn.tebex.io/store/355206/templates/98424/assets/3f48f20e7aa37a215abcbe053dfc0cd059139655.png
    altText: Paladium Logo
x-tagGroups:
  - name: Global
    tags:
      - Status
  - name: Paladium Java
    tags:
      - Players
      - Factions
      - Ranking
      - Shop
      - Achievements
      - Events
servers:
  - url: https://api.paladium.games/
    description: Production server
paths:
  /v1/status:
    get:
      operationId: status
      tags:
        - Status
      summary: |
        Retrieve status of Paladium Games services
      description: |
        Retrieve the status of publicly monitored Paladium Games services, you can utilize the provided API endpoint. The data includes:
        
        - **Java Global status:** Indicates whether Paladium Java is online, offline, or in maintenance mode.
        - **Player count:** Provides the total number of online players across the Paladium-PvP platform.
        - **Faction server status:** Provides the status of the faction servers, which may include information on whether they are online or experiencing issues.
        - **Anarchy server status:** Indicates the status of the anarchy server, detailing whether it is online or offline.
        - **Launcher status:** Displays the current status of the Paladium Games launcher, helping you understand whether it is functioning correctly.
        
        ### Paladium Java status
        
        |**Global Paladium Java status**|**Description**|
        |--|--|
        |online|Paladium Java is online and operational.|
        |offline|Paladium Java is offline and inaccessible.|
        |maintenance|Paladium Java is undergoing maintenance and is temporarily unavailable.|
        
        ### Faction server status
        
        |**Faction server status**|**Description**|
        |--|--|
        |unknown|The status of the faction server is unknown.|
        |offline|The faction server is offline and inaccessible.|
        |starting|The faction server is starting up.|
        |running|The faction server is operational.|
        |restart|The faction server is restarting.|
        |stopping|The faction server is shutting down.|
        |whitelist|The faction server is in maintenance mode.|
        
        ### Anarchy server status
        
        |**Anarchy server status**|**Description**|
        |--|--|
        |unknown|The status of the anarchy server is unknown.|
        |offline|The anarchy server is offline and inaccessible.|
        |starting|The anarchy server is starting up.|
        |running|The anarchy server is operational.|
        |restart|The anarchy server is restarting.|
        |stopping|The anarchy server is shutting down.|
        |whitelist|The anarchy server is in maintenance mode.|
        
        ### Launcher status
        
        |**Launcher status**|**Description**|
        |--|--|
        |online|The Paladium Games launcher is online and operational.|
        |offline|The Paladium Games launcher is offline and inaccessible.|
      responses:
        '200':
          $ref: '#/components/responses/Status'
  /v1/paladium/player/profile/{uuid}:
    get:
      operationId: playerGetUuid
      tags:
        - Players
      summary: |
        Get player information
      description: |
        This route provides general information about a player specified by their unique ID. The data includes the following:

        - **First join date:** The date when the player first joined.
        - **Description:** Description set by the player.
        - **Tags:** Tags set by the player, in a list of available tags.
        - **Faction name:** The name of the faction the player is in, if applicable.
        - **Faction rank:** The player's rank within the faction, if applicable.
        - **Money:** The player's in-game currency balance.
        - **Time played:** The total amount of time the player has spent in the game, in minutes.
        - **Rank:** The player's current rank in the game.
        - **Banners & current banner:** The banners and the current banner.
        - **Alliance:** The alliance the player is in, if applicable.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/OnePlayerData'
        '404':
          $ref: '#/components/responses/NotFound'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{username}:
    get:
      operationId: playerGetUsername
      tags:
        - Players
      summary: |
        Get player information
      description: |
        This route provides general information about a player specified by their username. If a player has changed their Minecraft username but has not reconnected to the server since the change, use the old player name. To avoid complications, it is **recommended** to use the unique identifier. 
        
        The data includes the following:

        - **First join date:** The date when the player first joined.
        - **Description:** Description set by the player.
        - **Tags:** Tags set by the player, in a list of available tags.
        - **Faction name:** The name of the faction the player is in, if applicable.
        - **Money:** The player's in-game currency balance.
        - **Time played:** The total amount of time the player has spent in the game, in minutes.
        - **Rank:** The player's current rank in the game.
        - **Alliance:** The alliance the player is in, if applicable.
      parameters:
        - $ref: '#/components/parameters/PlayerName'
      responses:
        '200':
          $ref: '#/components/responses/OnePlayerData'
        '404':
          $ref: '#/components/responses/NotFound'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{uuid}/friends:
    get:
      operationId: playerGetFriends
      tags:
        - Players
      summary: |
        Get player friend list
      description: |
        This route fetches the list of friends for a player specified by their unique identifier (UUID).
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/PlayerFriends'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{uuid}/jobs:
    get:
      operationId: playerGetJobs
      tags:
        - Players
      summary: |
        Get player jobs
      description: |
        This route fetches the job information for a player specified by their unique identifier (UUID). The response includes:
        - **Job name:** The name of the job.
        - **Job level:** The level of the job.
        - **Job experience (XP):** The experience points (XP) of the job.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/PlayerJobs'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{uuid}/mount:
    get:
      operationId: playerGetMount
      tags:
        - Players
      summary: |
        Get player mount
      description: |
        This route fetches the mount information for a player specified by their unique identifier (UUID). The response includes:

        - **Mount name:** The name of the mount the player is using.
        - **Mount damage:** The damage the mount has taken.
        - **Mount food level:** The food level of the mount.
        - **Mount XP:** The experience points (XP) of the mount.
        - **Mount type:** The type of the mount.
        - **Shared XP:** Percentage of shared experience points (XP) with the mount.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/PlayerMount'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{uuid}/pet:
    get:
      operationId: playerGetPet
      tags:
        - Players
      summary: |
        Get player pet
      description: |
        This route fetches information about the player's pet, identified by their unique identifier (UUID). The response includes:

        - **Current skin:** The skin of the pet.
        - **Experience (XP):** The experience points (XP) of the pet.
        - **Happiness:** The happiness level of the pet.
        - **Skills:** The pet skills.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/PlayerPet'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{uuid}/clicker:
    get:
      operationId: playerGetClicker
      tags:
        - Players
      summary: |
        Get player's clicker information
      description: |
        This route fetches clicker game-related information for a player specified by their unique identifier (UUID). The response includes:

          - **Buildings owned:** A list of buildings owned by the player, detailing the name of each building, the quantity owned, and the amount of click coins they produce.
          - **Bought upgrades:** A list of upgrades purchased by the player.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/PlayerClicker'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{uuid}/games:
    get:
      operationId: playerGames
      tags:
        - Players
      deprecated: true
      summary: |
        Get player's mini games profile
      description: |
        **This route is deprecated and might be removed in a future version.**
        This route fetches a player's profile in mini-games, identified by their unique player ID. The response includes:

        - **Coins earned:** The total amount of coins the player has earned by playing in various mini-games.
        - **Global experience (XP):** The player's overall experience points (XP) accumulated from playing mini-games.
        - **Experience (XP) in each game:** The amount of experience points (XP) the player has earned in each specific mini-game.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/PlayerGameProfile'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/player/profile/{uuid}/achievements:
    get:
      operationId: playerAchievements
      tags:
        - Players
      summary: |
        Get player's achievements
      description: |
        This route fetches player's achievements, unique player ID. The response includes:

        - **Achievement ID:** The internal achievement identifier. You can use this identifier to retrieve the achievement information.
        - **Progress:** The player's progress for the achievement
        - **Completed:** If the player completed the achievement.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/PlayerAchievements'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/faction/leaderboard:
    get:
      operationId: factionLeaderboardGet
      tags:
        - Factions
      summary: |
        Get faction leaderboard
      description: |
        This route provides data on the leaderboard of factions, displaying their performance in terms of elo and other key metrics. The response includes:

        **Faction's elo:** The current elo rating of each faction.
        **Difference in elo from yesterday:** The change in elo rating for each faction compared to the previous day.
        **Position in the leaderboard:** The current ranking of each faction on the leaderboard.
        **Faction name:** The name of each faction.
        **Trend:** The trend of each faction's performance.
        
        |**Trend**|**Description**|
        |--|--|
        |UPWARD|The faction's position has increased compared to the previous day.|
        |DOWNWARD|The faction's position has decreased compared to the previous day.|
        |NONE|The faction's position has remained stable since the previous day.|
      responses:
        '200':
          description: Faction leaderboard
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FactionLeaderboardEntry'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
  /v1/paladium/faction/quest:
    get:
      operationId: factionGetQuest
      tags:
        - Factions
      summary: |
        Get current faction quest
      description: |
        This route provides information on the current quest available for factions. The data includes:

        - **Item:** The specific item that needs to be deposited for the quest.
        -  **Quantity:** The quantity of the item that needs to be deposited.
        - **Start and end date:** The timeframe within which the quest is active, including the start and end dates.
        - **Amount of XP earned:** The amount of Faction experience points (XP) awarded upon completing the quest.
        - **In-Game Money earned:** The amount of in-game currency (in dollars) awarded upon completing the quest.
      responses:
        '200':
          description: Faction Quest
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactionQuest'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
  /v1/paladium/faction/onyourmarks:
    get:
      operationId: factionGetOnYourMarks
      tags:
        - Factions
      summary: |
        Get state of the On Your Mark event.
      description: |
        This route provides detailed information about the current state of the "On Your Mark" event. The data includes:

        - **Goal type:** The type of goal players must achieve during the event.
        - **Extra information:** Additional details relevant to the goal, such as the specific block to break if the goal type involves breaking blocks.
        - **Amount to complete the quest:** The required quantity or amount necessary to complete the quest.
        - **Reward elo:** The amount of elo the faction will earn when a player successfully completes the goal.
        - **Server type:** The type of server where the event takes place.
        - **Start and end date:** The timeframe during which the event is active, including start and end dates.
        - **Current state of the event:** Indicates whether the event has started or not.
        
        |**Goal type**|**Description**|
        |--|--|
        |BREAK_BLOCKS|The goal is to break a specified type of block a certain number of times.|
        |MOB_KILL|The goal is to kill a specified type and number of mobs.|
        |FISHING|The goal is to catch fish.|
        |WALK|The goal is to walk a certain distance within a given time period.|
        |ITEM_CRAFT|The goal is to craft a specified item a set number of times.|
        |ITEM_SMELT|The goal is to smelt a specified item a certain number of times.|
        |ITEM_CRAFT_PALAMACHINE|The goal is to craft a specified item using a Palamachine a set number of times.|
        |ITEM_ENCHANT|The goal is to enchant items a certain number of times.|
        |GRINDER_CRAFT|The goal is to craft a specified item using a grinder a set number of times.|
        |GRINDER_SMELT|The goal is to smelt a specified item using a grinder a certain number of times.|
        |USE_ITEM|The goal is to use a specified item a set number of times.|
      responses:
        '200':
          description: Faction OnYourMark
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactionOnYourMark'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
  /v1/paladium/faction/profile/{name}:
    get:
      operationId: factionProfileGet
      tags:
        - Factions
      summary: |
        Get faction profile
      description: |
        Retrieve the profile of a faction by specifying the faction name or faction's UUID. The data includes:
        
        - **Faction name:** The name of the faction.
        - **Faction UUID:** The unique identifier of the faction.
        - **Description:** The description of the faction.
        - **Access:** If the faction is public or private.
        - **Creation date:** The date the faction was created.
        - **XP and level:** The faction's experience points (XP) and level.
        - **Emblem:** The emblem data of the faction.
        - **Player list:** List of players in the faction.
        - **Alliance:** The alliance the faction is in, if applicable.
      parameters:
        - $ref: '#/components/parameters/FactionName'
      responses:
        '200':
          description: Faction profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactionProfile'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/faction/profile/{name}/players:
    get:
      operationId: factionProfileGetPlayers
      tags:
        - Factions
      summary: |
        Get players in a faction
      description: |
        Retrieve the player list of a faction by specifying the faction name or faction's UUID. The data includes:
        
        - **Usernames:** The usernames of the players in the faction.
        - **UUIDs:** The unique identifiers of the players in the faction.
        - **Groups:** Player ranks within the faction.
        - **Join dates:** The date each player joined the faction.
      parameters:
        - $ref: '#/components/parameters/FactionName'
      responses:
        '200':
          description: Faction profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactionPlayers'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/ranking/leaderboard/{id}/{page}:
    get:
      operationId: getLeaderboard
      tags:
        - Ranking
      summary: Get leaderboard information
      description: |
        Get the leaderboard for a specific category and page.
      parameters:
        - name: page
          in: path
          description: The page number of the leaderboard
          required: true
          schema:
            type: integer
            minimum: 1
        - $ref: '#/components/parameters/LeaderboardId'
      responses:
        '200':
          description: Leaderboard
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LeaderboardEntry'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/ranking/position/{uuid}:
    get:
      operationId: getLeaderboardPlayerPosition
      tags:
        - Ranking
      summary: Get player positions in all leaderboards
      description: |
        Get the player's positions in all leaderboards. If -1 is specified, the player is not ranked in the leaderboard.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          description: Leaderboard
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/LeaderboardPlayerPosition'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/ranking/position/{id}/{uuid}:
    get:
      operationId: getLeaderboardPlayerPositionId
      tags:
        - Ranking
      summary: Get player positions in a specific leaderboard
      description: |
        Get the player's positions in a specific leaderboards. If -1 is specified, the player is not ranked in the leaderboard.
      parameters:
        - $ref: '#/components/parameters/LeaderboardId'
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          description: Leaderboard
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/LeaderboardPlayerPositionSpec'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/ranking/trixium/player:
    get:
      operationId: getTrixiumRankPlayers
      tags:
        - Ranking
      summary: Get Trixium leaderboard for players
      description: |
        Retrieve the Trixium leaderboard, ranked by players.
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/TrixiumLeaderboardPlayers'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/ranking/trixium/player/{uuid}:
    get:
      operationId: getTrixiumRankPlayer
      tags:
        - Ranking
      summary: Get Trixium leaderboard information by player UUID.
      description: |
        Retrieve specific player information in the trixium leaderboard.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/TrixiumLeaderboardPlayer'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/ranking/trixium/faction:
    get:
      operationId: getTrixiumRankFactions
      tags:
        - Ranking
      summary: Get Trixium leaderboard for factions
      description: |
        Retrieve the Trixium leaderboard, ranked by factions.
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/TrixiumLeaderboardFactions'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/ranking/trixium/faction/{uuid}:
    get:
      operationId: getTrixiumRankFaction
      tags:
        - Ranking
      summary: Get Trixium leaderboard information by faction UUID.
      description: |
        Retrieve specific faction information in the trixium leaderboard.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
      responses:
        '200':
          $ref: '#/components/responses/TrixiumLeaderboardFaction'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/shop/admin/items:
    get:
      operationId: getShopAdminItems
      tags:
        - Shop
      summary: Get all item information in the Admin Shop
      description: |
        Get item information, such as the sell and buy price and category of the items.
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/AdminShopItems'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/shop/admin/items/{item}:
    get:
      operationId: getShopAdminItem
      tags:
        - Shop
      summary: Get item information in the Admin Shop
      description: |
        Get item information, such as the sell and buy price and category of the item.
      parameters:
        - $ref: '#/components/parameters/ItemName'
      responses:
        '200':
          $ref: '#/components/responses/AdminShopItem'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/shop/market/categories:
    get:
      operationId: getShopMarketCategories
      tags:
        - Shop
      summary: Get item categories in the market shop.
      description: |
        Get categories of items in the market shop.
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/MarketCategories'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/shop/market/items:
    get:
      operationId: getShopMarketItems
      tags:
        - Shop
      summary: Get all item information in the Market Shop.
      description: |
        Get item statistics, such as the quantity and price of the items.
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/MarketItems'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/shop/market/items/{item}:
    get:
      operationId: getShopMarketItem
      tags:
        - Shop
      summary: Get item information in the Market Shop
      description: |
        Get item statistics, such as the quantity and price of the item.
      parameters:
        - $ref: '#/components/parameters/ItemName'
      responses:
        '200':
          $ref: '#/components/responses/MarketItem'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/shop/market/items/{item}/history:
    get:
      operationId: getShopMarketItemHistory
      tags:
        - Shop
      summary: Get item history in the Market Shop
      description: |
        Get item history, such as the quantity and price of the item over days.
      parameters:
        - $ref: '#/components/parameters/ItemName'
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/MarketItemHistoryResponse'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/shop/market/players/{uuid}/items:
    get:
      operationId: getShopMarketPlayerItems
      tags:
        - Shop
      summary: Get items for sale of a player in the Market Shop
      description: |
        Get items for sale of a player in the Market Shop.
      parameters:
        - $ref: '#/components/parameters/PlayerUuid'
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/PlayerMarketItems'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/achievements:
    get:
      operationId: getAchievements
      tags:
        - Achievements
      summary: Get in-game achievements
      description: |
        Get in-game achievements.
        
        |**Category**|**Description**|
        |--|--|
        |HOW_TO_START|Achievements related to the player's onboarding.|
        |JOBS|Achievements related to the job features.|
        |FACTION|Achievements related to the faction feature.|
        |ATTACK_DEFENSE|Achievements related to the looting gameplay.|
        |ECONOMY|Achievements related to the player's money and resources.|
        |OTHERS|Unclassified achievements.|
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/Achievements'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/events:
    get:
      operationId: getEvents
      tags:
        - Events
      summary: Get registered events
      description: |
        Get registered events info.
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/Events'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/paladium/events/upcoming:
    get:
      operationId: getUpcomingEvents
      tags:
        - Events
      summary: Get upcoming event list
      description: |
        Get upcoming event list.
      parameters:
        - $ref: '#/components/parameters/PaginationOffset'
        - $ref: '#/components/parameters/PaginationLimit'
      responses:
        '200':
          $ref: '#/components/responses/UpcomingEvents'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  headers:
    X-RateLimit-Limit:
      description: Request limit per window of time
      schema:
        type: integer
      example: 100
    X-RateLimit-Remaining:
      schema:
        type: integer
      example: 78
    X-RateLimit-Reset:
      schema:
        type: integer
      example: 209
  responses:
    Unauthorized:
      description: |
        Bad or expired token. This can happen if the user revoked a token or
        the access token has expired. You should re-authenticate the user.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              type:
                allOf:
                  - $ref: '#/components/schemas/ErrorType'
                example: AUTHORIZATION_ERROR
              message:
                type: string
                example: Invalid API key.
    Forbidden:
      description: |
        Bad OAuth request (wrong consumer key, bad nonce, expired
        timestamp...). Unfortunately, re-authenticating the user won't help here.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              type:
                allOf:
                  - $ref: '#/components/schemas/ErrorType'
                example: AUTHORIZATION_ERROR
              message:
                type: string
                example: Insufficient permissions to access this resource.
    NotFound:
      description: |
        Information not found
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              type:
                allOf:
                  - $ref: '#/components/schemas/ErrorType'
                example: INVALID_REQUEST_ERROR
              message:
                type: string
                example: Entity XXXX not found.
    TooManyRequests:
      description: |
        The app has exceeded its rate limits.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              type:
                allOf:
                  - $ref: '#/components/schemas/ErrorType'
                example: AUTHORIZATION_ERROR
              message:
                type: string
                example: Rate limit exceeded for this resource
    PlayerMount:
      description: Player mount
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerMount'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerPet:
      description: Player pet
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerPet'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    OnePlayerData:
      description: A player data
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerObject'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    AdminShopItem:
      description: Admin Shop Item
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AdminShopItem'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    AdminShopItems:
      description: Admin Shop Items
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AdminShopItems'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    MarketItem:
      description: Market Item
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MarketItem'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    MarketItems:
      description: Market Items
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MarketItems'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    MarketCategories:
      description: Market categories
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MarketCategories'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerMarketItem:
      description: Player market item
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerMarketItem'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    Status:
      description: A status
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    TrixiumLeaderboardPlayers:
      description: Players in trixium leaderboard
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TrixiumLeaderboardPlayers'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    TrixiumLeaderboardPlayer:
      description: Player in trixium leaderboard
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TrixiumLeaderboardPlayer'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    TrixiumLeaderboardFactions:
      description: Factions in trixium leaderboard
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TrixiumLeaderboardFactions'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    TrixiumLeaderboardFaction:
      description: Faction in trixium leaderboard
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TrixiumLeaderboardFaction'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    MarketItemHistoryResponse:
      description: Market Item History Response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MarketItemHistoryResponse'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerMarketItems:
      description: Player market items
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerMarketItems'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerJobs:
      description: Player job data
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JobObject'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerClicker:
      description: Player Clicker Data
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerClicker'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerFriends:
      description: Player friends
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerFriends'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerGameProfile:
      description: Player mini game profile
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerGameProfile'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    Achievements:
      description: List of achievements
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Achievements'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    PlayerAchievements:
      description: List of achievement status of a player
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlayerAchievements'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    Events:
      description: List of events
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Events'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
    UpcomingEvents:
      description: List of events
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpcomingEvents'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
  schemas:
    ErrorType:
      type: string
      enum:
        - API_ERROR
        - INVALID_REQUEST_ERROR
        - AUTHORIZATION_ERROR
    FactionPlayers:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of items
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/FactionPlayer'
          description: |
            List of friends
    FactionPlayer:
      type: object
      properties:
        username:
          type: string
          description: |
            Player username
          example: FuzeIII
        uuid:
          type: string
          description: |
            Player UUID
          example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
        group:
          type: string
          description: |
            Player group in the faction
          example: member
        joinDate:
          type: number
          description: |
            Timestamp of the time player joined the faction
          example: 1453074653872
    PlayerFriends:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of items
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/FriendObject'
          description: |
            List of friends
    PlayerClicker:
      allOf:
        - type: object
          properties:
            uuid:
              type: string
              description: |
                Player's UUID
              example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
            buildings:
              type: array
              items:
                $ref: '#/components/schemas/ClickerBuilding'
            upgrades:
              type: array
              items:
                type: string
              example:
                - click_1
                - abandoned_mine_1
            rps:
              type: number
              description: |
                Clicker game RPS
              example: 2.3
    PlayerGameProfile:
      allOf:
        - type: object
          properties:
            uuid:
              type: string
              description: |
                Player's UUID
              example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
            coins:
              type: number
              description: Game profile coins
              example: 0
            gameXp:
              type: object
              properties:
                bedwars:
                  type: number
                  description: XP earned in Bedwars
                  example: 2900
                paintwars:
                  type: number
                  description: XP earned in Paintwars
                  example: 120
            xp:
              type: number
              description: Global XP earned
              example: 19350
    ClickerBuilding:
      type: object
      properties:
        name:
          type: string
          description: |
            Building name
          example: abandoned_mine
        production:
          type: number
          description: |
            Production per second from this building
          example: 5937734.028724724
        quantity:
          type: integer
          description: |
            Quantity of buildings owned
          example: 48
    PlayerMount:
      type: object
      properties:
        name:
          type: string
          description: |
            Mount name
          example: Tedarok
        damage:
          type: number
          description: |
            Mount damage
          example: 5
        food:
          type: number
          description: |
            Mount food level
          example: 8541
        xp:
          type: number
          description: |
            Mount XP
          example: 6504.8
        mountType:
          type: integer
          description: |
            Mount type ID
          example: 3
        sharedXpPercent:
          type: integer
          description: |
            Shared XP percentage
          example: 50
    PetSkill:
      type: object
      properties:
        id:
          type: string
          description: |
            Skill identifier
          example: speed_walk
        lastChange:
          type: number
          description: |
            Timestamp of the last skill change
          example: 1453074653872
        nextUse:
          type: number
          description: |
            Timestamp of the next skill use
          example: 0
    PlayerPet:
      type: object
      properties:
        currentSkin:
          type: string
          description: |
            Current pet skin
          example: cat
        experience:
          type: number
          description: |
              Pet experience
          example: 75000
        happiness:
          type: number
          description: |
            Pet happiness
          example: 100
        skills:
          type: array
          items:
            $ref: '#/components/schemas/PetSkill'
    PlayerObject:
      allOf:
        - type: object
          properties:
            faction:
              type: string
              description: |
                Faction name
              example: FuzeFaction
            firstJoin:
              type: number
              description: |
                Timestamp of the time player joined the server
              example: 1453074653872
            money:
              type: number
              description: Current money in dollars
              example: 42424242
            timePlayed:
              type: number
              description: Play time in minutes. -1 if hidden
              example: 30193
            username:
              type: string
              description: The player's username
              example: FuzeIII
            uuid:
              type: string
              description: The player's unique ID
              example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
            rank:
              type: string
              description: The player's rank.
              example: administrateur
            factionRank:
              type: string
              description: The player's rank within the faction.
              example: Leader
            alliance:
              type: string
              description: The player's alliance.
              example: CHAOS
              enum:
                - CHAOS
                - ORDER
                - STAFF
                - NEUTRAL
            description:
              type: string
              description: Player description.
              example: Best PvP player of Paladium.
            banners:
              type: array
              items:
                type: string
              example:
                - sword
              description: Player banners.
            currentBanner:
              type: string
              description: Current player banner.
              example: sword
            tags:
              type: array
              items:
                type: string
              example:
                - PVP
                - TRYHARD
                - LOOTING
              description: Player tags.
    FriendObject:
      type: object
      properties:
        uuid:
          type: string
          description: |
            Player UUID
          example: f68429c5-51c4-4aa7-9711-396fd6b42d61
        name:
          type: string
          description: |
            Player name
          example: MyFriend
    JobInfoObject:
      type: object
      properties:
        level:
          type: integer
          description: Job level
          example: 18
        xp:
          type: number
          description: Job XP
          example: 123456789
    JobObject:
      type: object
      properties:
        alchemist:
          type: object
          allOf:
            - $ref: '#/components/schemas/JobInfoObject'
        farmer:
          type: object
          allOf:
            - $ref: '#/components/schemas/JobInfoObject'
        hunter:
          type: object
          allOf:
            - $ref: '#/components/schemas/JobInfoObject'
        miner:
          type: object
          allOf:
            - $ref: '#/components/schemas/JobInfoObject'
    FactionLeaderboardTrend:
      type: string
      enum:
        - NONE
        - UPWARD
        - DOWNWARD
      example: UPWARD
    StatusFaction:
      type: string
      enum:
        - unknown
        - offline
        - starting
        - running
        - restarting
        - stopping
        - whitelist
      example: running
    OnYourMarkStatus:
      type: string
      enum:
        - NOT_STARTED
        - RUNNING
        - FINISHED
    OnYourMarkGoal:
      type: string
      enum:
        - BREAK_BLOCKS
        - MOB_KILL
        - FISHING
        - WALK
        - ITEM_CRAFT
        - ITEM_SMELT
        - ITEM_CRAFT_PALAMACHINE
        - ITEM_ENCHANT
        - GRINDER_CRAFT
        - GRINDER_SMELT
        - USE_ITEM
    ServerType:
      type: string
      enum:
        - LOBBY
        - FACTION
        - MINAGE
        - FARMLAND
        - GAME
        - DIM_MINER
    FactionLeaderboardEntry:
      type: object
      properties:
        diff:
          type: integer
          description: |
            The change in position compared to the previous leaderboard
          example: 0
        elo:
          type: integer
          description: |
            The faction's Elo rating
            example: 500
        emblem:
          type: object
          properties:
            backgroundColor:
              type: integer
              description: |
                Background color ID
              example: -1
            backgroundId:
              type: integer
              description: |
                Background image ID
              example: 3
            borderColor:
              type: integer
              description: |
                Border color ID
              example: 1
            foregroundColor:
              type: integer
              description: |
                Foreground color ID
              example: 2
            foregroundId:
              type: integer
              description: |
                Foreground image ID
              example: 9
            iconBorderColor:
              type: integer
              description: |
                Icon border color ID
              example: 3
            iconColor:
              type: integer
              description: |
                Icon color ID
              example: 1
            iconId:
              type: integer
              description: |
                Icon image ID
              example: 5
        name:
          type: string
          description: |
            Faction name
          example: MyFaction
        position:
          type: integer
          description: |
            The faction's position in the leaderboard
          example: 1
        trend:
          type: object
          allOf:
            - $ref: '#/components/schemas/FactionLeaderboardTrend'
          description: Current day trend for this faction
          example: UPWARD
    FactionProfile:
      type: object
      properties:
        access:
          type: string
          description: |
            The access level of the faction
          example: INVITATION
        createdAt:
          type: integer
          description: |
            Timestamp of the faction's creation
          example: 1708110508806
        description:
          type: string
          description: |
            Description of the faction
          example: A basic faction
        emblem:
          type: object
          description: |
            The emblem of the faction
          properties:
            backgroundColor:
              type: integer
              description: |
                Background color ID
              example: -1
            backgroundId:
              type: integer
              description: |
                Background image ID
              example: 0
            borderColor:
              type: integer
              description: |
                Border color ID
              example: -1
            foregroundColor:
              type: integer
              description: |
                Foreground color ID
              example: 3
            foregroundId:
              type: integer
              description: |
                Foreground image ID
              example: 0
            iconBorderColor:
              type: integer
              description: |
                Icon border color ID
              example: -1
            iconColor:
              type: integer
              description: |
                Icon color ID
              example: 5
            iconId:
              type: integer
              description: |
                Icon image ID
              example: 0
        alliance:
          type: string
          description: The player's alliance.
          example: CHAOS
          enum:
            - CHAOS
            - ORDER
            - STAFF
            - NEUTRAL
        level:
          type: object
          description: |
            The level of the faction
          properties:
            level:
              type: integer
              description: |
                The level of the faction
              example: 11
            xp:
              type: integer
              description: |
                The XP of the faction
              example: 4227390
        name:
          type: string
          description: |
            Faction name
          example: ExampleFaction
        players:
          type: array
          description: |
            List of players in the faction
          items:
            type: object
            description: |
              Information about each player
            properties:
              group:
                type: string
                description: |
                  The group of the player in the faction
                example: Leader
              joinedAt:
                type: integer
                description: |
                  Timestamp of when the player joined the faction
                example: 1708110508802
              username:
                type: string
                description: |
                  Player's username
                example: FuzeIII
              uuid:
                type: string
                description: |
                  Player's UUID
                example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
        uuid:
          type: string
          description: |
            Faction's UUID
          example: ffc2-ffc2-ffc2-ffc2-ffc2
    LeaderboardEntry:
      type: object
      properties:
        factionName:
          type: string
          description: The name of the faction
          example: AdminFac
        position:
          type: integer
          description: The position of the faction in the leaderboard
          example: 1
        username:
          type: string
          description: The username of the faction leader
          example: TestPlayer
        uuid:
          type: string
          description: The UUID of the faction leader
          example: xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        value:
          type: number
          description: The value associated with the faction's position in the leaderboard
          example: 500000.1
    LeaderboardPlayerPosition:
      type: object
      properties:
        job.hunter:
          type: integer
          description: Leaderboard position for highest Hunter job level
          example: 4
        job.miner:
          type: integer
          description: Leaderboard position for highest Miner job level
          example: 102
        job.farmer:
          type: integer
          description: Leaderboard position for highest Farmer job level
          example: 1308
        job.alchemist:
          type: integer
          description: Leaderboard position for highest Alchemist job level
          example: 863
        boss:
          type: integer
          description: Ledaerboard position for players who killed the most boss
          example: 93
        money:
          type: integer
          description: Leaderboard position in richest players
          example: 1
        end:
          type: integer
          description: Leaderboard position for End event
          example: 3001
        koth:
          type: integer
          description: Leaderboard position for KOTH event
          example: 8490
        chorus:
          type: integer
          description: Leaderboard position for chorus
          example: 1482
        egghunt:
          type: integer
          description: Leaderboard position for Egghunt event
          example: 939
    LeaderboardPlayerPositionSpec:
      type: object
      properties:
        uuid:
          type: string
          description: Player unique ID.
          example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
        leaderboard:
          type: string
          description: Leaderboard ID.
          example: money
        position:
          type: integer
          description: Current player position in the specific leaderboard.
          example: 1
        ranked:
          type: boolean
          description: Whether or not the player is ranked.
          example: true
    Status:
      type: object
      properties:
        java:
          type: object
          allOf:
            - $ref: '#/components/schemas/StatusJava'
          description: Status of Paladium Java
        launcher:
          type: object
          allOf:
            - $ref: '#/components/schemas/StatusLauncher'
          description: Status of Paladium Games Launcher
        anarchy:
          type: object
          allOf:
            - $ref: '#/components/schemas/StatusAnarchy'
          description: Status of Paladium Anarchy
    StatusJava:
      type: object
      properties:
        global:
          type: object
          allOf:
            - $ref: '#/components/schemas/StatusJavaGlobal'
        factions:
          type: object
          allOf:
            - $ref: '#/components/schemas/StatusJavaFactions'
    StatusJavaGlobal:
      type: object
      properties:
        status:
          type: string
          enum:
            - offline
            - online
            - maintenance
          default: online
        players:
          type: integer
          description: Number of players online
          default: 1000
    StatusAnarchy:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/StatusFaction'
        players:
          type: integer
          description: Number of players online
          default: 30
    StatusLauncher:
      type: object
      properties:
        status:
          type: string
          enum:
            - offline
            - online
          default: online
    StatusJavaFactions:
      type: object
      properties:
        Soleratl:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: offline
        Muzdan:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: starting
        Manashino:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: running
        Event:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: restarting
        Luccento:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: stopping
        Imbali:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: whitelist
        Keltis:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: running
        Neolith:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: running
        Untaa:
          type: string
          allOf:
            - $ref: '#/components/schemas/StatusFaction'
          default: running
    AdminShopItem:
      type: object
      properties:
        name:
          type: string
          description: |
            The item name
          example: paladium-ore
        category:
          type: string
          enum:
            - ALL
            - BLOCK
            - ORE
            - VEGETABLE
            - OTHER
          example: ORE
        canBuy:
          type: boolean
          example: true
        buyPrice:
          type: number
          default: 10.42
        canSell:
          type: boolean
          default: true
        sellPrice:
          type: number
          default: 5
    AdminShopItems:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of items
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/AdminShopItem'
          description: |
            List of items in the Admin Shop.
    MarketItem:
      type: object
      properties:
        name:
          type: string
          description: |
            The item name
          example: paladium-ore
        countListings:
          type: integer
          description: |
            The number of active listings for the item in the market
          example: 2
        quantityAvailable:
          type: integer
          description: |
            The quantity of the item available in the market
          example: 10
        quantitySoldTotal:
          type: integer
          description: |
            The total quantity of the item sold in the market since the beginning
          example: 20
        priceSum:
          type: number
          description: |
            The sum of all prices of items available in the market
          example: 100
        priceAverage:
          type: number
          description: |
            The average price of the item in the market (priceSum / quantityAvailable)
          example: 10
    MarketItems:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of different items
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/MarketItem'
          description: |
            List of items in the Market Shop.
    MarketCategories:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of available categories
          example: 2
        data:
          type: array
          items:
            type: string
          example:
            - PVP
            - LUCKY_BLOCK
          description: |
            List of categories in the market shop.
    PlayerMarketItem:
      type: object
      properties:
        type:
          type: string
          enum:
            - ITEM
            - DRAWER
            - LUCKY_DRAWER
          example: LUCKY_DRAWER
        category:
          type: string
          enum:
            - PVP
            - LUCKY_BLOCK
            - BUILD
            - TOOLS
            - RARE
            - OTHER
            - LUCKYDRAWER
            - STUFF
          example: RARE
        createdAt:
          type: number
          description: |
            Timestamp of when the sale was created
          example: 1708110508802
        expireAt:
          type: number
          description: |
            Timestamp of when the sale expires
          example: 1713467692327
        durability:
          type: number
          description: |
            Durability of the item
          example: -1
        item:
          type: object
          properties:
            name:
              type: string
              description: |
                The item name
              example: palamod:tile.paladiumLuckyDrawer
            quantity:
              type: integer
              description: |
                The quantity of the item
              example: 1
            meta:
              type: integer
              description: |
                The item meta
              example: 0
        price:
          type: number
          description: |
            The price of the item
          example: 100
        pricePb:
          type: number
          description: |
            The price of the item in shop points
          example: 32
        renamed:
          type: boolean
          description: |
            Whether the item has been renamed
          example: false
        skin:
          type: integer
          description: |
            The skin ID of the item in the market.
          example: 5
        slot:
          type: integer
          description: |
            The slot of the item in the market.
          example: 0
    PlayerMarketItems:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of items
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/PlayerMarketItem'
          description: |
            List of player items for sale in the Market Shop.
    MarketItemHistory:
      type: object
      properties:
        name:
          type: string
          description: Date in the format YYYY-MM-DD representing the day's data
          example: 2022-01-01T00:00:00.000Z
        price:
          type: integer
          description: Total sum of the item's sales in money ($) on that day
          example: 10
        pricePb:
          type: integer
          description: Total sum of the item's sales in shop points on that day
          example: 32
        quantity:
          type: integer
          description: Total quantity of the item sold on that day
          example: 93
        sells:
          type: integer
          description: Count of sales made in money ($) for the item on that day
          example: 2
        sellsPb:
          type: integer
          description: Count of sales made in shop points for the item on that day
          example: 3
    MarketItemHistoryResponse:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of entries
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/MarketItemHistory'
          description: |
            List of history entries for the item in the Market Shop.
    FactionQuest:
      type: object
      properties:
        item:
          type: string
          description: The name of the item required for the quest.
          example: bone
        quantity:
          type: number
          description: The quantity of items required to be deposited for the quest.
          example: 64
        start:
          type: number
          description: The timestamp indicating the start of the quest.
          example: 1712000000
        end:
          type: number
          description: The timestamp indicating the end of the quest.
          example: 1713000000
        earningXp:
          type: number
          description: The amount of Faction XP earned upon quest completion.
          example: 50
        earningMoney:
          type: number
          description: The amount of money earned upon quest completion.
          example: 70000
    FactionOnYourMark:
      type: object
      properties:
        goalType:
          type: object
          allOf:
            - $ref: '#/components/schemas/OnYourMarkGoal'
          description: Goal Type
          example: BREAK_BLOCKS
        extra:
          type: string
          description: Extra information, such as the item name. Depends on the goal type.
          example: palamod:tile.amethyst.ore/0
        amount:
          type: integer
          description: 'Amount to achieve in this event (e.g: quantity of blocks to break, steps to walk in the WALK event...)'
          example: 128
        rewardElo:
          type: integer
          description: Amount of elo to give when the player completes the goal.
          example: 8
        serverType:
          type: object
          allOf:
            - $ref: '#/components/schemas/ServerType'
          description: Type of server where the event starts
          example: MINAGE
        start:
          type: number
          description: UNIX Timestamp of the beginning of the event, in seconds.
          example: 1713465000
        end:
          type: number
          description: UNIX Timestamp of the end of the event, in seconds.
          example: 1713466800
        state:
          type: object
          allOf:
            - $ref: '#/components/schemas/OnYourMarkStatus'
          description: Current state of the event
          example: NOT_STARTED
    TrixiumLeaderboardPlayers:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of entries
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/TrixiumLeaderboardPlayer'
          description: |
            List of players in the Trixium leaderboard.
    TrixiumLeaderboardPlayer:
      type: object
      properties:
        position:
          type: integer
          description: |
            The player's position in the Trixium leaderboard
          example: 1
        username:
          type: string
          description: |
            The player's username
          example: FuzeIII
        uuid:
          type: string
          description: |
            The player's UUID
          example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
        value:
          type: number
          description: |
            The player's Trixium points
          example: 500000
    TrixiumLeaderboardFactions:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of entries
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/TrixiumLeaderboardFaction'
          description: |
            List of factions in the Trixium leaderboard.
    TrixiumLeaderboardFaction:
      type: object
      properties:
        position:
          type: integer
          description: |
            The faction's position in the Trixium leaderboard.
          example: 1
        uuid:
          type: string
          description: |
            The faction's UUID.
          example: xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        value:
          type: number
          description: |
            The faction's Trixium points.
          example: 500000
    Achievements:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of entries
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/Achievement'
          description: |
            List of achievements.
    Achievement:
      type: object
      properties:
        id:
          type: string
          description: |
            Internal achievement identifier.
          example: ariane.end
        category:
          type: string
          enum:
            - HOW_TO_START
            - JOBS
            - FACTION
            - ATTACK_DEFENSE
            - ECONOMY
            - OTHERS
          example: HOW_TO_START
        name:
          type: string
          description: Achievement display name.
          example: Bien dÃ©marrer
        description:
          type: string
          description: Achievement description.
          example: Finir le didacticiel
        amount:
          type: integer
          description: Amount needed to complete the achievement.
          example: 1
        icon:
          type: string
          description: Achievement icon as an item.
          example: "1:palamod:item.jumpchest:0#"
    PlayerAchievements:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of entries
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/PlayerAchievement'
          description: |
            List of player achievements.
    PlayerAchievement:
      type: object
      properties:
        id:
          type: string
          description: |
            Internal achievement identifier.
          example: ariane.end
        progress:
          type: integer
          description: Progress amount
          example: 1
        completed:
          type: boolean
          description: Boolean, if the player completed the achievement.
          example: true
    Events:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of entries
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/Event'
          description: |
            List of events.
    Event:
      type: object
      properties:
        name:
          type: string
          description: |
            Event name.
          example: KOTH
        description:
          type: string
          description: |
            Event description.
          example: "Un combat sans merci dans une arÃ¨ne qui mÃ¨ne droit Ã  la victoire !"
        urlWiki:
          type: string
          description: |
            URL to the event's wiki page.
          example: "https://wiki.paladium-pvp.fr/mecaniques-et-events/evenements/koth"
        urlImage:
          type: string
          description: |
            URL to the event's image.
          example: "https://pictures.paladium-pvp.fr/agenda/koth.png"
        colorBackground:
          type: string
          description: |
            Background color of the event.
          example: "#FFFFFF"
        color:
          type: string
          description: |
            Color of the event.
          example: "#4E8FFF"
    UpcomingEvents:
      type: object
      properties:
        totalCount:
          type: integer
          description: |
            Total number of entries
          example: 1
        data:
          type: array
          items:
            $ref: '#/components/schemas/UpcomingEvent'
          description: |
            List of upcoming events.
    UpcomingEvent:
      type: object
      properties:
        name:
          type: string
          description: |
            Event name.
          example: KOTH
        servers:
          type: array
          items:
            type: string
            example: event
          description: |
            List of servers where the event will take place.
        start:
          type: number
          description: |
            UNIX Timestamp of the beginning of the event, in milliseconds.
          example: 1715455800000
        end:
          type: number
          description: |
            UNIX Timestamp of the end of the event, in milliseconds.
          example: 1715459400000
  parameters:
    PaginationOffset:
      in: query
      name: offset
      description: |
        The number of items to skip before starting to collect the result set.
      required: false
      schema:
        type: integer
        minimum: 0
        default: 0
    PaginationLimit:
      in: query
      name: limit
      description: |
        The number of items to return.
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    PlayerUuid:
      in: path
      name: uuid
      required: true
      schema:
        title: Player UUID
        description: |
          The Minecraft user's player UUID
        example: 96e76f2a-d77d-4cb7-91a0-3eba67e74397
        type: string
    PlayerName:
      in: path
      name: username
      required: true
      schema:
        title: Player name
        description: |
          The Minecraft player name
        example: FuzeIII
        type: string
    FactionName:
      in: path
      name: name
      required: true
      schema:
        title: Faction Name
        description: |
          The name of the faction
        example: Wilderness
        type: string
    LeaderboardId:
      in: path
      name: id
      description: The ID of the leaderboard category
      required: true
      schema:
        type: string
        enum:
          - money
          - job.alchemist
          - job.hunter
          - job.miner
          - job.farmer
          - boss
          - egghunt
          - end
          - chorus
          - koth
    ItemName:
      in: path
      name: item
      description: The item name
      required: true
      schema:
        type: string
        example: bone
