# 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] }`

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.dcrops.com/developers/api-documentation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
