# Types

## Controls

The [`Controls`](/api-documentation/types/controls.md) type defines your global copy-trading settings. These act as default parameters applied to all mirrored wallets, unless specifically overridden at the individual mirror level.

{% content-ref url="/pages/EGU3D9Zyi0mJ6ENnkwil" %}
[Controls](/api-documentation/types/controls.md)
{% endcontent-ref %}

## Mirror

The [`Mirror`](/api-documentation/types/mirror.md) type defines a specific wallet you are copy-trading. It includes all fields from the [`Controls`](/api-documentation/types/controls.md) object with the following modifications:

* [`address`](/api-documentation/types/mirror.md#address) (***required, new field***): the public Solana address of the wallet being mirrored
* [`autoSellProfileKey`](/api-documentation/types/mirror.md#autosellprofilekey) (optional, modified field): key of an existing auto-sell profile. May also be the magic value `"override_to_empty"` which forces this mirror to have **no** auto-sell profile even if one is set in Controls

{% content-ref url="/pages/ZmUOtDVGglUK7EJcGfUO" %}
[Mirror](/api-documentation/types/mirror.md)
{% endcontent-ref %}

## UpdateMirror

[`UpdateMirror`](/api-documentation/types/updatemirror.md) is the type used in the request body of [`PATCH /v1/mirror/{address}`](/api-documentation/api-methods/patch-v1-mirror-address.md). It allows you to update or clear specific settings for an existing mirror without modifying its address.

* The `{address}` path parameter identifies which mirror to update, so the `address` field is excluded from this object.
* All other fields from the [`Mirror`](/api-documentation/types/mirror.md) object are optional. Provide only the keys you wish to modify.

{% content-ref url="/pages/s8qihcLmogN4iu7eDU9A" %}
[UpdateMirror](/api-documentation/types/updatemirror.md)
{% endcontent-ref %}

## AutoSellProfile

The [`AutoSellProfile`](/api-documentation/types/autosellprofile.md) type stores a reusable set of take-profit and stop-loss rules. Profiles are created or edited in the OdinBot [interface](/setup-and-initialization/4.-odinbots-controls/4.3-auto-sell-profiles.md), then referenced in [`Controls`](/api-documentation/types/controls.md) or [`Mirror`](/api-documentation/types/mirror.md) via their `id`. Each profile contains:

* `id` – unique key used in `autoSellProfileKey`
* `createdIso` - ISO-8601 time the profile was made
* `profileName` - label shown in the GUI
* `takeProfitRules` - array of `{ percentOfPosition, percentGain }` steps
* `stopLossRules` - array of `{ percentOfPosition, percentLoss }` steps

The API provides **read-only** access through [`GET /v1/auto-sell-profiles`](/api-documentation/api-methods/get-v1-auto-sell-profiles.md) (list) and [`GET /v1/auto-sell-profile/{id}`](/api-documentation/api-methods/get-v1-auto-sell-profile-id.md) (single profile); no create, update, or delete calls are exposed.

{% content-ref url="/pages/94hz1Whuxe1g5MxKr9Q2" %}
[AutoSellProfile](/api-documentation/types/autosellprofile.md)
{% endcontent-ref %}


---

# 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://docs.odinbot.io/api-documentation/types.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.
