---
title: "Update a user's fields"
method: PUT
path: "/sdk/{environmentId}/users"
tags: ["SDK"]
---

# Update a user's fields

`PUT /sdk/{environmentId}/users`

## Path parameters

- `environmentId` string, required

## Request body

- UserFields
  - `email` string
  - `alias` string
  - `firstName` string
  - `lastName` string
  - `jobTitle` string
  - `phoneNumber` string
  - `tShirtSize` string
  - `team` string
  - `policiesConsent` boolean
  - `country` string, nullable — Standard ISO 3166-1 alpha-2 two-letter country code
  - `username` string, nullable — Alphanumeric with slugs and underscores username
  - `captchaToken` string — When provided, used to verify that a captcha is valid and get the success/failure result from the captcha provider server-side.
  - `metadata` object
  - `mfaBackupCodeAcknowledgement` 'pending' | 'complete', nullable
  - `btcWallet` string, nullable — BTC wallet address
  - `kdaWallet` string, nullable — KDA wallet address
  - `ltcWallet` string, nullable — LTC wallet address
  - `ckbWallet` string, nullable — CKB wallet address
  - `kasWallet` string, nullable — KAS wallet address
  - `dogeWallet` string, nullable — DOGE wallet address
  - `emailNotification` boolean
  - `discordNotification` boolean
  - `newsletterNotification` boolean

## Response `200`

successful operation - user fields updated

