Files
zeekay 1df3ddf6bd Regenerate against the document the deployment answers for
The projection these were generated from predated the compute migration, so
they described /v1/visor — which the API serves at zero paths now.

No /v1/visor path survives here.
2026-09-05 18:55:38 -07:00

776 lines
38 KiB
Swift

//
// IamUser.swift
//
// Generated by openapi-generator
// https://openapi-generator.tech
//
import Foundation
public struct IamUser: Sendable, Codable, ParameterConvertible, Hashable {
/** API credentials. AccessSecret / AccessSecretHash / the OAuth tokens are bearer material, so Mask blanks them and the handler's redact() strips them before responding. They carry real json tags because a field orm never saves is a field that silently vanishes. A presented secret is resolved through Key.AccessSecretDigest and nowhere else, so no credential is ISSUED into these columns: they hold what older rows left behind, and every writer that touches them clears them. */
public var accessKey: String?
public var accessSecret: String?
public var accessSecretHash: String?
public var accessToken: String?
public var address: [String]?
public var addresses: [IamAddress]?
public var adfs: String?
public var affiliation: String?
public var alipay: String?
public var amazon: String?
public var apple: String?
public var applicationScopes: [IamConsentRecord]?
public var auth0: String?
public var avatar: String?
public var avatarType: String?
public var azuread: String?
public var azureadb2c: String?
public var baidu: String?
/** Balance mirrors v1 for lossless migration but is authoritative in Commerce (billing.hanzo.ai), not here — do not write it from IAM. */
public var balance: Double?
public var balanceCredit: Double?
public var balanceCurrency: String?
public var battlenet: String?
public var bilibili: String?
public var bio: String?
public var birthday: String?
public var bitbucket: String?
public var box: String?
public var cart: [IamCartItem]?
public var cloudfoundry: String?
public var countryCode: String?
public var createdAt: Date?
/** Sign-in provenance. */
public var createdIp: String?
public var createdTime: String?
public var currency: String?
public var custom: String?
public var custom10: String?
public var custom2: String?
public var custom3: String?
public var custom4: String?
public var custom5: String?
public var custom6: String?
public var custom7: String?
public var custom8: String?
public var custom9: String?
public var dailymotion: String?
public var deezer: String?
public var deleted: Bool?
public var deletedTime: String?
public var digitalocean: String?
public var dingtalk: String?
public var discord: String?
/** Profile. */
public var displayName: String?
public var douyin: String?
public var dropbox: String?
public var education: String?
public var email: String?
public var emailVerified: Bool?
public var eveonline: String?
public var externalId: String?
public var faceIds: [IamFaceId]?
public var facebook: String?
public var firstName: String?
public var fitbit: String?
public var gender: String?
public var gitea: String?
public var gitee: String?
/** Linked federated-identity subjects, one column per connector (v1 parity). */
public var github: String?
public var gitlab: String?
public var google: String?
public var hash: String?
public var heroku: String?
public var homepage: String?
public var iam: String?
/** Id is the user's STABLE OPAQUE identifier — the value the OIDC `sub` claim carries. It is the v1 the legacy surface per-row UUID (e.g. \"e7d7fda0-4c53-4508-9d35-7ec892b7e5d7\"), migrated verbatim so a user's `sub` is byte-identical across the cutover: every live session, external reference, and the downstream money-path principal keyed on `sub` survive unchanged. A user minted natively in v2 is assigned a fresh UUID here on create, so the `sub` is ALWAYS a stable opaque id going forward — never the (Owner, Name) pair, which is mutable (a rename would otherwise silently reissue identity). It is distinct from the embedded orm.Model STORAGE KEY — the value the datastore locks and looks a row up by — which is NOT (Owner, Name) for every row: a MIGRATED legacy row is stamped \"owner/name\" (SetId in the migrator), but a v2-native users.Create'd row is NOT — Create allocates rather than pinning a key, so its storage key is a store-assigned surrogate id (a decimal string like \"17847909129933610000001\"). (Owner, Name) is therefore the natural/QUERY key (unique, indexed), not necessarily the storage key: resolve a row for a locked write by its REAL key (store.GetUserByName(...).Key().Encode(), which stamps both shapes — see internal/oidc updateUser), never by assuming \"owner/name\". This Id is a first-class, indexed DOMAIN field; its json tag \"id\" dominates the promoted orm.Model `Id_` (also \"id\") by shallower depth, so the persisted record's \"id\" is this UUID — exactly the v1 shape. A row that carries no Id (a not-yet-assigned pre-cutover user) falls back to the (Owner, Name) subject at mint; every other path resolves `sub`→user by Id. */
public var id: String?
public var idCard: String?
public var idCardType: String?
public var influxcloud: String?
public var infoflow: String?
public var instagram: String?
public var intercom: String?
public var invitation: String?
public var invitationCode: String?
public var ipWhitelist: String?
public var isAdmin: Bool?
/** State flags. */
public var isDefaultAvatar: Bool?
public var isDeleted: Bool?
public var isForbidden: Bool?
public var isOnline: Bool?
public var isVerified: Bool?
public var kakao: String?
public var karma: Int64?
public var kwai: String?
public var language: String?
public var lark: String?
public var lastChangePasswordTime: String?
public var lastName: String?
public var lastSigninIp: String?
public var lastSigninTime: String?
public var lastSigninWrongTime: String?
public var lastfm: String?
public var ldap: String?
public var line: String?
public var linkedin: String?
public var location: String?
public var mailru: String?
public var managedAccounts: [IamManagedAccount]?
public var meetup: String?
public var mfaAccounts: [IamMfaAccount]?
public var mfaEmailEnabled: Bool?
public var mfaItems: [IamMfaItem]?
public var mfaPhoneEnabled: Bool?
public var mfaPushEnabled: Bool?
public var mfaPushProvider: String?
public var mfaPushReceiver: String?
public var mfaRadiusEnabled: Bool?
public var mfaRadiusProvider: String?
public var mfaRadiusUsername: String?
public var mfaRememberDeadline: String?
/** MfaRememberDigest is the digest of the token held by the ONE browser the deadline above applies to. Without it the deadline is account-wide and \"don't ask again on this browser\" switches the second factor off everywhere. It is a digest, never the token, so a database dump yields nothing presentable — and it carries a REAL json tag because orm persists via json.Marshal, so `json:\"-\"` would never be stored (the trap PasswordHash documents above); Mask() strips it from every response instead. */
public var mfaRememberDigest: String?
public var microsoftonline: String?
public var multiFactorAuths: [IamMfaProps]?
public var name: String?
public var naver: String?
public var needUpdatePassword: Bool?
public var nextcloud: String?
public var okta: String?
public var onedrive: String?
public var originalRefreshToken: String?
public var originalToken: String?
public var oura: String?
/** Identity / tenancy. (Owner, Name) is the natural key. */
public var owner: String?
/** Credential material. PasswordHash is a one-way bcrypt digest and is verify-only. It MUST be persisted (orm serializes the entity to its JSON data column, so a json:\"-\" field would never be stored — that silently broke login), so it carries a real json tag; the users API redact() strips it (and every other secret) from every response. PasswordType and PasswordSalt describe the digest scheme so rows hashed under the legacy argon2id scheme can still be verified and lazily re-hashed to bcrypt. */
public var passwordHash: String?
public var passwordSalt: String?
public var passwordType: String?
public var patreon: String?
public var paypal: String?
public var permanentAvatar: String?
public var phone: String?
public var preHash: String?
public var preferredMfaType: String?
public var properties: [String: String]?
public var qq: String?
public var ranking: Int64?
public var realName: String?
public var recoveryCodes: [String]?
public var region: String?
public var registerSource: String?
public var registerType: String?
public var salesforce: String?
public var score: Int64?
public var shopify: String?
public var signinWrongTimes: Int64?
public var signupApplication: String?
public var slack: String?
public var soundcloud: String?
public var spotify: String?
public var steam: String?
public var strava: String?
public var stripe: String?
public var tag: String?
public var telegram: String?
public var tiktok: String?
public var title: String?
public var totpSecret: String?
public var tumblr: String?
public var twitch: String?
public var twitter: String?
public var type: String?
public var typetalk: String?
public var uber: String?
public var updatedAt: Date?
public var updatedTime: String?
public var verificationCode: String?
public var vk: String?
/** Multi-factor authentication. TotpSecret and RecoveryCodes are secret verify-only material — the handler strips them from every response. WebauthnCredentials is carried as raw JSON here for lossless migration; the typed passkey model is the sibling WebauthnCredential entity. */
public var webauthnCredentials: [JSONValue]?
public var wechat: String?
public var wecom: String?
public var weibo: String?
public var wepay: String?
public var xero: String?
public var yahoo: String?
public var yammer: String?
public var yandex: String?
public var zoom: String?
public init(accessKey: String? = nil, accessSecret: String? = nil, accessSecretHash: String? = nil, accessToken: String? = nil, address: [String]? = nil, addresses: [IamAddress]? = nil, adfs: String? = nil, affiliation: String? = nil, alipay: String? = nil, amazon: String? = nil, apple: String? = nil, applicationScopes: [IamConsentRecord]? = nil, auth0: String? = nil, avatar: String? = nil, avatarType: String? = nil, azuread: String? = nil, azureadb2c: String? = nil, baidu: String? = nil, balance: Double? = nil, balanceCredit: Double? = nil, balanceCurrency: String? = nil, battlenet: String? = nil, bilibili: String? = nil, bio: String? = nil, birthday: String? = nil, bitbucket: String? = nil, box: String? = nil, cart: [IamCartItem]? = nil, cloudfoundry: String? = nil, countryCode: String? = nil, createdAt: Date? = nil, createdIp: String? = nil, createdTime: String? = nil, currency: String? = nil, custom: String? = nil, custom10: String? = nil, custom2: String? = nil, custom3: String? = nil, custom4: String? = nil, custom5: String? = nil, custom6: String? = nil, custom7: String? = nil, custom8: String? = nil, custom9: String? = nil, dailymotion: String? = nil, deezer: String? = nil, deleted: Bool? = nil, deletedTime: String? = nil, digitalocean: String? = nil, dingtalk: String? = nil, discord: String? = nil, displayName: String? = nil, douyin: String? = nil, dropbox: String? = nil, education: String? = nil, email: String? = nil, emailVerified: Bool? = nil, eveonline: String? = nil, externalId: String? = nil, faceIds: [IamFaceId]? = nil, facebook: String? = nil, firstName: String? = nil, fitbit: String? = nil, gender: String? = nil, gitea: String? = nil, gitee: String? = nil, github: String? = nil, gitlab: String? = nil, google: String? = nil, hash: String? = nil, heroku: String? = nil, homepage: String? = nil, iam: String? = nil, id: String? = nil, idCard: String? = nil, idCardType: String? = nil, influxcloud: String? = nil, infoflow: String? = nil, instagram: String? = nil, intercom: String? = nil, invitation: String? = nil, invitationCode: String? = nil, ipWhitelist: String? = nil, isAdmin: Bool? = nil, isDefaultAvatar: Bool? = nil, isDeleted: Bool? = nil, isForbidden: Bool? = nil, isOnline: Bool? = nil, isVerified: Bool? = nil, kakao: String? = nil, karma: Int64? = nil, kwai: String? = nil, language: String? = nil, lark: String? = nil, lastChangePasswordTime: String? = nil, lastName: String? = nil, lastSigninIp: String? = nil, lastSigninTime: String? = nil, lastSigninWrongTime: String? = nil, lastfm: String? = nil, ldap: String? = nil, line: String? = nil, linkedin: String? = nil, location: String? = nil, mailru: String? = nil, managedAccounts: [IamManagedAccount]? = nil, meetup: String? = nil, mfaAccounts: [IamMfaAccount]? = nil, mfaEmailEnabled: Bool? = nil, mfaItems: [IamMfaItem]? = nil, mfaPhoneEnabled: Bool? = nil, mfaPushEnabled: Bool? = nil, mfaPushProvider: String? = nil, mfaPushReceiver: String? = nil, mfaRadiusEnabled: Bool? = nil, mfaRadiusProvider: String? = nil, mfaRadiusUsername: String? = nil, mfaRememberDeadline: String? = nil, mfaRememberDigest: String? = nil, microsoftonline: String? = nil, multiFactorAuths: [IamMfaProps]? = nil, name: String? = nil, naver: String? = nil, needUpdatePassword: Bool? = nil, nextcloud: String? = nil, okta: String? = nil, onedrive: String? = nil, originalRefreshToken: String? = nil, originalToken: String? = nil, oura: String? = nil, owner: String? = nil, passwordHash: String? = nil, passwordSalt: String? = nil, passwordType: String? = nil, patreon: String? = nil, paypal: String? = nil, permanentAvatar: String? = nil, phone: String? = nil, preHash: String? = nil, preferredMfaType: String? = nil, properties: [String: String]? = nil, qq: String? = nil, ranking: Int64? = nil, realName: String? = nil, recoveryCodes: [String]? = nil, region: String? = nil, registerSource: String? = nil, registerType: String? = nil, salesforce: String? = nil, score: Int64? = nil, shopify: String? = nil, signinWrongTimes: Int64? = nil, signupApplication: String? = nil, slack: String? = nil, soundcloud: String? = nil, spotify: String? = nil, steam: String? = nil, strava: String? = nil, stripe: String? = nil, tag: String? = nil, telegram: String? = nil, tiktok: String? = nil, title: String? = nil, totpSecret: String? = nil, tumblr: String? = nil, twitch: String? = nil, twitter: String? = nil, type: String? = nil, typetalk: String? = nil, uber: String? = nil, updatedAt: Date? = nil, updatedTime: String? = nil, verificationCode: String? = nil, vk: String? = nil, webauthnCredentials: [JSONValue]? = nil, wechat: String? = nil, wecom: String? = nil, weibo: String? = nil, wepay: String? = nil, xero: String? = nil, yahoo: String? = nil, yammer: String? = nil, yandex: String? = nil, zoom: String? = nil) {
self.accessKey = accessKey
self.accessSecret = accessSecret
self.accessSecretHash = accessSecretHash
self.accessToken = accessToken
self.address = address
self.addresses = addresses
self.adfs = adfs
self.affiliation = affiliation
self.alipay = alipay
self.amazon = amazon
self.apple = apple
self.applicationScopes = applicationScopes
self.auth0 = auth0
self.avatar = avatar
self.avatarType = avatarType
self.azuread = azuread
self.azureadb2c = azureadb2c
self.baidu = baidu
self.balance = balance
self.balanceCredit = balanceCredit
self.balanceCurrency = balanceCurrency
self.battlenet = battlenet
self.bilibili = bilibili
self.bio = bio
self.birthday = birthday
self.bitbucket = bitbucket
self.box = box
self.cart = cart
self.cloudfoundry = cloudfoundry
self.countryCode = countryCode
self.createdAt = createdAt
self.createdIp = createdIp
self.createdTime = createdTime
self.currency = currency
self.custom = custom
self.custom10 = custom10
self.custom2 = custom2
self.custom3 = custom3
self.custom4 = custom4
self.custom5 = custom5
self.custom6 = custom6
self.custom7 = custom7
self.custom8 = custom8
self.custom9 = custom9
self.dailymotion = dailymotion
self.deezer = deezer
self.deleted = deleted
self.deletedTime = deletedTime
self.digitalocean = digitalocean
self.dingtalk = dingtalk
self.discord = discord
self.displayName = displayName
self.douyin = douyin
self.dropbox = dropbox
self.education = education
self.email = email
self.emailVerified = emailVerified
self.eveonline = eveonline
self.externalId = externalId
self.faceIds = faceIds
self.facebook = facebook
self.firstName = firstName
self.fitbit = fitbit
self.gender = gender
self.gitea = gitea
self.gitee = gitee
self.github = github
self.gitlab = gitlab
self.google = google
self.hash = hash
self.heroku = heroku
self.homepage = homepage
self.iam = iam
self.id = id
self.idCard = idCard
self.idCardType = idCardType
self.influxcloud = influxcloud
self.infoflow = infoflow
self.instagram = instagram
self.intercom = intercom
self.invitation = invitation
self.invitationCode = invitationCode
self.ipWhitelist = ipWhitelist
self.isAdmin = isAdmin
self.isDefaultAvatar = isDefaultAvatar
self.isDeleted = isDeleted
self.isForbidden = isForbidden
self.isOnline = isOnline
self.isVerified = isVerified
self.kakao = kakao
self.karma = karma
self.kwai = kwai
self.language = language
self.lark = lark
self.lastChangePasswordTime = lastChangePasswordTime
self.lastName = lastName
self.lastSigninIp = lastSigninIp
self.lastSigninTime = lastSigninTime
self.lastSigninWrongTime = lastSigninWrongTime
self.lastfm = lastfm
self.ldap = ldap
self.line = line
self.linkedin = linkedin
self.location = location
self.mailru = mailru
self.managedAccounts = managedAccounts
self.meetup = meetup
self.mfaAccounts = mfaAccounts
self.mfaEmailEnabled = mfaEmailEnabled
self.mfaItems = mfaItems
self.mfaPhoneEnabled = mfaPhoneEnabled
self.mfaPushEnabled = mfaPushEnabled
self.mfaPushProvider = mfaPushProvider
self.mfaPushReceiver = mfaPushReceiver
self.mfaRadiusEnabled = mfaRadiusEnabled
self.mfaRadiusProvider = mfaRadiusProvider
self.mfaRadiusUsername = mfaRadiusUsername
self.mfaRememberDeadline = mfaRememberDeadline
self.mfaRememberDigest = mfaRememberDigest
self.microsoftonline = microsoftonline
self.multiFactorAuths = multiFactorAuths
self.name = name
self.naver = naver
self.needUpdatePassword = needUpdatePassword
self.nextcloud = nextcloud
self.okta = okta
self.onedrive = onedrive
self.originalRefreshToken = originalRefreshToken
self.originalToken = originalToken
self.oura = oura
self.owner = owner
self.passwordHash = passwordHash
self.passwordSalt = passwordSalt
self.passwordType = passwordType
self.patreon = patreon
self.paypal = paypal
self.permanentAvatar = permanentAvatar
self.phone = phone
self.preHash = preHash
self.preferredMfaType = preferredMfaType
self.properties = properties
self.qq = qq
self.ranking = ranking
self.realName = realName
self.recoveryCodes = recoveryCodes
self.region = region
self.registerSource = registerSource
self.registerType = registerType
self.salesforce = salesforce
self.score = score
self.shopify = shopify
self.signinWrongTimes = signinWrongTimes
self.signupApplication = signupApplication
self.slack = slack
self.soundcloud = soundcloud
self.spotify = spotify
self.steam = steam
self.strava = strava
self.stripe = stripe
self.tag = tag
self.telegram = telegram
self.tiktok = tiktok
self.title = title
self.totpSecret = totpSecret
self.tumblr = tumblr
self.twitch = twitch
self.twitter = twitter
self.type = type
self.typetalk = typetalk
self.uber = uber
self.updatedAt = updatedAt
self.updatedTime = updatedTime
self.verificationCode = verificationCode
self.vk = vk
self.webauthnCredentials = webauthnCredentials
self.wechat = wechat
self.wecom = wecom
self.weibo = weibo
self.wepay = wepay
self.xero = xero
self.yahoo = yahoo
self.yammer = yammer
self.yandex = yandex
self.zoom = zoom
}
public enum CodingKeys: String, CodingKey, CaseIterable {
case accessKey
case accessSecret
case accessSecretHash
case accessToken
case address
case addresses
case adfs
case affiliation
case alipay
case amazon
case apple
case applicationScopes
case auth0
case avatar
case avatarType
case azuread
case azureadb2c
case baidu
case balance
case balanceCredit
case balanceCurrency
case battlenet
case bilibili
case bio
case birthday
case bitbucket
case box
case cart
case cloudfoundry
case countryCode
case createdAt
case createdIp
case createdTime
case currency
case custom
case custom10
case custom2
case custom3
case custom4
case custom5
case custom6
case custom7
case custom8
case custom9
case dailymotion
case deezer
case deleted
case deletedTime
case digitalocean
case dingtalk
case discord
case displayName
case douyin
case dropbox
case education
case email
case emailVerified
case eveonline
case externalId
case faceIds
case facebook
case firstName
case fitbit
case gender
case gitea
case gitee
case github
case gitlab
case google
case hash
case heroku
case homepage
case iam
case id
case idCard
case idCardType
case influxcloud
case infoflow
case instagram
case intercom
case invitation
case invitationCode
case ipWhitelist
case isAdmin
case isDefaultAvatar
case isDeleted
case isForbidden
case isOnline
case isVerified
case kakao
case karma
case kwai
case language
case lark
case lastChangePasswordTime
case lastName
case lastSigninIp
case lastSigninTime
case lastSigninWrongTime
case lastfm
case ldap
case line
case linkedin
case location
case mailru
case managedAccounts
case meetup
case mfaAccounts
case mfaEmailEnabled
case mfaItems
case mfaPhoneEnabled
case mfaPushEnabled
case mfaPushProvider
case mfaPushReceiver
case mfaRadiusEnabled
case mfaRadiusProvider
case mfaRadiusUsername
case mfaRememberDeadline
case mfaRememberDigest
case microsoftonline
case multiFactorAuths
case name
case naver
case needUpdatePassword
case nextcloud
case okta
case onedrive
case originalRefreshToken
case originalToken
case oura
case owner
case passwordHash
case passwordSalt
case passwordType
case patreon
case paypal
case permanentAvatar
case phone
case preHash
case preferredMfaType
case properties
case qq
case ranking
case realName
case recoveryCodes
case region
case registerSource
case registerType
case salesforce
case score
case shopify
case signinWrongTimes
case signupApplication
case slack
case soundcloud
case spotify
case steam
case strava
case stripe
case tag
case telegram
case tiktok
case title
case totpSecret
case tumblr
case twitch
case twitter
case type
case typetalk
case uber
case updatedAt
case updatedTime
case verificationCode
case vk
case webauthnCredentials
case wechat
case wecom
case weibo
case wepay
case xero
case yahoo
case yammer
case yandex
case zoom
}
// Encodable protocol methods
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encodeIfPresent(accessKey, forKey: .accessKey)
try container.encodeIfPresent(accessSecret, forKey: .accessSecret)
try container.encodeIfPresent(accessSecretHash, forKey: .accessSecretHash)
try container.encodeIfPresent(accessToken, forKey: .accessToken)
try container.encodeIfPresent(address, forKey: .address)
try container.encodeIfPresent(addresses, forKey: .addresses)
try container.encodeIfPresent(adfs, forKey: .adfs)
try container.encodeIfPresent(affiliation, forKey: .affiliation)
try container.encodeIfPresent(alipay, forKey: .alipay)
try container.encodeIfPresent(amazon, forKey: .amazon)
try container.encodeIfPresent(apple, forKey: .apple)
try container.encodeIfPresent(applicationScopes, forKey: .applicationScopes)
try container.encodeIfPresent(auth0, forKey: .auth0)
try container.encodeIfPresent(avatar, forKey: .avatar)
try container.encodeIfPresent(avatarType, forKey: .avatarType)
try container.encodeIfPresent(azuread, forKey: .azuread)
try container.encodeIfPresent(azureadb2c, forKey: .azureadb2c)
try container.encodeIfPresent(baidu, forKey: .baidu)
try container.encodeIfPresent(balance, forKey: .balance)
try container.encodeIfPresent(balanceCredit, forKey: .balanceCredit)
try container.encodeIfPresent(balanceCurrency, forKey: .balanceCurrency)
try container.encodeIfPresent(battlenet, forKey: .battlenet)
try container.encodeIfPresent(bilibili, forKey: .bilibili)
try container.encodeIfPresent(bio, forKey: .bio)
try container.encodeIfPresent(birthday, forKey: .birthday)
try container.encodeIfPresent(bitbucket, forKey: .bitbucket)
try container.encodeIfPresent(box, forKey: .box)
try container.encodeIfPresent(cart, forKey: .cart)
try container.encodeIfPresent(cloudfoundry, forKey: .cloudfoundry)
try container.encodeIfPresent(countryCode, forKey: .countryCode)
try container.encodeIfPresent(createdAt, forKey: .createdAt)
try container.encodeIfPresent(createdIp, forKey: .createdIp)
try container.encodeIfPresent(createdTime, forKey: .createdTime)
try container.encodeIfPresent(currency, forKey: .currency)
try container.encodeIfPresent(custom, forKey: .custom)
try container.encodeIfPresent(custom10, forKey: .custom10)
try container.encodeIfPresent(custom2, forKey: .custom2)
try container.encodeIfPresent(custom3, forKey: .custom3)
try container.encodeIfPresent(custom4, forKey: .custom4)
try container.encodeIfPresent(custom5, forKey: .custom5)
try container.encodeIfPresent(custom6, forKey: .custom6)
try container.encodeIfPresent(custom7, forKey: .custom7)
try container.encodeIfPresent(custom8, forKey: .custom8)
try container.encodeIfPresent(custom9, forKey: .custom9)
try container.encodeIfPresent(dailymotion, forKey: .dailymotion)
try container.encodeIfPresent(deezer, forKey: .deezer)
try container.encodeIfPresent(deleted, forKey: .deleted)
try container.encodeIfPresent(deletedTime, forKey: .deletedTime)
try container.encodeIfPresent(digitalocean, forKey: .digitalocean)
try container.encodeIfPresent(dingtalk, forKey: .dingtalk)
try container.encodeIfPresent(discord, forKey: .discord)
try container.encodeIfPresent(displayName, forKey: .displayName)
try container.encodeIfPresent(douyin, forKey: .douyin)
try container.encodeIfPresent(dropbox, forKey: .dropbox)
try container.encodeIfPresent(education, forKey: .education)
try container.encodeIfPresent(email, forKey: .email)
try container.encodeIfPresent(emailVerified, forKey: .emailVerified)
try container.encodeIfPresent(eveonline, forKey: .eveonline)
try container.encodeIfPresent(externalId, forKey: .externalId)
try container.encodeIfPresent(faceIds, forKey: .faceIds)
try container.encodeIfPresent(facebook, forKey: .facebook)
try container.encodeIfPresent(firstName, forKey: .firstName)
try container.encodeIfPresent(fitbit, forKey: .fitbit)
try container.encodeIfPresent(gender, forKey: .gender)
try container.encodeIfPresent(gitea, forKey: .gitea)
try container.encodeIfPresent(gitee, forKey: .gitee)
try container.encodeIfPresent(github, forKey: .github)
try container.encodeIfPresent(gitlab, forKey: .gitlab)
try container.encodeIfPresent(google, forKey: .google)
try container.encodeIfPresent(hash, forKey: .hash)
try container.encodeIfPresent(heroku, forKey: .heroku)
try container.encodeIfPresent(homepage, forKey: .homepage)
try container.encodeIfPresent(iam, forKey: .iam)
try container.encodeIfPresent(id, forKey: .id)
try container.encodeIfPresent(idCard, forKey: .idCard)
try container.encodeIfPresent(idCardType, forKey: .idCardType)
try container.encodeIfPresent(influxcloud, forKey: .influxcloud)
try container.encodeIfPresent(infoflow, forKey: .infoflow)
try container.encodeIfPresent(instagram, forKey: .instagram)
try container.encodeIfPresent(intercom, forKey: .intercom)
try container.encodeIfPresent(invitation, forKey: .invitation)
try container.encodeIfPresent(invitationCode, forKey: .invitationCode)
try container.encodeIfPresent(ipWhitelist, forKey: .ipWhitelist)
try container.encodeIfPresent(isAdmin, forKey: .isAdmin)
try container.encodeIfPresent(isDefaultAvatar, forKey: .isDefaultAvatar)
try container.encodeIfPresent(isDeleted, forKey: .isDeleted)
try container.encodeIfPresent(isForbidden, forKey: .isForbidden)
try container.encodeIfPresent(isOnline, forKey: .isOnline)
try container.encodeIfPresent(isVerified, forKey: .isVerified)
try container.encodeIfPresent(kakao, forKey: .kakao)
try container.encodeIfPresent(karma, forKey: .karma)
try container.encodeIfPresent(kwai, forKey: .kwai)
try container.encodeIfPresent(language, forKey: .language)
try container.encodeIfPresent(lark, forKey: .lark)
try container.encodeIfPresent(lastChangePasswordTime, forKey: .lastChangePasswordTime)
try container.encodeIfPresent(lastName, forKey: .lastName)
try container.encodeIfPresent(lastSigninIp, forKey: .lastSigninIp)
try container.encodeIfPresent(lastSigninTime, forKey: .lastSigninTime)
try container.encodeIfPresent(lastSigninWrongTime, forKey: .lastSigninWrongTime)
try container.encodeIfPresent(lastfm, forKey: .lastfm)
try container.encodeIfPresent(ldap, forKey: .ldap)
try container.encodeIfPresent(line, forKey: .line)
try container.encodeIfPresent(linkedin, forKey: .linkedin)
try container.encodeIfPresent(location, forKey: .location)
try container.encodeIfPresent(mailru, forKey: .mailru)
try container.encodeIfPresent(managedAccounts, forKey: .managedAccounts)
try container.encodeIfPresent(meetup, forKey: .meetup)
try container.encodeIfPresent(mfaAccounts, forKey: .mfaAccounts)
try container.encodeIfPresent(mfaEmailEnabled, forKey: .mfaEmailEnabled)
try container.encodeIfPresent(mfaItems, forKey: .mfaItems)
try container.encodeIfPresent(mfaPhoneEnabled, forKey: .mfaPhoneEnabled)
try container.encodeIfPresent(mfaPushEnabled, forKey: .mfaPushEnabled)
try container.encodeIfPresent(mfaPushProvider, forKey: .mfaPushProvider)
try container.encodeIfPresent(mfaPushReceiver, forKey: .mfaPushReceiver)
try container.encodeIfPresent(mfaRadiusEnabled, forKey: .mfaRadiusEnabled)
try container.encodeIfPresent(mfaRadiusProvider, forKey: .mfaRadiusProvider)
try container.encodeIfPresent(mfaRadiusUsername, forKey: .mfaRadiusUsername)
try container.encodeIfPresent(mfaRememberDeadline, forKey: .mfaRememberDeadline)
try container.encodeIfPresent(mfaRememberDigest, forKey: .mfaRememberDigest)
try container.encodeIfPresent(microsoftonline, forKey: .microsoftonline)
try container.encodeIfPresent(multiFactorAuths, forKey: .multiFactorAuths)
try container.encodeIfPresent(name, forKey: .name)
try container.encodeIfPresent(naver, forKey: .naver)
try container.encodeIfPresent(needUpdatePassword, forKey: .needUpdatePassword)
try container.encodeIfPresent(nextcloud, forKey: .nextcloud)
try container.encodeIfPresent(okta, forKey: .okta)
try container.encodeIfPresent(onedrive, forKey: .onedrive)
try container.encodeIfPresent(originalRefreshToken, forKey: .originalRefreshToken)
try container.encodeIfPresent(originalToken, forKey: .originalToken)
try container.encodeIfPresent(oura, forKey: .oura)
try container.encodeIfPresent(owner, forKey: .owner)
try container.encodeIfPresent(passwordHash, forKey: .passwordHash)
try container.encodeIfPresent(passwordSalt, forKey: .passwordSalt)
try container.encodeIfPresent(passwordType, forKey: .passwordType)
try container.encodeIfPresent(patreon, forKey: .patreon)
try container.encodeIfPresent(paypal, forKey: .paypal)
try container.encodeIfPresent(permanentAvatar, forKey: .permanentAvatar)
try container.encodeIfPresent(phone, forKey: .phone)
try container.encodeIfPresent(preHash, forKey: .preHash)
try container.encodeIfPresent(preferredMfaType, forKey: .preferredMfaType)
try container.encodeIfPresent(properties, forKey: .properties)
try container.encodeIfPresent(qq, forKey: .qq)
try container.encodeIfPresent(ranking, forKey: .ranking)
try container.encodeIfPresent(realName, forKey: .realName)
try container.encodeIfPresent(recoveryCodes, forKey: .recoveryCodes)
try container.encodeIfPresent(region, forKey: .region)
try container.encodeIfPresent(registerSource, forKey: .registerSource)
try container.encodeIfPresent(registerType, forKey: .registerType)
try container.encodeIfPresent(salesforce, forKey: .salesforce)
try container.encodeIfPresent(score, forKey: .score)
try container.encodeIfPresent(shopify, forKey: .shopify)
try container.encodeIfPresent(signinWrongTimes, forKey: .signinWrongTimes)
try container.encodeIfPresent(signupApplication, forKey: .signupApplication)
try container.encodeIfPresent(slack, forKey: .slack)
try container.encodeIfPresent(soundcloud, forKey: .soundcloud)
try container.encodeIfPresent(spotify, forKey: .spotify)
try container.encodeIfPresent(steam, forKey: .steam)
try container.encodeIfPresent(strava, forKey: .strava)
try container.encodeIfPresent(stripe, forKey: .stripe)
try container.encodeIfPresent(tag, forKey: .tag)
try container.encodeIfPresent(telegram, forKey: .telegram)
try container.encodeIfPresent(tiktok, forKey: .tiktok)
try container.encodeIfPresent(title, forKey: .title)
try container.encodeIfPresent(totpSecret, forKey: .totpSecret)
try container.encodeIfPresent(tumblr, forKey: .tumblr)
try container.encodeIfPresent(twitch, forKey: .twitch)
try container.encodeIfPresent(twitter, forKey: .twitter)
try container.encodeIfPresent(type, forKey: .type)
try container.encodeIfPresent(typetalk, forKey: .typetalk)
try container.encodeIfPresent(uber, forKey: .uber)
try container.encodeIfPresent(updatedAt, forKey: .updatedAt)
try container.encodeIfPresent(updatedTime, forKey: .updatedTime)
try container.encodeIfPresent(verificationCode, forKey: .verificationCode)
try container.encodeIfPresent(vk, forKey: .vk)
try container.encodeIfPresent(webauthnCredentials, forKey: .webauthnCredentials)
try container.encodeIfPresent(wechat, forKey: .wechat)
try container.encodeIfPresent(wecom, forKey: .wecom)
try container.encodeIfPresent(weibo, forKey: .weibo)
try container.encodeIfPresent(wepay, forKey: .wepay)
try container.encodeIfPresent(xero, forKey: .xero)
try container.encodeIfPresent(yahoo, forKey: .yahoo)
try container.encodeIfPresent(yammer, forKey: .yammer)
try container.encodeIfPresent(yandex, forKey: .yandex)
try container.encodeIfPresent(zoom, forKey: .zoom)
}
}
@available(iOS 13, tvOS 13, watchOS 6, macOS 10.15, *)
extension IamUser: Identifiable {}