dokumentasi
API panel pengguna

Profil dan keselamatan

Markdown

Kaedah, medan permintaan dan respons.

Panduan lengkap

Bahagian ini mengandungi 6 kaedah. Buka kaedah untuk melihat syarat akses, medan permintaan dan respons.

Kaedah dan laluanPeneranganAkses
PUT /api/v1/userPengubahan profilToken panel pengguna
GET /api/v1/user/passkeysSenarai passkeyToken panel pengguna
PUT /api/v1/user/passwordPertukaran kata laluanToken panel pengguna
GET /api/v1/user/profileProfil, baki dan pautan akaunToken panel pengguna
GET /api/v1/user/totp/statusStatus 2FA (TOTP)Token panel pengguna
GET /api/v1/user/totp/verification-methodKaedah pengesahan TOTPToken panel pengguna
PUT /api/v1/user — Pengubahan profil

Akses: Token panel pengguna

PUT/api/v1/user

Medan JSON / borang

MedanJenisWajibPengesahan / penerangan
usernamestringtidak; boleh bernilai null
avatar_urlstringtidak; boleh bernilai null
balance_notify_enabledbooleantidak; boleh bernilai null
balance_notify_thresholdnumbertidak; boleh bernilai null
Templat badan permintaan
{
  "username": "PLACEHOLDER_USERNAME (string)",
  "avatar_url": "PLACEHOLDER_AVATAR_URL (string)",
  "balance_notify_enabled": "PLACEHOLDER_BALANCE_NOTIFY_ENABLED (boolean)",
  "balance_notify_threshold": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD (number)"
}

PLACEHOLDER mewakili input anda dan jenisnya. Gantikan nilai dan kekalkan hanya medan pilihan yang diperlukan; penanda rentetan tidak boleh dihantar sebagai ganti nombor, boolean, objek atau tatasusunan.

Skema permintaan: UpdateProfileRequest

Respons

Respons JSON mengandungi code, message dan data. Kandungan data diterangkan dalam skema di bawah.

Skema data respons: User, UserProfileResponse. Medan dan jenisnya terdapat pada halaman “Skema data”.

Skema respons, nilai hanyalah contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "email": "PLACEHOLDER_EMAIL (string)",
    "username": "PLACEHOLDER_USERNAME (string)",
    "role": "PLACEHOLDER_ROLE (string)",
    "balance": "PLACEHOLDER_BALANCE (number)",
    "frozen_balance": "PLACEHOLDER_FROZEN_BALANCE (number)",
    "concurrency": "PLACEHOLDER_CONCURRENCY (integer)",
    "status": "PLACEHOLDER_STATUS (string)",
    "last_active_at": "PLACEHOLDER_LAST_ACTIVE_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "deleted_at": "PLACEHOLDER_DELETED_AT (string)",
    "balance_notify_enabled": "PLACEHOLDER_BALANCE_NOTIFY_ENABLED (boolean)",
    "balance_notify_threshold_type": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD_TYPE (string)",
    "balance_notify_threshold": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD (number)",
    "balance_notify_extra_emails": "PLACEHOLDER_BALANCE_NOTIFY_EXTRA_EMAILS (array)",
    "total_recharged": "PLACEHOLDER_TOTAL_RECHARGED (number)",
    "rpm_limit": "PLACEHOLDER_RPM_LIMIT (integer)",
    "api_keys": "PLACEHOLDER_API_KEYS (array)",
    "avatar_url": "PLACEHOLDER_AVATAR_URL (string)",
    "email_bound": "PLACEHOLDER_EMAIL_BOUND (boolean)"
  }
}

Nota khusus: Semua data peribadi dan objek dihadkan kepada subjek JWT.

Nota khusus: Operasi mengubah keadaan atau meneruskan pengesahan sekali guna; contoh ini menerangkan kontrak dan tidak dijalankan.

Nota khusus: Had perbelanjaan kunci (quota, quota_used) diterima dalam respons kunci, bukan dalam profil. frozen_balance ialah amaun yang dirizabkan dan tidak boleh dianggap sebagai baki tersedia.

GET /api/v1/user/passkeys — Senarai passkey

Akses: Token panel pengguna

GET/api/v1/user/passkeys
Baca sahaja; ID diambil daripada respons anda yang terdahulu
curl --fail-with-body "https://ailoot.ai/api/v1/user/passkeys" \
  -H "Authorization: Bearer $TOKEN"

Badan permintaan tidak diperlukan. Hantar parameter yang dinyatakan di atas dalam URL.

Respons

Respons JSON mengandungi code, message dan data. Kandungan data diterangkan dalam skema di bawah.

Skema data respons: PasskeyCredentialSummary. Medan dan jenisnya terdapat pada halaman “Skema data”.

Skema respons, nilai hanyalah contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "name": "PLACEHOLDER_NAME (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "backup": "PLACEHOLDER_BACKUP (boolean)"
  }
}

Nota khusus: Semua data peribadi dan objek dihadkan kepada subjek JWT.

Nota khusus: credential diperoleh daripada navigator.credentials; session_token daripada begin. Badan finish <=65536 bait; pendaftaran dan pemadaman memerlukan kata laluan.

PUT /api/v1/user/password — Pertukaran kata laluan

Akses: Token panel pengguna

PUT/api/v1/user/password

Medan JSON / borang

MedanJenisWajibPengesahan / penerangan
old_passwordstringyarequired
new_passwordstringyarequired,min=6
Templat badan permintaan
{
  "old_password": "PLACEHOLDER_OLD_PASSWORD (string)",
  "new_password": "PLACEHOLDER_NEW_PASSWORD (string)"
}

