> 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.

# Pengguna & Aset

Panduan ini menargetkan **Agent Java SDK `v0.3.0`**, Java 8+, dan kontrak publik yang diberi tag. Contoh dijalankan di backend mitra setelah menginisialisasi `client` di [Mulai Cepat](/id/sdk/agent-sdk/java/quick-start).

## Contoh prasyarat

Cuplikan Java membagikan impor ini. Inisialisasi `client` menggunakan Quick Start dan dapatkan `platformUserId` dari pengikatan yang disimpan. Contoh ID pengguna/pesanan harus diganti dengan nilai Anda yang tetap.

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

## Aturan ID Pengguna

`platformUserId` adalah 6MM ID pengguna eksternal. Saat ini berupa angka 10 digit
rangkaian, misalnya:

```text
1188041528
```

Aturan:

* Simpan sebagai string, bukan sebagai bilangan bulat.
* Jangan membuat, memecahkan kode, atau menyimpulkan makna darinya.
* Gunakan ID pengguna sisi mitra Anda sebagai `agentUserId`.
* Pertahankan hubungan antara `agentUserId`, `platformUserId`, dan `agentOrderNo`.

## Ikat Pengguna

Bind membuat atau mengambil hubungan antara pengguna mitra dan 6MM
pengguna platform. Sebut saja saat pengguna pertama kali memasuki alur perdagangan atau sebelum
transfer pertama ke 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);
```

Bidang permintaan:

| Bidang        | Jenis  | Diperlukan | Keterangan                                                                  |
| ------------- | ------ | ---------- | --------------------------------------------------------------------------- |
| `agentUserId` | string | Ya         | ID pengguna sisi mitra yang unik                                            |
| `username`    | string | TIDAK      | Nama tampilan sisi mitra digunakan sebagai nama panggilan pengguna platform |
| `ext`         | string | TIDAK      | Bidang ekstensi. String JSON direkomendasikan                               |

Bidang respons:

| Bidang            | Jenis   | Keterangan                   |
| ----------------- | ------- | ---------------------------- |
| `platformUserId`  | string  | 6MM ID pengguna eksternal    |
| `bindStatus`      | string  | Biasanya `BOUND`             |
| `isSimulatedUser` | boolean | Apakah ini pengguna simulasi |

## Akun Mitra Kueri

```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);
});
```

Ketika `currency` tidak ada, SDK menggunakan `defaultCurrency`.

## Kueri Aset Pengguna

```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);
```

Bidang:

| Bidang             | Jenis   | Keterangan                   |
| ------------------ | ------- | ---------------------------- |
| `walletBalance`    | string  | Saldo dompet                 |
| `frozenMargin`     | string  | Margin beku                  |
| `usedMargin`       | string  | Margin yang digunakan        |
| `availableBalance` | string  | Saldo tersedia               |
| `isolatedMargin`   | string  | Margin terisolasi            |
| `version`          | int64   | Versi aset                   |
| `isSimulatedUser`  | boolean | Apakah ini pengguna simulasi |

### Bedakan ketiga dompet tersebut

| dompet                           | Sumber keseimbangan                   | menggunakan                                                        |
| -------------------------------- | ------------------------------------- | ------------------------------------------------------------------ |
| Dompet pengguna Merchant sendiri | Sistem akuntansi Merchant sendiri     | Saldo yang tersedia pengguna di sisi pedagang                      |
| Pendanaan Platform               | `queryUserAssets` dari `funding`      | Dana perdagangan detik dan transfer timbal balik Pendanaan/Kontrak |
| Kontrak Platform                 | Bidang aset kontrak `queryUserAssets` | Margin kontrak perpetual dan saldo yang dapat ditransfer           |

`queryAccount` Kueri akun margin platform pedagang, bukan dompet pengguna pedagang. Antarmuka ini tidak memiliki parameter `environment` dan tidak dapat ditanyakan sebagai aset pengguna yang disimulasikan.

Kueri dua dompet platform pengguna yang disimulasikan:

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

Antarmuka: `POST /v1/agent/query-user-assets`. Pendanaan diminta hanya ketika `includeFunding=true`; semantik kueri aset kontrak asli digunakan secara default.

| bidang respons                                                                      | arti                                                                                                                                               |
| ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `walletBalance`, `availableBalance`, `frozenMargin`, `usedMargin`, `isolatedMargin` | Jumlah terkait dompet kontrak                                                                                                                      |
| `funding.assetCode`                                                                 | Saat ini USDT                                                                                                                                      |
| `funding.availableAmount`, `heldAmount`, `totalAmount`                              | Pendanaan tersedia, ditempati dan jumlah total                                                                                                     |
| `funding.materialized`                                                              | Apakah akun Pendanaan telah terwujud?                                                                                                              |
| `environment`                                                                       | Bidang ini digaungkan ketika lingkungan diteruskan secara eksplisit; permintaan lama yang menghilangkan lingkungan tidak mengembalikan bidang ini. |
| `isSimulatedUser`                                                                   | Klasifikasi akun; tidak dapat menggantikan pemilihan lingkungan perdagangan                                                                        |

Jumlah ditangani sebagai string atau `BigDecimal`, bukan `float`/`double`.

## Sumber dan panduan terkait

* [Sumber resmi v0.3.0](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [Ikhtisar kueri dan penomoran halaman](/id/sdk/agent-sdk/java/perpetual-queries)
* [Dompet pendanaan](/id/sdk/agent-sdk/java/funding-wallet)
* [Panduan peningkatan](/id/sdk/agent-sdk/java/upgrade)