# API Documentation

{% hint style="warning" %}
API Calls are limited to 100 requests per IP per minute.
{% endhint %}

#### `/db/data`

* **Method**: `GET`
* **URL**: `/db/data?u=username`
* **Description**: Fetch user data by username.
* **Query Parameters**:
  * `u`: The username to search for.
* **Response**:
  * Success: `{ success: true, result: [User Object] }`
  * Error: `{ success: false, error: "An error occurred", result: [] }`
  * User not found: `{ success: false, error: "User not found", result: [] }`

***

#### `/db/quests`

* **Method**: `GET`
* **URL**: `/db/quests?u=username`
* **Description**: Fetch quests for a given user.
* **Query Parameters**:
  * `u`: The username to search for.
* **Response**:
  * Success: `{ success: true, result: [Quest Array] }`
  * Error: `{ success: false, error: "An error occurred", result: [] }`
  * User not found: `{ success: false, error: "User not found", result: [] }`

***

#### `/db/packsLeft`

* **Method**: `GET`
* **URL**: `/db/packsLeft`
* **Description**: Fetch the number of packs left.
* **Response**:
  * Success: `{ packsLeft: [Number], betaPacks: [Number], error: false }`
  * Error: `{ packsLeft: "", betaPacks: "", error: true }`

***

#### `/db/leaderboard`

* **Method**: `GET`
* **URL**: `/db/leaderboard?u=username`
* **Description**: Fetch leaderboard data and user's share in it.
* **Query Parameters**:
  * `u`: The username to match against.
* **Response**:
  * Success: JSON object with leaderboard information.
  * Error: `{ error: true, message: "Please provide a user" }`

***

#### `/db/holdingrewards`

* **Method**: `GET`
* **URL**: `/db/holdingrewards`
* **Description**: Fetch data related to holding rewards.
* **Response**:
  * Success: `{ error: false, result: [Data] }`
  * Error: `{ error: true }`

***

#### `/db/circulation`

* **Method**: `GET`
* **URL**: `/db/circulation`
* **Description**: Fetch circulation data.
* **Response**:
  * Success: `{ error: false, result: [Data] }`
  * Error: `{ error: true }`

***

#### `/db/withdraw`

* **Method**: `GET`
* **URL**: `/db/withdraw`
* **Description**: Fetch the status of withdrawals.
* **Response**:
  * Success: `{ enabled: [Boolean], error: false }`
  * Error: `{ enabled: null, error: true }`

***

#### `/db/recipebook`

* **Method**: `GET`
* **URL**: `/db/recipebook?u=username`
* **Description**: Fetch recipe book for a given user.
* **Query Parameters**:
  * `u`: The username to search for.
* **Response**:
  * Success: `{ error: false, result: [Recipes] }`
  * Error: `{ error: true, message: [Error Message] }`

***

#### `/db/queue/tx`

* **Method**: `POST`
* **URL**: `/db/queue/tx`
* **Description**: Fetch transaction details based on transaction ID.
* **Body Parameters**:
  * `txid`: Transaction ID to search for.
* **Response**:
  * Success: `{ result: [Transaction Object] }`
  * Error: `{ result: null, error:true, message: [Error Message] }`

***

#### `/db/marketHistory`

* **Method**: `GET`
* **URL**: `/db/marketHistory?name=[name]`
* **Description**: Fetch market history for a given name.
* **Query Parameters**:
  * `name`: The name to search for.
* **Response**:
  * Success: `{ error: false, result: [Sales] }`
  * Error: `{ error: true, message: [Error Message] }`

***

#### `/db/cropAvg`

* **Method**: `GET`
* **URL**: `/db/cropAvg`
* **Description**: Fetch 30-day average crop price.
* **Response**:
  * Success: `{ error: false, result: { price: [Price] } }`
  * Error: `{ error: true, message: [Error Message] }`

***

#### `/db/userItems`

* **Method**: `POST`
* **URL**: `/db/userItems`
* **Description**: Fetch user items based on item types.
* **Body Parameters**:
  * `username`: Username to search for.
  * `types`: Array of item types to filter by.
* **Response**:
  * Success: `{ error: false, result: [Items] }`
  * Error: `{ error: true, message: [Error Message] }`

***

#### `/db/marketItems`

* **Method**: `POST`
* **URL**: `/db/marketItems`
* **Description**: Fetch market items based on item types.
* **Body Parameters**:
  * `types`: Array of item types to filter by.
  * `limit`: Maximum number of items to return.
  * `minID`: Minimum ID to start searching from.
* **Response**:
  * Success: `{ error: false, result: [Items] }`
  * Error: `{ error: true, message: [Error Message] }`

***

#### `/db/marketLogs`

* **Method**: `POST`
* **URL**: `/db/marketLogs`
* **Description**: Fetch market logs based on query parameters.
* **Body Parameters**:
  * `username`(optional): Username to filter by.
  * `limit`(optional)(Max:1000): Maximum number of logs to return.
  * `beforeTimestamp`(optional): Timestamp to filter logs created before it.
* **Response**:
  * Success: `{ error: false, result: [Logs] }`
  * Error: `{ error: true, message: [Error Message] }`

***

#### `/db/richlist`

* **Method**: `GET`
* **URL**: `/db/richlist?token=[token]`
* **Description**: Fetch the rich list based on the token type.
* **Query Parameters**:
  * `token`: The type of token to filter by. Allowed types are "crop", "alpha", "beta".
* **Response**:
  * Success: `{ error: false, result: [Rich List] }`
  * Error: `{ error: true, message: [Error Message] }`

***