- UpdateSelfResponse
  - `mfaToken` string
  - `jwt` string — Encoded JWT token. This will only be returned when cookie-based authentication is disabled in favor of standard Auth header based authentication.
  - `user` SdkUser, required
    - `id` string, required
    - `projectEnvironmentId` string, required
    - `verifiedCredentials` JwtVerifiedCredential[], required
      - `address` string — Valid blockchain wallet address, must be an alphanumeric string without any special characters
      - `chain` string
      - `refId` string
      - `signerRefId` string
      - `email` string, email
      - `id` string, required
      - `name_service` NameServiceData
        - `avatar` string
        - `name` string
      - `public_identifier` string — This is used to publicly identify a verified credential in a human-friendly way. For example, this will be the email address if credential format=email.
      - `wallet_name` string
      - `wallet_provider` 'browserExtension' | 'custodialService' | 'walletConnect' | 'qrCode' | 'deepLink' | 'embeddedWallet' | 'smartContractWallet'
      - `wallet_properties` union
        - TurnkeyWalletProperties
          - `turnkeySubOrganizationId` string
          - `turnkeyPrivateKeyId` string
          - `turnkeyHDWalletId` string
          - `isAuthenticatorAttached` boolean — Whether or not the wallet has an authenticator (passkey, api key, etc) attached to it.
          - `turnkeyUserId` string
          - `isSessionKeyCompatible` boolean
          - `version` 'V1' | 'V2' | 'V3'
          - `ecdsaProviderType` 'zerodev_signer_to_ecdsa' | 'zerodev_multi_chain'
          - `entryPointVersion` 'v6' | 'v7'
          - `kernelVersion` 'v2_4' | 'v3_0' | 'v3_1' | 'v3_2' | 'v3_3'
        - HardwareWalletProperties
          - `hardwareWallet` 'ledger'
        - CoinbaseMpcWalletProperties
          - `claimed` boolean — Dynamic pregenerated this wallet and stored the passcode
          - `source` 'dynamic' | 'user'
        - SmartWalletProperties
          - `entryPointVersion` 'v6' | 'v7'
          - `kernelVersion` 'v2_4' | 'v3_0' | 'v3_1' | 'v3_2' | 'v3_3'
          - `ecdsaProviderType` 'zerodev_signer_to_ecdsa' | 'zerodev_multi_chain'
        - WaasWalletProperties
          - `keyShares` WalletKeyShareInfo[]
            - `id` string, required
            - `backupLocation` string, required
            - `passwordEncrypted` boolean, required
            - `externalKeyShareId` string
          - `thresholdSignatureScheme` 'TWO_OF_TWO' | 'TWO_OF_THREE' | 'THREE_OF_FIVE'
          - `derivationPath` string — The derivation path for the wallet
          - `settings` WaasWalletSettings
            - `hasDeniedDelegatedAccess` boolean
            - `shouldRefreshOnNextSignOn` boolean
            - `reshareOnNextSignOn` 'TWO_OF_TWO' | 'TWO_OF_THREE' | 'THREE_OF_FIVE'
            - `revokeOnNextSignOn` boolean
          - `version` 'V1' | 'V2' | 'V3'
      - `format` 'blockchain' | 'email' | 'oauth' | 'passkey' | 'phoneNumber' | 'externalUser', required
      - `oauth_provider` 'emailOnly' | 'magicLink' | 'apple' | 'bitbucket' | 'coinbasesocial' | 'discord' | 'epicgames' | 'facebook' | 'farcaster' | 'github' | 'gitlab' | 'google' | 'instagram' | 'linkedin' | 'microsoft' | 'twitch' | 'twitter' | 'blocto' | 'banxa' | 'coinbaseOnramp' | 'cryptoDotCom' | 'dynamic' | 'alchemy' | 'zerodev' | 'telegram' | 'turnkey' | 'coinbaseWaas' | 'sms' | 'spotify' | 'tiktok' | 'line' | 'steam' | 'shopify' | 'zksync' | 'kraken' | 'blockaid' | 'passkey' | 'okta' | 'sendgrid' | 'resend' — The 'turnkey' value is deprecated and will be removed in a future version.
      - `oauth_username` string
      - `oauth_display_name` string, nullable
      - `oauth_account_id` string, nullable
      - `phoneNumber` string — This field contains the phone number in the country. This could also contain the area code within a country.
      - `phoneCountryCode` string — This field contains the phone international country code. See https://countrycode.org/
      - `isoCountryCode` string — ISO-3166 two-character country code. See https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
      - `oauth_account_photos` string[]
      - `oauth_emails` string[]
      - `oauth_metadata` object — This object contains JSON metadata for a social-based verified credential. It may contain data about the user that does not fit into the other structured fields, and could include arbitrary fields about the user from the oauth provider's API.
      - `previous_users` Uuid[] — This will only be provided in the responses for GET /users/{userId}.Previous user IDs that owned this verified credential and was tranfered to the current user ID.
      - `embedded_wallet_id` string, nullable
      - `wallet_additional_addresses` WalletAdditionalAddress[]
        - `address` string, required — An address associated with a wallet.
        - `publicKey` string — The public key associated with the address.
        - `type` 'ordinals' | 'payment' | 'cosmos' | 'evm' | 'ton', required
      - `lastSelectedAt` string, date-time — This timestamp indicates the last time this verified wallet was either connected to the user account or selected to become the primary wallet on the account.
      - `signInEnabled` boolean, required — This indicates if the user can sign in with this credential
      - `verifiedAt` string, date-time — This timestamp indicates the last time this verified credential was verified.
    - `lastVerifiedCredentialId` string
    - `sessionId` string
    - `alias` string, nullable
    - `country` string, nullable — Standard ISO 3166-1 alpha-2 two-letter country code
    - `email` string, email, nullable
    - `firstName` string, nullable
    - `jobTitle` string, nullable
    - `lastName` string, nullable
    - `phoneNumber` string, nullable
    - `policiesConsent` boolean, nullable
    - `tShirtSize` string, nullable
    - `team` string, nullable
    - `username` string, nullable
    - `firstVisit` string, date-time
    - `lastVisit` string, date-time
    - `newUser` boolean
    - `metadata` object
    - `mfaBackupCodeAcknowledgement` 'pending' | 'complete', nullable
    - `btcWallet` string, nullable
    - `kdaWallet` string, nullable
    - `ltcWallet` string, nullable
    - `ckbWallet` string, nullable
    - `kasWallet` string, nullable
    - `dogeWallet` string, nullable
    - `emailNotification` boolean, nullable
    - `discordNotification` boolean, nullable
    - `newsletterNotification` boolean, nullable
    - `lists` string[] — Access lists evaluated by Dynamic when considering access for the user.
    - `scope` string — A whitespace-separate list of permissions associated with the JWT token issued. This conforms to the JWT standard for scope claims: https://datatracker.ietf.org/doc/html/rfc8693#section-4.2
    - `missingFields` ProjectSettingsKyc[]
      - `name` string, required
      - `required` boolean, required
      - `enabled` boolean, required
      - `unique` boolean, required
      - `verify` boolean, required
      - `type` 'standard' | 'custom'
      - `validationRules` CustomFieldValidationRules — Optional validation rules for the custom field
        - `unique` boolean — If this field must be unique for every user in the environment
        - `regex` string — The regex pattern that the text field must match
        - `validOptions` CustomFieldValidValue[] — The dropdown options for the select field
          - `label` string, required
          - `key` string
        - `checkboxText` string — The text that will be displayed for the checkbox field
      - `validationType` 'text' | 'checkbox' | 'select'
      - `label` string
      - `position` number
  - `minifiedJwt` string — Encoded JWT token. This will only be returned when cookie-based authentication is disabled in favor of standard Auth header based authentication.
  - `expiresAt` number, required — Format is a unix-based timestamp. When set, this will be the expiration timestamp on the JWT sent using either the `jwt` field or a response httpOnly cookie set by the server.
  - `nextView` 'done' | 'verify-email' | 'verified-and-transferred' | 'verify-sms', required
  - `emailVerification` EmailVerificationCreateResponse
    - `verificationUUID` string, required
    - `email` string, email, required
  - `smsVerification` SmsVerificationCreateResponse
    - `verificationUUID` string, required
    - `phoneNumber` string, required — This field contains the phone number in the country. This could also contain the area code within a country.
    - `phoneCountryCode` string, required — This field contains the phone international country code. See https://countrycode.org/
    - `isoCountryCode` string, required — ISO-3166 two-character country code. See https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `422` — Unprocessable Entity
- `500` — Internal Server Error

---

[API](https://skmtc.net/dynamic/apis/dashboard-api.md) · [All operations](https://skmtc.net/dynamic/apis/dashboard-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/dynamic/dashboard-api/versions/aac826315d90/schema)