PLACEHOLDER mewakili input anda dan jenisnya. Gantikan nilai dan kekalkan hanya medan pilihan yang diperlukan; penanda rentetan tidak boleh dihantar sebagai ganti nombor, boolean, objek atau tatasusunan.

Skema permintaan: ChangePasswordRequest

Respons

Respons JSON mengandungi code, message dan data. Kandungan data diterangkan dalam skema di bawah.

Skema respons, nilai hanyalah contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "VALUE_FROM_RESPONSE"
  }
}

Nota khusus: Semua data peribadi dan objek dihadkan kepada subjek JWT.

Nota khusus: Operasi mengubah keadaan atau meneruskan pengesahan sekali guna; contoh ini menerangkan kontrak dan tidak dijalankan.

GET /api/v1/user/profile — Profil, baki dan pautan akaun

Akses: Token panel pengguna

GET/api/v1/user/profile
Baca sahaja; ID diambil daripada respons anda yang terdahulu
curl --fail-with-body "https://ailoot.ai/api/v1/user/profile" \
  -H "Authorization: Bearer $TOKEN"

Badan permintaan tidak diperlukan. Hantar parameter yang dinyatakan di atas dalam URL.

Respons

Respons JSON mengandungi code, message dan data. Kandungan data diterangkan dalam skema di bawah.

Skema data respons: User, UserProfileResponse. Medan dan jenisnya terdapat pada halaman “Skema data”.

Skema respons, nilai hanyalah contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "email": "PLACEHOLDER_EMAIL (string)",
    "username": "PLACEHOLDER_USERNAME (string)",
    "role": "PLACEHOLDER_ROLE (string)",
    "balance": "PLACEHOLDER_BALANCE (number)",
    "frozen_balance": "PLACEHOLDER_FROZEN_BALANCE (number)",
    "concurrency": "PLACEHOLDER_CONCURRENCY (integer)",
    "status": "PLACEHOLDER_STATUS (string)",
    "last_active_at": "PLACEHOLDER_LAST_ACTIVE_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "deleted_at": "PLACEHOLDER_DELETED_AT (string)",
    "balance_notify_enabled": "PLACEHOLDER_BALANCE_NOTIFY_ENABLED (boolean)",
    "balance_notify_threshold_type": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD_TYPE (string)",
    "balance_notify_threshold": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD (number)",
    "balance_notify_extra_emails": "PLACEHOLDER_BALANCE_NOTIFY_EXTRA_EMAILS (array)",
    "total_recharged": "PLACEHOLDER_TOTAL_RECHARGED (number)",
    "rpm_limit": "PLACEHOLDER_RPM_LIMIT (integer)",
    "api_keys": "PLACEHOLDER_API_KEYS (array)",
    "avatar_url": "PLACEHOLDER_AVATAR_URL (string)",
    "email_bound": "PLACEHOLDER_EMAIL_BOUND (boolean)"
  }
}

Nota khusus: Semua data peribadi dan objek dihadkan kepada subjek JWT.

Nota khusus: Had perbelanjaan kunci (quota, quota_used) diterima dalam respons kunci, bukan dalam profil. frozen_balance ialah amaun yang dirizabkan dan tidak boleh dianggap sebagai baki tersedia.

GET /api/v1/user/totp/status — Status 2FA (TOTP)

Akses: Token panel pengguna

GET/api/v1/user/totp/status
Baca sahaja; ID diambil daripada respons anda yang terdahulu
curl --fail-with-body "https://ailoot.ai/api/v1/user/totp/status" \
  -H "Authorization: Bearer $TOKEN"

Badan permintaan tidak diperlukan. Hantar parameter yang dinyatakan di atas dalam URL.

Respons

Respons JSON mengandungi code, message dan data. Kandungan data diterangkan dalam skema di bawah.

Skema data respons: TotpStatusResponse. Medan dan jenisnya terdapat pada halaman “Skema data”.

Skema respons, nilai hanyalah contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "enabled": "PLACEHOLDER_ENABLED (boolean)",
    "enabled_at": "PLACEHOLDER_ENABLED_AT (integer)",
    "feature_enabled": "PLACEHOLDER_FEATURE_ENABLED (boolean)"
  }
}

Nota khusus: Semua data peribadi dan objek dihadkan kepada subjek JWT.

Nota khusus: secret dan setup_token adalah rahsia; pengesahan bergantung pada tetapan TOTP dan pengguna.

GET /api/v1/user/totp/verification-method — Kaedah pengesahan TOTP

Akses: Token panel pengguna

GET/api/v1/user/totp/verification-method
Baca sahaja; ID diambil daripada respons anda yang terdahulu
curl --fail-with-body "https://ailoot.ai/api/v1/user/totp/verification-method" \
  -H "Authorization: Bearer $TOKEN"

Badan permintaan tidak diperlukan. Hantar parameter yang dinyatakan di atas dalam URL.

Respons

Respons JSON mengandungi code, message dan data. Kandungan data diterangkan dalam skema di bawah.

Skema respons, nilai hanyalah contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "method": "email"
  }
}

Nota khusus: Semua data peribadi dan objek dihadkan kepada subjek JWT.

Nota khusus: secret dan setup_token adalah rahsia; pengesahan bergantung pada tetapan TOTP dan pengguna.

TotpVerificationMethod

{
  "type": "object",
  "required": [
    "method"
  ],
  "properties": {
    "method": {
      "type": "string",
      "enum": [
        "email",
        "password"
      ]
    }
  }
}
Masih ada soalan? Hantar Request ID dan penerangannya — kami akan membantu menyiasatnya.Hubungi sokongan