> For the complete documentation index, see [llms.txt](https://docs.odinbot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.odinbot.io/api-documentation/types.md).

# 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 %}
