> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# Usuários e ativos

Este guia é direcionado a **Agent Java SDK `v0.3.0`**, Java 8+ e ao contrato público marcado. Os exemplos são executados em um back-end de parceiro após a inicialização de `client` em [Início rápido](/pt-BR/sdk/agent-sdk/java/quick-start).

## Pré-requisitos de exemplo

Os trechos Java compartilham essas importações. Inicialize `client` usando o Quick Start e obtenha `platformUserId` da ligação salva. Os exemplos de IDs de usuário/pedido devem ser substituídos por seus próprios valores persistentes.

```java
import com.sixmm.agent.*;
import com.sixmm.agent.model.*;
import java.util.*;
```

## Regras de ID do usuário

`platformUserId` é o ID do usuário externo 6MM. Atualmente é um número de 10 dígitos
cadeia de caracteres, por exemplo:

```text
1188041528
```

Regras:

* Armazene-o como uma string, não como um número inteiro.
* Não gere, decodifique ou infira significado a partir dele.
* Use seu próprio ID de usuário do parceiro como `agentUserId`.
* Persista o relacionamento entre `agentUserId`, `platformUserId` e `agentOrderNo`.

## Vincular usuário

Bind cria ou busca o relacionamento entre um usuário parceiro e um 6MM
usuário da plataforma. Chame-o quando um usuário entrar pela primeira vez no fluxo de negociação ou antes do
primeira transferência para 6MM.

```java
import com.sixmm.agent.model.BindRequest;
import com.sixmm.agent.model.BindResponse;

BindResponse resp = client.bind(
        BindRequest.of("agent-user-001")
                .withUsername("alice")
                .withExt("{\"source\":\"web\"}"));

System.out.println(resp.platformUserId);
System.out.println(resp.bindStatus);
System.out.println(resp.isSimulatedUser);
```

Campos de solicitação:

| Campo         | Tipo   | Obrigatório | Descrição                                                                |
| ------------- | ------ | ----------- | ------------------------------------------------------------------------ |
| `agentUserId` | string | Sim         | ID de usuário exclusivo do parceiro                                      |
| `username`    | string | Não         | Nome de exibição do parceiro usado como apelido do usuário da plataforma |
| `ext`         | string | Não         | Campo de extensão. A string JSON é recomendada                           |

Campos de resposta:

| Campo             | Tipo    | Descrição                     |
| ----------------- | ------- | ----------------------------- |
| `platformUserId`  | string  | 6MM ID de usuário externo     |
| `bindStatus`      | string  | Geralmente `BOUND`            |
| `isSimulatedUser` | boolean | Se este é um usuário simulado |

## Consultar conta do parceiro

```java
import com.sixmm.agent.model.QueryAccountRequest;
import com.sixmm.agent.model.QueryAccountResponse;

QueryAccountResponse resp = client.queryAccount(QueryAccountRequest.of("USDT"));

System.out.println(resp.agentCode);
System.out.println(resp.agentStatus);
resp.assets.forEach(asset -> {
    System.out.println(asset.currency);
    System.out.println(asset.depositBalance);
});
```

Quando `currency` está ausente, o SDK usa `defaultCurrency`.

## Consultar ativos do usuário

```java
import com.sixmm.agent.model.QueryUserAssetsRequest;
import com.sixmm.agent.model.QueryUserAssetsResponse;

QueryUserAssetsResponse resp = client.queryUserAssets(
        QueryUserAssetsRequest.of("1188041528"));

System.out.println(resp.walletBalance);
System.out.println(resp.availableBalance);
System.out.println(resp.version);
```

Campos:

| Campo              | Tipo    | Descrição                     |
| ------------------ | ------- | ----------------------------- |
| `walletBalance`    | string  | Saldo da carteira             |
| `frozenMargin`     | string  | Margem congelada              |
| `usedMargin`       | string  | Margem usada                  |
| `availableBalance` | string  | Saldo disponível              |
| `isolatedMargin`   | string  | Margem isolada                |
| `version`          | int64   | Versão do ativo               |
| `isSimulatedUser`  | boolean | Se este é um usuário simulado |

### Distinguir as três carteiras

| carteira                                   | Fonte de equilíbrio                               | usar                                                                             |
| ------------------------------------------ | ------------------------------------------------- | -------------------------------------------------------------------------------- |
| Carteira de usuário do próprio comerciante | Sistema de contabilidade próprio do comerciante   | O saldo disponível do usuário no lado do comerciante                             |
| Financiamento da plataforma                | `queryUserAssets` de `funding`                    | Fundos de negociação de segundos e transferência mútua de financiamento/contrato |
| Contrato de plataforma                     | O campo de ativo de contrato de `queryUserAssets` | Margem de contrato perpétuo e saldo transferível                                 |

`queryAccount` Consulte a conta de margem da plataforma do comerciante, não a carteira do usuário do comerciante. Esta interface não possui parâmetros `environment` e não pode ser consultada como um ativo de usuário simulado.

Consulte as duas carteiras da plataforma de usuários simulados:

```java
QueryUserAssetsResponse assets = client.queryUserAssets(
        QueryUserAssetsRequest.of(platformUserId)
                .withFunding()
                .withEnvironment(ExecutionEnvironment.SIMULATED));
```

Interface: `POST /v1/agent/query-user-assets`. O financiamento é solicitado apenas quando `includeFunding=true`; a semântica de consulta do ativo do contrato original é usada por padrão.

| campos de resposta                                                                  | significado                                                                                                                           |
| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `walletBalance`, `availableBalance`, `frozenMargin`, `usedMargin`, `isolatedMargin` | Valores relacionados à carteira de contrato                                                                                           |
| `funding.assetCode`                                                                 | Atualmente USDT                                                                                                                       |
| `funding.availableAmount`, `heldAmount`, `totalAmount`                              | Financiamento disponível, ocupado e valor total                                                                                       |
| `funding.materialized`                                                              | Se a conta de financiamento foi materializada?                                                                                        |
| `environment`                                                                       | Este campo é repetido quando o ambiente é passado explicitamente; solicitações antigas que omitem o ambiente não retornam este campo. |
| `isSimulatedUser`                                                                   | Classificação de contas; não pode substituir a seleção do ambiente de negociação                                                      |

Os valores são tratados como strings ou `BigDecimal`, não `float`/`double`.

## Fonte e guias relacionados

* [Fonte oficial v0.3.0](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [Visão geral da consulta e paginação](/pt-BR/sdk/agent-sdk/java/perpetual-queries)
* [Carteira de financiamento](/pt-BR/sdk/agent-sdk/java/funding-wallet)
* [Guia de atualização](/pt-BR/sdk/agent-sdk/java/upgrade)