@vendasta/iam 1.17.2 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.md +113 -0
  3. package/bundles/vendasta-iam.umd.js +828 -1400
  4. package/bundles/vendasta-iam.umd.js.map +1 -1
  5. package/bundles/vendasta-iam.umd.min.js +2 -2
  6. package/bundles/vendasta-iam.umd.min.js.map +1 -1
  7. package/esm2015/lib/_generated/host.service.js +9 -7
  8. package/esm2015/lib/_generated/index.js +2 -0
  9. package/esm2015/lib/_internal/enums/api.enum.js +1 -1
  10. package/esm2015/lib/_internal/enums/index.js +3 -2
  11. package/esm2015/lib/_internal/enums/policies.enum.js +18 -0
  12. package/esm2015/lib/_internal/enums/resources.enum.js +1 -12
  13. package/esm2015/lib/_internal/enums/subjects.enum.js +1 -1
  14. package/esm2015/lib/_internal/enums/users.enum.js +1 -1
  15. package/esm2015/lib/_internal/iam.api.service.js +10 -8
  16. package/esm2015/lib/_internal/index.js +4 -5
  17. package/esm2015/lib/_internal/interfaces/annotations.interface.js +8 -0
  18. package/esm2015/lib/_internal/interfaces/api.interface.js +1 -1
  19. package/esm2015/lib/_internal/interfaces/attributes.interface.js +8 -0
  20. package/esm2015/lib/_internal/interfaces/field-mask.interface.js +1 -1
  21. package/esm2015/lib/_internal/interfaces/index.js +1 -1
  22. package/esm2015/lib/_internal/interfaces/policies.interface.js +3 -0
  23. package/esm2015/lib/_internal/interfaces/resources.interface.js +1 -1
  24. package/esm2015/lib/_internal/interfaces/security-logs.interface.js +1 -1
  25. package/esm2015/lib/_internal/interfaces/subjects.interface.js +1 -7
  26. package/esm2015/lib/_internal/interfaces/users.interface.js +1 -1
  27. package/esm2015/lib/_internal/objects/annotations.js +30 -0
  28. package/esm2015/lib/_internal/objects/api.js +15 -381
  29. package/esm2015/lib/_internal/objects/attributes.js +158 -0
  30. package/esm2015/lib/_internal/objects/field-mask.js +1 -4
  31. package/esm2015/lib/_internal/objects/index.js +7 -4
  32. package/esm2015/lib/_internal/objects/policies.js +264 -0
  33. package/esm2015/lib/_internal/objects/resources.js +6 -321
  34. package/esm2015/lib/_internal/objects/security-logs.js +1 -8
  35. package/esm2015/lib/_internal/objects/subjects.js +3 -233
  36. package/esm2015/lib/_internal/objects/users.js +1 -32
  37. package/esm2015/lib/_internal/user-iam.api.service.js +10 -8
  38. package/esm2015/lib/http/http.interface.js +1 -1
  39. package/esm2015/lib/http/http.js +1 -1
  40. package/esm2015/lib/http/iam.http.api.service.js +22 -21
  41. package/esm2015/lib/iam.service.js +12 -10
  42. package/esm2015/lib/index.js +3 -4
  43. package/esm2015/lib/personas/account-group.js +1 -1
  44. package/esm2015/lib/personas/base-personas.js +1 -1
  45. package/esm2015/lib/personas/developer.js +1 -1
  46. package/esm2015/lib/personas/digital-agent.js +1 -1
  47. package/esm2015/lib/personas/index.js +1 -1
  48. package/esm2015/lib/personas/partner-app.js +1 -1
  49. package/esm2015/lib/personas/partner.js +14 -13
  50. package/esm2015/lib/personas/persona-type.enum.js +1 -1
  51. package/esm2015/lib/personas/personas.js +1 -1
  52. package/esm2015/lib/personas/salesperson.js +1 -1
  53. package/esm2015/lib/personas/smb.js +1 -1
  54. package/esm2015/lib/personas/success.js +1 -1
  55. package/esm2015/lib/personas/vendor.js +1 -1
  56. package/esm2015/public_api.js +2 -2
  57. package/esm2015/vendasta-iam.js +1 -6
  58. package/fesm2015/vendasta-iam.js +415 -976
  59. package/fesm2015/vendasta-iam.js.map +1 -1
  60. package/lib/_generated/host.service.d.ts +3 -0
  61. package/lib/_generated/index.d.ts +1 -0
  62. package/lib/_internal/enums/index.d.ts +2 -1
  63. package/lib/_internal/enums/policies.enum.d.ts +9 -0
  64. package/lib/_internal/enums/resources.enum.d.ts +0 -9
  65. package/lib/_internal/iam.api.service.d.ts +3 -0
  66. package/lib/_internal/index.d.ts +3 -4
  67. package/lib/_internal/interfaces/annotations.interface.d.ts +4 -0
  68. package/lib/_internal/interfaces/api.interface.d.ts +6 -18
  69. package/lib/_internal/interfaces/attributes.interface.d.ts +26 -0
  70. package/lib/_internal/interfaces/index.d.ts +6 -3
  71. package/lib/_internal/interfaces/policies.interface.d.ts +42 -0
  72. package/lib/_internal/interfaces/resources.interface.d.ts +3 -42
  73. package/lib/_internal/interfaces/subjects.interface.d.ts +2 -27
  74. package/lib/_internal/objects/annotations.d.ts +9 -0
  75. package/lib/_internal/objects/api.d.ts +7 -25
  76. package/lib/_internal/objects/attributes.d.ts +43 -0
  77. package/lib/_internal/objects/field-mask.d.ts +1 -1
  78. package/lib/_internal/objects/index.d.ts +6 -3
  79. package/lib/_internal/objects/policies.d.ts +68 -0
  80. package/lib/_internal/objects/resources.d.ts +4 -67
  81. package/lib/_internal/objects/security-logs.d.ts +1 -1
  82. package/lib/_internal/objects/subjects.d.ts +3 -43
  83. package/lib/_internal/objects/users.d.ts +1 -1
  84. package/lib/_internal/user-iam.api.service.d.ts +3 -0
  85. package/lib/http/iam.http.api.service.d.ts +3 -0
  86. package/lib/iam.service.d.ts +3 -0
  87. package/lib/index.d.ts +2 -3
  88. package/lib/personas/base-personas.d.ts +1 -1
  89. package/lib/personas/partner.d.ts +1 -0
  90. package/package.json +5 -3
  91. package/public_api.d.ts +1 -1
  92. package/vendasta-iam.d.ts +1 -5
  93. package/esm2015/lib/_internal/iam-sso.api.service.js +0 -38
  94. package/esm2015/lib/_internal/iam.module.js +0 -29
  95. package/esm2015/lib/iam.module.js +0 -16
  96. package/lib/_internal/iam-sso.api.service.d.ts +0 -12
  97. package/lib/_internal/iam.module.d.ts +0 -2
  98. package/lib/iam.module.d.ts +0 -2
  99. package/vendasta-iam.metadata.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../iam_sdk/src/lib/_internal/enums/subjects.enum.ts","../../../iam_sdk/src/lib/_internal/enums/resources.enum.ts","../../../iam_sdk/src/lib/_internal/enums/users.enum.ts","../../../iam_sdk/src/lib/_internal/enums/api.enum.ts","../../../iam_sdk/src/lib/_internal/objects/subjects.ts","../../../iam_sdk/src/lib/_internal/objects/field-mask.ts","../../../iam_sdk/src/lib/_internal/objects/resources.ts","../../../iam_sdk/src/lib/_internal/objects/security-logs.ts","../../../iam_sdk/src/lib/_internal/objects/users.ts","../../../iam_sdk/src/lib/_internal/objects/api.ts","../../../iam_sdk/src/lib/_generated/host.service.ts","../../../iam_sdk/src/lib/_internal/user-iam.api.service.ts","../../../iam_sdk/src/lib/http/http.ts","../../../iam_sdk/src/lib/personas/persona-type.enum.ts","../../../iam_sdk/src/lib/http/iam.http.api.service.ts","../../../iam_sdk/src/lib/personas/base-personas.ts","../../../iam_sdk/src/lib/personas/developer.ts","../../../iam_sdk/src/lib/personas/partner.ts","../../../iam_sdk/src/lib/personas/partner-app.ts","../../../iam_sdk/src/lib/personas/salesperson.ts","../../../iam_sdk/src/lib/personas/smb.ts","../../../iam_sdk/src/lib/personas/vendor.ts","../../../iam_sdk/src/lib/personas/digital-agent.ts","../../../iam_sdk/src/lib/personas/success.ts","../../../iam_sdk/src/lib/personas/account-group.ts","../../../iam_sdk/src/lib/personas/personas.ts","../../../iam_sdk/src/lib/_internal/iam.api.service.ts","../../../iam_sdk/src/lib/iam.service.ts","../../../iam_sdk/src/lib/_internal/iam-sso.api.service.ts","../../../iam_sdk/src/lib/_internal/iam.module.ts","../../../iam_sdk/src/lib/iam.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","__values","o","s","Symbol","iterator","m","i","length","next","value","done","TypeError","__read","n","r","e","ar","push","error","__spread","arguments","concat","AlgorithmType","OrderByDirection","AccessScope","BooleanOperator","ForOperator","RestrictionType","SortDirection","UserSortField","Attribute","kwargs","assign","fromProto","proto","intAttribute","parseInt","structAttribute","StructAttribute","listAttribute","ListAttribute","timestampAttribute","Date","geopointAttribute","GeoPointAttribute","toApiJson","doubleAttribute","stringAttribute","boolAttribute","toReturn","StructAttributeAttributesEntry","key","Context","namespaced","NamespacedContext","typed","TypedContext","latitude","longitude","attributes","map","MultiValueAttribute","values","Mutation","add","SingleValueAttribute","replace","remove","replaceAttributes","addAttributes","removeAttributes","dropKey","namespace","type","Persona","subject","Subject","context","PublicKey","enumRef","algorithmType","e.AlgorithmType","id","Query","searchTerm","attributeKeys","keys","reduce","obj","k","created","updated","lastLogin","publicKeys","structAttributes","subjectId","email","userId","partnerId","SubjectResult","FieldMask","paths","enumStringToValue","AccessCheckFailures","failures","ResourceIdentifier","ResourceIdentifierIdentifiersEntry","ValueList","IfClause","resourceAttributeValue","thenPolicy","PolicyNode","elsePolicy","resourceAttributeName","Operator","operator","e.BooleanOperator","children","Policy","operations","v","e.AccessScope","policy","appId","resourceId","policyId","policyName","subjectResourceIntersection","SubjectResourceIntersectionClause","subjectValueIntersection","SubjectValueIntersectionClause","subjectMissingValue","SubjectMissingValueClause","subjectResourceSubset","SubjectResourceSubsetClause","subjectResourceFor","SubjectResourceForClause","ifClause","identifiers","ResourceOwner","appName","attributeName","e.ForOperator","rules","structuredAttributeValue","attributeValue","SecurityLog","actionId","logId","description","Identifier","NamespacedEmail","NamespacedSession","session","TypedExternalIdentifier","externalIdType","externalId","User","firstName","greetingName","lastName","languageCode","emailVerified","roles","AccessResourceRequest","resourceEntityIdentifier","accessScope","resourceEntityIdentifiers","resourceAttributes","ownerId","AddKeyRequest","userIdentifier","UserIdentifier","AddKeyResponse","privateKey","keyId","AddMultiUserRestrictionRequest","userIdentifiers","restrictionType","e.RestrictionType","AuthenticateSubjectRequest","password","ChangeSubjectEmailRequest","newEmail","CreateExternalIDRequest","typedExternalIdentifier","CreateSessionRequest","oauthCredentials","OAuthCredentials","subjectCredentials","SubjectCredentials","CreateSessionResponse","CreateTemporarySubjectRequest","CreateTemporarySubjectResponse","DeleteSubjectRequest","DeleteUserRequest","ListSecurityLogsRequestFilters","GetImpersonationTokenRequest","impersonatee","impersonator","GetImpersonationTokenResponse","token","GetMultiExternalIDRequest","GetMultiExternalIDResponse","externalIds","GetMultiUsersRequest","GetMultiUsersResponse","users","GetMultiUsersResponseUserContainer","GetResetPasswordTokenRequest","GetSessionForUserRequest","refreshToken","clientAssertion","federatedIdentityProvider","scopes","clientId","nonce","GetSessionForUserResponse","accessToken","GetSessionTokenRequest","GetShortLivedTokenRequest","GetSubjectBySessionRequest","GetSubjectContextRequest","GetSubjectContextResponse","GetSubjectResponse","GetSubjectsByEmailRequest","fieldMask","emails","GetSubjectsRequest","subjectIds","GetSubjectsResponse","subjects","GetTokenRequest","GetTokenResponse","IAMListPersonasRequest","pageSize","cursor","ListPersonasByEmailRequest","ListPersonasRequest","ListPersonasResponse","personas","nextCursor","hasMore","ListSecurityLogsRequest","filters","ListSecurityLogsResponse","logs","ListUsersRequest","userFilter","UserFilter","sortOptions","UserSortOptions","ListUsersResponse","MutateAttributesRequest","mutations","provider","idToken","UpdateUserRequestOperation","RegisterPolicyRequest","RegisterResourceOwnerRequest","owner","RegisterResourceRequest","resourceName","resourceOwnerServiceUrl","requiredResourceParams","resourceOwnerAudience","RegisterSubjectRequest","RegisterSubjectResponse","RemoveKeyRequest","RemoveMultiUserRestrictionRequest","ResetPasswordTokenResponse","ResetPasswordWithTokenRequest","ResetSubjectPasswordRequest","newPassword","AccessResourceRequestResourceEntityIdentifierEntry","SearchSubjectRequest","query","orderByDirection","e.OrderByDirection","orderBy","SearchSubjectResponse","result","totalResults","SendEmailVerificationRequest","UpdateUserRequest","user","subjectTypes","searchTerms","namespacedEmail","namespacedSession","direction","e.SortDirection","field","e.UserSortField","VerifyEmailRequest","HostService","environmentService","host","_host","getEnvironment","Environment","LOCAL","TEST","DEMO","PROD","httpsHost","_httpsHost","hostWithScheme","httpsHostWithScheme","Injectable","EnvironmentService","UserIAMApiService","http","hostService","apiOptions","headers","HttpHeaders","Content-Type","withCredentials","getSubjectBySession","request","post","pipe","resp","share","listPersonas","getToken","getSessionToken","resetPasswordWithToken","observe","getImpersonationToken","HttpClient","PersonaType","LoginRequest","providerIdToken","provider_id_token","LoginResponse","sessionId","LogoutResponse","success","SSOLoginRequest","nextUrl","next_url","IamHttpApiService","includeCredentials","login","logout","ssoLogin","params","apiJson","window","location","href","BasePersona","fromPersona","readAttributes","attrs","getValueFromAttribute","attr","vals","_b","_c","val","a","CamelCase","TypedPersona","_super","NamespacedPersona","_this","apply","str","toUpperCase","DeveloperPersona","developer","PartnerPersona","partner","isSuperAdmin","isAdmin","canCustomizeWhitelabel","canAccessBilling","canAccessAccounts","canAccessMarketing","canAccessSales","canAccessConcierge","canAccessBrands","canAccessDashboard","canAccessOrders","canAccessCompanyProfile","canAccessAutomations","canAccessMarketplace","canEnableApps","PartnerAppPersona","partner_app","TitleChoice","SalespersonPersona","sales_person","titleChoice","SMBPersona","smb","notificationsEnabled","VendorPersona","vendor","DigitalAgentPersona","digital_agent","SuccessPersona","AccountGroupPersona","account_group","persona","ctx","getTypeFromContext","personaCls","IAMApiService","registerSubject","authenticateSubject","getSubjects","getSubjectsByEmail","mutateAttributes","resetSubjectPassword","changeSubjectEmail","deleteSubject","searchSubject","getSubjectContext","registerResourceOwner","registerResource","registerPolicy","accessResource","getShortLivedToken","addKey","removeKey","createSession","getResetPasswordToken","listPersonasByEmail","createTemporarySubject","getMultiUsers","listUsers","updateUser","deleteUser","listSecurityLogs","verifyEmail","sendEmailVerification","getMultiExternalId","createExternalId","addMultiUserRestriction","removeMultiUserRestriction","IAMService","api","httpApi","sessionService","iamApi","personaType","getLoggedInSubject","getSessionId","switchMap","listLoggedInPersonas","userContainers","u","optionalArgs","SessionService","IAMSsoApiService","getSessionForUser","NgModule","args","imports","SessionServiceModule","EnvironmentServiceModule","providers","declarations","exports","entryComponents","IamInternalModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum AlgorithmType {\n ALGORITHM_TYPE_ES256 = 0,\n ALGORITHM_TYPE_RS256 = 1,\n}\n\nexport enum OrderByDirection {\n ASCENDING = 0,\n DESCENDING = 1,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum AccessScope {\n READ = 0,\n WRITE = 1,\n DELETE = 2,\n LIST = 3,\n}\n\nexport enum BooleanOperator {\n AND = 0,\n OR = 1,\n NOT = 2,\n}\n\nexport enum ForOperator {\n ANY = 0,\n ALL = 1,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum RestrictionType {\n RESTRICTION_TYPE_UNSET = 0,\n RESTRICTION_TYPE_RESET_PASSWORD_BEFORE_LOGIN = 1,\n RESTRICTION_TYPE_FROZEN = 2,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum SortDirection {\n SORT_DIRECTION_INVALID = 0,\n SORT_DIRECTION_ASCENDING = 1,\n SORT_DIRECTION_DESCENDING = 2,\n}\n\nexport enum UserSortField {\n USER_SORT_FIELD_INVALID = 0,\n USER_SORT_FIELD_CREATED = 1,\n USER_SORT_FIELD_FIRST_NAME = 2,\n USER_SORT_FIELD_LAST_NAME = 3,\n USER_SORT_FIELD_EMAIL = 4,\n USER_SORT_FIELD_LAST_LOGIN = 5,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces/index';\n\nimport * as e from '../enums/index';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Attribute implements i.AttributeInterface {\n intAttribute: number;\n doubleAttribute: number;\n stringAttribute: string;\n boolAttribute: boolean;\n structAttribute: StructAttribute;\n listAttribute: ListAttribute;\n timestampAttribute: Date;\n geopointAttribute: GeoPointAttribute;\n\n static fromProto(proto: any): Attribute {\n let m = new Attribute();\n m = Object.assign(m, proto);\n if (proto.intAttribute) {m.intAttribute = parseInt(proto.intAttribute, 10);}\n if (proto.structAttribute) {m.structAttribute = StructAttribute.fromProto(proto.structAttribute);}\n if (proto.listAttribute) {m.listAttribute = ListAttribute.fromProto(proto.listAttribute);}\n if (proto.timestampAttribute) {m.timestampAttribute = new Date(proto.timestampAttribute);}\n if (proto.geopointAttribute) {m.geopointAttribute = GeoPointAttribute.fromProto(proto.geopointAttribute);}\n return m;\n }\n\n constructor(kwargs?: i.AttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.intAttribute === 'undefined' &&\n typeof this.doubleAttribute === 'undefined' &&\n typeof this.stringAttribute === 'undefined' &&\n typeof this.boolAttribute === 'undefined' &&\n typeof this.structAttribute === 'undefined' &&\n typeof this.listAttribute === 'undefined' &&\n typeof this.timestampAttribute === 'undefined' &&\n typeof this.geopointAttribute === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.intAttribute !== 'undefined') {toReturn['intAttribute'] = this.intAttribute;}\n if (typeof this.doubleAttribute !== 'undefined') {toReturn['doubleAttribute'] = this.doubleAttribute;}\n if (typeof this.stringAttribute !== 'undefined') {toReturn['stringAttribute'] = this.stringAttribute;}\n if (typeof this.boolAttribute !== 'undefined') {toReturn['boolAttribute'] = this.boolAttribute;}\n if (typeof this.structAttribute !== 'undefined' && this.structAttribute !== null) {toReturn['structAttribute'] = 'toApiJson' in this.structAttribute ? (this.structAttribute as any).toApiJson() : this.structAttribute;}\n if (typeof this.listAttribute !== 'undefined' && this.listAttribute !== null) {toReturn['listAttribute'] = 'toApiJson' in this.listAttribute ? (this.listAttribute as any).toApiJson() : this.listAttribute;}\n if (typeof this.timestampAttribute !== 'undefined' && this.timestampAttribute !== null) {toReturn['timestampAttribute'] = 'toApiJson' in this.timestampAttribute ? (this.timestampAttribute as any).toApiJson() : this.timestampAttribute;}\n if (typeof this.geopointAttribute !== 'undefined' && this.geopointAttribute !== null) {toReturn['geopointAttribute'] = 'toApiJson' in this.geopointAttribute ? (this.geopointAttribute as any).toApiJson() : this.geopointAttribute;}\n return toReturn;\n }\n}\n\nexport class StructAttributeAttributesEntry implements i.StructAttributeAttributesEntryInterface {\n key: string;\n value: Attribute;\n\n static fromProto(proto: any): StructAttributeAttributesEntry {\n let m = new StructAttributeAttributesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = Attribute.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.StructAttributeAttributesEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.key === 'undefined' &&\n typeof this.value === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class Context implements i.ContextInterface {\n namespaced: NamespacedContext;\n typed: TypedContext;\n\n static fromProto(proto: any): Context {\n let m = new Context();\n m = Object.assign(m, proto);\n if (proto.namespaced) {m.namespaced = NamespacedContext.fromProto(proto.namespaced);}\n if (proto.typed) {m.typed = TypedContext.fromProto(proto.typed);}\n return m;\n }\n\n constructor(kwargs?: i.ContextInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.namespaced === 'undefined' &&\n typeof this.typed === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespaced !== 'undefined' && this.namespaced !== null) {toReturn['namespaced'] = 'toApiJson' in this.namespaced ? (this.namespaced as any).toApiJson() : this.namespaced;}\n if (typeof this.typed !== 'undefined' && this.typed !== null) {toReturn['typed'] = 'toApiJson' in this.typed ? (this.typed as any).toApiJson() : this.typed;}\n return toReturn;\n }\n}\n\nexport class GeoPointAttribute implements i.GeoPointAttributeInterface {\n latitude: number;\n longitude: number;\n\n static fromProto(proto: any): GeoPointAttribute {\n let m = new GeoPointAttribute();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GeoPointAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.latitude === 'undefined' &&\n typeof this.longitude === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.latitude !== 'undefined') {toReturn['latitude'] = this.latitude;}\n if (typeof this.longitude !== 'undefined') {toReturn['longitude'] = this.longitude;}\n return toReturn;\n }\n}\n\nexport class ListAttribute implements i.ListAttributeInterface {\n attributes: Attribute[];\n\n static fromProto(proto: any): ListAttribute {\n let m = new ListAttribute();\n m = Object.assign(m, proto);\n if (proto.attributes) {m.attributes = proto.attributes.map(Attribute.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.attributes === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n return toReturn;\n }\n}\n\nexport class MultiValueAttribute implements i.MultiValueAttributeInterface {\n key: string;\n values: string[];\n\n static fromProto(proto: any): MultiValueAttribute {\n let m = new MultiValueAttribute();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.MultiValueAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.key === 'undefined' &&\n typeof this.values === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.values !== 'undefined') {toReturn['values'] = this.values;}\n return toReturn;\n }\n}\n\nexport class Mutation implements i.MutationInterface {\n add: SingleValueAttribute;\n replace: MultiValueAttribute;\n remove: SingleValueAttribute;\n dropKey: string;\n replaceAttributes: StructAttribute;\n addAttributes: StructAttribute;\n removeAttributes: StructAttribute;\n\n static fromProto(proto: any): Mutation {\n let m = new Mutation();\n m = Object.assign(m, proto);\n if (proto.add) {m.add = SingleValueAttribute.fromProto(proto.add);}\n if (proto.replace) {m.replace = MultiValueAttribute.fromProto(proto.replace);}\n if (proto.remove) {m.remove = SingleValueAttribute.fromProto(proto.remove);}\n if (proto.replaceAttributes) {m.replaceAttributes = StructAttribute.fromProto(proto.replaceAttributes);}\n if (proto.addAttributes) {m.addAttributes = StructAttribute.fromProto(proto.addAttributes);}\n if (proto.removeAttributes) {m.removeAttributes = StructAttribute.fromProto(proto.removeAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.MutationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.add === 'undefined' &&\n typeof this.replace === 'undefined' &&\n typeof this.remove === 'undefined' &&\n typeof this.dropKey === 'undefined' &&\n typeof this.replaceAttributes === 'undefined' &&\n typeof this.addAttributes === 'undefined' &&\n typeof this.removeAttributes === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.add !== 'undefined' && this.add !== null) {toReturn['add'] = 'toApiJson' in this.add ? (this.add as any).toApiJson() : this.add;}\n if (typeof this.replace !== 'undefined' && this.replace !== null) {toReturn['replace'] = 'toApiJson' in this.replace ? (this.replace as any).toApiJson() : this.replace;}\n if (typeof this.remove !== 'undefined' && this.remove !== null) {toReturn['remove'] = 'toApiJson' in this.remove ? (this.remove as any).toApiJson() : this.remove;}\n if (typeof this.dropKey !== 'undefined') {toReturn['dropKey'] = this.dropKey;}\n if (typeof this.replaceAttributes !== 'undefined' && this.replaceAttributes !== null) {toReturn['replaceAttributes'] = 'toApiJson' in this.replaceAttributes ? (this.replaceAttributes as any).toApiJson() : this.replaceAttributes;}\n if (typeof this.addAttributes !== 'undefined' && this.addAttributes !== null) {toReturn['addAttributes'] = 'toApiJson' in this.addAttributes ? (this.addAttributes as any).toApiJson() : this.addAttributes;}\n if (typeof this.removeAttributes !== 'undefined' && this.removeAttributes !== null) {toReturn['removeAttributes'] = 'toApiJson' in this.removeAttributes ? (this.removeAttributes as any).toApiJson() : this.removeAttributes;}\n return toReturn;\n }\n}\n\nexport class NamespacedContext implements i.NamespacedContextInterface {\n namespace: string;\n type: string;\n\n static fromProto(proto: any): NamespacedContext {\n let m = new NamespacedContext();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.NamespacedContextInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.namespace === 'undefined' &&\n typeof this.type === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n return toReturn;\n }\n}\n\nexport class Persona implements i.PersonaInterface {\n subject: Subject;\n context: Context;\n\n static fromProto(proto: any): Persona {\n let m = new Persona();\n m = Object.assign(m, proto);\n if (proto.subject) {m.subject = Subject.fromProto(proto.subject);}\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.PersonaInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subject === 'undefined' &&\n typeof this.context === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subject !== 'undefined' && this.subject !== null) {toReturn['subject'] = 'toApiJson' in this.subject ? (this.subject as any).toApiJson() : this.subject;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n return toReturn;\n }\n}\n\nexport class PublicKey implements i.PublicKeyInterface {\n key: string;\n id: string;\n algorithmType: e.AlgorithmType;\n\n static fromProto(proto: any): PublicKey {\n let m = new PublicKey();\n m = Object.assign(m, proto);\n if (proto.algorithmType) {m.algorithmType = enumStringToValue<e.AlgorithmType>(e.AlgorithmType, proto.algorithmType);}\n return m;\n }\n\n constructor(kwargs?: i.PublicKeyInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.key === 'undefined' &&\n typeof this.id === 'undefined' &&\n typeof this.algorithmType === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.algorithmType !== 'undefined') {toReturn['algorithmType'] = this.algorithmType;}\n return toReturn;\n }\n}\n\nexport class Query implements i.QueryInterface {\n searchTerm: string;\n attributeKeys: string[];\n\n static fromProto(proto: any): Query {\n let m = new Query();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.QueryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.searchTerm === 'undefined' &&\n typeof this.attributeKeys === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.searchTerm !== 'undefined') {toReturn['searchTerm'] = this.searchTerm;}\n if (typeof this.attributeKeys !== 'undefined') {toReturn['attributeKeys'] = this.attributeKeys;}\n return toReturn;\n }\n}\n\nexport class SingleValueAttribute implements i.SingleValueAttributeInterface {\n key: string;\n value: string;\n\n static fromProto(proto: any): SingleValueAttribute {\n let m = new SingleValueAttribute();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SingleValueAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.key === 'undefined' &&\n typeof this.value === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined') {toReturn['value'] = this.value;}\n return toReturn;\n }\n}\n\nexport class StructAttribute implements i.StructAttributeInterface {\n attributes: {[key: string]: Attribute};\n\n static fromProto(proto: any): StructAttribute {\n let m = new StructAttribute();\n m = Object.assign(m, proto);\n if (proto.attributes) {m.attributes = Object.keys(proto.attributes).reduce<any>((obj, k) => { obj[k] = Attribute.fromProto(proto.attributes[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.StructAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.attributes === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n return toReturn;\n }\n}\n\nexport class Subject implements i.SubjectInterface {\n subjectId: string;\n email: string;\n userId: string;\n partnerId: string;\n attributes: MultiValueAttribute[];\n created: Date;\n updated: Date;\n lastLogin: Date;\n publicKeys: PublicKey[];\n structAttributes: StructAttribute;\n\n static fromProto(proto: any): Subject {\n let m = new Subject();\n m = Object.assign(m, proto);\n if (proto.attributes) {m.attributes = proto.attributes.map(MultiValueAttribute.fromProto);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.lastLogin) {m.lastLogin = new Date(proto.lastLogin);}\n if (proto.publicKeys) {m.publicKeys = proto.publicKeys.map(PublicKey.fromProto);}\n if (proto.structAttributes) {m.structAttributes = StructAttribute.fromProto(proto.structAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjectId === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.userId === 'undefined' &&\n typeof this.partnerId === 'undefined' &&\n typeof this.attributes === 'undefined' &&\n typeof this.created === 'undefined' &&\n typeof this.updated === 'undefined' &&\n typeof this.lastLogin === 'undefined' &&\n typeof this.publicKeys === 'undefined' &&\n typeof this.structAttributes === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.partnerId !== 'undefined') {toReturn['partnerId'] = this.partnerId;}\n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.lastLogin !== 'undefined' && this.lastLogin !== null) {toReturn['lastLogin'] = 'toApiJson' in this.lastLogin ? (this.lastLogin as any).toApiJson() : this.lastLogin;}\n if (typeof this.publicKeys !== 'undefined' && this.publicKeys !== null) {toReturn['publicKeys'] = 'toApiJson' in this.publicKeys ? (this.publicKeys as any).toApiJson() : this.publicKeys;}\n if (typeof this.structAttributes !== 'undefined' && this.structAttributes !== null) {toReturn['structAttributes'] = 'toApiJson' in this.structAttributes ? (this.structAttributes as any).toApiJson() : this.structAttributes;}\n return toReturn;\n }\n}\n\nexport class SubjectResult implements i.SubjectResultInterface {\n subject: Subject;\n\n static fromProto(proto: any): SubjectResult {\n let m = new SubjectResult();\n m = Object.assign(m, proto);\n if (proto.subject) {m.subject = Subject.fromProto(proto.subject);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectResultInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subject === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subject !== 'undefined' && this.subject !== null) {toReturn['subject'] = 'toApiJson' in this.subject ? (this.subject as any).toApiJson() : this.subject;}\n return toReturn;\n }\n}\n\nexport class TypedContext implements i.TypedContextInterface {\n type: string;\n\n static fromProto(proto: any): TypedContext {\n let m = new TypedContext();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.TypedContextInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.type === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces/index';\n\nimport * as e from '../enums/index';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class FieldMask implements i.FieldMaskInterface {\n paths: string[];\n\n static fromProto(proto: any): FieldMask {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.FieldMaskInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.paths === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.paths !== 'undefined') {toReturn['paths'] = this.paths;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces/index';\nimport { Attribute } from './subjects';\nimport * as e from '../enums/index';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AccessCheckFailures implements i.AccessCheckFailuresInterface {\n failures: ResourceIdentifier[];\n\n static fromProto(proto: any): AccessCheckFailures {\n let m = new AccessCheckFailures();\n m = Object.assign(m, proto);\n if (proto.failures) {m.failures = proto.failures.map(ResourceIdentifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.AccessCheckFailuresInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.failures === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.failures !== 'undefined' && this.failures !== null) {toReturn['failures'] = 'toApiJson' in this.failures ? (this.failures as any).toApiJson() : this.failures;}\n return toReturn;\n }\n}\n\nexport class ResourceIdentifierIdentifiersEntry implements i.ResourceIdentifierIdentifiersEntryInterface {\n key: string;\n value: ValueList;\n\n static fromProto(proto: any): ResourceIdentifierIdentifiersEntry {\n let m = new ResourceIdentifierIdentifiersEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = ValueList.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.ResourceIdentifierIdentifiersEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.key === 'undefined' &&\n typeof this.value === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class IfClause implements i.IfClauseInterface {\n resourceAttributeName: string;\n resourceAttributeValue: Attribute;\n thenPolicy: PolicyNode;\n elsePolicy: PolicyNode;\n\n static fromProto(proto: any): IfClause {\n let m = new IfClause();\n m = Object.assign(m, proto);\n if (proto.resourceAttributeValue) {m.resourceAttributeValue = Attribute.fromProto(proto.resourceAttributeValue);}\n if (proto.thenPolicy) {m.thenPolicy = PolicyNode.fromProto(proto.thenPolicy);}\n if (proto.elsePolicy) {m.elsePolicy = PolicyNode.fromProto(proto.elsePolicy);}\n return m;\n }\n\n constructor(kwargs?: i.IfClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.resourceAttributeName === 'undefined' &&\n typeof this.resourceAttributeValue === 'undefined' &&\n typeof this.thenPolicy === 'undefined' &&\n typeof this.elsePolicy === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.resourceAttributeName !== 'undefined') {toReturn['resourceAttributeName'] = this.resourceAttributeName;}\n if (typeof this.resourceAttributeValue !== 'undefined' && this.resourceAttributeValue !== null) {toReturn['resourceAttributeValue'] = 'toApiJson' in this.resourceAttributeValue ? (this.resourceAttributeValue as any).toApiJson() : this.resourceAttributeValue;}\n if (typeof this.thenPolicy !== 'undefined' && this.thenPolicy !== null) {toReturn['thenPolicy'] = 'toApiJson' in this.thenPolicy ? (this.thenPolicy as any).toApiJson() : this.thenPolicy;}\n if (typeof this.elsePolicy !== 'undefined' && this.elsePolicy !== null) {toReturn['elsePolicy'] = 'toApiJson' in this.elsePolicy ? (this.elsePolicy as any).toApiJson() : this.elsePolicy;}\n return toReturn;\n }\n}\n\nexport class Operator implements i.OperatorInterface {\n operator: e.BooleanOperator;\n children: PolicyNode[];\n\n static fromProto(proto: any): Operator {\n let m = new Operator();\n m = Object.assign(m, proto);\n if (proto.operator) {m.operator = enumStringToValue<e.BooleanOperator>(e.BooleanOperator, proto.operator);}\n if (proto.children) {m.children = proto.children.map(PolicyNode.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.OperatorInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.operator === 'undefined' &&\n typeof this.children === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.operator !== 'undefined') {toReturn['operator'] = this.operator;}\n if (typeof this.children !== 'undefined' && this.children !== null) {toReturn['children'] = 'toApiJson' in this.children ? (this.children as any).toApiJson() : this.children;}\n return toReturn;\n }\n}\n\nexport class Policy implements i.PolicyInterface {\n appId: string;\n resourceId: string;\n policyId: string;\n policyName: string;\n operations: e.AccessScope[];\n policy: PolicyNode;\n\n static fromProto(proto: any): Policy {\n let m = new Policy();\n m = Object.assign(m, proto);\n if (proto.operations) {m.operations = proto.operations.map((v: string) => enumStringToValue<e.AccessScope>(e.AccessScope, v));}\n if (proto.policy) {m.policy = PolicyNode.fromProto(proto.policy);}\n return m;\n }\n\n constructor(kwargs?: i.PolicyInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.appId === 'undefined' &&\n typeof this.resourceId === 'undefined' &&\n typeof this.policyId === 'undefined' &&\n typeof this.policyName === 'undefined' &&\n typeof this.operations === 'undefined' &&\n typeof this.policy === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.appId !== 'undefined') {toReturn['appId'] = this.appId;}\n if (typeof this.resourceId !== 'undefined') {toReturn['resourceId'] = this.resourceId;}\n if (typeof this.policyId !== 'undefined') {toReturn['policyId'] = this.policyId;}\n if (typeof this.policyName !== 'undefined') {toReturn['policyName'] = this.policyName;}\n if (typeof this.operations !== 'undefined') {toReturn['operations'] = this.operations;}\n if (typeof this.policy !== 'undefined' && this.policy !== null) {toReturn['policy'] = 'toApiJson' in this.policy ? (this.policy as any).toApiJson() : this.policy;}\n return toReturn;\n }\n}\n\nexport class PolicyNode implements i.PolicyNodeInterface {\n subjectResourceIntersection: SubjectResourceIntersectionClause;\n operator: Operator;\n subjectValueIntersection: SubjectValueIntersectionClause;\n subjectMissingValue: SubjectMissingValueClause;\n subjectResourceSubset: SubjectResourceSubsetClause;\n subjectResourceFor: SubjectResourceForClause;\n ifClause: IfClause;\n\n static fromProto(proto: any): PolicyNode {\n let m = new PolicyNode();\n m = Object.assign(m, proto);\n if (proto.subjectResourceIntersection) {m.subjectResourceIntersection = SubjectResourceIntersectionClause.fromProto(proto.subjectResourceIntersection);}\n if (proto.operator) {m.operator = Operator.fromProto(proto.operator);}\n if (proto.subjectValueIntersection) {m.subjectValueIntersection = SubjectValueIntersectionClause.fromProto(proto.subjectValueIntersection);}\n if (proto.subjectMissingValue) {m.subjectMissingValue = SubjectMissingValueClause.fromProto(proto.subjectMissingValue);}\n if (proto.subjectResourceSubset) {m.subjectResourceSubset = SubjectResourceSubsetClause.fromProto(proto.subjectResourceSubset);}\n if (proto.subjectResourceFor) {m.subjectResourceFor = SubjectResourceForClause.fromProto(proto.subjectResourceFor);}\n if (proto.ifClause) {m.ifClause = IfClause.fromProto(proto.ifClause);}\n return m;\n }\n\n constructor(kwargs?: i.PolicyNodeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjectResourceIntersection === 'undefined' &&\n typeof this.operator === 'undefined' &&\n typeof this.subjectValueIntersection === 'undefined' &&\n typeof this.subjectMissingValue === 'undefined' &&\n typeof this.subjectResourceSubset === 'undefined' &&\n typeof this.subjectResourceFor === 'undefined' &&\n typeof this.ifClause === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectResourceIntersection !== 'undefined' && this.subjectResourceIntersection !== null) {toReturn['subjectResourceIntersection'] = 'toApiJson' in this.subjectResourceIntersection ? (this.subjectResourceIntersection as any).toApiJson() : this.subjectResourceIntersection;}\n if (typeof this.operator !== 'undefined' && this.operator !== null) {toReturn['operator'] = 'toApiJson' in this.operator ? (this.operator as any).toApiJson() : this.operator;}\n if (typeof this.subjectValueIntersection !== 'undefined' && this.subjectValueIntersection !== null) {toReturn['subjectValueIntersection'] = 'toApiJson' in this.subjectValueIntersection ? (this.subjectValueIntersection as any).toApiJson() : this.subjectValueIntersection;}\n if (typeof this.subjectMissingValue !== 'undefined' && this.subjectMissingValue !== null) {toReturn['subjectMissingValue'] = 'toApiJson' in this.subjectMissingValue ? (this.subjectMissingValue as any).toApiJson() : this.subjectMissingValue;}\n if (typeof this.subjectResourceSubset !== 'undefined' && this.subjectResourceSubset !== null) {toReturn['subjectResourceSubset'] = 'toApiJson' in this.subjectResourceSubset ? (this.subjectResourceSubset as any).toApiJson() : this.subjectResourceSubset;}\n if (typeof this.subjectResourceFor !== 'undefined' && this.subjectResourceFor !== null) {toReturn['subjectResourceFor'] = 'toApiJson' in this.subjectResourceFor ? (this.subjectResourceFor as any).toApiJson() : this.subjectResourceFor;}\n if (typeof this.ifClause !== 'undefined' && this.ifClause !== null) {toReturn['ifClause'] = 'toApiJson' in this.ifClause ? (this.ifClause as any).toApiJson() : this.ifClause;}\n return toReturn;\n }\n}\n\nexport class ResourceIdentifier implements i.ResourceIdentifierInterface {\n identifiers: {[key: string]: ValueList};\n\n static fromProto(proto: any): ResourceIdentifier {\n let m = new ResourceIdentifier();\n m = Object.assign(m, proto);\n if (proto.identifiers) {m.identifiers = Object.keys(proto.identifiers).reduce<any>((obj, k) => { obj[k] = ValueList.fromProto(proto.identifiers[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.ResourceIdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.identifiers === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.identifiers !== 'undefined' && this.identifiers !== null) {toReturn['identifiers'] = 'toApiJson' in this.identifiers ? (this.identifiers as any).toApiJson() : this.identifiers;}\n return toReturn;\n }\n}\n\nexport class ResourceOwner implements i.ResourceOwnerInterface {\n appId: string;\n appName: string;\n\n static fromProto(proto: any): ResourceOwner {\n let m = new ResourceOwner();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ResourceOwnerInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.appId === 'undefined' &&\n typeof this.appName === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.appId !== 'undefined') {toReturn['appId'] = this.appId;}\n if (typeof this.appName !== 'undefined') {toReturn['appName'] = this.appName;}\n return toReturn;\n }\n}\n\nexport class SubjectMissingValueClause implements i.SubjectMissingValueClauseInterface {\n attributeName: string;\n\n static fromProto(proto: any): SubjectMissingValueClause {\n let m = new SubjectMissingValueClause();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectMissingValueClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.attributeName === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n return toReturn;\n }\n}\n\nexport class SubjectResourceForClause implements i.SubjectResourceForClauseInterface {\n attributeName: string;\n operator: e.ForOperator;\n rules: PolicyNode;\n\n static fromProto(proto: any): SubjectResourceForClause {\n let m = new SubjectResourceForClause();\n m = Object.assign(m, proto);\n if (proto.operator) {m.operator = enumStringToValue<e.ForOperator>(e.ForOperator, proto.operator);}\n if (proto.rules) {m.rules = PolicyNode.fromProto(proto.rules);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectResourceForClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.attributeName === 'undefined' &&\n typeof this.operator === 'undefined' &&\n typeof this.rules === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.operator !== 'undefined') {toReturn['operator'] = this.operator;}\n if (typeof this.rules !== 'undefined' && this.rules !== null) {toReturn['rules'] = 'toApiJson' in this.rules ? (this.rules as any).toApiJson() : this.rules;}\n return toReturn;\n }\n}\n\nexport class SubjectResourceIntersectionClause implements i.SubjectResourceIntersectionClauseInterface {\n attributeName: string;\n resourceAttributeName: string;\n\n static fromProto(proto: any): SubjectResourceIntersectionClause {\n let m = new SubjectResourceIntersectionClause();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectResourceIntersectionClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.attributeName === 'undefined' &&\n typeof this.resourceAttributeName === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.resourceAttributeName !== 'undefined') {toReturn['resourceAttributeName'] = this.resourceAttributeName;}\n return toReturn;\n }\n}\n\nexport class SubjectResourceSubsetClause implements i.SubjectResourceSubsetClauseInterface {\n attributeName: string;\n resourceAttributeName: string;\n\n static fromProto(proto: any): SubjectResourceSubsetClause {\n let m = new SubjectResourceSubsetClause();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectResourceSubsetClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.attributeName === 'undefined' &&\n typeof this.resourceAttributeName === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.resourceAttributeName !== 'undefined') {toReturn['resourceAttributeName'] = this.resourceAttributeName;}\n return toReturn;\n }\n}\n\nexport class SubjectValueIntersectionClause implements i.SubjectValueIntersectionClauseInterface {\n attributeName: string;\n attributeValue: string;\n structuredAttributeValue: Attribute;\n\n static fromProto(proto: any): SubjectValueIntersectionClause {\n let m = new SubjectValueIntersectionClause();\n m = Object.assign(m, proto);\n if (proto.structuredAttributeValue) {m.structuredAttributeValue = Attribute.fromProto(proto.structuredAttributeValue);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectValueIntersectionClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.attributeName === 'undefined' &&\n typeof this.attributeValue === 'undefined' &&\n typeof this.structuredAttributeValue === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.attributeValue !== 'undefined') {toReturn['attributeValue'] = this.attributeValue;}\n if (typeof this.structuredAttributeValue !== 'undefined' && this.structuredAttributeValue !== null) {toReturn['structuredAttributeValue'] = 'toApiJson' in this.structuredAttributeValue ? (this.structuredAttributeValue as any).toApiJson() : this.structuredAttributeValue;}\n return toReturn;\n }\n}\n\nexport class ValueList implements i.ValueListInterface {\n values: string[];\n\n static fromProto(proto: any): ValueList {\n let m = new ValueList();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ValueListInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.values === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.values !== 'undefined') {toReturn['values'] = this.values;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces/index';\n\nimport * as e from '../enums/index';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class SecurityLog implements i.SecurityLogInterface {\n userId: string;\n actionId: string;\n logId: string;\n description: string;\n created: Date;\n\n static fromProto(proto: any): SecurityLog {\n let m = new SecurityLog();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n return m;\n }\n\n constructor(kwargs?: i.SecurityLogInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userId === 'undefined' &&\n typeof this.actionId === 'undefined' &&\n typeof this.logId === 'undefined' &&\n typeof this.description === 'undefined' &&\n typeof this.created === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.actionId !== 'undefined') {toReturn['actionId'] = this.actionId;}\n if (typeof this.logId !== 'undefined') {toReturn['logId'] = this.logId;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces/index';\nimport { PublicKey } from './subjects';\nimport * as e from '../enums/index';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Identifier implements i.IdentifierInterface {\n subjectId: string;\n userId: string;\n\n static fromProto(proto: any): Identifier {\n let m = new Identifier();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.IdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjectId === 'undefined' &&\n typeof this.userId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n return toReturn;\n }\n}\n\nexport class NamespacedEmail implements i.NamespacedEmailInterface {\n namespace: string;\n email: string;\n\n static fromProto(proto: any): NamespacedEmail {\n let m = new NamespacedEmail();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.NamespacedEmailInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.namespace === 'undefined' &&\n typeof this.email === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n return toReturn;\n }\n}\n\nexport class NamespacedSession implements i.NamespacedSessionInterface {\n namespace: string;\n session: string;\n\n static fromProto(proto: any): NamespacedSession {\n let m = new NamespacedSession();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.NamespacedSessionInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.namespace === 'undefined' &&\n typeof this.session === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n return toReturn;\n }\n}\n\nexport class TypedExternalIdentifier implements i.TypedExternalIdentifierInterface {\n externalIdType: string;\n externalId: string;\n\n static fromProto(proto: any): TypedExternalIdentifier {\n let m = new TypedExternalIdentifier();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.TypedExternalIdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.externalIdType === 'undefined' &&\n typeof this.externalId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.externalIdType !== 'undefined') {toReturn['externalIdType'] = this.externalIdType;}\n if (typeof this.externalId !== 'undefined') {toReturn['externalId'] = this.externalId;}\n return toReturn;\n }\n}\n\nexport class User implements i.UserInterface {\n userId: string;\n namespace: string;\n email: string;\n created: Date;\n updated: Date;\n firstName: string;\n greetingName: string;\n lastName: string;\n languageCode: string;\n emailVerified: boolean;\n roles: string[];\n lastLogin: Date;\n publicKeys: PublicKey[];\n\n static fromProto(proto: any): User {\n let m = new User();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.lastLogin) {m.lastLogin = new Date(proto.lastLogin);}\n if (proto.publicKeys) {m.publicKeys = proto.publicKeys.map(PublicKey.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UserInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userId === 'undefined' &&\n typeof this.namespace === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.created === 'undefined' &&\n typeof this.updated === 'undefined' &&\n typeof this.firstName === 'undefined' &&\n typeof this.greetingName === 'undefined' &&\n typeof this.lastName === 'undefined' &&\n typeof this.languageCode === 'undefined' &&\n typeof this.emailVerified === 'undefined' &&\n typeof this.roles === 'undefined' &&\n typeof this.lastLogin === 'undefined' &&\n typeof this.publicKeys === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.firstName !== 'undefined') {toReturn['firstName'] = this.firstName;}\n if (typeof this.greetingName !== 'undefined') {toReturn['greetingName'] = this.greetingName;}\n if (typeof this.lastName !== 'undefined') {toReturn['lastName'] = this.lastName;}\n if (typeof this.languageCode !== 'undefined') {toReturn['languageCode'] = this.languageCode;}\n if (typeof this.emailVerified !== 'undefined') {toReturn['emailVerified'] = this.emailVerified;}\n if (typeof this.roles !== 'undefined') {toReturn['roles'] = this.roles;}\n if (typeof this.lastLogin !== 'undefined' && this.lastLogin !== null) {toReturn['lastLogin'] = 'toApiJson' in this.lastLogin ? (this.lastLogin as any).toApiJson() : this.lastLogin;}\n if (typeof this.publicKeys !== 'undefined' && this.publicKeys !== null) {toReturn['publicKeys'] = 'toApiJson' in this.publicKeys ? (this.publicKeys as any).toApiJson() : this.publicKeys;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces/index';\nimport { Context, StructAttribute, SubjectResult, Persona, Mutation, MultiValueAttribute, Query, SingleValueAttribute } from './subjects';\nimport { FieldMask } from './field-mask';\nimport { ResourceIdentifier, Policy, ResourceOwner, ValueList } from './resources';\nimport { SecurityLog } from './security-logs';\nimport { TypedExternalIdentifier, Identifier, User, NamespacedEmail, NamespacedSession } from './users';\nimport * as e from '../enums/index';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AccessResourceRequest implements i.AccessResourceRequestInterface {\n context: Context;\n subjectId: string;\n email: string;\n userId: string;\n session: string;\n ownerId: string;\n resourceId: string;\n resourceEntityIdentifier: {[key: string]: ValueList};\n accessScope: e.AccessScope[];\n resourceEntityIdentifiers: ResourceIdentifier[];\n resourceAttributes: StructAttribute;\n\n static fromProto(proto: any): AccessResourceRequest {\n let m = new AccessResourceRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.resourceEntityIdentifier) {m.resourceEntityIdentifier = Object.keys(proto.resourceEntityIdentifier).reduce<any>((obj, k) => { obj[k] = ValueList.fromProto(proto.resourceEntityIdentifier[k]); return obj; }, {});}\n if (proto.accessScope) {m.accessScope = proto.accessScope.map((v: string) => enumStringToValue<e.AccessScope>(e.AccessScope, v));}\n if (proto.resourceEntityIdentifiers) {m.resourceEntityIdentifiers = proto.resourceEntityIdentifiers.map(ResourceIdentifier.fromProto);}\n if (proto.resourceAttributes) {m.resourceAttributes = StructAttribute.fromProto(proto.resourceAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.AccessResourceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.subjectId === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.userId === 'undefined' &&\n typeof this.session === 'undefined' &&\n typeof this.ownerId === 'undefined' &&\n typeof this.resourceId === 'undefined' &&\n typeof this.resourceEntityIdentifier === 'undefined' &&\n typeof this.accessScope === 'undefined' &&\n typeof this.resourceEntityIdentifiers === 'undefined' &&\n typeof this.resourceAttributes === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n if (typeof this.ownerId !== 'undefined') {toReturn['ownerId'] = this.ownerId;}\n if (typeof this.resourceId !== 'undefined') {toReturn['resourceId'] = this.resourceId;}\n if (typeof this.resourceEntityIdentifier !== 'undefined' && this.resourceEntityIdentifier !== null) {toReturn['resourceEntityIdentifier'] = 'toApiJson' in this.resourceEntityIdentifier ? (this.resourceEntityIdentifier as any).toApiJson() : this.resourceEntityIdentifier;}\n if (typeof this.accessScope !== 'undefined') {toReturn['accessScope'] = this.accessScope;}\n if (typeof this.resourceEntityIdentifiers !== 'undefined' && this.resourceEntityIdentifiers !== null) {toReturn['resourceEntityIdentifiers'] = 'toApiJson' in this.resourceEntityIdentifiers ? (this.resourceEntityIdentifiers as any).toApiJson() : this.resourceEntityIdentifiers;}\n if (typeof this.resourceAttributes !== 'undefined' && this.resourceAttributes !== null) {toReturn['resourceAttributes'] = 'toApiJson' in this.resourceAttributes ? (this.resourceAttributes as any).toApiJson() : this.resourceAttributes;}\n return toReturn;\n }\n}\n\nexport class AddKeyRequest implements i.AddKeyRequestInterface {\n email: string;\n context: Context;\n algorithmType: e.AlgorithmType;\n userIdentifier: UserIdentifier;\n\n static fromProto(proto: any): AddKeyRequest {\n let m = new AddKeyRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.algorithmType) {m.algorithmType = enumStringToValue<e.AlgorithmType>(e.AlgorithmType, proto.algorithmType);}\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.AddKeyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.email === 'undefined' &&\n typeof this.context === 'undefined' &&\n typeof this.algorithmType === 'undefined' &&\n typeof this.userIdentifier === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.algorithmType !== 'undefined') {toReturn['algorithmType'] = this.algorithmType;}\n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n return toReturn;\n }\n}\n\nexport class AddKeyResponse implements i.AddKeyResponseInterface {\n privateKey: string;\n keyId: string;\n\n static fromProto(proto: any): AddKeyResponse {\n let m = new AddKeyResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.AddKeyResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.privateKey === 'undefined' &&\n typeof this.keyId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.privateKey !== 'undefined') {toReturn['privateKey'] = this.privateKey;}\n if (typeof this.keyId !== 'undefined') {toReturn['keyId'] = this.keyId;}\n return toReturn;\n }\n}\n\nexport class AddMultiUserRestrictionRequest implements i.AddMultiUserRestrictionRequestInterface {\n userIdentifiers: UserIdentifier[];\n restrictionType: e.RestrictionType;\n\n static fromProto(proto: any): AddMultiUserRestrictionRequest {\n let m = new AddMultiUserRestrictionRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n if (proto.restrictionType) {m.restrictionType = enumStringToValue<e.RestrictionType>(e.RestrictionType, proto.restrictionType);}\n return m;\n }\n\n constructor(kwargs?: i.AddMultiUserRestrictionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userIdentifiers === 'undefined' &&\n typeof this.restrictionType === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n if (typeof this.restrictionType !== 'undefined') {toReturn['restrictionType'] = this.restrictionType;}\n return toReturn;\n }\n}\n\nexport class AuthenticateSubjectRequest implements i.AuthenticateSubjectRequestInterface {\n context: Context;\n email: string;\n password: string;\n\n static fromProto(proto: any): AuthenticateSubjectRequest {\n let m = new AuthenticateSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.AuthenticateSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.password === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n return toReturn;\n }\n}\n\nexport class ChangeSubjectEmailRequest implements i.ChangeSubjectEmailRequestInterface {\n context: Context;\n subjectId: string;\n newEmail: string;\n\n static fromProto(proto: any): ChangeSubjectEmailRequest {\n let m = new ChangeSubjectEmailRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.ChangeSubjectEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.subjectId === 'undefined' &&\n typeof this.newEmail === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.newEmail !== 'undefined') {toReturn['newEmail'] = this.newEmail;}\n return toReturn;\n }\n}\n\nexport class CreateExternalIDRequest implements i.CreateExternalIDRequestInterface {\n userIdentifier: UserIdentifier;\n typedExternalIdentifier: TypedExternalIdentifier;\n\n static fromProto(proto: any): CreateExternalIDRequest {\n let m = new CreateExternalIDRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n if (proto.typedExternalIdentifier) {m.typedExternalIdentifier = TypedExternalIdentifier.fromProto(proto.typedExternalIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.CreateExternalIDRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userIdentifier === 'undefined' &&\n typeof this.typedExternalIdentifier === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n if (typeof this.typedExternalIdentifier !== 'undefined' && this.typedExternalIdentifier !== null) {toReturn['typedExternalIdentifier'] = 'toApiJson' in this.typedExternalIdentifier ? (this.typedExternalIdentifier as any).toApiJson() : this.typedExternalIdentifier;}\n return toReturn;\n }\n}\n\nexport class CreateSessionRequest implements i.CreateSessionRequestInterface {\n context: Context;\n oauthCredentials: OAuthCredentials;\n subjectCredentials: SubjectCredentials;\n\n static fromProto(proto: any): CreateSessionRequest {\n let m = new CreateSessionRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.oauthCredentials) {m.oauthCredentials = OAuthCredentials.fromProto(proto.oauthCredentials);}\n if (proto.subjectCredentials) {m.subjectCredentials = SubjectCredentials.fromProto(proto.subjectCredentials);}\n return m;\n }\n\n constructor(kwargs?: i.CreateSessionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.oauthCredentials === 'undefined' &&\n typeof this.subjectCredentials === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.oauthCredentials !== 'undefined' && this.oauthCredentials !== null) {toReturn['oauthCredentials'] = 'toApiJson' in this.oauthCredentials ? (this.oauthCredentials as any).toApiJson() : this.oauthCredentials;}\n if (typeof this.subjectCredentials !== 'undefined' && this.subjectCredentials !== null) {toReturn['subjectCredentials'] = 'toApiJson' in this.subjectCredentials ? (this.subjectCredentials as any).toApiJson() : this.subjectCredentials;}\n return toReturn;\n }\n}\n\nexport class CreateSessionResponse implements i.CreateSessionResponseInterface {\n session: string;\n\n static fromProto(proto: any): CreateSessionResponse {\n let m = new CreateSessionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateSessionResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.session === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n return toReturn;\n }\n}\n\nexport class CreateTemporarySubjectRequest implements i.CreateTemporarySubjectRequestInterface {\n context: Context;\n subject: string;\n attributes: StructAttribute;\n\n static fromProto(proto: any): CreateTemporarySubjectRequest {\n let m = new CreateTemporarySubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.attributes) {m.attributes = StructAttribute.fromProto(proto.attributes);}\n return m;\n }\n\n constructor(kwargs?: i.CreateTemporarySubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.subject === 'undefined' &&\n typeof this.attributes === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subject !== 'undefined') {toReturn['subject'] = this.subject;}\n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n return toReturn;\n }\n}\n\nexport class CreateTemporarySubjectResponse implements i.CreateTemporarySubjectResponseInterface {\n session: string;\n\n static fromProto(proto: any): CreateTemporarySubjectResponse {\n let m = new CreateTemporarySubjectResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateTemporarySubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.session === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n return toReturn;\n }\n}\n\nexport class DeleteSubjectRequest implements i.DeleteSubjectRequestInterface {\n context: Context;\n subjectId: string;\n\n static fromProto(proto: any): DeleteSubjectRequest {\n let m = new DeleteSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.DeleteSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.subjectId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class DeleteUserRequest implements i.DeleteUserRequestInterface {\n userIdentifier: UserIdentifier;\n\n static fromProto(proto: any): DeleteUserRequest {\n let m = new DeleteUserRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.DeleteUserRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userIdentifier === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n return toReturn;\n }\n}\n\nexport class ListSecurityLogsRequestFilters implements i.ListSecurityLogsRequestFiltersInterface {\n actionId: string;\n\n static fromProto(proto: any): ListSecurityLogsRequestFilters {\n let m = new ListSecurityLogsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListSecurityLogsRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.actionId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.actionId !== 'undefined') {toReturn['actionId'] = this.actionId;}\n return toReturn;\n }\n}\n\nexport class GetImpersonationTokenRequest implements i.GetImpersonationTokenRequestInterface {\n impersonatee: UserIdentifier;\n impersonator: UserIdentifier;\n\n static fromProto(proto: any): GetImpersonationTokenRequest {\n let m = new GetImpersonationTokenRequest();\n m = Object.assign(m, proto);\n if (proto.impersonatee) {m.impersonatee = UserIdentifier.fromProto(proto.impersonatee);}\n if (proto.impersonator) {m.impersonator = UserIdentifier.fromProto(proto.impersonator);}\n return m;\n }\n\n constructor(kwargs?: i.GetImpersonationTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.impersonatee === 'undefined' &&\n typeof this.impersonator === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.impersonatee !== 'undefined' && this.impersonatee !== null) {toReturn['impersonatee'] = 'toApiJson' in this.impersonatee ? (this.impersonatee as any).toApiJson() : this.impersonatee;}\n if (typeof this.impersonator !== 'undefined' && this.impersonator !== null) {toReturn['impersonator'] = 'toApiJson' in this.impersonator ? (this.impersonator as any).toApiJson() : this.impersonator;}\n return toReturn;\n }\n}\n\nexport class GetImpersonationTokenResponse implements i.GetImpersonationTokenResponseInterface {\n token: string;\n\n static fromProto(proto: any): GetImpersonationTokenResponse {\n let m = new GetImpersonationTokenResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetImpersonationTokenResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.token === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class GetMultiExternalIDRequest implements i.GetMultiExternalIDRequestInterface {\n userIdentifiers: UserIdentifier[];\n externalIdType: string;\n\n static fromProto(proto: any): GetMultiExternalIDRequest {\n let m = new GetMultiExternalIDRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiExternalIDRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userIdentifiers === 'undefined' &&\n typeof this.externalIdType === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n if (typeof this.externalIdType !== 'undefined') {toReturn['externalIdType'] = this.externalIdType;}\n return toReturn;\n }\n}\n\nexport class GetMultiExternalIDResponse implements i.GetMultiExternalIDResponseInterface {\n externalIds: string[];\n\n static fromProto(proto: any): GetMultiExternalIDResponse {\n let m = new GetMultiExternalIDResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiExternalIDResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.externalIds === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.externalIds !== 'undefined') {toReturn['externalIds'] = this.externalIds;}\n return toReturn;\n }\n}\n\nexport class GetMultiUsersRequest implements i.GetMultiUsersRequestInterface {\n userIdentifiers: UserIdentifier[];\n\n static fromProto(proto: any): GetMultiUsersRequest {\n let m = new GetMultiUsersRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiUsersRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userIdentifiers === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n return toReturn;\n }\n}\n\nexport class GetMultiUsersResponse implements i.GetMultiUsersResponseInterface {\n users: GetMultiUsersResponseUserContainer[];\n\n static fromProto(proto: any): GetMultiUsersResponse {\n let m = new GetMultiUsersResponse();\n m = Object.assign(m, proto);\n if (proto.users) {m.users = proto.users.map(GetMultiUsersResponseUserContainer.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiUsersResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.users === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.users !== 'undefined' && this.users !== null) {toReturn['users'] = 'toApiJson' in this.users ? (this.users as any).toApiJson() : this.users;}\n return toReturn;\n }\n}\n\nexport class GetResetPasswordTokenRequest implements i.GetResetPasswordTokenRequestInterface {\n context: Context;\n email: string;\n\n static fromProto(proto: any): GetResetPasswordTokenRequest {\n let m = new GetResetPasswordTokenRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.GetResetPasswordTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.email === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n return toReturn;\n }\n}\n\nexport class GetSessionForUserRequest implements i.GetSessionForUserRequestInterface {\n subjectId: string;\n email: string;\n userId: string;\n refreshToken: string;\n clientAssertion: string;\n federatedIdentityProvider: string;\n scopes: string[];\n clientId: string;\n nonce: string;\n\n static fromProto(proto: any): GetSessionForUserRequest {\n let m = new GetSessionForUserRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetSessionForUserRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjectId === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.userId === 'undefined' &&\n typeof this.refreshToken === 'undefined' &&\n typeof this.clientAssertion === 'undefined' &&\n typeof this.federatedIdentityProvider === 'undefined' &&\n typeof this.scopes === 'undefined' &&\n typeof this.clientId === 'undefined' &&\n typeof this.nonce === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.refreshToken !== 'undefined') {toReturn['refreshToken'] = this.refreshToken;}\n if (typeof this.clientAssertion !== 'undefined') {toReturn['clientAssertion'] = this.clientAssertion;}\n if (typeof this.federatedIdentityProvider !== 'undefined') {toReturn['federatedIdentityProvider'] = this.federatedIdentityProvider;}\n if (typeof this.scopes !== 'undefined') {toReturn['scopes'] = this.scopes;}\n if (typeof this.clientId !== 'undefined') {toReturn['clientId'] = this.clientId;}\n if (typeof this.nonce !== 'undefined') {toReturn['nonce'] = this.nonce;}\n return toReturn;\n }\n}\n\nexport class GetSessionForUserResponse implements i.GetSessionForUserResponseInterface {\n session: string;\n accessToken: string;\n refreshToken: string;\n\n static fromProto(proto: any): GetSessionForUserResponse {\n let m = new GetSessionForUserResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetSessionForUserResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.session === 'undefined' &&\n typeof this.accessToken === 'undefined' &&\n typeof this.refreshToken === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n if (typeof this.accessToken !== 'undefined') {toReturn['accessToken'] = this.accessToken;}\n if (typeof this.refreshToken !== 'undefined') {toReturn['refreshToken'] = this.refreshToken;}\n return toReturn;\n }\n}\n\nexport class GetSessionTokenRequest implements i.GetSessionTokenRequestInterface {\n token: string;\n\n static fromProto(proto: any): GetSessionTokenRequest {\n let m = new GetSessionTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetSessionTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.token === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class GetShortLivedTokenRequest implements i.GetShortLivedTokenRequestInterface {\n context: Context;\n email: string;\n\n static fromProto(proto: any): GetShortLivedTokenRequest {\n let m = new GetShortLivedTokenRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.GetShortLivedTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.email === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n return toReturn;\n }\n}\n\nexport class GetSubjectBySessionRequest implements i.GetSubjectBySessionRequestInterface {\n session: string;\n context: Context;\n\n static fromProto(proto: any): GetSubjectBySessionRequest {\n let m = new GetSubjectBySessionRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectBySessionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.session === 'undefined' &&\n typeof this.context === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n return toReturn;\n }\n}\n\nexport class GetSubjectContextRequest implements i.GetSubjectContextRequestInterface {\n subjectId: string;\n\n static fromProto(proto: any): GetSubjectContextRequest {\n let m = new GetSubjectContextRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectContextRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjectId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class GetSubjectContextResponse implements i.GetSubjectContextResponseInterface {\n context: Context;\n\n static fromProto(proto: any): GetSubjectContextResponse {\n let m = new GetSubjectContextResponse();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectContextResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n return toReturn;\n }\n}\n\nexport class GetSubjectResponse implements i.GetSubjectResponseInterface {\n subject: SubjectResult;\n\n static fromProto(proto: any): GetSubjectResponse {\n let m = new GetSubjectResponse();\n m = Object.assign(m, proto);\n if (proto.subject) {m.subject = SubjectResult.fromProto(proto.subject);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subject === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subject !== 'undefined' && this.subject !== null) {toReturn['subject'] = 'toApiJson' in this.subject ? (this.subject as any).toApiJson() : this.subject;}\n return toReturn;\n }\n}\n\nexport class GetSubjectsByEmailRequest implements i.GetSubjectsByEmailRequestInterface {\n context: Context;\n emails: string[];\n fieldMask: FieldMask;\n\n static fromProto(proto: any): GetSubjectsByEmailRequest {\n let m = new GetSubjectsByEmailRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectsByEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.emails === 'undefined' &&\n typeof this.fieldMask === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.emails !== 'undefined') {toReturn['emails'] = this.emails;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n return toReturn;\n }\n}\n\nexport class GetSubjectsRequest implements i.GetSubjectsRequestInterface {\n context: Context;\n subjectIds: string[];\n fieldMask: FieldMask;\n identifiers: Identifier[];\n\n static fromProto(proto: any): GetSubjectsRequest {\n let m = new GetSubjectsRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n if (proto.identifiers) {m.identifiers = proto.identifiers.map(Identifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.subjectIds === 'undefined' &&\n typeof this.fieldMask === 'undefined' &&\n typeof this.identifiers === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectIds !== 'undefined') {toReturn['subjectIds'] = this.subjectIds;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n if (typeof this.identifiers !== 'undefined' && this.identifiers !== null) {toReturn['identifiers'] = 'toApiJson' in this.identifiers ? (this.identifiers as any).toApiJson() : this.identifiers;}\n return toReturn;\n }\n}\n\nexport class GetSubjectsResponse implements i.GetSubjectsResponseInterface {\n subjects: SubjectResult[];\n\n static fromProto(proto: any): GetSubjectsResponse {\n let m = new GetSubjectsResponse();\n m = Object.assign(m, proto);\n if (proto.subjects) {m.subjects = proto.subjects.map(SubjectResult.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjects === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjects !== 'undefined' && this.subjects !== null) {toReturn['subjects'] = 'toApiJson' in this.subjects ? (this.subjects as any).toApiJson() : this.subjects;}\n return toReturn;\n }\n}\n\nexport class GetTokenRequest implements i.GetTokenRequestInterface {\n\n static fromProto(proto: any): GetTokenRequest {\n let m = new GetTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n return toReturn;\n }\n}\n\nexport class GetTokenResponse implements i.GetTokenResponseInterface {\n token: string;\n\n static fromProto(proto: any): GetTokenResponse {\n let m = new GetTokenResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetTokenResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.token === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class IAMListPersonasRequest implements i.IAMListPersonasRequestInterface {\n userIdentifier: UserIdentifier;\n cursor: string;\n pageSize: number;\n type: string;\n namespace: string;\n\n static fromProto(proto: any): IAMListPersonasRequest {\n let m = new IAMListPersonasRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.IAMListPersonasRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userIdentifier === 'undefined' &&\n typeof this.cursor === 'undefined' &&\n typeof this.pageSize === 'undefined' &&\n typeof this.type === 'undefined' &&\n typeof this.namespace === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n return toReturn;\n }\n}\n\nexport class ListPersonasByEmailRequest implements i.ListPersonasByEmailRequestInterface {\n email: string;\n cursor: string;\n pageSize: number;\n type: string;\n namespace: string;\n\n static fromProto(proto: any): ListPersonasByEmailRequest {\n let m = new ListPersonasByEmailRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListPersonasByEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.email === 'undefined' &&\n typeof this.cursor === 'undefined' &&\n typeof this.pageSize === 'undefined' &&\n typeof this.type === 'undefined' &&\n typeof this.namespace === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n return toReturn;\n }\n}\n\nexport class ListPersonasRequest implements i.ListPersonasRequestInterface {\n session: string;\n cursor: string;\n pageSize: number;\n type: string;\n namespace: string;\n\n static fromProto(proto: any): ListPersonasRequest {\n let m = new ListPersonasRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListPersonasRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.session === 'undefined' &&\n typeof this.cursor === 'undefined' &&\n typeof this.pageSize === 'undefined' &&\n typeof this.type === 'undefined' &&\n typeof this.namespace === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n return toReturn;\n }\n}\n\nexport class ListPersonasResponse implements i.ListPersonasResponseInterface {\n personas: Persona[];\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): ListPersonasResponse {\n let m = new ListPersonasResponse();\n m = Object.assign(m, proto);\n if (proto.personas) {m.personas = proto.personas.map(Persona.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListPersonasResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.personas === 'undefined' &&\n typeof this.nextCursor === 'undefined' &&\n typeof this.hasMore === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.personas !== 'undefined' && this.personas !== null) {toReturn['personas'] = 'toApiJson' in this.personas ? (this.personas as any).toApiJson() : this.personas;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\nexport class ListSecurityLogsRequest implements i.ListSecurityLogsRequestInterface {\n userId: string;\n filters: ListSecurityLogsRequestFilters;\n pageSize: number;\n cursor: string;\n\n static fromProto(proto: any): ListSecurityLogsRequest {\n let m = new ListSecurityLogsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListSecurityLogsRequestFilters.fromProto(proto.filters);}\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListSecurityLogsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userId === 'undefined' &&\n typeof this.filters === 'undefined' &&\n typeof this.pageSize === 'undefined' &&\n typeof this.cursor === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n return toReturn;\n }\n}\n\nexport class ListSecurityLogsResponse implements i.ListSecurityLogsResponseInterface {\n logs: SecurityLog[];\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): ListSecurityLogsResponse {\n let m = new ListSecurityLogsResponse();\n m = Object.assign(m, proto);\n if (proto.logs) {m.logs = proto.logs.map(SecurityLog.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListSecurityLogsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.logs === 'undefined' &&\n typeof this.nextCursor === 'undefined' &&\n typeof this.hasMore === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.logs !== 'undefined' && this.logs !== null) {toReturn['logs'] = 'toApiJson' in this.logs ? (this.logs as any).toApiJson() : this.logs;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\nexport class ListUsersRequest implements i.ListUsersRequestInterface {\n namespace: string;\n email: string;\n cursor: string;\n pageSize: number;\n userFilter: UserFilter;\n sortOptions: UserSortOptions[];\n\n static fromProto(proto: any): ListUsersRequest {\n let m = new ListUsersRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n if (proto.userFilter) {m.userFilter = UserFilter.fromProto(proto.userFilter);}\n if (proto.sortOptions) {m.sortOptions = proto.sortOptions.map(UserSortOptions.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListUsersRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.namespace === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.cursor === 'undefined' &&\n typeof this.pageSize === 'undefined' &&\n typeof this.userFilter === 'undefined' &&\n typeof this.sortOptions === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.userFilter !== 'undefined' && this.userFilter !== null) {toReturn['userFilter'] = 'toApiJson' in this.userFilter ? (this.userFilter as any).toApiJson() : this.userFilter;}\n if (typeof this.sortOptions !== 'undefined' && this.sortOptions !== null) {toReturn['sortOptions'] = 'toApiJson' in this.sortOptions ? (this.sortOptions as any).toApiJson() : this.sortOptions;}\n return toReturn;\n }\n}\n\nexport class ListUsersResponse implements i.ListUsersResponseInterface {\n users: User[];\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): ListUsersResponse {\n let m = new ListUsersResponse();\n m = Object.assign(m, proto);\n if (proto.users) {m.users = proto.users.map(User.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListUsersResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.users === 'undefined' &&\n typeof this.nextCursor === 'undefined' &&\n typeof this.hasMore === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.users !== 'undefined' && this.users !== null) {toReturn['users'] = 'toApiJson' in this.users ? (this.users as any).toApiJson() : this.users;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\nexport class MutateAttributesRequest implements i.MutateAttributesRequestInterface {\n context: Context;\n subjectId: string;\n mutations: Mutation[];\n\n static fromProto(proto: any): MutateAttributesRequest {\n let m = new MutateAttributesRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.mutations) {m.mutations = proto.mutations.map(Mutation.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.MutateAttributesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.subjectId === 'undefined' &&\n typeof this.mutations === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {toReturn['mutations'] = 'toApiJson' in this.mutations ? (this.mutations as any).toApiJson() : this.mutations;}\n return toReturn;\n }\n}\n\nexport class OAuthCredentials implements i.OAuthCredentialsInterface {\n provider: string;\n idToken: string;\n accessToken: string;\n\n static fromProto(proto: any): OAuthCredentials {\n let m = new OAuthCredentials();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.OAuthCredentialsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.provider === 'undefined' &&\n typeof this.idToken === 'undefined' &&\n typeof this.accessToken === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.provider !== 'undefined') {toReturn['provider'] = this.provider;}\n if (typeof this.idToken !== 'undefined') {toReturn['idToken'] = this.idToken;}\n if (typeof this.accessToken !== 'undefined') {toReturn['accessToken'] = this.accessToken;}\n return toReturn;\n }\n}\n\nexport class UpdateUserRequestOperation implements i.UpdateUserRequestOperationInterface {\n firstName: string;\n greetingName: string;\n lastName: string;\n languageCode: string;\n\n static fromProto(proto: any): UpdateUserRequestOperation {\n let m = new UpdateUserRequestOperation();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateUserRequestOperationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.firstName === 'undefined' &&\n typeof this.greetingName === 'undefined' &&\n typeof this.lastName === 'undefined' &&\n typeof this.languageCode === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.firstName !== 'undefined') {toReturn['firstName'] = this.firstName;}\n if (typeof this.greetingName !== 'undefined') {toReturn['greetingName'] = this.greetingName;}\n if (typeof this.lastName !== 'undefined') {toReturn['lastName'] = this.lastName;}\n if (typeof this.languageCode !== 'undefined') {toReturn['languageCode'] = this.languageCode;}\n return toReturn;\n }\n}\n\nexport class RegisterPolicyRequest implements i.RegisterPolicyRequestInterface {\n policy: Policy;\n\n static fromProto(proto: any): RegisterPolicyRequest {\n let m = new RegisterPolicyRequest();\n m = Object.assign(m, proto);\n if (proto.policy) {m.policy = Policy.fromProto(proto.policy);}\n return m;\n }\n\n constructor(kwargs?: i.RegisterPolicyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.policy === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.policy !== 'undefined' && this.policy !== null) {toReturn['policy'] = 'toApiJson' in this.policy ? (this.policy as any).toApiJson() : this.policy;}\n return toReturn;\n }\n}\n\nexport class RegisterResourceOwnerRequest implements i.RegisterResourceOwnerRequestInterface {\n owner: ResourceOwner;\n\n static fromProto(proto: any): RegisterResourceOwnerRequest {\n let m = new RegisterResourceOwnerRequest();\n m = Object.assign(m, proto);\n if (proto.owner) {m.owner = ResourceOwner.fromProto(proto.owner);}\n return m;\n }\n\n constructor(kwargs?: i.RegisterResourceOwnerRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.owner === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.owner !== 'undefined' && this.owner !== null) {toReturn['owner'] = 'toApiJson' in this.owner ? (this.owner as any).toApiJson() : this.owner;}\n return toReturn;\n }\n}\n\nexport class RegisterResourceRequest implements i.RegisterResourceRequestInterface {\n appId: string;\n resourceId: string;\n resourceName: string;\n resourceOwnerServiceUrl: string;\n requiredResourceParams: string[];\n resourceOwnerAudience: string;\n\n static fromProto(proto: any): RegisterResourceRequest {\n let m = new RegisterResourceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RegisterResourceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.appId === 'undefined' &&\n typeof this.resourceId === 'undefined' &&\n typeof this.resourceName === 'undefined' &&\n typeof this.resourceOwnerServiceUrl === 'undefined' &&\n typeof this.requiredResourceParams === 'undefined' &&\n typeof this.resourceOwnerAudience === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.appId !== 'undefined') {toReturn['appId'] = this.appId;}\n if (typeof this.resourceId !== 'undefined') {toReturn['resourceId'] = this.resourceId;}\n if (typeof this.resourceName !== 'undefined') {toReturn['resourceName'] = this.resourceName;}\n if (typeof this.resourceOwnerServiceUrl !== 'undefined') {toReturn['resourceOwnerServiceUrl'] = this.resourceOwnerServiceUrl;}\n if (typeof this.requiredResourceParams !== 'undefined') {toReturn['requiredResourceParams'] = this.requiredResourceParams;}\n if (typeof this.resourceOwnerAudience !== 'undefined') {toReturn['resourceOwnerAudience'] = this.resourceOwnerAudience;}\n return toReturn;\n }\n}\n\nexport class RegisterSubjectRequest implements i.RegisterSubjectRequestInterface {\n context: Context;\n email: string;\n password: string;\n attributes: MultiValueAttribute[];\n structAttributes: StructAttribute;\n\n static fromProto(proto: any): RegisterSubjectRequest {\n let m = new RegisterSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.attributes) {m.attributes = proto.attributes.map(MultiValueAttribute.fromProto);}\n if (proto.structAttributes) {m.structAttributes = StructAttribute.fromProto(proto.structAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.RegisterSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.password === 'undefined' &&\n typeof this.attributes === 'undefined' &&\n typeof this.structAttributes === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n if (typeof this.structAttributes !== 'undefined' && this.structAttributes !== null) {toReturn['structAttributes'] = 'toApiJson' in this.structAttributes ? (this.structAttributes as any).toApiJson() : this.structAttributes;}\n return toReturn;\n }\n}\n\nexport class RegisterSubjectResponse implements i.RegisterSubjectResponseInterface {\n subjectId: string;\n\n static fromProto(proto: any): RegisterSubjectResponse {\n let m = new RegisterSubjectResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RegisterSubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjectId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class RemoveKeyRequest implements i.RemoveKeyRequestInterface {\n email: string;\n context: Context;\n keyId: string;\n userIdentifier: UserIdentifier;\n\n static fromProto(proto: any): RemoveKeyRequest {\n let m = new RemoveKeyRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.RemoveKeyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.email === 'undefined' &&\n typeof this.context === 'undefined' &&\n typeof this.keyId === 'undefined' &&\n typeof this.userIdentifier === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.keyId !== 'undefined') {toReturn['keyId'] = this.keyId;}\n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n return toReturn;\n }\n}\n\nexport class RemoveMultiUserRestrictionRequest implements i.RemoveMultiUserRestrictionRequestInterface {\n userIdentifiers: UserIdentifier[];\n restrictionType: e.RestrictionType;\n\n static fromProto(proto: any): RemoveMultiUserRestrictionRequest {\n let m = new RemoveMultiUserRestrictionRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n if (proto.restrictionType) {m.restrictionType = enumStringToValue<e.RestrictionType>(e.RestrictionType, proto.restrictionType);}\n return m;\n }\n\n constructor(kwargs?: i.RemoveMultiUserRestrictionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userIdentifiers === 'undefined' &&\n typeof this.restrictionType === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n if (typeof this.restrictionType !== 'undefined') {toReturn['restrictionType'] = this.restrictionType;}\n return toReturn;\n }\n}\n\nexport class ResetPasswordTokenResponse implements i.ResetPasswordTokenResponseInterface {\n token: string;\n\n static fromProto(proto: any): ResetPasswordTokenResponse {\n let m = new ResetPasswordTokenResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ResetPasswordTokenResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.token === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class ResetPasswordWithTokenRequest implements i.ResetPasswordWithTokenRequestInterface {\n token: string;\n password: string;\n\n static fromProto(proto: any): ResetPasswordWithTokenRequest {\n let m = new ResetPasswordWithTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ResetPasswordWithTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.token === 'undefined' &&\n typeof this.password === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n return toReturn;\n }\n}\n\nexport class ResetSubjectPasswordRequest implements i.ResetSubjectPasswordRequestInterface {\n context: Context;\n subjectId: string;\n newPassword: string;\n\n static fromProto(proto: any): ResetSubjectPasswordRequest {\n let m = new ResetSubjectPasswordRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.ResetSubjectPasswordRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.subjectId === 'undefined' &&\n typeof this.newPassword === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.newPassword !== 'undefined') {toReturn['newPassword'] = this.newPassword;}\n return toReturn;\n }\n}\n\nexport class AccessResourceRequestResourceEntityIdentifierEntry implements i.AccessResourceRequestResourceEntityIdentifierEntryInterface {\n key: string;\n value: ValueList;\n\n static fromProto(proto: any): AccessResourceRequestResourceEntityIdentifierEntry {\n let m = new AccessResourceRequestResourceEntityIdentifierEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = ValueList.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.AccessResourceRequestResourceEntityIdentifierEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.key === 'undefined' &&\n typeof this.value === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class SearchSubjectRequest implements i.SearchSubjectRequestInterface {\n context: Context;\n query: Query;\n filters: SingleValueAttribute[];\n orderBy: string;\n orderByDirection: e.OrderByDirection;\n cursor: string;\n pageSize: number;\n fieldMask: FieldMask;\n\n static fromProto(proto: any): SearchSubjectRequest {\n let m = new SearchSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.query) {m.query = Query.fromProto(proto.query);}\n if (proto.filters) {m.filters = proto.filters.map(SingleValueAttribute.fromProto);}\n if (proto.orderByDirection) {m.orderByDirection = enumStringToValue<e.OrderByDirection>(e.OrderByDirection, proto.orderByDirection);}\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n return m;\n }\n\n constructor(kwargs?: i.SearchSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.context === 'undefined' &&\n typeof this.query === 'undefined' &&\n typeof this.filters === 'undefined' &&\n typeof this.orderBy === 'undefined' &&\n typeof this.orderByDirection === 'undefined' &&\n typeof this.cursor === 'undefined' &&\n typeof this.pageSize === 'undefined' &&\n typeof this.fieldMask === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.query !== 'undefined' && this.query !== null) {toReturn['query'] = 'toApiJson' in this.query ? (this.query as any).toApiJson() : this.query;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.orderBy !== 'undefined') {toReturn['orderBy'] = this.orderBy;}\n if (typeof this.orderByDirection !== 'undefined') {toReturn['orderByDirection'] = this.orderByDirection;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n return toReturn;\n }\n}\n\nexport class SearchSubjectResponse implements i.SearchSubjectResponseInterface {\n result: SubjectResult[];\n nextCursor: string;\n hasMore: boolean;\n totalResults: number;\n\n static fromProto(proto: any): SearchSubjectResponse {\n let m = new SearchSubjectResponse();\n m = Object.assign(m, proto);\n if (proto.result) {m.result = proto.result.map(SubjectResult.fromProto);}\n if (proto.totalResults) {m.totalResults = parseInt(proto.totalResults, 10);}\n return m;\n }\n\n constructor(kwargs?: i.SearchSubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.result === 'undefined' &&\n typeof this.nextCursor === 'undefined' &&\n typeof this.hasMore === 'undefined' &&\n typeof this.totalResults === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.result !== 'undefined' && this.result !== null) {toReturn['result'] = 'toApiJson' in this.result ? (this.result as any).toApiJson() : this.result;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n if (typeof this.totalResults !== 'undefined') {toReturn['totalResults'] = this.totalResults;}\n return toReturn;\n }\n}\n\nexport class SendEmailVerificationRequest implements i.SendEmailVerificationRequestInterface {\n userId: string;\n\n static fromProto(proto: any): SendEmailVerificationRequest {\n let m = new SendEmailVerificationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SendEmailVerificationRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n return toReturn;\n }\n}\n\nexport class SubjectCredentials implements i.SubjectCredentialsInterface {\n email: string;\n password: string;\n\n static fromProto(proto: any): SubjectCredentials {\n let m = new SubjectCredentials();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectCredentialsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.email === 'undefined' &&\n typeof this.password === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n return toReturn;\n }\n}\n\nexport class UpdateUserRequest implements i.UpdateUserRequestInterface {\n userId: string;\n operations: UpdateUserRequestOperation[];\n\n static fromProto(proto: any): UpdateUserRequest {\n let m = new UpdateUserRequest();\n m = Object.assign(m, proto);\n if (proto.operations) {m.operations = proto.operations.map(UpdateUserRequestOperation.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateUserRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userId === 'undefined' &&\n typeof this.operations === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.operations !== 'undefined' && this.operations !== null) {toReturn['operations'] = 'toApiJson' in this.operations ? (this.operations as any).toApiJson() : this.operations;}\n return toReturn;\n }\n}\n\nexport class GetMultiUsersResponseUserContainer implements i.GetMultiUsersResponseUserContainerInterface {\n user: User;\n\n static fromProto(proto: any): GetMultiUsersResponseUserContainer {\n let m = new GetMultiUsersResponseUserContainer();\n m = Object.assign(m, proto);\n if (proto.user) {m.user = User.fromProto(proto.user);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiUsersResponseUserContainerInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.user === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.user !== 'undefined' && this.user !== null) {toReturn['user'] = 'toApiJson' in this.user ? (this.user as any).toApiJson() : this.user;}\n return toReturn;\n }\n}\n\nexport class UserFilter implements i.UserFilterInterface {\n subjectTypes: string[];\n searchTerms: string[];\n\n static fromProto(proto: any): UserFilter {\n let m = new UserFilter();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UserFilterInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.subjectTypes === 'undefined' &&\n typeof this.searchTerms === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectTypes !== 'undefined') {toReturn['subjectTypes'] = this.subjectTypes;}\n if (typeof this.searchTerms !== 'undefined') {toReturn['searchTerms'] = this.searchTerms;}\n return toReturn;\n }\n}\n\nexport class UserIdentifier implements i.UserIdentifierInterface {\n userId: string;\n namespacedEmail: NamespacedEmail;\n namespacedSession: NamespacedSession;\n token: string;\n typedExternalIdentifier: TypedExternalIdentifier;\n subjectId: string;\n\n static fromProto(proto: any): UserIdentifier {\n let m = new UserIdentifier();\n m = Object.assign(m, proto);\n if (proto.namespacedEmail) {m.namespacedEmail = NamespacedEmail.fromProto(proto.namespacedEmail);}\n if (proto.namespacedSession) {m.namespacedSession = NamespacedSession.fromProto(proto.namespacedSession);}\n if (proto.typedExternalIdentifier) {m.typedExternalIdentifier = TypedExternalIdentifier.fromProto(proto.typedExternalIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.UserIdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.userId === 'undefined' &&\n typeof this.namespacedEmail === 'undefined' &&\n typeof this.namespacedSession === 'undefined' &&\n typeof this.token === 'undefined' &&\n typeof this.typedExternalIdentifier === 'undefined' &&\n typeof this.subjectId === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.namespacedEmail !== 'undefined' && this.namespacedEmail !== null) {toReturn['namespacedEmail'] = 'toApiJson' in this.namespacedEmail ? (this.namespacedEmail as any).toApiJson() : this.namespacedEmail;}\n if (typeof this.namespacedSession !== 'undefined' && this.namespacedSession !== null) {toReturn['namespacedSession'] = 'toApiJson' in this.namespacedSession ? (this.namespacedSession as any).toApiJson() : this.namespacedSession;}\n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n if (typeof this.typedExternalIdentifier !== 'undefined' && this.typedExternalIdentifier !== null) {toReturn['typedExternalIdentifier'] = 'toApiJson' in this.typedExternalIdentifier ? (this.typedExternalIdentifier as any).toApiJson() : this.typedExternalIdentifier;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class UserSortOptions implements i.UserSortOptionsInterface {\n direction: e.SortDirection;\n field: e.UserSortField;\n\n static fromProto(proto: any): UserSortOptions {\n let m = new UserSortOptions();\n m = Object.assign(m, proto);\n if (proto.direction) {m.direction = enumStringToValue<e.SortDirection>(e.SortDirection, proto.direction);}\n if (proto.field) {m.field = enumStringToValue<e.UserSortField>(e.UserSortField, proto.field);}\n return m;\n }\n\n constructor(kwargs?: i.UserSortOptionsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.direction === 'undefined' &&\n typeof this.field === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.direction !== 'undefined') {toReturn['direction'] = this.direction;}\n if (typeof this.field !== 'undefined') {toReturn['field'] = this.field;}\n return toReturn;\n }\n}\n\nexport class VerifyEmailRequest implements i.VerifyEmailRequestInterface {\n token: string;\n\n static fromProto(proto: any): VerifyEmailRequest {\n let m = new VerifyEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.VerifyEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.token === 'undefined') {\n return {};\n }\n \n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { EnvironmentService, Environment } from '@vendasta/core';\n\n@Injectable()\nexport class HostService {\n private _host: string;\n private _httpsHost: string;\n\n constructor(private environmentService: EnvironmentService) {\n }\n\n host(): string {\n if (this._host) {\n return this._host;\n }\n\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n this._host = 'iam.vendasta-local.com';\n break;\n case Environment.TEST:\n this._host = '';\n break;\n case Environment.DEMO:\n this._host = 'iam-api-demo.apigateway.co';\n break;\n case Environment.PROD:\n this._host = 'iam-api-prod.apigateway.co';\n break;\n }\n return this._host;\n }\n\n httpsHost(): string {\n if (this._httpsHost) {\n return this._httpsHost;\n }\n\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n this._httpsHost = 'iam.vendasta-local.com';\n break;\n case Environment.TEST:\n this._httpsHost = '';\n break;\n case Environment.DEMO:\n this._httpsHost = 'iam-demo.apigateway.co';\n break;\n case Environment.PROD:\n this._httpsHost = 'iam-prod.apigateway.co';\n break;\n }\n return this._httpsHost;\n }\n\n hostWithScheme(): string {\n const scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';\n return scheme + this.host()\n }\n\n httpsHostWithScheme(): string {\n const scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';\n return scheme + this.httpsHost()\n }\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GetImpersonationTokenRequest,\n GetImpersonationTokenResponse,\n GetSessionTokenRequest,\n GetSubjectBySessionRequest,\n GetSubjectResponse,\n GetTokenRequest,\n GetTokenResponse,\n ListPersonasRequest,\n ListPersonasResponse,\n ResetPasswordWithTokenRequest,\n} from './objects/';\nimport {\n GetImpersonationTokenRequestInterface,\n GetImpersonationTokenResponseInterface,\n GetSessionTokenRequestInterface,\n GetSubjectBySessionRequestInterface,\n GetSubjectResponseInterface,\n GetTokenRequestInterface,\n GetTokenResponseInterface,\n ListPersonasRequestInterface,\n ListPersonasResponseInterface,\n ResetPasswordWithTokenRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable()\nexport class UserIAMApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n getSubjectBySession(r: GetSubjectBySessionRequest | GetSubjectBySessionRequestInterface): Observable<GetSubjectResponse> {\n const request = ((<GetSubjectBySessionRequest>r).toApiJson) ? (<GetSubjectBySessionRequest>r) : new GetSubjectBySessionRequest(r);\n return this.http.post<GetSubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetSubjectBySession\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectResponse.fromProto(resp)),\n share()\n );\n }\n listPersonas(r: ListPersonasRequest | ListPersonasRequestInterface): Observable<ListPersonasResponse> {\n const request = ((<ListPersonasRequest>r).toApiJson) ? (<ListPersonasRequest>r) : new ListPersonasRequest(r);\n return this.http.post<ListPersonasResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/ListPersonas\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPersonasResponse.fromProto(resp)),\n share()\n );\n }\n getToken(r: GetTokenRequest | GetTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetTokenRequest>r).toApiJson) ? (<GetTokenRequest>r) : new GetTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n getSessionToken(r: GetSessionTokenRequest | GetSessionTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetSessionTokenRequest>r).toApiJson) ? (<GetSessionTokenRequest>r) : new GetSessionTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetSessionToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n resetPasswordWithToken(r: ResetPasswordWithTokenRequest | ResetPasswordWithTokenRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ResetPasswordWithTokenRequest>r).toApiJson) ? (<ResetPasswordWithTokenRequest>r) : new ResetPasswordWithTokenRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/ResetPasswordWithToken\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getImpersonationToken(r: GetImpersonationTokenRequest | GetImpersonationTokenRequestInterface): Observable<GetImpersonationTokenResponse> {\n const request = ((<GetImpersonationTokenRequest>r).toApiJson) ? (<GetImpersonationTokenRequest>r) : new GetImpersonationTokenRequest(r);\n return this.http.post<GetImpersonationTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetImpersonationToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetImpersonationTokenResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","import {\n LoginRequestInterface, LoginResponseInterface, LogoutResponseInterface, SSOLoginRequestInterface\n} from './http.interface';\n\nexport class LoginRequest implements LoginRequestInterface {\n namespace: string;\n type: string;\n email: string;\n password: string;\n providerIdToken: string;\n provider: string;\n\n static fromProto(proto: any): LoginRequest {\n if (!proto) {\n return new LoginRequest();\n }\n let m = new LoginRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: LoginRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.namespace === 'undefined' &&\n typeof this.type === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.password === 'undefined' &&\n typeof this.providerIdToken === 'undefined' &&\n typeof this.provider === 'undefined') {\n return {};\n }\n\n return {\n 'namespace': (typeof this.namespace !== 'undefined') ? this.namespace : null,\n 'type': (typeof this.type !== 'undefined') ? this.type : null,\n 'email': (typeof this.email !== 'undefined') ? this.email : null,\n 'password': (typeof this.password !== 'undefined') ? this.password : null,\n 'provider_id_token': (typeof this.providerIdToken !== 'undefined') ? this.providerIdToken : null,\n 'provider': (typeof this.provider !== 'undefined') ? this.provider : null\n }\n }\n}\n\nexport class LoginResponse implements LoginResponseInterface {\n sessionId: string;\n\n static fromProto(proto: any): LoginResponse {\n const m = new LoginResponse();\n m.sessionId = proto['session_id'];\n return m;\n }\n\n constructor(kwargs?: LoginRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.sessionId === 'undefined') {\n return {};\n }\n\n return {\n 'sessionId': (typeof this.sessionId !== 'undefined') ? this.sessionId : null\n }\n }\n}\n\nexport class LogoutResponse implements LogoutResponseInterface {\n success: boolean;\n\n static fromProto(proto: any): LogoutResponse {\n let m = new LogoutResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: LogoutResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.success === 'undefined') {\n return {};\n }\n\n return {\n 'success': (typeof this.success !== 'undefined') ? this.success : null\n }\n }\n}\n\nexport class SSOLoginRequest implements SSOLoginRequestInterface {\n nextUrl: string;\n namespace: string;\n type: string;\n\n static fromProto(proto: any): SSOLoginRequest {\n let m = new SSOLoginRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: SSOLoginRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): any {\n if (\n typeof this.nextUrl === 'undefined' &&\n typeof this.namespace === 'undefined' &&\n typeof this.type === 'undefined') {\n return null;\n }\n\n return {\n 'next_url': (typeof this.nextUrl !== 'undefined') ? this.nextUrl : null,\n 'namespace': (typeof this.namespace !== 'undefined') ? this.namespace : null,\n 'type': (typeof this.type !== 'undefined') ? this.type : null\n }\n }\n}\n","export enum PersonaType {\n partner = 'partner',\n partner_app = 'partner_app',\n sales_person = 'sales_person',\n smb = 'smb',\n vendor = 'vendor',\n digital_agent = 'digital_agent',\n developer = 'developer',\n success = 'success',\n account_group = 'account_group'\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\n\nimport { HostService } from '../_generated/host.service';\nimport { LoginRequestInterface, LoginResponseInterface, LogoutResponseInterface, SSOLoginRequestInterface } from './http.interface';\nimport { LoginRequest, LoginResponse, LogoutResponse, SSOLoginRequest } from './http';\n\n@Injectable()\nexport class IamHttpApiService {\n constructor(private http: HttpClient, private hostService: HostService) {}\n\n private apiOptions(includeCredentials?: boolean): { headers: HttpHeaders; withCredentials?: boolean } {\n if (includeCredentials) {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/x-www-form-urlencoded'\n }),\n withCredentials: true\n };\n }\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/x-www-form-urlencoded'\n })\n };\n }\n\n login(r: LoginRequest | LoginRequestInterface): Observable<LoginResponse> {\n const request = ((<LoginRequest>r).toApiJson) ? <LoginRequest>r : new LoginRequest(r);\n return this.http\n .post<LoginResponseInterface>(this.hostService.httpsHostWithScheme() + '/_ajax/v1/login', request.toApiJson(), this.apiOptions())\n .pipe(\n map((resp: LoginResponseInterface) => LoginResponse.fromProto(resp)),\n share()\n );\n }\n\n logout(): Observable<LogoutResponse> {\n return this.http\n .post<LogoutResponseInterface>(this.hostService.httpsHostWithScheme() + '/_ajax/v1/logout', {}, this.apiOptions(true))\n .pipe(\n map(resp => LogoutResponse.fromProto(resp)),\n share()\n );\n }\n\n ssoLogin(r: SSOLoginRequest | SSOLoginRequestInterface): void {\n const request = ((<SSOLoginRequest>r).toApiJson) ? <SSOLoginRequest>r : new SSOLoginRequest(r);\n let params = '';\n\n const apiJson = request.toApiJson();\n for (const key in apiJson) {\n if (!apiJson.hasOwnProperty(key)) {\n continue;\n }\n const value = apiJson[key];\n if (value === null) {\n continue;\n }\n if (params.length > 0) {\n params += '&';\n }\n params += `${key}=${value}`;\n }\n\n window.location.href = `${this.hostService.httpsHostWithScheme()}/sso-login${params.length > 0 ? '?' : ''}${params}`;\n }\n}\n","import {AttributeInterface, StructAttributeInterface} from '../_internal/interfaces/subjects.interface';\nimport {Persona} from '../_internal/objects/subjects';\nimport {PersonaType} from './persona-type.enum';\n\nexport class BasePersona {\n type: PersonaType;\n subjectId: string;\n email: string;\n userId: string;\n\n created: Date;\n updated: Date;\n lastLogin: Date;\n\n firstName: string;\n lastName: string;\n\n fromPersona(p: Persona): BasePersona {\n const s = p.subject;\n this.subjectId = s.subjectId;\n this.email = s.email;\n this.created = s.created;\n this.updated = s.updated;\n this.lastLogin = s.lastLogin;\n this.userId = s.userId;\n return this.readAttributes(s.structAttributes);\n }\n\n readAttributes(attributes: StructAttributeInterface): BasePersona {\n if (!attributes) {\n return this;\n }\n\n const attrs = getValueFromAttribute({structAttribute: {attributes: attributes.attributes}});\n Object.assign(this, attrs);\n return this;\n }\n}\n\nexport class TypedPersona extends BasePersona {\n}\n\nexport class NamespacedPersona extends BasePersona {\n partnerId = '';\n\n fromPersona(p: Persona): BasePersona {\n this.partnerId = p.context.namespaced.namespace;\n return super.fromPersona(p);\n }\n}\n\nexport function getValueFromAttribute(attr: AttributeInterface): any {\n if (typeof attr === 'undefined') {\n return null;\n } else if (typeof attr.stringAttribute !== 'undefined') {\n return attr.stringAttribute;\n } else if (typeof attr.intAttribute !== 'undefined') {\n return attr.intAttribute;\n } else if (typeof attr.doubleAttribute !== 'undefined') {\n return attr.doubleAttribute;\n } else if (typeof attr.boolAttribute !== 'undefined') {\n return attr.boolAttribute;\n } else if (typeof attr.listAttribute !== 'undefined') {\n const vals: any[] = [];\n if (typeof attr.listAttribute.attributes === 'undefined') {\n return vals;\n }\n for (const val of attr.listAttribute.attributes) {\n vals.push(getValueFromAttribute(val))\n }\n return vals;\n } else if (typeof attr.timestampAttribute !== 'undefined') {\n return attr.timestampAttribute;\n } else if (typeof attr.geopointAttribute !== 'undefined') {\n return attr.geopointAttribute;\n } else if (typeof attr.structAttribute !== 'undefined') {\n const result: any = {};\n for (const a in attr.structAttribute.attributes) {\n if (!attr.structAttribute.attributes.hasOwnProperty(a)) {\n continue;\n }\n result[CamelCase(a)] = getValueFromAttribute(attr.structAttribute.attributes[a]);\n }\n return result;\n }\n}\n\nexport function CamelCase(str: string): string {\n let result = '';\n\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '_') {\n result += str[i + 1].toUpperCase();\n i++;\n } else {\n result += str[i];\n }\n }\n\n return result\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class DeveloperPersona extends TypedPersona {\n type = PersonaType.developer;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class PartnerPersona extends TypedPersona {\n type = PersonaType.partner;\n rmUid: string;\n msUid: string;\n nbUid: string;\n armUid: string;\n smUid: string;\n\n accessibleMarkets: string[];\n isSuperAdmin = false;\n isAdmin = false;\n\n canCustomizeWhitelabel = false;\n canAccessBilling = true;\n canAccessAccounts = true;\n canAccessMarketing = true;\n canAccessSales = true;\n canAccessConcierge = true;\n canAccessBrands = true;\n canAccessDashboard = true;\n canAccessOrders = true;\n canAccessCompanyProfile = true;\n canAccessAutomations = true;\n canAccessMarketplace = true;\n canEnableApps = true;\n}\n","import {NamespacedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class PartnerAppPersona extends NamespacedPersona {\n type = PersonaType.partner_app;\n}\n","import {NamespacedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport const TitleChoice = {\n PARTNER_FOR_SMB: 'partnerForSmb',\n REP_MAN_FOR_SMB: 'repManForSmb',\n MARKET_FOR_SMB: 'marketForSmb'\n};\nexport type TitleChoice = (typeof TitleChoice)[keyof typeof TitleChoice];\n\nexport class SalespersonPersona extends NamespacedPersona {\n type = PersonaType.sales_person;\n\n emailLower: string;\n\n jobTitle: string;\n department: string;\n region: string;\n supervisor: string;\n marketId: string;\n\n isSalesManager: boolean;\n\n phoneNumbers: string[];\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n titleChoice: TitleChoice = TitleChoice.PARTNER_FOR_SMB;\n pictureName: string;\n pictureServingUrl: string;\n pictureServingUrlSecure: string;\n}\n","import {NamespacedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport interface AccountAccessPermission {\n accountGroupId: string;\n accountIds: string[];\n}\n\nexport class SMBPersona extends NamespacedPersona {\n type = PersonaType.smb;\n\n workPhone: string;\n defaultAccountGroup: string;\n accountGroupAssociations: string[];\n accountAccessPermissions: AccountAccessPermission[];\n notificationsEnabled = true;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class VendorPersona extends TypedPersona {\n type = PersonaType.vendor;\n\n appIds: string[];\n vendorName: string;\n isAdmin: boolean;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class DigitalAgentPersona extends TypedPersona {\n type = PersonaType.digital_agent;\n\n accessiblePartnerIds: string[];\n profilePicture: string;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class SuccessPersona extends TypedPersona {\n type = PersonaType.success;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class AccountGroupPersona extends TypedPersona {\n type = PersonaType.account_group;\n}\n","import { Context, Persona } from '../_internal/objects/subjects';\nimport { DeveloperPersona } from './developer';\nimport { PersonaType } from './persona-type.enum';\nimport { BasePersona } from './base-personas';\nimport { PartnerPersona } from './partner';\nimport { PartnerAppPersona } from './partner-app';\nimport { SalespersonPersona } from './salesperson';\nimport { SMBPersona } from './smb';\nimport { VendorPersona } from './vendor';\nimport { DigitalAgentPersona } from './digital-agent';\nimport { SuccessPersona } from './success';\nimport { AccountGroupPersona } from './account-group';\n\nexport function fromPersona(persona: Persona): BasePersona | null {\n const type = getTypeFromContext(persona.context);\n if (type === null) {\n return null;\n }\n\n const personaCls = getPersonaFromType(type);\n personaCls.fromPersona(persona);\n return personaCls;\n}\n\nexport function getTypeFromContext(ctx: Context): PersonaType | null {\n const type = (!!ctx.namespaced) ? ctx.namespaced.type : ctx.typed.type;\n switch (type) {\n case 'partner':\n return PersonaType.partner;\n case 'partner_app':\n return PersonaType.partner_app;\n case 'sales_person':\n return PersonaType.sales_person;\n case 'smb':\n return PersonaType.smb;\n case 'vendor':\n return PersonaType.vendor;\n case 'digital_agent':\n return PersonaType.digital_agent;\n case 'developer':\n return PersonaType.developer;\n case 'success':\n return PersonaType.success;\n case 'account_group':\n return PersonaType.account_group;\n }\n return null;\n}\n\nexport function getPersonaFromType(personaType: PersonaType): BasePersona {\n return new {\n 'partner': PartnerPersona,\n 'partner_app': PartnerAppPersona,\n 'sales_person': SalespersonPersona,\n 'smb': SMBPersona,\n 'vendor': VendorPersona,\n 'digital_agent': DigitalAgentPersona,\n 'developer': DeveloperPersona,\n 'success': SuccessPersona,\n 'account_group': AccountGroupPersona\n }[personaType]();\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n AccessResourceRequest,\n AddKeyRequest,\n AddKeyResponse,\n AddMultiUserRestrictionRequest,\n AuthenticateSubjectRequest,\n ChangeSubjectEmailRequest,\n CreateExternalIDRequest,\n CreateSessionRequest,\n CreateSessionResponse,\n CreateTemporarySubjectRequest,\n CreateTemporarySubjectResponse,\n DeleteSubjectRequest,\n DeleteUserRequest,\n GetMultiExternalIDRequest,\n GetMultiExternalIDResponse,\n GetMultiUsersRequest,\n GetMultiUsersResponse,\n GetResetPasswordTokenRequest,\n GetSessionTokenRequest,\n GetShortLivedTokenRequest,\n GetSubjectContextRequest,\n GetSubjectContextResponse,\n GetSubjectsByEmailRequest,\n GetSubjectsRequest,\n GetSubjectsResponse,\n GetTokenResponse,\n IAMListPersonasRequest,\n ListPersonasByEmailRequest,\n ListPersonasResponse,\n ListSecurityLogsRequest,\n ListSecurityLogsResponse,\n ListUsersRequest,\n ListUsersResponse,\n MutateAttributesRequest,\n RegisterPolicyRequest,\n RegisterResourceOwnerRequest,\n RegisterResourceRequest,\n RegisterSubjectRequest,\n RegisterSubjectResponse,\n RemoveKeyRequest,\n RemoveMultiUserRestrictionRequest,\n ResetPasswordTokenResponse,\n ResetSubjectPasswordRequest,\n SearchSubjectRequest,\n SearchSubjectResponse,\n SendEmailVerificationRequest,\n UpdateUserRequest,\n VerifyEmailRequest,\n} from './objects/';\nimport {\n AccessResourceRequestInterface,\n AddKeyRequestInterface,\n AddKeyResponseInterface,\n AddMultiUserRestrictionRequestInterface,\n AuthenticateSubjectRequestInterface,\n ChangeSubjectEmailRequestInterface,\n CreateExternalIDRequestInterface,\n CreateSessionRequestInterface,\n CreateSessionResponseInterface,\n CreateTemporarySubjectRequestInterface,\n CreateTemporarySubjectResponseInterface,\n DeleteSubjectRequestInterface,\n DeleteUserRequestInterface,\n GetMultiExternalIDRequestInterface,\n GetMultiExternalIDResponseInterface,\n GetMultiUsersRequestInterface,\n GetMultiUsersResponseInterface,\n GetResetPasswordTokenRequestInterface,\n GetSessionTokenRequestInterface,\n GetShortLivedTokenRequestInterface,\n GetSubjectContextRequestInterface,\n GetSubjectContextResponseInterface,\n GetSubjectsByEmailRequestInterface,\n GetSubjectsRequestInterface,\n GetSubjectsResponseInterface,\n GetTokenResponseInterface,\n IAMListPersonasRequestInterface,\n ListPersonasByEmailRequestInterface,\n ListPersonasResponseInterface,\n ListSecurityLogsRequestInterface,\n ListSecurityLogsResponseInterface,\n ListUsersRequestInterface,\n ListUsersResponseInterface,\n MutateAttributesRequestInterface,\n RegisterPolicyRequestInterface,\n RegisterResourceOwnerRequestInterface,\n RegisterResourceRequestInterface,\n RegisterSubjectRequestInterface,\n RegisterSubjectResponseInterface,\n RemoveKeyRequestInterface,\n RemoveMultiUserRestrictionRequestInterface,\n ResetPasswordTokenResponseInterface,\n ResetSubjectPasswordRequestInterface,\n SearchSubjectRequestInterface,\n SearchSubjectResponseInterface,\n SendEmailVerificationRequestInterface,\n UpdateUserRequestInterface,\n VerifyEmailRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable()\nexport class IAMApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n registerSubject(r: RegisterSubjectRequest | RegisterSubjectRequestInterface): Observable<RegisterSubjectResponse> {\n const request = ((<RegisterSubjectRequest>r).toApiJson) ? (<RegisterSubjectRequest>r) : new RegisterSubjectRequest(r);\n return this.http.post<RegisterSubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterSubject\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RegisterSubjectResponse.fromProto(resp)),\n share()\n );\n }\n authenticateSubject(r: AuthenticateSubjectRequest | AuthenticateSubjectRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<AuthenticateSubjectRequest>r).toApiJson) ? (<AuthenticateSubjectRequest>r) : new AuthenticateSubjectRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AuthenticateSubject\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getSubjects(r: GetSubjectsRequest | GetSubjectsRequestInterface): Observable<GetSubjectsResponse> {\n const request = ((<GetSubjectsRequest>r).toApiJson) ? (<GetSubjectsRequest>r) : new GetSubjectsRequest(r);\n return this.http.post<GetSubjectsResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSubjects\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectsResponse.fromProto(resp)),\n share()\n );\n }\n getSubjectsByEmail(r: GetSubjectsByEmailRequest | GetSubjectsByEmailRequestInterface): Observable<GetSubjectsResponse> {\n const request = ((<GetSubjectsByEmailRequest>r).toApiJson) ? (<GetSubjectsByEmailRequest>r) : new GetSubjectsByEmailRequest(r);\n return this.http.post<GetSubjectsResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSubjectsByEmail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectsResponse.fromProto(resp)),\n share()\n );\n }\n mutateAttributes(r: MutateAttributesRequest | MutateAttributesRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<MutateAttributesRequest>r).toApiJson) ? (<MutateAttributesRequest>r) : new MutateAttributesRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/MutateAttributes\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n resetSubjectPassword(r: ResetSubjectPasswordRequest | ResetSubjectPasswordRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ResetSubjectPasswordRequest>r).toApiJson) ? (<ResetSubjectPasswordRequest>r) : new ResetSubjectPasswordRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ResetSubjectPassword\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n changeSubjectEmail(r: ChangeSubjectEmailRequest | ChangeSubjectEmailRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ChangeSubjectEmailRequest>r).toApiJson) ? (<ChangeSubjectEmailRequest>r) : new ChangeSubjectEmailRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ChangeSubjectEmail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteSubject(r: DeleteSubjectRequest | DeleteSubjectRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteSubjectRequest>r).toApiJson) ? (<DeleteSubjectRequest>r) : new DeleteSubjectRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/DeleteSubject\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n searchSubject(r: SearchSubjectRequest | SearchSubjectRequestInterface): Observable<SearchSubjectResponse> {\n const request = ((<SearchSubjectRequest>r).toApiJson) ? (<SearchSubjectRequest>r) : new SearchSubjectRequest(r);\n return this.http.post<SearchSubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/SearchSubject\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => SearchSubjectResponse.fromProto(resp)),\n share()\n );\n }\n getSubjectContext(r: GetSubjectContextRequest | GetSubjectContextRequestInterface): Observable<GetSubjectContextResponse> {\n const request = ((<GetSubjectContextRequest>r).toApiJson) ? (<GetSubjectContextRequest>r) : new GetSubjectContextRequest(r);\n return this.http.post<GetSubjectContextResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSubjectContext\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectContextResponse.fromProto(resp)),\n share()\n );\n }\n registerResourceOwner(r: RegisterResourceOwnerRequest | RegisterResourceOwnerRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RegisterResourceOwnerRequest>r).toApiJson) ? (<RegisterResourceOwnerRequest>r) : new RegisterResourceOwnerRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterResourceOwner\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n registerResource(r: RegisterResourceRequest | RegisterResourceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RegisterResourceRequest>r).toApiJson) ? (<RegisterResourceRequest>r) : new RegisterResourceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterResource\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n registerPolicy(r: RegisterPolicyRequest | RegisterPolicyRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RegisterPolicyRequest>r).toApiJson) ? (<RegisterPolicyRequest>r) : new RegisterPolicyRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterPolicy\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n accessResource(r: AccessResourceRequest | AccessResourceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<AccessResourceRequest>r).toApiJson) ? (<AccessResourceRequest>r) : new AccessResourceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AccessResource\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getShortLivedToken(r: GetShortLivedTokenRequest | GetShortLivedTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetShortLivedTokenRequest>r).toApiJson) ? (<GetShortLivedTokenRequest>r) : new GetShortLivedTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetShortLivedToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n getSessionToken(r: GetSessionTokenRequest | GetSessionTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetSessionTokenRequest>r).toApiJson) ? (<GetSessionTokenRequest>r) : new GetSessionTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSessionToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n addKey(r: AddKeyRequest | AddKeyRequestInterface): Observable<AddKeyResponse> {\n const request = ((<AddKeyRequest>r).toApiJson) ? (<AddKeyRequest>r) : new AddKeyRequest(r);\n return this.http.post<AddKeyResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AddKey\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => AddKeyResponse.fromProto(resp)),\n share()\n );\n }\n removeKey(r: RemoveKeyRequest | RemoveKeyRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RemoveKeyRequest>r).toApiJson) ? (<RemoveKeyRequest>r) : new RemoveKeyRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RemoveKey\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n createSession(r: CreateSessionRequest | CreateSessionRequestInterface): Observable<CreateSessionResponse> {\n const request = ((<CreateSessionRequest>r).toApiJson) ? (<CreateSessionRequest>r) : new CreateSessionRequest(r);\n return this.http.post<CreateSessionResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/CreateSession\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateSessionResponse.fromProto(resp)),\n share()\n );\n }\n getResetPasswordToken(r: GetResetPasswordTokenRequest | GetResetPasswordTokenRequestInterface): Observable<ResetPasswordTokenResponse> {\n const request = ((<GetResetPasswordTokenRequest>r).toApiJson) ? (<GetResetPasswordTokenRequest>r) : new GetResetPasswordTokenRequest(r);\n return this.http.post<ResetPasswordTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetResetPasswordToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ResetPasswordTokenResponse.fromProto(resp)),\n share()\n );\n }\n listPersonasByEmail(r: ListPersonasByEmailRequest | ListPersonasByEmailRequestInterface): Observable<ListPersonasResponse> {\n const request = ((<ListPersonasByEmailRequest>r).toApiJson) ? (<ListPersonasByEmailRequest>r) : new ListPersonasByEmailRequest(r);\n return this.http.post<ListPersonasResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListPersonasByEmail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPersonasResponse.fromProto(resp)),\n share()\n );\n }\n listPersonas(r: IAMListPersonasRequest | IAMListPersonasRequestInterface): Observable<ListPersonasResponse> {\n const request = ((<IAMListPersonasRequest>r).toApiJson) ? (<IAMListPersonasRequest>r) : new IAMListPersonasRequest(r);\n return this.http.post<ListPersonasResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListPersonas\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPersonasResponse.fromProto(resp)),\n share()\n );\n }\n createTemporarySubject(r: CreateTemporarySubjectRequest | CreateTemporarySubjectRequestInterface): Observable<CreateTemporarySubjectResponse> {\n const request = ((<CreateTemporarySubjectRequest>r).toApiJson) ? (<CreateTemporarySubjectRequest>r) : new CreateTemporarySubjectRequest(r);\n return this.http.post<CreateTemporarySubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/CreateTemporarySubject\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateTemporarySubjectResponse.fromProto(resp)),\n share()\n );\n }\n getMultiUsers(r: GetMultiUsersRequest | GetMultiUsersRequestInterface): Observable<GetMultiUsersResponse> {\n const request = ((<GetMultiUsersRequest>r).toApiJson) ? (<GetMultiUsersRequest>r) : new GetMultiUsersRequest(r);\n return this.http.post<GetMultiUsersResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetMultiUsers\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiUsersResponse.fromProto(resp)),\n share()\n );\n }\n listUsers(r: ListUsersRequest | ListUsersRequestInterface): Observable<ListUsersResponse> {\n const request = ((<ListUsersRequest>r).toApiJson) ? (<ListUsersRequest>r) : new ListUsersRequest(r);\n return this.http.post<ListUsersResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListUsers\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListUsersResponse.fromProto(resp)),\n share()\n );\n }\n updateUser(r: UpdateUserRequest | UpdateUserRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateUserRequest>r).toApiJson) ? (<UpdateUserRequest>r) : new UpdateUserRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/UpdateUser\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteUser(r: DeleteUserRequest | DeleteUserRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteUserRequest>r).toApiJson) ? (<DeleteUserRequest>r) : new DeleteUserRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/DeleteUser\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n listSecurityLogs(r: ListSecurityLogsRequest | ListSecurityLogsRequestInterface): Observable<ListSecurityLogsResponse> {\n const request = ((<ListSecurityLogsRequest>r).toApiJson) ? (<ListSecurityLogsRequest>r) : new ListSecurityLogsRequest(r);\n return this.http.post<ListSecurityLogsResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListSecurityLogs\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListSecurityLogsResponse.fromProto(resp)),\n share()\n );\n }\n verifyEmail(r: VerifyEmailRequest | VerifyEmailRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<VerifyEmailRequest>r).toApiJson) ? (<VerifyEmailRequest>r) : new VerifyEmailRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/VerifyEmail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n sendEmailVerification(r: SendEmailVerificationRequest | SendEmailVerificationRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SendEmailVerificationRequest>r).toApiJson) ? (<SendEmailVerificationRequest>r) : new SendEmailVerificationRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/SendEmailVerification\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getMultiExternalId(r: GetMultiExternalIDRequest | GetMultiExternalIDRequestInterface): Observable<GetMultiExternalIDResponse> {\n const request = ((<GetMultiExternalIDRequest>r).toApiJson) ? (<GetMultiExternalIDRequest>r) : new GetMultiExternalIDRequest(r);\n return this.http.post<GetMultiExternalIDResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetMultiExternalID\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiExternalIDResponse.fromProto(resp)),\n share()\n );\n }\n createExternalId(r: CreateExternalIDRequest | CreateExternalIDRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateExternalIDRequest>r).toApiJson) ? (<CreateExternalIDRequest>r) : new CreateExternalIDRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/CreateExternalID\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n addMultiUserRestriction(r: AddMultiUserRestrictionRequest | AddMultiUserRestrictionRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<AddMultiUserRestrictionRequest>r).toApiJson) ? (<AddMultiUserRestrictionRequest>r) : new AddMultiUserRestrictionRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AddMultiUserRestriction\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n removeMultiUserRestriction(r: RemoveMultiUserRestrictionRequest | RemoveMultiUserRestrictionRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RemoveMultiUserRestrictionRequest>r).toApiJson) ? (<RemoveMultiUserRestrictionRequest>r) : new RemoveMultiUserRestrictionRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RemoveMultiUserRestriction\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","import {Injectable} from '@angular/core';\nimport {SessionService} from '@vendasta/core';\nimport {Observable} from 'rxjs';\nimport {map, switchMap} from 'rxjs/operators';\nimport {ContextInterface} from './_internal/interfaces/subjects.interface';\n\nimport {\n GetSubjectResponse,\n GetTokenResponse,\n ListPersonasResponse as ListPersonasProtoResponse,\n ListSecurityLogsRequestFilters,\n ListSecurityLogsResponse,\n ListUsersResponse\n} from './_internal/objects/api';\nimport {Context, NamespacedContext, Persona, TypedContext} from './_internal/objects/subjects';\nimport {UserIAMApiService} from './_internal/user-iam.api.service';\nimport {LoginResponseInterface, LogoutResponseInterface} from './http/http.interface';\nimport {IamHttpApiService} from './http/iam.http.api.service';\nimport {BasePersona} from './personas/base-personas';\nimport {PersonaType} from './personas/persona-type.enum';\nimport {fromPersona} from './personas/personas';\nimport {User} from './_internal/objects/users';\nimport {IAMApiService} from './_internal/iam.api.service';\nimport {UserFilterInterface, UserIdentifierInterface, UserSortOptionsInterface} from './_internal/interfaces';\n\n@Injectable()\nexport class IAMService {\n constructor(\n private api: UserIAMApiService,\n private httpApi: IamHttpApiService,\n private sessionService: SessionService,\n private iamApi: IAMApiService\n ) {\n }\n\n // Get a subject from the session ID\n getSubjectBySession(sessionId: string, personaType: PersonaType, partnerId?: string): Observable<BasePersona | null> {\n let context: ContextInterface;\n if (!!partnerId) {\n context = new Context({\n namespaced: new NamespacedContext({\n namespace: partnerId,\n type: PersonaType[personaType]\n })\n });\n } else {\n context = new Context({ typed: new TypedContext({ type: PersonaType[personaType] }) });\n }\n return this.api\n .getSubjectBySession({\n session: sessionId,\n context: context\n })\n .pipe(map((r: GetSubjectResponse) => fromPersona(\n new Persona({ subject: r.subject.subject, context: context })\n )));\n }\n\n // Get persona type from the current session\n getLoggedInSubject(personaType: PersonaType, partnerId?: string): Observable<BasePersona | null> {\n return this.sessionService\n .getSessionId()\n .pipe(switchMap((sessionId: string) => this.getSubjectBySession(sessionId, personaType, partnerId)));\n }\n\n // List all available personas for the session. Optionally pass a persona type to filter by that persona.\n listPersonas(sessionId: string, personaType?: PersonaType): Observable<BasePersona[]> {\n return this.api\n .listPersonas({\n session: sessionId,\n pageSize: 100,\n type: personaType\n })\n .pipe(\n map((r: ListPersonasProtoResponse) => {\n const personas: BasePersona[] = [];\n if (!r || !r.personas) {\n return [];\n }\n for (const p of r.personas) {\n const persona = fromPersona(p);\n if (!!persona) {\n personas.push(persona);\n }\n }\n return personas;\n })\n );\n }\n\n // List all available personas for the current session. Optionally pass a persona type to filter by that persona.\n listLoggedInPersonas(personaType?: PersonaType): Observable<BasePersona[]> {\n return this.sessionService.getSessionId().pipe(switchMap((sessionId: string) => this.listPersonas(sessionId,\n personaType)));\n }\n\n // Get a short lived session token\n getToken(): Observable<string> {\n return this.api.getToken({}).pipe(map((r: GetTokenResponse) => r.token));\n }\n\n // Login into a user. Optionally specify the partner and persona type you want to log into\n login(email: string, password: string, personaType?: PersonaType, partnerId?: string): Observable<string> {\n return this.httpApi\n .login({\n email: email,\n password: password,\n namespace: partnerId,\n type: personaType\n })\n .pipe(map((r: LoginResponseInterface) => r.sessionId || ''));\n }\n\n // Logout of the current session, returns true if successful\n logout(): Observable<boolean> {\n return this.httpApi.logout().pipe(map((r: LogoutResponseInterface) => r.success));\n }\n\n // This will redirect the browser to IAM's sso login handler.\n ssoLogin(nextUrl: string, personaType?: PersonaType, partnerId?: string): void {\n this.httpApi.ssoLogin({\n nextUrl: nextUrl,\n namespace: partnerId,\n type: personaType\n });\n }\n\n // getMultiUsers takes an array of user identifiers and calls IAM to convert them into Users\n getMultiUsers(userIdentifiers: UserIdentifierInterface[]): Observable<User[]> {\n return this.iamApi.getMultiUsers({\n userIdentifiers\n }).pipe(\n map(resp => {\n if (!!resp.users) {\n return resp.users\n }\n return [];\n }),\n map(userContainers => userContainers.map(u => u.user))\n );\n }\n\n // listSecurityLogs returns security logs for a userId passed in. This is a paged function, but the\n // handling of paged information is left to the implementor (for now).\n listSecurityLogs(userId: string, cursor?: string, pageSize?: number, actionId = ''):\n Observable<ListSecurityLogsResponse> {\n const optionalArgs: {[key: string]: ListSecurityLogsRequestFilters} = {};\n if (actionId !== '') {\n optionalArgs.filters = new ListSecurityLogsRequestFilters({actionId});\n }\n return this.iamApi.listSecurityLogs({\n userId,\n cursor,\n pageSize,\n ...optionalArgs\n })\n }\n\n // listUsers returns users for a namespace passed in. This is a paged function, but the\n // handling of paged information is left to the implementor (for now).\n // An empty namespace will return users that exist outside of a namespace.\n listUsers(namespace: string, email?: string, cursor?: string, pageSize?: number, subjectTypes?: string[],\n searchTerms?: string[], sortOptions?: UserSortOptionsInterface[]): Observable<ListUsersResponse> {\n const userFilter: UserFilterInterface = {};\n if (!!subjectTypes && subjectTypes.length > 0) {\n userFilter.subjectTypes = subjectTypes;\n }\n if (!!searchTerms && searchTerms.length > 0) {\n userFilter.searchTerms = searchTerms;\n }\n\n return this.iamApi.listUsers({\n namespace: namespace,\n email: email,\n cursor: cursor,\n pageSize: pageSize,\n userFilter: userFilter,\n sortOptions: (sortOptions || [])\n })\n }\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GetSessionForUserRequest,\n GetSessionForUserResponse,\n} from './objects/';\nimport {\n GetSessionForUserRequestInterface,\n GetSessionForUserResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable()\nexport class IAMSsoApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n getSessionForUser(r: GetSessionForUserRequest | GetSessionForUserRequestInterface): Observable<GetSessionForUserResponse> {\n const request = ((<GetSessionForUserRequest>r).toApiJson) ? (<GetSessionForUserRequest>r) : new GetSessionForUserRequest(r);\n return this.http.post<GetSessionForUserResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAMSso/GetSessionForUser\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSessionForUserResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!\n//\n// Internal module that provides ApiServices to your exposed sdk module.\n// *********************************\nimport { NgModule } from '@angular/core';\nimport { SessionServiceModule, EnvironmentServiceModule } from '@vendasta/core';\nimport { IAMApiService } from './iam.api.service';\nimport { IAMSsoApiService } from './iam-sso.api.service';\nimport { UserIAMApiService } from './user-iam.api.service';\nimport { HostService } from '../_generated/host.service';\n\n@NgModule({\n imports: [SessionServiceModule, EnvironmentServiceModule],\n providers: [\n IAMApiService,\n IAMSsoApiService,\n UserIAMApiService,\n HostService\n ],\n declarations: [],\n exports: [],\n entryComponents: []\n})\nexport class IamInternalModule {}\n","import {NgModule} from '@angular/core';\nimport {IAMService} from './iam.service';\nimport { IamInternalModule } from './_internal/iam.module';\nimport { IamHttpApiService } from './http/iam.http.api.service';\n\n@NgModule({\n imports: [IamInternalModule],\n providers: [IAMService, IamHttpApiService],\n declarations: [],\n exports: [],\n entryComponents: []\n})\nexport class IamModule {}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../iam_sdk/src/lib/_internal/enums/policies.enum.ts","../../../iam_sdk/src/lib/_internal/enums/resources.enum.ts","../../../iam_sdk/src/lib/_internal/enums/subjects.enum.ts","../../../iam_sdk/src/lib/_internal/enums/users.enum.ts","../../../iam_sdk/src/lib/_internal/enums/api.enum.ts","../../../iam_sdk/src/lib/_internal/objects/attributes.ts","../../../iam_sdk/src/lib/_internal/objects/subjects.ts","../../../iam_sdk/src/lib/_internal/objects/field-mask.ts","../../../iam_sdk/src/lib/_internal/objects/policies.ts","../../../iam_sdk/src/lib/_internal/objects/resources.ts","../../../iam_sdk/src/lib/_internal/objects/security-logs.ts","../../../iam_sdk/src/lib/_internal/objects/users.ts","../../../iam_sdk/src/lib/_internal/objects/api.ts","../../../iam_sdk/src/lib/personas/persona-type.enum.ts","../../../iam_sdk/src/lib/personas/base-personas.ts","../../../iam_sdk/src/lib/personas/developer.ts","../../../iam_sdk/src/lib/personas/partner.ts","../../../iam_sdk/src/lib/personas/partner-app.ts","../../../iam_sdk/src/lib/personas/salesperson.ts","../../../iam_sdk/src/lib/personas/smb.ts","../../../iam_sdk/src/lib/personas/vendor.ts","../../../iam_sdk/src/lib/personas/digital-agent.ts","../../../iam_sdk/src/lib/personas/success.ts","../../../iam_sdk/src/lib/personas/account-group.ts","../../../iam_sdk/src/lib/personas/personas.ts","../../../iam_sdk/src/lib/_internal/objects/annotations.ts","../../../iam_sdk/src/lib/_generated/host.service.ts","../../../iam_sdk/src/lib/_internal/user-iam.api.service.ts","../../../iam_sdk/src/lib/http/http.ts","../../../iam_sdk/src/lib/http/iam.http.api.service.ts","../../../iam_sdk/src/lib/_internal/iam.api.service.ts","../../../iam_sdk/src/lib/iam.service.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","__values","o","s","Symbol","iterator","m","i","length","next","value","done","TypeError","__read","n","r","e","ar","push","error","__spread","arguments","concat","BooleanOperator","ForOperator","AccessScope","AlgorithmType","OrderByDirection","RestrictionType","SortDirection","UserSortField","Attribute","kwargs","assign","fromProto","proto","intAttribute","parseInt","structAttribute","StructAttribute","listAttribute","ListAttribute","timestampAttribute","Date","geopointAttribute","GeoPointAttribute","toApiJson","toReturn","doubleAttribute","stringAttribute","boolAttribute","StructAttributeAttributesEntry","key","latitude","longitude","attributes","map","keys","reduce","obj","k","Context","namespaced","NamespacedContext","typed","TypedContext","MultiValueAttribute","values","Mutation","add","SingleValueAttribute","replace","remove","replaceAttributes","addAttributes","removeAttributes","dropKey","namespace","type","Persona","subject","Subject","context","PublicKey","enumRef","algorithmType","e.AlgorithmType","id","Query","searchTerm","attributeKeys","created","updated","lastLogin","publicKeys","structAttributes","subjectId","email","userId","partnerId","SubjectResult","FieldMask","paths","enumStringToValue","IfClause","resourceAttributeValue","thenPolicy","PolicyNode","elsePolicy","resourceAttributeName","Operator","operator","e.BooleanOperator","children","subjectResourceIntersection","SubjectResourceIntersectionClause","subjectValueIntersection","SubjectValueIntersectionClause","subjectMissingValue","SubjectMissingValueClause","subjectResourceSubset","SubjectResourceSubsetClause","subjectResourceFor","SubjectResourceForClause","ifClause","attributeName","e.ForOperator","rules","structuredAttributeValue","attributeValue","AccessCheckFailures","failures","ResourceIdentifier","ResourceIdentifierIdentifiersEntry","ValueList","Policy","operations","v","e.AccessScope","policy","appId","resourceId","policyId","policyName","actions","identifiers","ResourceOwner","appName","SecurityLog","actionId","logId","description","Identifier","NamespacedEmail","NamespacedSession","session","TypedExternalIdentifier","externalIdType","externalId","User","firstName","greetingName","lastName","languageCode","emailVerified","roles","PersonaType","AccessResourceRequest","resourceEntityIdentifier","accessScope","resourceEntityIdentifiers","resourceAttributes","ownerId","AddKeyRequest","userIdentifier","UserIdentifier","AddKeyResponse","privateKey","keyId","AddMultiUserRestrictionRequest","userIdentifiers","restrictionType","e.RestrictionType","AuthenticateSubjectRequest","password","ChangeSubjectEmailRequest","newEmail","CreateExternalIDRequest","typedExternalIdentifier","CreateSessionRequest","oauthCredentials","OAuthCredentials","subjectCredentials","SubjectCredentials","CreateSessionResponse","CreateTemporarySubjectRequest","CreateTemporarySubjectResponse","DeleteSubjectRequest","DeleteUserRequest","ListSecurityLogsRequestFilters","GetImpersonationTokenRequest","impersonatee","impersonator","GetImpersonationTokenResponse","token","GetMultiExternalIDRequest","GetMultiExternalIDResponse","externalIds","GetMultiUsersRequest","GetMultiUsersResponse","users","GetMultiUsersResponseUserContainer","GetResetPasswordTokenRequest","GetSessionTokenRequest","GetShortLivedTokenRequest","GetSubjectBySessionRequest","GetSubjectContextRequest","GetSubjectContextResponse","GetSubjectResponse","GetSubjectsByEmailRequest","fieldMask","emails","GetSubjectsRequest","subjectIds","GetSubjectsResponse","subjects","GetTokenRequest","GetTokenResponse","IAMListPersonasRequest","pageSize","cursor","alwaysIncludeSuperadmin","ListPersonasByEmailRequest","ListPersonasRequest","ListPersonasResponse","personas","nextCursor","hasMore","ListSecurityLogsRequest","filters","ListSecurityLogsResponse","logs","ListUsersRequest","userFilter","UserFilter","sortOptions","UserSortOptions","ListUsersResponse","MutateAttributesRequest","mutations","provider","idToken","accessToken","UpdateUserRequestOperation","RegisterPolicyRequest","RegisterResourceOwnerRequest","owner","RegisterResourceRequest","resourceName","resourceOwnerServiceUrl","requiredResourceParams","resourceOwnerAudience","RegisterSubjectRequest","RegisterSubjectResponse","RemoveKeyRequest","RemoveMultiUserRestrictionRequest","ResetPasswordTokenResponse","ResetPasswordWithTokenRequest","ResetSubjectPasswordRequest","newPassword","AccessResourceRequestResourceEntityIdentifierEntry","SearchSubjectRequest","query","orderByDirection","e.OrderByDirection","orderBy","SearchSubjectResponse","result","totalResults","SendEmailVerificationRequest","UpdateUserRequest","user","subjectTypes","searchTerms","namespacedEmail","namespacedSession","direction","e.SortDirection","field","e.UserSortField","VerifyEmailRequest","BasePersona","fromPersona","readAttributes","attrs","getValueFromAttribute","attr","vals","_b","_c","val","a","CamelCase","TypedPersona","_super","NamespacedPersona","_this","apply","str","toUpperCase","DeveloperPersona","developer","PartnerPersona","partner","isSuperAdmin","isAdmin","canCustomizeWhitelabel","canAccessBilling","canAccessAccounts","canAccessMarketing","canAccessSales","canAccessConcierge","canAccessBrands","canAccessDashboard","canAccessOrders","canAccessCompanyProfile","canAccessAutomations","canAccessMarketplace","canEnableApps","canAccessRetailBilling","PartnerAppPersona","partner_app","TitleChoice","SalespersonPersona","sales_person","titleChoice","SMBPersona","smb","notificationsEnabled","VendorPersona","vendor","DigitalAgentPersona","digital_agent","SuccessPersona","success","AccountGroupPersona","account_group","persona","ctx","getTypeFromContext","personaCls","Access","scope","public","HostService","environmentService","host","_host","getEnvironment","Environment","LOCAL","TEST","DEMO","PROD","httpsHost","_httpsHost","hostWithScheme","httpsHostWithScheme","i0","ɵɵinject","i1","EnvironmentService","factory","ɵfac","providedIn","UserIAMApiService","http","hostService","apiOptions","headers","HttpHeaders","Content-Type","withCredentials","getSubjectBySession","request","post","pipe","resp","share","listPersonas","getToken","getSessionToken","resetPasswordWithToken","observe","getImpersonationToken","i1$1","HttpClient","LoginRequest","providerIdToken","provider_id_token","LoginResponse","sessionId","LogoutResponse","SSOLoginRequest","nextUrl","next_url","IamHttpApiService","includeCredentials","login","logout","ssoLogin","params","URLSearchParams","apiJson","append","window","location","href","toString","IAMApiService","registerSubject","authenticateSubject","getSubjects","getSubjectsByEmail","mutateAttributes","resetSubjectPassword","changeSubjectEmail","deleteSubject","searchSubject","getSubjectContext","registerResourceOwner","registerResource","registerPolicy","accessResource","getShortLivedToken","addKey","removeKey","createSession","getResetPasswordToken","listPersonasByEmail","createTemporarySubject","getMultiUsers","listUsers","updateUser","deleteUser","listSecurityLogs","verifyEmail","sendEmailVerification","getMultiExternalId","createExternalId","addMultiUserRestriction","removeMultiUserRestriction","IAMService","api","httpApi","sessionService","iamApi","personaType","getLoggedInSubject","getSessionId","switchMap","listLoggedInPersonas","userContainers","u","optionalArgs","SessionService"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum BooleanOperator {\n AND = 0,\n OR = 1,\n NOT = 2,\n}\n\nexport enum ForOperator {\n ANY = 0,\n ALL = 1,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum AccessScope {\n READ = 0,\n WRITE = 1,\n DELETE = 2,\n LIST = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum AlgorithmType {\n ALGORITHM_TYPE_ES256 = 0,\n ALGORITHM_TYPE_RS256 = 1,\n}\n\nexport enum OrderByDirection {\n ASCENDING = 0,\n DESCENDING = 1,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum RestrictionType {\n RESTRICTION_TYPE_UNSET = 0,\n RESTRICTION_TYPE_RESET_PASSWORD_BEFORE_LOGIN = 1,\n RESTRICTION_TYPE_FROZEN = 2,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum SortDirection {\n SORT_DIRECTION_INVALID = 0,\n SORT_DIRECTION_ASCENDING = 1,\n SORT_DIRECTION_DESCENDING = 2,\n}\n\nexport enum UserSortField {\n USER_SORT_FIELD_INVALID = 0,\n USER_SORT_FIELD_CREATED = 1,\n USER_SORT_FIELD_FIRST_NAME = 2,\n USER_SORT_FIELD_LAST_NAME = 3,\n USER_SORT_FIELD_EMAIL = 4,\n USER_SORT_FIELD_LAST_LOGIN = 5,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Attribute implements i.AttributeInterface {\n intAttribute: number;\n doubleAttribute: number;\n stringAttribute: string;\n boolAttribute: boolean;\n structAttribute: StructAttribute;\n listAttribute: ListAttribute;\n timestampAttribute: Date;\n geopointAttribute: GeoPointAttribute;\n\n static fromProto(proto: any): Attribute {\n let m = new Attribute();\n m = Object.assign(m, proto);\n if (proto.intAttribute) {m.intAttribute = parseInt(proto.intAttribute, 10);}\n if (proto.structAttribute) {m.structAttribute = StructAttribute.fromProto(proto.structAttribute);}\n if (proto.listAttribute) {m.listAttribute = ListAttribute.fromProto(proto.listAttribute);}\n if (proto.timestampAttribute) {m.timestampAttribute = new Date(proto.timestampAttribute);}\n if (proto.geopointAttribute) {m.geopointAttribute = GeoPointAttribute.fromProto(proto.geopointAttribute);}\n return m;\n }\n\n constructor(kwargs?: i.AttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.intAttribute !== 'undefined') {toReturn['intAttribute'] = this.intAttribute;}\n if (typeof this.doubleAttribute !== 'undefined') {toReturn['doubleAttribute'] = this.doubleAttribute;}\n if (typeof this.stringAttribute !== 'undefined') {toReturn['stringAttribute'] = this.stringAttribute;}\n if (typeof this.boolAttribute !== 'undefined') {toReturn['boolAttribute'] = this.boolAttribute;}\n if (typeof this.structAttribute !== 'undefined' && this.structAttribute !== null) {toReturn['structAttribute'] = 'toApiJson' in this.structAttribute ? (this.structAttribute as any).toApiJson() : this.structAttribute;}\n if (typeof this.listAttribute !== 'undefined' && this.listAttribute !== null) {toReturn['listAttribute'] = 'toApiJson' in this.listAttribute ? (this.listAttribute as any).toApiJson() : this.listAttribute;}\n if (typeof this.timestampAttribute !== 'undefined' && this.timestampAttribute !== null) {toReturn['timestampAttribute'] = 'toApiJson' in this.timestampAttribute ? (this.timestampAttribute as any).toApiJson() : this.timestampAttribute;}\n if (typeof this.geopointAttribute !== 'undefined' && this.geopointAttribute !== null) {toReturn['geopointAttribute'] = 'toApiJson' in this.geopointAttribute ? (this.geopointAttribute as any).toApiJson() : this.geopointAttribute;}\n return toReturn;\n }\n}\n\nexport class StructAttributeAttributesEntry implements i.StructAttributeAttributesEntryInterface {\n key: string;\n value: Attribute;\n\n static fromProto(proto: any): StructAttributeAttributesEntry {\n let m = new StructAttributeAttributesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = Attribute.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.StructAttributeAttributesEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class GeoPointAttribute implements i.GeoPointAttributeInterface {\n latitude: number;\n longitude: number;\n\n static fromProto(proto: any): GeoPointAttribute {\n let m = new GeoPointAttribute();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GeoPointAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.latitude !== 'undefined') {toReturn['latitude'] = this.latitude;}\n if (typeof this.longitude !== 'undefined') {toReturn['longitude'] = this.longitude;}\n return toReturn;\n }\n}\n\nexport class ListAttribute implements i.ListAttributeInterface {\n attributes: Attribute[];\n\n static fromProto(proto: any): ListAttribute {\n let m = new ListAttribute();\n m = Object.assign(m, proto);\n if (proto.attributes) {m.attributes = proto.attributes.map(Attribute.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n return toReturn;\n }\n}\n\nexport class StructAttribute implements i.StructAttributeInterface {\n attributes: {[key: string]: Attribute};\n\n static fromProto(proto: any): StructAttribute {\n let m = new StructAttribute();\n m = Object.assign(m, proto);\n if (proto.attributes) {m.attributes = Object.keys(proto.attributes).reduce<any>((obj, k) => { obj[k] = Attribute.fromProto(proto.attributes[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.StructAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { StructAttribute } from './attributes';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Context implements i.ContextInterface {\n namespaced: NamespacedContext;\n typed: TypedContext;\n\n static fromProto(proto: any): Context {\n let m = new Context();\n m = Object.assign(m, proto);\n if (proto.namespaced) {m.namespaced = NamespacedContext.fromProto(proto.namespaced);}\n if (proto.typed) {m.typed = TypedContext.fromProto(proto.typed);}\n return m;\n }\n\n constructor(kwargs?: i.ContextInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespaced !== 'undefined' && this.namespaced !== null) {toReturn['namespaced'] = 'toApiJson' in this.namespaced ? (this.namespaced as any).toApiJson() : this.namespaced;}\n if (typeof this.typed !== 'undefined' && this.typed !== null) {toReturn['typed'] = 'toApiJson' in this.typed ? (this.typed as any).toApiJson() : this.typed;}\n return toReturn;\n }\n}\n\nexport class MultiValueAttribute implements i.MultiValueAttributeInterface {\n key: string;\n values: string[];\n\n static fromProto(proto: any): MultiValueAttribute {\n let m = new MultiValueAttribute();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.MultiValueAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.values !== 'undefined') {toReturn['values'] = this.values;}\n return toReturn;\n }\n}\n\nexport class Mutation implements i.MutationInterface {\n add: SingleValueAttribute;\n replace: MultiValueAttribute;\n remove: SingleValueAttribute;\n dropKey: string;\n replaceAttributes: StructAttribute;\n addAttributes: StructAttribute;\n removeAttributes: StructAttribute;\n\n static fromProto(proto: any): Mutation {\n let m = new Mutation();\n m = Object.assign(m, proto);\n if (proto.add) {m.add = SingleValueAttribute.fromProto(proto.add);}\n if (proto.replace) {m.replace = MultiValueAttribute.fromProto(proto.replace);}\n if (proto.remove) {m.remove = SingleValueAttribute.fromProto(proto.remove);}\n if (proto.replaceAttributes) {m.replaceAttributes = StructAttribute.fromProto(proto.replaceAttributes);}\n if (proto.addAttributes) {m.addAttributes = StructAttribute.fromProto(proto.addAttributes);}\n if (proto.removeAttributes) {m.removeAttributes = StructAttribute.fromProto(proto.removeAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.MutationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.add !== 'undefined' && this.add !== null) {toReturn['add'] = 'toApiJson' in this.add ? (this.add as any).toApiJson() : this.add;}\n if (typeof this.replace !== 'undefined' && this.replace !== null) {toReturn['replace'] = 'toApiJson' in this.replace ? (this.replace as any).toApiJson() : this.replace;}\n if (typeof this.remove !== 'undefined' && this.remove !== null) {toReturn['remove'] = 'toApiJson' in this.remove ? (this.remove as any).toApiJson() : this.remove;}\n if (typeof this.dropKey !== 'undefined') {toReturn['dropKey'] = this.dropKey;}\n if (typeof this.replaceAttributes !== 'undefined' && this.replaceAttributes !== null) {toReturn['replaceAttributes'] = 'toApiJson' in this.replaceAttributes ? (this.replaceAttributes as any).toApiJson() : this.replaceAttributes;}\n if (typeof this.addAttributes !== 'undefined' && this.addAttributes !== null) {toReturn['addAttributes'] = 'toApiJson' in this.addAttributes ? (this.addAttributes as any).toApiJson() : this.addAttributes;}\n if (typeof this.removeAttributes !== 'undefined' && this.removeAttributes !== null) {toReturn['removeAttributes'] = 'toApiJson' in this.removeAttributes ? (this.removeAttributes as any).toApiJson() : this.removeAttributes;}\n return toReturn;\n }\n}\n\nexport class NamespacedContext implements i.NamespacedContextInterface {\n namespace: string;\n type: string;\n\n static fromProto(proto: any): NamespacedContext {\n let m = new NamespacedContext();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.NamespacedContextInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n return toReturn;\n }\n}\n\nexport class Persona implements i.PersonaInterface {\n subject: Subject;\n context: Context;\n\n static fromProto(proto: any): Persona {\n let m = new Persona();\n m = Object.assign(m, proto);\n if (proto.subject) {m.subject = Subject.fromProto(proto.subject);}\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.PersonaInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subject !== 'undefined' && this.subject !== null) {toReturn['subject'] = 'toApiJson' in this.subject ? (this.subject as any).toApiJson() : this.subject;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n return toReturn;\n }\n}\n\nexport class PublicKey implements i.PublicKeyInterface {\n key: string;\n id: string;\n algorithmType: e.AlgorithmType;\n\n static fromProto(proto: any): PublicKey {\n let m = new PublicKey();\n m = Object.assign(m, proto);\n if (proto.algorithmType) {m.algorithmType = enumStringToValue<e.AlgorithmType>(e.AlgorithmType, proto.algorithmType);}\n return m;\n }\n\n constructor(kwargs?: i.PublicKeyInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.algorithmType !== 'undefined') {toReturn['algorithmType'] = this.algorithmType;}\n return toReturn;\n }\n}\n\nexport class Query implements i.QueryInterface {\n searchTerm: string;\n attributeKeys: string[];\n\n static fromProto(proto: any): Query {\n let m = new Query();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.QueryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.searchTerm !== 'undefined') {toReturn['searchTerm'] = this.searchTerm;}\n if (typeof this.attributeKeys !== 'undefined') {toReturn['attributeKeys'] = this.attributeKeys;}\n return toReturn;\n }\n}\n\nexport class SingleValueAttribute implements i.SingleValueAttributeInterface {\n key: string;\n value: string;\n\n static fromProto(proto: any): SingleValueAttribute {\n let m = new SingleValueAttribute();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SingleValueAttributeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined') {toReturn['value'] = this.value;}\n return toReturn;\n }\n}\n\nexport class Subject implements i.SubjectInterface {\n subjectId: string;\n email: string;\n userId: string;\n partnerId: string;\n attributes: MultiValueAttribute[];\n created: Date;\n updated: Date;\n lastLogin: Date;\n publicKeys: PublicKey[];\n structAttributes: StructAttribute;\n\n static fromProto(proto: any): Subject {\n let m = new Subject();\n m = Object.assign(m, proto);\n if (proto.attributes) {m.attributes = proto.attributes.map(MultiValueAttribute.fromProto);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.lastLogin) {m.lastLogin = new Date(proto.lastLogin);}\n if (proto.publicKeys) {m.publicKeys = proto.publicKeys.map(PublicKey.fromProto);}\n if (proto.structAttributes) {m.structAttributes = StructAttribute.fromProto(proto.structAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.partnerId !== 'undefined') {toReturn['partnerId'] = this.partnerId;}\n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.lastLogin !== 'undefined' && this.lastLogin !== null) {toReturn['lastLogin'] = 'toApiJson' in this.lastLogin ? (this.lastLogin as any).toApiJson() : this.lastLogin;}\n if (typeof this.publicKeys !== 'undefined' && this.publicKeys !== null) {toReturn['publicKeys'] = 'toApiJson' in this.publicKeys ? (this.publicKeys as any).toApiJson() : this.publicKeys;}\n if (typeof this.structAttributes !== 'undefined' && this.structAttributes !== null) {toReturn['structAttributes'] = 'toApiJson' in this.structAttributes ? (this.structAttributes as any).toApiJson() : this.structAttributes;}\n return toReturn;\n }\n}\n\nexport class SubjectResult implements i.SubjectResultInterface {\n subject: Subject;\n\n static fromProto(proto: any): SubjectResult {\n let m = new SubjectResult();\n m = Object.assign(m, proto);\n if (proto.subject) {m.subject = Subject.fromProto(proto.subject);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectResultInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subject !== 'undefined' && this.subject !== null) {toReturn['subject'] = 'toApiJson' in this.subject ? (this.subject as any).toApiJson() : this.subject;}\n return toReturn;\n }\n}\n\nexport class TypedContext implements i.TypedContextInterface {\n type: string;\n\n static fromProto(proto: any): TypedContext {\n let m = new TypedContext();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.TypedContextInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class FieldMask implements i.FieldMaskInterface {\n paths: string[];\n\n static fromProto(proto: any): FieldMask {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.FieldMaskInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.paths !== 'undefined') {toReturn['paths'] = this.paths;}\n return toReturn;\n }\n}\n\n","// NOTE: THIS HAS BEEN MANUALLY EDITED. PLEASE SEE THE BELOW COMMENTS TO SEE WHERE IT HAS BEEN EDITED\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { Attribute } from './attributes';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class IfClause implements i.IfClauseInterface {\n resourceAttributeName: string;\n resourceAttributeValue: Attribute;\n thenPolicy: PolicyNode;\n elsePolicy: PolicyNode;\n\n static fromProto(proto: any): IfClause {\n let m = new IfClause();\n m = Object.assign(m, proto);\n if (proto.resourceAttributeValue) {m.resourceAttributeValue = Attribute.fromProto(proto.resourceAttributeValue);}\n if (proto.thenPolicy) {m.thenPolicy = PolicyNode.fromProto(proto.thenPolicy);}\n if (proto.elsePolicy) {m.elsePolicy = PolicyNode.fromProto(proto.elsePolicy);}\n return m;\n }\n\n constructor(kwargs?: i.IfClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.resourceAttributeName !== 'undefined') {toReturn['resourceAttributeName'] = this.resourceAttributeName;}\n if (typeof this.resourceAttributeValue !== 'undefined' && this.resourceAttributeValue !== null) {toReturn['resourceAttributeValue'] = 'toApiJson' in this.resourceAttributeValue ? (this.resourceAttributeValue as any).toApiJson() : this.resourceAttributeValue;}\n if (typeof this.thenPolicy !== 'undefined' && this.thenPolicy !== null) {toReturn['thenPolicy'] = 'toApiJson' in this.thenPolicy ? (this.thenPolicy as any).toApiJson() : this.thenPolicy;}\n if (typeof this.elsePolicy !== 'undefined' && this.elsePolicy !== null) {toReturn['elsePolicy'] = 'toApiJson' in this.elsePolicy ? (this.elsePolicy as any).toApiJson() : this.elsePolicy;}\n return toReturn;\n }\n}\n\nexport class Operator implements i.OperatorInterface {\n\n // Edited from e.policiesBooleanOperator to e.BooleanOperator\n operator: e.BooleanOperator;\n children: PolicyNode[];\n\n static fromProto(proto: any): Operator {\n let m = new Operator();\n m = Object.assign(m, proto);\n\n // Edited from e.policiesBooleanOperator to e.BooleanOperator\n if (proto.operator) {m.operator = enumStringToValue<e.BooleanOperator>(e.BooleanOperator, proto.operator);}\n if (proto.children) {m.children = proto.children.map(PolicyNode.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.OperatorInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.operator !== 'undefined') {toReturn['operator'] = this.operator;}\n if (typeof this.children !== 'undefined' && this.children !== null) {toReturn['children'] = 'toApiJson' in this.children ? (this.children as any).toApiJson() : this.children;}\n return toReturn;\n }\n}\n\nexport class PolicyNode implements i.PolicyNodeInterface {\n subjectResourceIntersection: SubjectResourceIntersectionClause;\n operator: Operator;\n subjectValueIntersection: SubjectValueIntersectionClause;\n subjectMissingValue: SubjectMissingValueClause;\n subjectResourceSubset: SubjectResourceSubsetClause;\n subjectResourceFor: SubjectResourceForClause;\n ifClause: IfClause;\n\n static fromProto(proto: any): PolicyNode {\n let m = new PolicyNode();\n m = Object.assign(m, proto);\n if (proto.subjectResourceIntersection) {m.subjectResourceIntersection = SubjectResourceIntersectionClause.fromProto(proto.subjectResourceIntersection);}\n if (proto.operator) {m.operator = Operator.fromProto(proto.operator);}\n if (proto.subjectValueIntersection) {m.subjectValueIntersection = SubjectValueIntersectionClause.fromProto(proto.subjectValueIntersection);}\n if (proto.subjectMissingValue) {m.subjectMissingValue = SubjectMissingValueClause.fromProto(proto.subjectMissingValue);}\n if (proto.subjectResourceSubset) {m.subjectResourceSubset = SubjectResourceSubsetClause.fromProto(proto.subjectResourceSubset);}\n if (proto.subjectResourceFor) {m.subjectResourceFor = SubjectResourceForClause.fromProto(proto.subjectResourceFor);}\n if (proto.ifClause) {m.ifClause = IfClause.fromProto(proto.ifClause);}\n return m;\n }\n\n constructor(kwargs?: i.PolicyNodeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectResourceIntersection !== 'undefined' && this.subjectResourceIntersection !== null) {toReturn['subjectResourceIntersection'] = 'toApiJson' in this.subjectResourceIntersection ? (this.subjectResourceIntersection as any).toApiJson() : this.subjectResourceIntersection;}\n if (typeof this.operator !== 'undefined' && this.operator !== null) {toReturn['operator'] = 'toApiJson' in this.operator ? (this.operator as any).toApiJson() : this.operator;}\n if (typeof this.subjectValueIntersection !== 'undefined' && this.subjectValueIntersection !== null) {toReturn['subjectValueIntersection'] = 'toApiJson' in this.subjectValueIntersection ? (this.subjectValueIntersection as any).toApiJson() : this.subjectValueIntersection;}\n if (typeof this.subjectMissingValue !== 'undefined' && this.subjectMissingValue !== null) {toReturn['subjectMissingValue'] = 'toApiJson' in this.subjectMissingValue ? (this.subjectMissingValue as any).toApiJson() : this.subjectMissingValue;}\n if (typeof this.subjectResourceSubset !== 'undefined' && this.subjectResourceSubset !== null) {toReturn['subjectResourceSubset'] = 'toApiJson' in this.subjectResourceSubset ? (this.subjectResourceSubset as any).toApiJson() : this.subjectResourceSubset;}\n if (typeof this.subjectResourceFor !== 'undefined' && this.subjectResourceFor !== null) {toReturn['subjectResourceFor'] = 'toApiJson' in this.subjectResourceFor ? (this.subjectResourceFor as any).toApiJson() : this.subjectResourceFor;}\n if (typeof this.ifClause !== 'undefined' && this.ifClause !== null) {toReturn['ifClause'] = 'toApiJson' in this.ifClause ? (this.ifClause as any).toApiJson() : this.ifClause;}\n return toReturn;\n }\n}\n\nexport class SubjectMissingValueClause implements i.SubjectMissingValueClauseInterface {\n attributeName: string;\n\n static fromProto(proto: any): SubjectMissingValueClause {\n let m = new SubjectMissingValueClause();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectMissingValueClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n return toReturn;\n }\n}\n\nexport class SubjectResourceForClause implements i.SubjectResourceForClauseInterface {\n attributeName: string;\n // Edited from e.policiesForOperator to e.ForOperator\n operator: e.ForOperator;\n rules: PolicyNode;\n\n static fromProto(proto: any): SubjectResourceForClause {\n let m = new SubjectResourceForClause();\n m = Object.assign(m, proto);\n if (proto.operator) {m.operator = enumStringToValue<e.ForOperator>(e.ForOperator, proto.operator);}\n if (proto.rules) {m.rules = PolicyNode.fromProto(proto.rules);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectResourceForClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.operator !== 'undefined') {toReturn['operator'] = this.operator;}\n if (typeof this.rules !== 'undefined' && this.rules !== null) {toReturn['rules'] = 'toApiJson' in this.rules ? (this.rules as any).toApiJson() : this.rules;}\n return toReturn;\n }\n}\n\nexport class SubjectResourceIntersectionClause implements i.SubjectResourceIntersectionClauseInterface {\n attributeName: string;\n resourceAttributeName: string;\n\n static fromProto(proto: any): SubjectResourceIntersectionClause {\n let m = new SubjectResourceIntersectionClause();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectResourceIntersectionClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.resourceAttributeName !== 'undefined') {toReturn['resourceAttributeName'] = this.resourceAttributeName;}\n return toReturn;\n }\n}\n\nexport class SubjectResourceSubsetClause implements i.SubjectResourceSubsetClauseInterface {\n attributeName: string;\n resourceAttributeName: string;\n\n static fromProto(proto: any): SubjectResourceSubsetClause {\n let m = new SubjectResourceSubsetClause();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectResourceSubsetClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.resourceAttributeName !== 'undefined') {toReturn['resourceAttributeName'] = this.resourceAttributeName;}\n return toReturn;\n }\n}\n\nexport class SubjectValueIntersectionClause implements i.SubjectValueIntersectionClauseInterface {\n attributeName: string;\n attributeValue: string;\n structuredAttributeValue: Attribute;\n\n static fromProto(proto: any): SubjectValueIntersectionClause {\n let m = new SubjectValueIntersectionClause();\n m = Object.assign(m, proto);\n if (proto.structuredAttributeValue) {m.structuredAttributeValue = Attribute.fromProto(proto.structuredAttributeValue);}\n return m;\n }\n\n constructor(kwargs?: i.SubjectValueIntersectionClauseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.attributeName !== 'undefined') {toReturn['attributeName'] = this.attributeName;}\n if (typeof this.attributeValue !== 'undefined') {toReturn['attributeValue'] = this.attributeValue;}\n if (typeof this.structuredAttributeValue !== 'undefined' && this.structuredAttributeValue !== null) {toReturn['structuredAttributeValue'] = 'toApiJson' in this.structuredAttributeValue ? (this.structuredAttributeValue as any).toApiJson() : this.structuredAttributeValue;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PolicyNode } from './policies';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AccessCheckFailures implements i.AccessCheckFailuresInterface {\n failures: ResourceIdentifier[];\n\n static fromProto(proto: any): AccessCheckFailures {\n let m = new AccessCheckFailures();\n m = Object.assign(m, proto);\n if (proto.failures) {m.failures = proto.failures.map(ResourceIdentifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.AccessCheckFailuresInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.failures !== 'undefined' && this.failures !== null) {toReturn['failures'] = 'toApiJson' in this.failures ? (this.failures as any).toApiJson() : this.failures;}\n return toReturn;\n }\n}\n\nexport class ResourceIdentifierIdentifiersEntry implements i.ResourceIdentifierIdentifiersEntryInterface {\n key: string;\n value: ValueList;\n\n static fromProto(proto: any): ResourceIdentifierIdentifiersEntry {\n let m = new ResourceIdentifierIdentifiersEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = ValueList.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.ResourceIdentifierIdentifiersEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class Policy implements i.PolicyInterface {\n appId: string;\n resourceId: string;\n policyId: string;\n policyName: string;\n operations: e.AccessScope[];\n actions: string[];\n policy: PolicyNode;\n\n static fromProto(proto: any): Policy {\n let m = new Policy();\n m = Object.assign(m, proto);\n if (proto.operations) {m.operations = proto.operations.map((v: string) => enumStringToValue<e.AccessScope>(e.AccessScope, v));}\n if (proto.policy) {m.policy = PolicyNode.fromProto(proto.policy);}\n return m;\n }\n\n constructor(kwargs?: i.PolicyInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.appId !== 'undefined') {toReturn['appId'] = this.appId;}\n if (typeof this.resourceId !== 'undefined') {toReturn['resourceId'] = this.resourceId;}\n if (typeof this.policyId !== 'undefined') {toReturn['policyId'] = this.policyId;}\n if (typeof this.policyName !== 'undefined') {toReturn['policyName'] = this.policyName;}\n if (typeof this.operations !== 'undefined') {toReturn['operations'] = this.operations;}\n if (typeof this.actions !== 'undefined') {toReturn['actions'] = this.actions;}\n if (typeof this.policy !== 'undefined' && this.policy !== null) {toReturn['policy'] = 'toApiJson' in this.policy ? (this.policy as any).toApiJson() : this.policy;}\n return toReturn;\n }\n}\n\nexport class ResourceIdentifier implements i.ResourceIdentifierInterface {\n identifiers: {[key: string]: ValueList};\n\n static fromProto(proto: any): ResourceIdentifier {\n let m = new ResourceIdentifier();\n m = Object.assign(m, proto);\n if (proto.identifiers) {m.identifiers = Object.keys(proto.identifiers).reduce<any>((obj, k) => { obj[k] = ValueList.fromProto(proto.identifiers[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.ResourceIdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.identifiers !== 'undefined' && this.identifiers !== null) {toReturn['identifiers'] = 'toApiJson' in this.identifiers ? (this.identifiers as any).toApiJson() : this.identifiers;}\n return toReturn;\n }\n}\n\nexport class ResourceOwner implements i.ResourceOwnerInterface {\n appId: string;\n appName: string;\n\n static fromProto(proto: any): ResourceOwner {\n let m = new ResourceOwner();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ResourceOwnerInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.appId !== 'undefined') {toReturn['appId'] = this.appId;}\n if (typeof this.appName !== 'undefined') {toReturn['appName'] = this.appName;}\n return toReturn;\n }\n}\n\nexport class ValueList implements i.ValueListInterface {\n values: string[];\n\n static fromProto(proto: any): ValueList {\n let m = new ValueList();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ValueListInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.values !== 'undefined') {toReturn['values'] = this.values;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class SecurityLog implements i.SecurityLogInterface {\n userId: string;\n actionId: string;\n logId: string;\n description: string;\n created: Date;\n\n static fromProto(proto: any): SecurityLog {\n let m = new SecurityLog();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n return m;\n }\n\n constructor(kwargs?: i.SecurityLogInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.actionId !== 'undefined') {toReturn['actionId'] = this.actionId;}\n if (typeof this.logId !== 'undefined') {toReturn['logId'] = this.logId;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PublicKey } from './subjects';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Identifier implements i.IdentifierInterface {\n subjectId: string;\n userId: string;\n\n static fromProto(proto: any): Identifier {\n let m = new Identifier();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.IdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n return toReturn;\n }\n}\n\nexport class NamespacedEmail implements i.NamespacedEmailInterface {\n namespace: string;\n email: string;\n\n static fromProto(proto: any): NamespacedEmail {\n let m = new NamespacedEmail();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.NamespacedEmailInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n return toReturn;\n }\n}\n\nexport class NamespacedSession implements i.NamespacedSessionInterface {\n namespace: string;\n session: string;\n\n static fromProto(proto: any): NamespacedSession {\n let m = new NamespacedSession();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.NamespacedSessionInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n return toReturn;\n }\n}\n\nexport class TypedExternalIdentifier implements i.TypedExternalIdentifierInterface {\n externalIdType: string;\n externalId: string;\n\n static fromProto(proto: any): TypedExternalIdentifier {\n let m = new TypedExternalIdentifier();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.TypedExternalIdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.externalIdType !== 'undefined') {toReturn['externalIdType'] = this.externalIdType;}\n if (typeof this.externalId !== 'undefined') {toReturn['externalId'] = this.externalId;}\n return toReturn;\n }\n}\n\nexport class User implements i.UserInterface {\n userId: string;\n namespace: string;\n email: string;\n created: Date;\n updated: Date;\n firstName: string;\n greetingName: string;\n lastName: string;\n languageCode: string;\n emailVerified: boolean;\n roles: string[];\n lastLogin: Date;\n publicKeys: PublicKey[];\n\n static fromProto(proto: any): User {\n let m = new User();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.lastLogin) {m.lastLogin = new Date(proto.lastLogin);}\n if (proto.publicKeys) {m.publicKeys = proto.publicKeys.map(PublicKey.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UserInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.firstName !== 'undefined') {toReturn['firstName'] = this.firstName;}\n if (typeof this.greetingName !== 'undefined') {toReturn['greetingName'] = this.greetingName;}\n if (typeof this.lastName !== 'undefined') {toReturn['lastName'] = this.lastName;}\n if (typeof this.languageCode !== 'undefined') {toReturn['languageCode'] = this.languageCode;}\n if (typeof this.emailVerified !== 'undefined') {toReturn['emailVerified'] = this.emailVerified;}\n if (typeof this.roles !== 'undefined') {toReturn['roles'] = this.roles;}\n if (typeof this.lastLogin !== 'undefined' && this.lastLogin !== null) {toReturn['lastLogin'] = 'toApiJson' in this.lastLogin ? (this.lastLogin as any).toApiJson() : this.lastLogin;}\n if (typeof this.publicKeys !== 'undefined' && this.publicKeys !== null) {toReturn['publicKeys'] = 'toApiJson' in this.publicKeys ? (this.publicKeys as any).toApiJson() : this.publicKeys;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { Context, SubjectResult, Persona, Mutation, MultiValueAttribute, Query, SingleValueAttribute } from './subjects';\nimport { FieldMask } from './field-mask';\nimport { ResourceIdentifier, Policy, ResourceOwner, ValueList } from './resources';\nimport { SecurityLog } from './security-logs';\nimport { StructAttribute } from './attributes';\nimport { TypedExternalIdentifier, Identifier, User, NamespacedEmail, NamespacedSession } from './users';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AccessResourceRequest implements i.AccessResourceRequestInterface {\n context: Context;\n subjectId: string;\n email: string;\n userId: string;\n session: string;\n ownerId: string;\n resourceId: string;\n resourceEntityIdentifier: {[key: string]: ValueList};\n accessScope: e.AccessScope[];\n actions: string[];\n resourceEntityIdentifiers: ResourceIdentifier[];\n resourceAttributes: StructAttribute;\n\n static fromProto(proto: any): AccessResourceRequest {\n let m = new AccessResourceRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.resourceEntityIdentifier) {m.resourceEntityIdentifier = Object.keys(proto.resourceEntityIdentifier).reduce<any>((obj, k) => { obj[k] = ValueList.fromProto(proto.resourceEntityIdentifier[k]); return obj; }, {});}\n if (proto.accessScope) {m.accessScope = proto.accessScope.map((v: string) => enumStringToValue<e.AccessScope>(e.AccessScope, v));}\n if (proto.resourceEntityIdentifiers) {m.resourceEntityIdentifiers = proto.resourceEntityIdentifiers.map(ResourceIdentifier.fromProto);}\n if (proto.resourceAttributes) {m.resourceAttributes = StructAttribute.fromProto(proto.resourceAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.AccessResourceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n if (typeof this.ownerId !== 'undefined') {toReturn['ownerId'] = this.ownerId;}\n if (typeof this.resourceId !== 'undefined') {toReturn['resourceId'] = this.resourceId;}\n if (typeof this.resourceEntityIdentifier !== 'undefined' && this.resourceEntityIdentifier !== null) {toReturn['resourceEntityIdentifier'] = 'toApiJson' in this.resourceEntityIdentifier ? (this.resourceEntityIdentifier as any).toApiJson() : this.resourceEntityIdentifier;}\n if (typeof this.accessScope !== 'undefined') {toReturn['accessScope'] = this.accessScope;}\n if (typeof this.actions !== 'undefined') {toReturn['actions'] = this.actions;}\n if (typeof this.resourceEntityIdentifiers !== 'undefined' && this.resourceEntityIdentifiers !== null) {toReturn['resourceEntityIdentifiers'] = 'toApiJson' in this.resourceEntityIdentifiers ? (this.resourceEntityIdentifiers as any).toApiJson() : this.resourceEntityIdentifiers;}\n if (typeof this.resourceAttributes !== 'undefined' && this.resourceAttributes !== null) {toReturn['resourceAttributes'] = 'toApiJson' in this.resourceAttributes ? (this.resourceAttributes as any).toApiJson() : this.resourceAttributes;}\n return toReturn;\n }\n}\n\nexport class AddKeyRequest implements i.AddKeyRequestInterface {\n email: string;\n context: Context;\n algorithmType: e.AlgorithmType;\n userIdentifier: UserIdentifier;\n\n static fromProto(proto: any): AddKeyRequest {\n let m = new AddKeyRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.algorithmType) {m.algorithmType = enumStringToValue<e.AlgorithmType>(e.AlgorithmType, proto.algorithmType);}\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.AddKeyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.algorithmType !== 'undefined') {toReturn['algorithmType'] = this.algorithmType;}\n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n return toReturn;\n }\n}\n\nexport class AddKeyResponse implements i.AddKeyResponseInterface {\n privateKey: string;\n keyId: string;\n\n static fromProto(proto: any): AddKeyResponse {\n let m = new AddKeyResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.AddKeyResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.privateKey !== 'undefined') {toReturn['privateKey'] = this.privateKey;}\n if (typeof this.keyId !== 'undefined') {toReturn['keyId'] = this.keyId;}\n return toReturn;\n }\n}\n\nexport class AddMultiUserRestrictionRequest implements i.AddMultiUserRestrictionRequestInterface {\n userIdentifiers: UserIdentifier[];\n restrictionType: e.RestrictionType;\n\n static fromProto(proto: any): AddMultiUserRestrictionRequest {\n let m = new AddMultiUserRestrictionRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n if (proto.restrictionType) {m.restrictionType = enumStringToValue<e.RestrictionType>(e.RestrictionType, proto.restrictionType);}\n return m;\n }\n\n constructor(kwargs?: i.AddMultiUserRestrictionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n if (typeof this.restrictionType !== 'undefined') {toReturn['restrictionType'] = this.restrictionType;}\n return toReturn;\n }\n}\n\nexport class AuthenticateSubjectRequest implements i.AuthenticateSubjectRequestInterface {\n context: Context;\n email: string;\n password: string;\n\n static fromProto(proto: any): AuthenticateSubjectRequest {\n let m = new AuthenticateSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.AuthenticateSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n return toReturn;\n }\n}\n\nexport class ChangeSubjectEmailRequest implements i.ChangeSubjectEmailRequestInterface {\n context: Context;\n subjectId: string;\n newEmail: string;\n\n static fromProto(proto: any): ChangeSubjectEmailRequest {\n let m = new ChangeSubjectEmailRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.ChangeSubjectEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.newEmail !== 'undefined') {toReturn['newEmail'] = this.newEmail;}\n return toReturn;\n }\n}\n\nexport class CreateExternalIDRequest implements i.CreateExternalIDRequestInterface {\n userIdentifier: UserIdentifier;\n typedExternalIdentifier: TypedExternalIdentifier;\n\n static fromProto(proto: any): CreateExternalIDRequest {\n let m = new CreateExternalIDRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n if (proto.typedExternalIdentifier) {m.typedExternalIdentifier = TypedExternalIdentifier.fromProto(proto.typedExternalIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.CreateExternalIDRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n if (typeof this.typedExternalIdentifier !== 'undefined' && this.typedExternalIdentifier !== null) {toReturn['typedExternalIdentifier'] = 'toApiJson' in this.typedExternalIdentifier ? (this.typedExternalIdentifier as any).toApiJson() : this.typedExternalIdentifier;}\n return toReturn;\n }\n}\n\nexport class CreateSessionRequest implements i.CreateSessionRequestInterface {\n context: Context;\n oauthCredentials: OAuthCredentials;\n subjectCredentials: SubjectCredentials;\n\n static fromProto(proto: any): CreateSessionRequest {\n let m = new CreateSessionRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.oauthCredentials) {m.oauthCredentials = OAuthCredentials.fromProto(proto.oauthCredentials);}\n if (proto.subjectCredentials) {m.subjectCredentials = SubjectCredentials.fromProto(proto.subjectCredentials);}\n return m;\n }\n\n constructor(kwargs?: i.CreateSessionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.oauthCredentials !== 'undefined' && this.oauthCredentials !== null) {toReturn['oauthCredentials'] = 'toApiJson' in this.oauthCredentials ? (this.oauthCredentials as any).toApiJson() : this.oauthCredentials;}\n if (typeof this.subjectCredentials !== 'undefined' && this.subjectCredentials !== null) {toReturn['subjectCredentials'] = 'toApiJson' in this.subjectCredentials ? (this.subjectCredentials as any).toApiJson() : this.subjectCredentials;}\n return toReturn;\n }\n}\n\nexport class CreateSessionResponse implements i.CreateSessionResponseInterface {\n session: string;\n\n static fromProto(proto: any): CreateSessionResponse {\n let m = new CreateSessionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateSessionResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n return toReturn;\n }\n}\n\nexport class CreateTemporarySubjectRequest implements i.CreateTemporarySubjectRequestInterface {\n context: Context;\n subject: string;\n attributes: StructAttribute;\n\n static fromProto(proto: any): CreateTemporarySubjectRequest {\n let m = new CreateTemporarySubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.attributes) {m.attributes = StructAttribute.fromProto(proto.attributes);}\n return m;\n }\n\n constructor(kwargs?: i.CreateTemporarySubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subject !== 'undefined') {toReturn['subject'] = this.subject;}\n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n return toReturn;\n }\n}\n\nexport class CreateTemporarySubjectResponse implements i.CreateTemporarySubjectResponseInterface {\n session: string;\n\n static fromProto(proto: any): CreateTemporarySubjectResponse {\n let m = new CreateTemporarySubjectResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateTemporarySubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n return toReturn;\n }\n}\n\nexport class DeleteSubjectRequest implements i.DeleteSubjectRequestInterface {\n context: Context;\n subjectId: string;\n\n static fromProto(proto: any): DeleteSubjectRequest {\n let m = new DeleteSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.DeleteSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class DeleteUserRequest implements i.DeleteUserRequestInterface {\n userIdentifier: UserIdentifier;\n\n static fromProto(proto: any): DeleteUserRequest {\n let m = new DeleteUserRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.DeleteUserRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n return toReturn;\n }\n}\n\nexport class ListSecurityLogsRequestFilters implements i.ListSecurityLogsRequestFiltersInterface {\n actionId: string;\n\n static fromProto(proto: any): ListSecurityLogsRequestFilters {\n let m = new ListSecurityLogsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListSecurityLogsRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.actionId !== 'undefined') {toReturn['actionId'] = this.actionId;}\n return toReturn;\n }\n}\n\nexport class GetImpersonationTokenRequest implements i.GetImpersonationTokenRequestInterface {\n impersonatee: UserIdentifier;\n impersonator: UserIdentifier;\n\n static fromProto(proto: any): GetImpersonationTokenRequest {\n let m = new GetImpersonationTokenRequest();\n m = Object.assign(m, proto);\n if (proto.impersonatee) {m.impersonatee = UserIdentifier.fromProto(proto.impersonatee);}\n if (proto.impersonator) {m.impersonator = UserIdentifier.fromProto(proto.impersonator);}\n return m;\n }\n\n constructor(kwargs?: i.GetImpersonationTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.impersonatee !== 'undefined' && this.impersonatee !== null) {toReturn['impersonatee'] = 'toApiJson' in this.impersonatee ? (this.impersonatee as any).toApiJson() : this.impersonatee;}\n if (typeof this.impersonator !== 'undefined' && this.impersonator !== null) {toReturn['impersonator'] = 'toApiJson' in this.impersonator ? (this.impersonator as any).toApiJson() : this.impersonator;}\n return toReturn;\n }\n}\n\nexport class GetImpersonationTokenResponse implements i.GetImpersonationTokenResponseInterface {\n token: string;\n\n static fromProto(proto: any): GetImpersonationTokenResponse {\n let m = new GetImpersonationTokenResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetImpersonationTokenResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class GetMultiExternalIDRequest implements i.GetMultiExternalIDRequestInterface {\n userIdentifiers: UserIdentifier[];\n externalIdType: string;\n\n static fromProto(proto: any): GetMultiExternalIDRequest {\n let m = new GetMultiExternalIDRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiExternalIDRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n if (typeof this.externalIdType !== 'undefined') {toReturn['externalIdType'] = this.externalIdType;}\n return toReturn;\n }\n}\n\nexport class GetMultiExternalIDResponse implements i.GetMultiExternalIDResponseInterface {\n externalIds: string[];\n\n static fromProto(proto: any): GetMultiExternalIDResponse {\n let m = new GetMultiExternalIDResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiExternalIDResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.externalIds !== 'undefined') {toReturn['externalIds'] = this.externalIds;}\n return toReturn;\n }\n}\n\nexport class GetMultiUsersRequest implements i.GetMultiUsersRequestInterface {\n userIdentifiers: UserIdentifier[];\n\n static fromProto(proto: any): GetMultiUsersRequest {\n let m = new GetMultiUsersRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiUsersRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n return toReturn;\n }\n}\n\nexport class GetMultiUsersResponse implements i.GetMultiUsersResponseInterface {\n users: GetMultiUsersResponseUserContainer[];\n\n static fromProto(proto: any): GetMultiUsersResponse {\n let m = new GetMultiUsersResponse();\n m = Object.assign(m, proto);\n if (proto.users) {m.users = proto.users.map(GetMultiUsersResponseUserContainer.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiUsersResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.users !== 'undefined' && this.users !== null) {toReturn['users'] = 'toApiJson' in this.users ? (this.users as any).toApiJson() : this.users;}\n return toReturn;\n }\n}\n\nexport class GetResetPasswordTokenRequest implements i.GetResetPasswordTokenRequestInterface {\n context: Context;\n email: string;\n userIdentifier: UserIdentifier;\n\n static fromProto(proto: any): GetResetPasswordTokenRequest {\n let m = new GetResetPasswordTokenRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.GetResetPasswordTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n return toReturn;\n }\n}\n\nexport class GetSessionTokenRequest implements i.GetSessionTokenRequestInterface {\n token: string;\n\n static fromProto(proto: any): GetSessionTokenRequest {\n let m = new GetSessionTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetSessionTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class GetShortLivedTokenRequest implements i.GetShortLivedTokenRequestInterface {\n context: Context;\n email: string;\n\n static fromProto(proto: any): GetShortLivedTokenRequest {\n let m = new GetShortLivedTokenRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.GetShortLivedTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n return toReturn;\n }\n}\n\nexport class GetSubjectBySessionRequest implements i.GetSubjectBySessionRequestInterface {\n session: string;\n context: Context;\n\n static fromProto(proto: any): GetSubjectBySessionRequest {\n let m = new GetSubjectBySessionRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectBySessionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n return toReturn;\n }\n}\n\nexport class GetSubjectContextRequest implements i.GetSubjectContextRequestInterface {\n subjectId: string;\n\n static fromProto(proto: any): GetSubjectContextRequest {\n let m = new GetSubjectContextRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectContextRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class GetSubjectContextResponse implements i.GetSubjectContextResponseInterface {\n context: Context;\n\n static fromProto(proto: any): GetSubjectContextResponse {\n let m = new GetSubjectContextResponse();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectContextResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n return toReturn;\n }\n}\n\nexport class GetSubjectResponse implements i.GetSubjectResponseInterface {\n subject: SubjectResult;\n\n static fromProto(proto: any): GetSubjectResponse {\n let m = new GetSubjectResponse();\n m = Object.assign(m, proto);\n if (proto.subject) {m.subject = SubjectResult.fromProto(proto.subject);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subject !== 'undefined' && this.subject !== null) {toReturn['subject'] = 'toApiJson' in this.subject ? (this.subject as any).toApiJson() : this.subject;}\n return toReturn;\n }\n}\n\nexport class GetSubjectsByEmailRequest implements i.GetSubjectsByEmailRequestInterface {\n context: Context;\n emails: string[];\n fieldMask: FieldMask;\n\n static fromProto(proto: any): GetSubjectsByEmailRequest {\n let m = new GetSubjectsByEmailRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectsByEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.emails !== 'undefined') {toReturn['emails'] = this.emails;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n return toReturn;\n }\n}\n\nexport class GetSubjectsRequest implements i.GetSubjectsRequestInterface {\n context: Context;\n subjectIds: string[];\n fieldMask: FieldMask;\n identifiers: Identifier[];\n\n static fromProto(proto: any): GetSubjectsRequest {\n let m = new GetSubjectsRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n if (proto.identifiers) {m.identifiers = proto.identifiers.map(Identifier.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectIds !== 'undefined') {toReturn['subjectIds'] = this.subjectIds;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n if (typeof this.identifiers !== 'undefined' && this.identifiers !== null) {toReturn['identifiers'] = 'toApiJson' in this.identifiers ? (this.identifiers as any).toApiJson() : this.identifiers;}\n return toReturn;\n }\n}\n\nexport class GetSubjectsResponse implements i.GetSubjectsResponseInterface {\n subjects: SubjectResult[];\n\n static fromProto(proto: any): GetSubjectsResponse {\n let m = new GetSubjectsResponse();\n m = Object.assign(m, proto);\n if (proto.subjects) {m.subjects = proto.subjects.map(SubjectResult.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetSubjectsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjects !== 'undefined' && this.subjects !== null) {toReturn['subjects'] = 'toApiJson' in this.subjects ? (this.subjects as any).toApiJson() : this.subjects;}\n return toReturn;\n }\n}\n\nexport class GetTokenRequest implements i.GetTokenRequestInterface {\n\n static fromProto(proto: any): GetTokenRequest {\n let m = new GetTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n return toReturn;\n }\n}\n\nexport class GetTokenResponse implements i.GetTokenResponseInterface {\n token: string;\n\n static fromProto(proto: any): GetTokenResponse {\n let m = new GetTokenResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetTokenResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class IAMListPersonasRequest implements i.IAMListPersonasRequestInterface {\n userIdentifier: UserIdentifier;\n cursor: string;\n pageSize: number;\n type: string;\n namespace: string;\n alwaysIncludeSuperadmin: boolean;\n\n static fromProto(proto: any): IAMListPersonasRequest {\n let m = new IAMListPersonasRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.IAMListPersonasRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.alwaysIncludeSuperadmin !== 'undefined') {toReturn['alwaysIncludeSuperadmin'] = this.alwaysIncludeSuperadmin;}\n return toReturn;\n }\n}\n\nexport class ListPersonasByEmailRequest implements i.ListPersonasByEmailRequestInterface {\n email: string;\n cursor: string;\n pageSize: number;\n type: string;\n namespace: string;\n\n static fromProto(proto: any): ListPersonasByEmailRequest {\n let m = new ListPersonasByEmailRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListPersonasByEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n return toReturn;\n }\n}\n\nexport class ListPersonasRequest implements i.ListPersonasRequestInterface {\n session: string;\n cursor: string;\n pageSize: number;\n type: string;\n namespace: string;\n\n static fromProto(proto: any): ListPersonasRequest {\n let m = new ListPersonasRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListPersonasRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.session !== 'undefined') {toReturn['session'] = this.session;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n return toReturn;\n }\n}\n\nexport class ListPersonasResponse implements i.ListPersonasResponseInterface {\n personas: Persona[];\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): ListPersonasResponse {\n let m = new ListPersonasResponse();\n m = Object.assign(m, proto);\n if (proto.personas) {m.personas = proto.personas.map(Persona.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListPersonasResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.personas !== 'undefined' && this.personas !== null) {toReturn['personas'] = 'toApiJson' in this.personas ? (this.personas as any).toApiJson() : this.personas;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\nexport class ListSecurityLogsRequest implements i.ListSecurityLogsRequestInterface {\n userId: string;\n filters: ListSecurityLogsRequestFilters;\n pageSize: number;\n cursor: string;\n\n static fromProto(proto: any): ListSecurityLogsRequest {\n let m = new ListSecurityLogsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListSecurityLogsRequestFilters.fromProto(proto.filters);}\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListSecurityLogsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n return toReturn;\n }\n}\n\nexport class ListSecurityLogsResponse implements i.ListSecurityLogsResponseInterface {\n logs: SecurityLog[];\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): ListSecurityLogsResponse {\n let m = new ListSecurityLogsResponse();\n m = Object.assign(m, proto);\n if (proto.logs) {m.logs = proto.logs.map(SecurityLog.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListSecurityLogsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.logs !== 'undefined' && this.logs !== null) {toReturn['logs'] = 'toApiJson' in this.logs ? (this.logs as any).toApiJson() : this.logs;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\nexport class ListUsersRequest implements i.ListUsersRequestInterface {\n namespace: string;\n email: string;\n cursor: string;\n pageSize: number;\n userFilter: UserFilter;\n sortOptions: UserSortOptions[];\n\n static fromProto(proto: any): ListUsersRequest {\n let m = new ListUsersRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n if (proto.userFilter) {m.userFilter = UserFilter.fromProto(proto.userFilter);}\n if (proto.sortOptions) {m.sortOptions = proto.sortOptions.map(UserSortOptions.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListUsersRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.namespace !== 'undefined') {toReturn['namespace'] = this.namespace;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.userFilter !== 'undefined' && this.userFilter !== null) {toReturn['userFilter'] = 'toApiJson' in this.userFilter ? (this.userFilter as any).toApiJson() : this.userFilter;}\n if (typeof this.sortOptions !== 'undefined' && this.sortOptions !== null) {toReturn['sortOptions'] = 'toApiJson' in this.sortOptions ? (this.sortOptions as any).toApiJson() : this.sortOptions;}\n return toReturn;\n }\n}\n\nexport class ListUsersResponse implements i.ListUsersResponseInterface {\n users: User[];\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): ListUsersResponse {\n let m = new ListUsersResponse();\n m = Object.assign(m, proto);\n if (proto.users) {m.users = proto.users.map(User.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListUsersResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.users !== 'undefined' && this.users !== null) {toReturn['users'] = 'toApiJson' in this.users ? (this.users as any).toApiJson() : this.users;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\nexport class MutateAttributesRequest implements i.MutateAttributesRequestInterface {\n context: Context;\n subjectId: string;\n mutations: Mutation[];\n\n static fromProto(proto: any): MutateAttributesRequest {\n let m = new MutateAttributesRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.mutations) {m.mutations = proto.mutations.map(Mutation.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.MutateAttributesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {toReturn['mutations'] = 'toApiJson' in this.mutations ? (this.mutations as any).toApiJson() : this.mutations;}\n return toReturn;\n }\n}\n\nexport class OAuthCredentials implements i.OAuthCredentialsInterface {\n provider: string;\n idToken: string;\n accessToken: string;\n\n static fromProto(proto: any): OAuthCredentials {\n let m = new OAuthCredentials();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.OAuthCredentialsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.provider !== 'undefined') {toReturn['provider'] = this.provider;}\n if (typeof this.idToken !== 'undefined') {toReturn['idToken'] = this.idToken;}\n if (typeof this.accessToken !== 'undefined') {toReturn['accessToken'] = this.accessToken;}\n return toReturn;\n }\n}\n\nexport class UpdateUserRequestOperation implements i.UpdateUserRequestOperationInterface {\n firstName: string;\n greetingName: string;\n lastName: string;\n languageCode: string;\n\n static fromProto(proto: any): UpdateUserRequestOperation {\n let m = new UpdateUserRequestOperation();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateUserRequestOperationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.firstName !== 'undefined') {toReturn['firstName'] = this.firstName;}\n if (typeof this.greetingName !== 'undefined') {toReturn['greetingName'] = this.greetingName;}\n if (typeof this.lastName !== 'undefined') {toReturn['lastName'] = this.lastName;}\n if (typeof this.languageCode !== 'undefined') {toReturn['languageCode'] = this.languageCode;}\n return toReturn;\n }\n}\n\nexport class RegisterPolicyRequest implements i.RegisterPolicyRequestInterface {\n policy: Policy;\n\n static fromProto(proto: any): RegisterPolicyRequest {\n let m = new RegisterPolicyRequest();\n m = Object.assign(m, proto);\n if (proto.policy) {m.policy = Policy.fromProto(proto.policy);}\n return m;\n }\n\n constructor(kwargs?: i.RegisterPolicyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.policy !== 'undefined' && this.policy !== null) {toReturn['policy'] = 'toApiJson' in this.policy ? (this.policy as any).toApiJson() : this.policy;}\n return toReturn;\n }\n}\n\nexport class RegisterResourceOwnerRequest implements i.RegisterResourceOwnerRequestInterface {\n owner: ResourceOwner;\n\n static fromProto(proto: any): RegisterResourceOwnerRequest {\n let m = new RegisterResourceOwnerRequest();\n m = Object.assign(m, proto);\n if (proto.owner) {m.owner = ResourceOwner.fromProto(proto.owner);}\n return m;\n }\n\n constructor(kwargs?: i.RegisterResourceOwnerRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.owner !== 'undefined' && this.owner !== null) {toReturn['owner'] = 'toApiJson' in this.owner ? (this.owner as any).toApiJson() : this.owner;}\n return toReturn;\n }\n}\n\nexport class RegisterResourceRequest implements i.RegisterResourceRequestInterface {\n appId: string;\n resourceId: string;\n resourceName: string;\n resourceOwnerServiceUrl: string;\n requiredResourceParams: string[];\n resourceOwnerAudience: string;\n\n static fromProto(proto: any): RegisterResourceRequest {\n let m = new RegisterResourceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RegisterResourceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.appId !== 'undefined') {toReturn['appId'] = this.appId;}\n if (typeof this.resourceId !== 'undefined') {toReturn['resourceId'] = this.resourceId;}\n if (typeof this.resourceName !== 'undefined') {toReturn['resourceName'] = this.resourceName;}\n if (typeof this.resourceOwnerServiceUrl !== 'undefined') {toReturn['resourceOwnerServiceUrl'] = this.resourceOwnerServiceUrl;}\n if (typeof this.requiredResourceParams !== 'undefined') {toReturn['requiredResourceParams'] = this.requiredResourceParams;}\n if (typeof this.resourceOwnerAudience !== 'undefined') {toReturn['resourceOwnerAudience'] = this.resourceOwnerAudience;}\n return toReturn;\n }\n}\n\nexport class RegisterSubjectRequest implements i.RegisterSubjectRequestInterface {\n context: Context;\n email: string;\n password: string;\n attributes: MultiValueAttribute[];\n structAttributes: StructAttribute;\n\n static fromProto(proto: any): RegisterSubjectRequest {\n let m = new RegisterSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.attributes) {m.attributes = proto.attributes.map(MultiValueAttribute.fromProto);}\n if (proto.structAttributes) {m.structAttributes = StructAttribute.fromProto(proto.structAttributes);}\n return m;\n }\n\n constructor(kwargs?: i.RegisterSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n if (typeof this.attributes !== 'undefined' && this.attributes !== null) {toReturn['attributes'] = 'toApiJson' in this.attributes ? (this.attributes as any).toApiJson() : this.attributes;}\n if (typeof this.structAttributes !== 'undefined' && this.structAttributes !== null) {toReturn['structAttributes'] = 'toApiJson' in this.structAttributes ? (this.structAttributes as any).toApiJson() : this.structAttributes;}\n return toReturn;\n }\n}\n\nexport class RegisterSubjectResponse implements i.RegisterSubjectResponseInterface {\n subjectId: string;\n\n static fromProto(proto: any): RegisterSubjectResponse {\n let m = new RegisterSubjectResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RegisterSubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class RemoveKeyRequest implements i.RemoveKeyRequestInterface {\n email: string;\n context: Context;\n keyId: string;\n userIdentifier: UserIdentifier;\n\n static fromProto(proto: any): RemoveKeyRequest {\n let m = new RemoveKeyRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.userIdentifier) {m.userIdentifier = UserIdentifier.fromProto(proto.userIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.RemoveKeyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.keyId !== 'undefined') {toReturn['keyId'] = this.keyId;}\n if (typeof this.userIdentifier !== 'undefined' && this.userIdentifier !== null) {toReturn['userIdentifier'] = 'toApiJson' in this.userIdentifier ? (this.userIdentifier as any).toApiJson() : this.userIdentifier;}\n return toReturn;\n }\n}\n\nexport class RemoveMultiUserRestrictionRequest implements i.RemoveMultiUserRestrictionRequestInterface {\n userIdentifiers: UserIdentifier[];\n restrictionType: e.RestrictionType;\n\n static fromProto(proto: any): RemoveMultiUserRestrictionRequest {\n let m = new RemoveMultiUserRestrictionRequest();\n m = Object.assign(m, proto);\n if (proto.userIdentifiers) {m.userIdentifiers = proto.userIdentifiers.map(UserIdentifier.fromProto);}\n if (proto.restrictionType) {m.restrictionType = enumStringToValue<e.RestrictionType>(e.RestrictionType, proto.restrictionType);}\n return m;\n }\n\n constructor(kwargs?: i.RemoveMultiUserRestrictionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userIdentifiers !== 'undefined' && this.userIdentifiers !== null) {toReturn['userIdentifiers'] = 'toApiJson' in this.userIdentifiers ? (this.userIdentifiers as any).toApiJson() : this.userIdentifiers;}\n if (typeof this.restrictionType !== 'undefined') {toReturn['restrictionType'] = this.restrictionType;}\n return toReturn;\n }\n}\n\nexport class ResetPasswordTokenResponse implements i.ResetPasswordTokenResponseInterface {\n token: string;\n\n static fromProto(proto: any): ResetPasswordTokenResponse {\n let m = new ResetPasswordTokenResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ResetPasswordTokenResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\nexport class ResetPasswordWithTokenRequest implements i.ResetPasswordWithTokenRequestInterface {\n token: string;\n password: string;\n\n static fromProto(proto: any): ResetPasswordWithTokenRequest {\n let m = new ResetPasswordWithTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ResetPasswordWithTokenRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n return toReturn;\n }\n}\n\nexport class ResetSubjectPasswordRequest implements i.ResetSubjectPasswordRequestInterface {\n context: Context;\n subjectId: string;\n newPassword: string;\n\n static fromProto(proto: any): ResetSubjectPasswordRequest {\n let m = new ResetSubjectPasswordRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n return m;\n }\n\n constructor(kwargs?: i.ResetSubjectPasswordRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n if (typeof this.newPassword !== 'undefined') {toReturn['newPassword'] = this.newPassword;}\n return toReturn;\n }\n}\n\nexport class AccessResourceRequestResourceEntityIdentifierEntry implements i.AccessResourceRequestResourceEntityIdentifierEntryInterface {\n key: string;\n value: ValueList;\n\n static fromProto(proto: any): AccessResourceRequestResourceEntityIdentifierEntry {\n let m = new AccessResourceRequestResourceEntityIdentifierEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = ValueList.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.AccessResourceRequestResourceEntityIdentifierEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class SearchSubjectRequest implements i.SearchSubjectRequestInterface {\n context: Context;\n query: Query;\n filters: SingleValueAttribute[];\n orderBy: string;\n orderByDirection: e.OrderByDirection;\n cursor: string;\n pageSize: number;\n fieldMask: FieldMask;\n\n static fromProto(proto: any): SearchSubjectRequest {\n let m = new SearchSubjectRequest();\n m = Object.assign(m, proto);\n if (proto.context) {m.context = Context.fromProto(proto.context);}\n if (proto.query) {m.query = Query.fromProto(proto.query);}\n if (proto.filters) {m.filters = proto.filters.map(SingleValueAttribute.fromProto);}\n if (proto.orderByDirection) {m.orderByDirection = enumStringToValue<e.OrderByDirection>(e.OrderByDirection, proto.orderByDirection);}\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n return m;\n }\n\n constructor(kwargs?: i.SearchSubjectRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.context !== 'undefined' && this.context !== null) {toReturn['context'] = 'toApiJson' in this.context ? (this.context as any).toApiJson() : this.context;}\n if (typeof this.query !== 'undefined' && this.query !== null) {toReturn['query'] = 'toApiJson' in this.query ? (this.query as any).toApiJson() : this.query;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.orderBy !== 'undefined') {toReturn['orderBy'] = this.orderBy;}\n if (typeof this.orderByDirection !== 'undefined') {toReturn['orderByDirection'] = this.orderByDirection;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n return toReturn;\n }\n}\n\nexport class SearchSubjectResponse implements i.SearchSubjectResponseInterface {\n result: SubjectResult[];\n nextCursor: string;\n hasMore: boolean;\n totalResults: number;\n\n static fromProto(proto: any): SearchSubjectResponse {\n let m = new SearchSubjectResponse();\n m = Object.assign(m, proto);\n if (proto.result) {m.result = proto.result.map(SubjectResult.fromProto);}\n if (proto.totalResults) {m.totalResults = parseInt(proto.totalResults, 10);}\n return m;\n }\n\n constructor(kwargs?: i.SearchSubjectResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.result !== 'undefined' && this.result !== null) {toReturn['result'] = 'toApiJson' in this.result ? (this.result as any).toApiJson() : this.result;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n if (typeof this.totalResults !== 'undefined') {toReturn['totalResults'] = this.totalResults;}\n return toReturn;\n }\n}\n\nexport class SendEmailVerificationRequest implements i.SendEmailVerificationRequestInterface {\n userId: string;\n\n static fromProto(proto: any): SendEmailVerificationRequest {\n let m = new SendEmailVerificationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SendEmailVerificationRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n return toReturn;\n }\n}\n\nexport class SubjectCredentials implements i.SubjectCredentialsInterface {\n email: string;\n password: string;\n\n static fromProto(proto: any): SubjectCredentials {\n let m = new SubjectCredentials();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubjectCredentialsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.password !== 'undefined') {toReturn['password'] = this.password;}\n return toReturn;\n }\n}\n\nexport class UpdateUserRequest implements i.UpdateUserRequestInterface {\n userId: string;\n operations: UpdateUserRequestOperation[];\n\n static fromProto(proto: any): UpdateUserRequest {\n let m = new UpdateUserRequest();\n m = Object.assign(m, proto);\n if (proto.operations) {m.operations = proto.operations.map(UpdateUserRequestOperation.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateUserRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.operations !== 'undefined' && this.operations !== null) {toReturn['operations'] = 'toApiJson' in this.operations ? (this.operations as any).toApiJson() : this.operations;}\n return toReturn;\n }\n}\n\nexport class GetMultiUsersResponseUserContainer implements i.GetMultiUsersResponseUserContainerInterface {\n user: User;\n\n static fromProto(proto: any): GetMultiUsersResponseUserContainer {\n let m = new GetMultiUsersResponseUserContainer();\n m = Object.assign(m, proto);\n if (proto.user) {m.user = User.fromProto(proto.user);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiUsersResponseUserContainerInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.user !== 'undefined' && this.user !== null) {toReturn['user'] = 'toApiJson' in this.user ? (this.user as any).toApiJson() : this.user;}\n return toReturn;\n }\n}\n\nexport class UserFilter implements i.UserFilterInterface {\n subjectTypes: string[];\n searchTerms: string[];\n\n static fromProto(proto: any): UserFilter {\n let m = new UserFilter();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UserFilterInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subjectTypes !== 'undefined') {toReturn['subjectTypes'] = this.subjectTypes;}\n if (typeof this.searchTerms !== 'undefined') {toReturn['searchTerms'] = this.searchTerms;}\n return toReturn;\n }\n}\n\nexport class UserIdentifier implements i.UserIdentifierInterface {\n userId: string;\n namespacedEmail: NamespacedEmail;\n namespacedSession: NamespacedSession;\n token: string;\n typedExternalIdentifier: TypedExternalIdentifier;\n subjectId: string;\n\n static fromProto(proto: any): UserIdentifier {\n let m = new UserIdentifier();\n m = Object.assign(m, proto);\n if (proto.namespacedEmail) {m.namespacedEmail = NamespacedEmail.fromProto(proto.namespacedEmail);}\n if (proto.namespacedSession) {m.namespacedSession = NamespacedSession.fromProto(proto.namespacedSession);}\n if (proto.typedExternalIdentifier) {m.typedExternalIdentifier = TypedExternalIdentifier.fromProto(proto.typedExternalIdentifier);}\n return m;\n }\n\n constructor(kwargs?: i.UserIdentifierInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.userId !== 'undefined') {toReturn['userId'] = this.userId;}\n if (typeof this.namespacedEmail !== 'undefined' && this.namespacedEmail !== null) {toReturn['namespacedEmail'] = 'toApiJson' in this.namespacedEmail ? (this.namespacedEmail as any).toApiJson() : this.namespacedEmail;}\n if (typeof this.namespacedSession !== 'undefined' && this.namespacedSession !== null) {toReturn['namespacedSession'] = 'toApiJson' in this.namespacedSession ? (this.namespacedSession as any).toApiJson() : this.namespacedSession;}\n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n if (typeof this.typedExternalIdentifier !== 'undefined' && this.typedExternalIdentifier !== null) {toReturn['typedExternalIdentifier'] = 'toApiJson' in this.typedExternalIdentifier ? (this.typedExternalIdentifier as any).toApiJson() : this.typedExternalIdentifier;}\n if (typeof this.subjectId !== 'undefined') {toReturn['subjectId'] = this.subjectId;}\n return toReturn;\n }\n}\n\nexport class UserSortOptions implements i.UserSortOptionsInterface {\n direction: e.SortDirection;\n field: e.UserSortField;\n\n static fromProto(proto: any): UserSortOptions {\n let m = new UserSortOptions();\n m = Object.assign(m, proto);\n if (proto.direction) {m.direction = enumStringToValue<e.SortDirection>(e.SortDirection, proto.direction);}\n if (proto.field) {m.field = enumStringToValue<e.UserSortField>(e.UserSortField, proto.field);}\n return m;\n }\n\n constructor(kwargs?: i.UserSortOptionsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.direction !== 'undefined') {toReturn['direction'] = this.direction;}\n if (typeof this.field !== 'undefined') {toReturn['field'] = this.field;}\n return toReturn;\n }\n}\n\nexport class VerifyEmailRequest implements i.VerifyEmailRequestInterface {\n token: string;\n\n static fromProto(proto: any): VerifyEmailRequest {\n let m = new VerifyEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.VerifyEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.token !== 'undefined') {toReturn['token'] = this.token;}\n return toReturn;\n }\n}\n\n","export enum PersonaType {\n partner = 'partner',\n partner_app = 'partner_app',\n sales_person = 'sales_person',\n smb = 'smb',\n vendor = 'vendor',\n digital_agent = 'digital_agent',\n developer = 'developer',\n success = 'success',\n account_group = 'account_group'\n}\n","import {AttributeInterface, StructAttributeInterface} from '../_internal/interfaces/attributes.interface';\nimport {Persona} from '../_internal/objects/subjects';\nimport {PersonaType} from './persona-type.enum';\n\nexport class BasePersona {\n type: PersonaType;\n subjectId: string;\n email: string;\n userId: string;\n\n created: Date;\n updated: Date;\n lastLogin: Date;\n\n firstName: string;\n lastName: string;\n\n fromPersona(p: Persona): BasePersona {\n const s = p.subject;\n this.subjectId = s.subjectId;\n this.email = s.email;\n this.created = s.created;\n this.updated = s.updated;\n this.lastLogin = s.lastLogin;\n this.userId = s.userId;\n return this.readAttributes(s.structAttributes);\n }\n\n readAttributes(attributes: StructAttributeInterface): BasePersona {\n if (!attributes) {\n return this;\n }\n\n const attrs = getValueFromAttribute({structAttribute: {attributes: attributes.attributes}});\n Object.assign(this, attrs);\n return this;\n }\n}\n\nexport class TypedPersona extends BasePersona {\n}\n\nexport class NamespacedPersona extends BasePersona {\n partnerId = '';\n\n fromPersona(p: Persona): BasePersona {\n this.partnerId = p.context.namespaced.namespace;\n return super.fromPersona(p);\n }\n}\n\nexport function getValueFromAttribute(attr: AttributeInterface): any {\n if (typeof attr === 'undefined') {\n return null;\n } else if (typeof attr.stringAttribute !== 'undefined') {\n return attr.stringAttribute;\n } else if (typeof attr.intAttribute !== 'undefined') {\n return attr.intAttribute;\n } else if (typeof attr.doubleAttribute !== 'undefined') {\n return attr.doubleAttribute;\n } else if (typeof attr.boolAttribute !== 'undefined') {\n return attr.boolAttribute;\n } else if (typeof attr.listAttribute !== 'undefined') {\n const vals: any[] = [];\n if (typeof attr.listAttribute.attributes === 'undefined') {\n return vals;\n }\n for (const val of attr.listAttribute.attributes) {\n vals.push(getValueFromAttribute(val))\n }\n return vals;\n } else if (typeof attr.timestampAttribute !== 'undefined') {\n return attr.timestampAttribute;\n } else if (typeof attr.geopointAttribute !== 'undefined') {\n return attr.geopointAttribute;\n } else if (typeof attr.structAttribute !== 'undefined') {\n const result: any = {};\n for (const a in attr.structAttribute.attributes) {\n if (!attr.structAttribute.attributes.hasOwnProperty(a)) {\n continue;\n }\n result[CamelCase(a)] = getValueFromAttribute(attr.structAttribute.attributes[a]);\n }\n return result;\n }\n}\n\nexport function CamelCase(str: string): string {\n let result = '';\n\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '_') {\n result += str[i + 1].toUpperCase();\n i++;\n } else {\n result += str[i];\n }\n }\n\n return result\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class DeveloperPersona extends TypedPersona {\n type = PersonaType.developer;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class PartnerPersona extends TypedPersona {\n type = PersonaType.partner;\n rmUid: string;\n msUid: string;\n nbUid: string;\n armUid: string;\n smUid: string;\n\n accessibleMarkets: string[];\n isSuperAdmin = false;\n isAdmin = false;\n\n canCustomizeWhitelabel = false;\n canAccessBilling = false;\n canAccessAccounts = false;\n canAccessMarketing = false;\n canAccessSales = false;\n canAccessConcierge = false;\n canAccessBrands = false;\n canAccessDashboard = false;\n canAccessOrders = false;\n canAccessCompanyProfile = false;\n canAccessAutomations = false;\n canAccessMarketplace = false;\n canEnableApps = false;\n canAccessRetailBilling = false;\n}\n","import {NamespacedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class PartnerAppPersona extends NamespacedPersona {\n type = PersonaType.partner_app;\n}\n","import {NamespacedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport const TitleChoice = {\n PARTNER_FOR_SMB: 'partnerForSmb',\n REP_MAN_FOR_SMB: 'repManForSmb',\n MARKET_FOR_SMB: 'marketForSmb'\n};\nexport type TitleChoice = (typeof TitleChoice)[keyof typeof TitleChoice];\n\nexport class SalespersonPersona extends NamespacedPersona {\n type = PersonaType.sales_person;\n\n emailLower: string;\n\n jobTitle: string;\n department: string;\n region: string;\n supervisor: string;\n marketId: string;\n\n isSalesManager: boolean;\n\n phoneNumbers: string[];\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n titleChoice: TitleChoice = TitleChoice.PARTNER_FOR_SMB;\n pictureName: string;\n pictureServingUrl: string;\n pictureServingUrlSecure: string;\n}\n","import {NamespacedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport interface AccountAccessPermission {\n accountGroupId: string;\n accountIds: string[];\n}\n\nexport class SMBPersona extends NamespacedPersona {\n type = PersonaType.smb;\n\n workPhone: string;\n defaultAccountGroup: string;\n accountGroupAssociations: string[];\n accountAccessPermissions: AccountAccessPermission[];\n notificationsEnabled = true;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class VendorPersona extends TypedPersona {\n type = PersonaType.vendor;\n\n appIds: string[];\n vendorName: string;\n isAdmin: boolean;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class DigitalAgentPersona extends TypedPersona {\n type = PersonaType.digital_agent;\n\n accessiblePartnerIds: string[];\n profilePicture: string;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class SuccessPersona extends TypedPersona {\n type = PersonaType.success;\n}\n","import {TypedPersona} from './base-personas';\nimport {PersonaType} from './persona-type.enum';\n\nexport class AccountGroupPersona extends TypedPersona {\n type = PersonaType.account_group;\n}\n","import { Context, Persona } from '../_internal/objects/subjects';\nimport { DeveloperPersona } from './developer';\nimport { PersonaType } from './persona-type.enum';\nimport { BasePersona } from './base-personas';\nimport { PartnerPersona } from './partner';\nimport { PartnerAppPersona } from './partner-app';\nimport { SalespersonPersona } from './salesperson';\nimport { SMBPersona } from './smb';\nimport { VendorPersona } from './vendor';\nimport { DigitalAgentPersona } from './digital-agent';\nimport { SuccessPersona } from './success';\nimport { AccountGroupPersona } from './account-group';\n\nexport function fromPersona(persona: Persona): BasePersona | null {\n const type = getTypeFromContext(persona.context);\n if (type === null) {\n return null;\n }\n\n const personaCls = getPersonaFromType(type);\n personaCls.fromPersona(persona);\n return personaCls;\n}\n\nexport function getTypeFromContext(ctx: Context): PersonaType | null {\n const type = (!!ctx.namespaced) ? ctx.namespaced.type : ctx.typed.type;\n switch (type) {\n case 'partner':\n return PersonaType.partner;\n case 'partner_app':\n return PersonaType.partner_app;\n case 'sales_person':\n return PersonaType.sales_person;\n case 'smb':\n return PersonaType.smb;\n case 'vendor':\n return PersonaType.vendor;\n case 'digital_agent':\n return PersonaType.digital_agent;\n case 'developer':\n return PersonaType.developer;\n case 'success':\n return PersonaType.success;\n case 'account_group':\n return PersonaType.account_group;\n }\n return null;\n}\n\nexport function getPersonaFromType(personaType: PersonaType): BasePersona {\n return new {\n 'partner': PartnerPersona,\n 'partner_app': PartnerAppPersona,\n 'sales_person': SalespersonPersona,\n 'smb': SMBPersona,\n 'vendor': VendorPersona,\n 'digital_agent': DigitalAgentPersona,\n 'developer': DeveloperPersona,\n 'success': SuccessPersona,\n 'account_group': AccountGroupPersona\n }[personaType]();\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Access implements i.AccessInterface {\n scope: string[];\n public: boolean;\n\n static fromProto(proto: any): Access {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.AccessInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.scope !== 'undefined') {toReturn['scope'] = this.scope;}\n if (typeof this.public !== 'undefined') {toReturn['public'] = this.public;}\n return toReturn;\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { EnvironmentService, Environment } from '@vendasta/core';\n\n@Injectable({providedIn: 'root'})\nexport class HostService {\n private _host: string;\n private _httpsHost: string;\n\n constructor(private environmentService: EnvironmentService) {\n }\n\n host(): string {\n if (this._host) {\n return this._host;\n }\n\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n this._host = 'iam.vendasta-local.com';\n break;\n case Environment.TEST:\n this._host = '';\n break;\n case Environment.DEMO:\n this._host = 'iam-api-demo.apigateway.co';\n break;\n case Environment.PROD:\n this._host = 'iam-api-prod.apigateway.co';\n break;\n }\n return this._host;\n }\n\n httpsHost(): string {\n if (this._httpsHost) {\n return this._httpsHost;\n }\n\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n this._httpsHost = 'iam.vendasta-local.com';\n break;\n case Environment.TEST:\n this._httpsHost = '';\n break;\n case Environment.DEMO:\n this._httpsHost = 'iam-demo.apigateway.co';\n break;\n case Environment.PROD:\n this._httpsHost = 'iam-prod.apigateway.co';\n break;\n }\n return this._httpsHost;\n }\n\n hostWithScheme(): string {\n const scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';\n return scheme + this.host()\n }\n\n httpsHostWithScheme(): string {\n const scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';\n return scheme + this.httpsHost()\n }\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GetImpersonationTokenRequest,\n GetImpersonationTokenResponse,\n GetSessionTokenRequest,\n GetSubjectBySessionRequest,\n GetSubjectResponse,\n GetTokenRequest,\n GetTokenResponse,\n ListPersonasRequest,\n ListPersonasResponse,\n ResetPasswordWithTokenRequest,\n} from './objects/';\nimport {\n GetImpersonationTokenRequestInterface,\n GetImpersonationTokenResponseInterface,\n GetSessionTokenRequestInterface,\n GetSubjectBySessionRequestInterface,\n GetSubjectResponseInterface,\n GetTokenRequestInterface,\n GetTokenResponseInterface,\n ListPersonasRequestInterface,\n ListPersonasResponseInterface,\n ResetPasswordWithTokenRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class UserIAMApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n getSubjectBySession(r: GetSubjectBySessionRequest | GetSubjectBySessionRequestInterface): Observable<GetSubjectResponse> {\n const request = ((<GetSubjectBySessionRequest>r).toApiJson) ? (<GetSubjectBySessionRequest>r) : new GetSubjectBySessionRequest(r);\n return this.http.post<GetSubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetSubjectBySession\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectResponse.fromProto(resp)),\n share()\n );\n }\n listPersonas(r: ListPersonasRequest | ListPersonasRequestInterface): Observable<ListPersonasResponse> {\n const request = ((<ListPersonasRequest>r).toApiJson) ? (<ListPersonasRequest>r) : new ListPersonasRequest(r);\n return this.http.post<ListPersonasResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/ListPersonas\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPersonasResponse.fromProto(resp)),\n share()\n );\n }\n getToken(r: GetTokenRequest | GetTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetTokenRequest>r).toApiJson) ? (<GetTokenRequest>r) : new GetTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n getSessionToken(r: GetSessionTokenRequest | GetSessionTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetSessionTokenRequest>r).toApiJson) ? (<GetSessionTokenRequest>r) : new GetSessionTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetSessionToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n resetPasswordWithToken(r: ResetPasswordWithTokenRequest | ResetPasswordWithTokenRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ResetPasswordWithTokenRequest>r).toApiJson) ? (<ResetPasswordWithTokenRequest>r) : new ResetPasswordWithTokenRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/ResetPasswordWithToken\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getImpersonationToken(r: GetImpersonationTokenRequest | GetImpersonationTokenRequestInterface): Observable<GetImpersonationTokenResponse> {\n const request = ((<GetImpersonationTokenRequest>r).toApiJson) ? (<GetImpersonationTokenRequest>r) : new GetImpersonationTokenRequest(r);\n return this.http.post<GetImpersonationTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.UserIAM/GetImpersonationToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetImpersonationTokenResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","import {\n LoginRequestInterface, LoginResponseInterface, LogoutResponseInterface, SSOLoginRequestInterface\n} from './http.interface';\n\nexport class LoginRequest implements LoginRequestInterface {\n namespace: string;\n type: string;\n email: string;\n password: string;\n providerIdToken: string;\n provider: string;\n\n static fromProto(proto: any): LoginRequest {\n if (!proto) {\n return new LoginRequest();\n }\n let m = new LoginRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: LoginRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.namespace === 'undefined' &&\n typeof this.type === 'undefined' &&\n typeof this.email === 'undefined' &&\n typeof this.password === 'undefined' &&\n typeof this.providerIdToken === 'undefined' &&\n typeof this.provider === 'undefined') {\n return {};\n }\n\n return {\n 'namespace': (typeof this.namespace !== 'undefined') ? this.namespace : null,\n 'type': (typeof this.type !== 'undefined') ? this.type : null,\n 'email': (typeof this.email !== 'undefined') ? this.email : null,\n 'password': (typeof this.password !== 'undefined') ? this.password : null,\n 'provider_id_token': (typeof this.providerIdToken !== 'undefined') ? this.providerIdToken : null,\n 'provider': (typeof this.provider !== 'undefined') ? this.provider : null\n }\n }\n}\n\nexport class LoginResponse implements LoginResponseInterface {\n sessionId: string;\n\n static fromProto(proto: any): LoginResponse {\n const m = new LoginResponse();\n m.sessionId = proto['session_id'];\n return m;\n }\n\n constructor(kwargs?: LoginRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.sessionId === 'undefined') {\n return {};\n }\n\n return {\n 'sessionId': (typeof this.sessionId !== 'undefined') ? this.sessionId : null\n }\n }\n}\n\nexport class LogoutResponse implements LogoutResponseInterface {\n success: boolean;\n\n static fromProto(proto: any): LogoutResponse {\n let m = new LogoutResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: LogoutResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.success === 'undefined') {\n return {};\n }\n\n return {\n 'success': (typeof this.success !== 'undefined') ? this.success : null\n }\n }\n}\n\nexport class SSOLoginRequest implements SSOLoginRequestInterface {\n nextUrl: string;\n namespace: string;\n type: string;\n\n static fromProto(proto: any): SSOLoginRequest {\n let m = new SSOLoginRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: SSOLoginRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): any {\n if (\n typeof this.nextUrl === 'undefined' &&\n typeof this.namespace === 'undefined' &&\n typeof this.type === 'undefined') {\n return null;\n }\n\n return {\n 'next_url': (typeof this.nextUrl !== 'undefined') ? this.nextUrl : null,\n 'namespace': (typeof this.namespace !== 'undefined') ? this.namespace : null,\n 'type': (typeof this.type !== 'undefined') ? this.type : null\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\n\nimport { HostService } from '../_generated/host.service';\nimport {\n LoginRequestInterface,\n LoginResponseInterface,\n LogoutResponseInterface,\n SSOLoginRequestInterface,\n} from './http.interface';\nimport { LoginRequest, LoginResponse, LogoutResponse, SSOLoginRequest } from './http';\n\n@Injectable({ providedIn: 'root' })\nexport class IamHttpApiService {\n constructor(private http: HttpClient, private hostService: HostService) {}\n\n private apiOptions(includeCredentials?: boolean): {\n headers: HttpHeaders;\n withCredentials?: boolean;\n } {\n if (includeCredentials) {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/x-www-form-urlencoded',\n }),\n withCredentials: true,\n };\n }\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/x-www-form-urlencoded',\n }),\n };\n }\n\n login(r: LoginRequest | LoginRequestInterface): Observable<LoginResponse> {\n const toApiJson = (<LoginRequest>r).toApiJson;\n const request = typeof toApiJson !== 'undefined' ? <LoginRequest>r : new LoginRequest(r);\n return this.http\n .post<LoginResponseInterface>(\n this.hostService.httpsHostWithScheme() + '/_ajax/v1/login',\n request.toApiJson(),\n this.apiOptions(),\n )\n .pipe(\n map((resp: LoginResponseInterface) => LoginResponse.fromProto(resp)),\n share(),\n );\n }\n\n logout(): Observable<LogoutResponse> {\n return this.http\n .post<LogoutResponseInterface>(\n this.hostService.httpsHostWithScheme() + '/_ajax/v1/logout',\n {},\n this.apiOptions(true),\n )\n .pipe(\n map((resp) => LogoutResponse.fromProto(resp)),\n share(),\n );\n }\n\n ssoLogin(r: SSOLoginRequest | SSOLoginRequestInterface): void {\n const toApiJson = (<SSOLoginRequest>r).toApiJson;\n const request = typeof toApiJson !== 'undefined' ? <SSOLoginRequest>r : new SSOLoginRequest(r);\n\n const params = new URLSearchParams();\n const apiJson = request.toApiJson();\n\n for (const key in apiJson) {\n if (!apiJson.hasOwnProperty(key)) {\n continue;\n }\n const value = apiJson[key];\n if (value === null) {\n continue;\n }\n params.append(key, value);\n }\n\n window.location.href = `${this.hostService.httpsHostWithScheme()}/sso-login?${params.toString()}`;\n }\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n AccessResourceRequest,\n AddKeyRequest,\n AddKeyResponse,\n AddMultiUserRestrictionRequest,\n AuthenticateSubjectRequest,\n ChangeSubjectEmailRequest,\n CreateExternalIDRequest,\n CreateSessionRequest,\n CreateSessionResponse,\n CreateTemporarySubjectRequest,\n CreateTemporarySubjectResponse,\n DeleteSubjectRequest,\n DeleteUserRequest,\n GetMultiExternalIDRequest,\n GetMultiExternalIDResponse,\n GetMultiUsersRequest,\n GetMultiUsersResponse,\n GetResetPasswordTokenRequest,\n GetSessionTokenRequest,\n GetShortLivedTokenRequest,\n GetSubjectContextRequest,\n GetSubjectContextResponse,\n GetSubjectsByEmailRequest,\n GetSubjectsRequest,\n GetSubjectsResponse,\n GetTokenResponse,\n IAMListPersonasRequest,\n ListPersonasByEmailRequest,\n ListPersonasResponse,\n ListSecurityLogsRequest,\n ListSecurityLogsResponse,\n ListUsersRequest,\n ListUsersResponse,\n MutateAttributesRequest,\n RegisterPolicyRequest,\n RegisterResourceOwnerRequest,\n RegisterResourceRequest,\n RegisterSubjectRequest,\n RegisterSubjectResponse,\n RemoveKeyRequest,\n RemoveMultiUserRestrictionRequest,\n ResetPasswordTokenResponse,\n ResetSubjectPasswordRequest,\n SearchSubjectRequest,\n SearchSubjectResponse,\n SendEmailVerificationRequest,\n UpdateUserRequest,\n VerifyEmailRequest,\n} from './objects/';\nimport {\n AccessResourceRequestInterface,\n AddKeyRequestInterface,\n AddKeyResponseInterface,\n AddMultiUserRestrictionRequestInterface,\n AuthenticateSubjectRequestInterface,\n ChangeSubjectEmailRequestInterface,\n CreateExternalIDRequestInterface,\n CreateSessionRequestInterface,\n CreateSessionResponseInterface,\n CreateTemporarySubjectRequestInterface,\n CreateTemporarySubjectResponseInterface,\n DeleteSubjectRequestInterface,\n DeleteUserRequestInterface,\n GetMultiExternalIDRequestInterface,\n GetMultiExternalIDResponseInterface,\n GetMultiUsersRequestInterface,\n GetMultiUsersResponseInterface,\n GetResetPasswordTokenRequestInterface,\n GetSessionTokenRequestInterface,\n GetShortLivedTokenRequestInterface,\n GetSubjectContextRequestInterface,\n GetSubjectContextResponseInterface,\n GetSubjectsByEmailRequestInterface,\n GetSubjectsRequestInterface,\n GetSubjectsResponseInterface,\n GetTokenResponseInterface,\n IAMListPersonasRequestInterface,\n ListPersonasByEmailRequestInterface,\n ListPersonasResponseInterface,\n ListSecurityLogsRequestInterface,\n ListSecurityLogsResponseInterface,\n ListUsersRequestInterface,\n ListUsersResponseInterface,\n MutateAttributesRequestInterface,\n RegisterPolicyRequestInterface,\n RegisterResourceOwnerRequestInterface,\n RegisterResourceRequestInterface,\n RegisterSubjectRequestInterface,\n RegisterSubjectResponseInterface,\n RemoveKeyRequestInterface,\n RemoveMultiUserRestrictionRequestInterface,\n ResetPasswordTokenResponseInterface,\n ResetSubjectPasswordRequestInterface,\n SearchSubjectRequestInterface,\n SearchSubjectResponseInterface,\n SendEmailVerificationRequestInterface,\n UpdateUserRequestInterface,\n VerifyEmailRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class IAMApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n registerSubject(r: RegisterSubjectRequest | RegisterSubjectRequestInterface): Observable<RegisterSubjectResponse> {\n const request = ((<RegisterSubjectRequest>r).toApiJson) ? (<RegisterSubjectRequest>r) : new RegisterSubjectRequest(r);\n return this.http.post<RegisterSubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterSubject\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RegisterSubjectResponse.fromProto(resp)),\n share()\n );\n }\n authenticateSubject(r: AuthenticateSubjectRequest | AuthenticateSubjectRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<AuthenticateSubjectRequest>r).toApiJson) ? (<AuthenticateSubjectRequest>r) : new AuthenticateSubjectRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AuthenticateSubject\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getSubjects(r: GetSubjectsRequest | GetSubjectsRequestInterface): Observable<GetSubjectsResponse> {\n const request = ((<GetSubjectsRequest>r).toApiJson) ? (<GetSubjectsRequest>r) : new GetSubjectsRequest(r);\n return this.http.post<GetSubjectsResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSubjects\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectsResponse.fromProto(resp)),\n share()\n );\n }\n getSubjectsByEmail(r: GetSubjectsByEmailRequest | GetSubjectsByEmailRequestInterface): Observable<GetSubjectsResponse> {\n const request = ((<GetSubjectsByEmailRequest>r).toApiJson) ? (<GetSubjectsByEmailRequest>r) : new GetSubjectsByEmailRequest(r);\n return this.http.post<GetSubjectsResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSubjectsByEmail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectsResponse.fromProto(resp)),\n share()\n );\n }\n mutateAttributes(r: MutateAttributesRequest | MutateAttributesRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<MutateAttributesRequest>r).toApiJson) ? (<MutateAttributesRequest>r) : new MutateAttributesRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/MutateAttributes\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n resetSubjectPassword(r: ResetSubjectPasswordRequest | ResetSubjectPasswordRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ResetSubjectPasswordRequest>r).toApiJson) ? (<ResetSubjectPasswordRequest>r) : new ResetSubjectPasswordRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ResetSubjectPassword\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n changeSubjectEmail(r: ChangeSubjectEmailRequest | ChangeSubjectEmailRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ChangeSubjectEmailRequest>r).toApiJson) ? (<ChangeSubjectEmailRequest>r) : new ChangeSubjectEmailRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ChangeSubjectEmail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteSubject(r: DeleteSubjectRequest | DeleteSubjectRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteSubjectRequest>r).toApiJson) ? (<DeleteSubjectRequest>r) : new DeleteSubjectRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/DeleteSubject\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n searchSubject(r: SearchSubjectRequest | SearchSubjectRequestInterface): Observable<SearchSubjectResponse> {\n const request = ((<SearchSubjectRequest>r).toApiJson) ? (<SearchSubjectRequest>r) : new SearchSubjectRequest(r);\n return this.http.post<SearchSubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/SearchSubject\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => SearchSubjectResponse.fromProto(resp)),\n share()\n );\n }\n getSubjectContext(r: GetSubjectContextRequest | GetSubjectContextRequestInterface): Observable<GetSubjectContextResponse> {\n const request = ((<GetSubjectContextRequest>r).toApiJson) ? (<GetSubjectContextRequest>r) : new GetSubjectContextRequest(r);\n return this.http.post<GetSubjectContextResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSubjectContext\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSubjectContextResponse.fromProto(resp)),\n share()\n );\n }\n registerResourceOwner(r: RegisterResourceOwnerRequest | RegisterResourceOwnerRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RegisterResourceOwnerRequest>r).toApiJson) ? (<RegisterResourceOwnerRequest>r) : new RegisterResourceOwnerRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterResourceOwner\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n registerResource(r: RegisterResourceRequest | RegisterResourceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RegisterResourceRequest>r).toApiJson) ? (<RegisterResourceRequest>r) : new RegisterResourceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterResource\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n registerPolicy(r: RegisterPolicyRequest | RegisterPolicyRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RegisterPolicyRequest>r).toApiJson) ? (<RegisterPolicyRequest>r) : new RegisterPolicyRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RegisterPolicy\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n accessResource(r: AccessResourceRequest | AccessResourceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<AccessResourceRequest>r).toApiJson) ? (<AccessResourceRequest>r) : new AccessResourceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AccessResource\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getShortLivedToken(r: GetShortLivedTokenRequest | GetShortLivedTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetShortLivedTokenRequest>r).toApiJson) ? (<GetShortLivedTokenRequest>r) : new GetShortLivedTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetShortLivedToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n getSessionToken(r: GetSessionTokenRequest | GetSessionTokenRequestInterface): Observable<GetTokenResponse> {\n const request = ((<GetSessionTokenRequest>r).toApiJson) ? (<GetSessionTokenRequest>r) : new GetSessionTokenRequest(r);\n return this.http.post<GetTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetSessionToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetTokenResponse.fromProto(resp)),\n share()\n );\n }\n addKey(r: AddKeyRequest | AddKeyRequestInterface): Observable<AddKeyResponse> {\n const request = ((<AddKeyRequest>r).toApiJson) ? (<AddKeyRequest>r) : new AddKeyRequest(r);\n return this.http.post<AddKeyResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AddKey\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => AddKeyResponse.fromProto(resp)),\n share()\n );\n }\n removeKey(r: RemoveKeyRequest | RemoveKeyRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RemoveKeyRequest>r).toApiJson) ? (<RemoveKeyRequest>r) : new RemoveKeyRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RemoveKey\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n createSession(r: CreateSessionRequest | CreateSessionRequestInterface): Observable<CreateSessionResponse> {\n const request = ((<CreateSessionRequest>r).toApiJson) ? (<CreateSessionRequest>r) : new CreateSessionRequest(r);\n return this.http.post<CreateSessionResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/CreateSession\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateSessionResponse.fromProto(resp)),\n share()\n );\n }\n getResetPasswordToken(r: GetResetPasswordTokenRequest | GetResetPasswordTokenRequestInterface): Observable<ResetPasswordTokenResponse> {\n const request = ((<GetResetPasswordTokenRequest>r).toApiJson) ? (<GetResetPasswordTokenRequest>r) : new GetResetPasswordTokenRequest(r);\n return this.http.post<ResetPasswordTokenResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetResetPasswordToken\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ResetPasswordTokenResponse.fromProto(resp)),\n share()\n );\n }\n listPersonasByEmail(r: ListPersonasByEmailRequest | ListPersonasByEmailRequestInterface): Observable<ListPersonasResponse> {\n const request = ((<ListPersonasByEmailRequest>r).toApiJson) ? (<ListPersonasByEmailRequest>r) : new ListPersonasByEmailRequest(r);\n return this.http.post<ListPersonasResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListPersonasByEmail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPersonasResponse.fromProto(resp)),\n share()\n );\n }\n listPersonas(r: IAMListPersonasRequest | IAMListPersonasRequestInterface): Observable<ListPersonasResponse> {\n const request = ((<IAMListPersonasRequest>r).toApiJson) ? (<IAMListPersonasRequest>r) : new IAMListPersonasRequest(r);\n return this.http.post<ListPersonasResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListPersonas\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPersonasResponse.fromProto(resp)),\n share()\n );\n }\n createTemporarySubject(r: CreateTemporarySubjectRequest | CreateTemporarySubjectRequestInterface): Observable<CreateTemporarySubjectResponse> {\n const request = ((<CreateTemporarySubjectRequest>r).toApiJson) ? (<CreateTemporarySubjectRequest>r) : new CreateTemporarySubjectRequest(r);\n return this.http.post<CreateTemporarySubjectResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/CreateTemporarySubject\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateTemporarySubjectResponse.fromProto(resp)),\n share()\n );\n }\n getMultiUsers(r: GetMultiUsersRequest | GetMultiUsersRequestInterface): Observable<GetMultiUsersResponse> {\n const request = ((<GetMultiUsersRequest>r).toApiJson) ? (<GetMultiUsersRequest>r) : new GetMultiUsersRequest(r);\n return this.http.post<GetMultiUsersResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetMultiUsers\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiUsersResponse.fromProto(resp)),\n share()\n );\n }\n listUsers(r: ListUsersRequest | ListUsersRequestInterface): Observable<ListUsersResponse> {\n const request = ((<ListUsersRequest>r).toApiJson) ? (<ListUsersRequest>r) : new ListUsersRequest(r);\n return this.http.post<ListUsersResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListUsers\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListUsersResponse.fromProto(resp)),\n share()\n );\n }\n updateUser(r: UpdateUserRequest | UpdateUserRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateUserRequest>r).toApiJson) ? (<UpdateUserRequest>r) : new UpdateUserRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/UpdateUser\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteUser(r: DeleteUserRequest | DeleteUserRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteUserRequest>r).toApiJson) ? (<DeleteUserRequest>r) : new DeleteUserRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/DeleteUser\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n listSecurityLogs(r: ListSecurityLogsRequest | ListSecurityLogsRequestInterface): Observable<ListSecurityLogsResponse> {\n const request = ((<ListSecurityLogsRequest>r).toApiJson) ? (<ListSecurityLogsRequest>r) : new ListSecurityLogsRequest(r);\n return this.http.post<ListSecurityLogsResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/ListSecurityLogs\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListSecurityLogsResponse.fromProto(resp)),\n share()\n );\n }\n verifyEmail(r: VerifyEmailRequest | VerifyEmailRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<VerifyEmailRequest>r).toApiJson) ? (<VerifyEmailRequest>r) : new VerifyEmailRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/VerifyEmail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n sendEmailVerification(r: SendEmailVerificationRequest | SendEmailVerificationRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SendEmailVerificationRequest>r).toApiJson) ? (<SendEmailVerificationRequest>r) : new SendEmailVerificationRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/SendEmailVerification\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getMultiExternalId(r: GetMultiExternalIDRequest | GetMultiExternalIDRequestInterface): Observable<GetMultiExternalIDResponse> {\n const request = ((<GetMultiExternalIDRequest>r).toApiJson) ? (<GetMultiExternalIDRequest>r) : new GetMultiExternalIDRequest(r);\n return this.http.post<GetMultiExternalIDResponseInterface>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/GetMultiExternalID\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiExternalIDResponse.fromProto(resp)),\n share()\n );\n }\n createExternalId(r: CreateExternalIDRequest | CreateExternalIDRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateExternalIDRequest>r).toApiJson) ? (<CreateExternalIDRequest>r) : new CreateExternalIDRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/CreateExternalID\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n addMultiUserRestriction(r: AddMultiUserRestrictionRequest | AddMultiUserRestrictionRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<AddMultiUserRestrictionRequest>r).toApiJson) ? (<AddMultiUserRestrictionRequest>r) : new AddMultiUserRestrictionRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/AddMultiUserRestriction\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n removeMultiUserRestriction(r: RemoveMultiUserRestrictionRequest | RemoveMultiUserRestrictionRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RemoveMultiUserRestrictionRequest>r).toApiJson) ? (<RemoveMultiUserRestrictionRequest>r) : new RemoveMultiUserRestrictionRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/iam.v1.IAM/RemoveMultiUserRestriction\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","import {Injectable} from '@angular/core';\nimport {SessionService} from '@vendasta/core';\nimport {Observable} from 'rxjs';\nimport {map, switchMap} from 'rxjs/operators';\nimport {ContextInterface} from './_internal/interfaces/subjects.interface';\n\nimport {\n GetSubjectResponse,\n GetTokenResponse,\n ListPersonasResponse as ListPersonasProtoResponse,\n ListSecurityLogsRequestFilters,\n ListSecurityLogsResponse,\n ListUsersResponse\n} from './_internal/objects/api';\nimport {Context, NamespacedContext, Persona, TypedContext} from './_internal/objects/subjects';\nimport {UserIAMApiService} from './_internal/user-iam.api.service';\nimport {LoginResponseInterface, LogoutResponseInterface} from './http/http.interface';\nimport {IamHttpApiService} from './http/iam.http.api.service';\nimport {BasePersona} from './personas/base-personas';\nimport {PersonaType} from './personas/persona-type.enum';\nimport {fromPersona} from './personas/personas';\nimport {User} from './_internal/objects/users';\nimport {IAMApiService} from './_internal/iam.api.service';\nimport {UserFilterInterface, UserIdentifierInterface, UserSortOptionsInterface} from './_internal/interfaces';\n\n@Injectable({providedIn: 'root'})\nexport class IAMService {\n constructor(\n private api: UserIAMApiService,\n private httpApi: IamHttpApiService,\n private sessionService: SessionService,\n private iamApi: IAMApiService\n ) {\n }\n\n // Get a subject from the session ID\n getSubjectBySession(sessionId: string, personaType: PersonaType, partnerId?: string): Observable<BasePersona | null> {\n let context: ContextInterface;\n if (!!partnerId) {\n context = new Context({\n namespaced: new NamespacedContext({\n namespace: partnerId,\n type: PersonaType[personaType]\n })\n });\n } else {\n context = new Context({ typed: new TypedContext({ type: PersonaType[personaType] }) });\n }\n return this.api\n .getSubjectBySession({\n session: sessionId,\n context: context\n })\n .pipe(map((r: GetSubjectResponse) => fromPersona(\n new Persona({ subject: r.subject.subject, context: context })\n )));\n }\n\n // Get persona type from the current session\n getLoggedInSubject(personaType: PersonaType, partnerId?: string): Observable<BasePersona | null> {\n return this.sessionService\n .getSessionId()\n .pipe(switchMap((sessionId: string) => this.getSubjectBySession(sessionId, personaType, partnerId)));\n }\n\n // List all available personas for the session. Optionally pass a persona type to filter by that persona.\n listPersonas(sessionId: string, personaType?: PersonaType): Observable<BasePersona[]> {\n return this.api\n .listPersonas({\n session: sessionId,\n pageSize: 100,\n type: personaType\n })\n .pipe(\n map((r: ListPersonasProtoResponse) => {\n const personas: BasePersona[] = [];\n if (!r || !r.personas) {\n return [];\n }\n for (const p of r.personas) {\n const persona = fromPersona(p);\n if (!!persona) {\n personas.push(persona);\n }\n }\n return personas;\n })\n );\n }\n\n // List all available personas for the current session. Optionally pass a persona type to filter by that persona.\n listLoggedInPersonas(personaType?: PersonaType): Observable<BasePersona[]> {\n return this.sessionService.getSessionId().pipe(switchMap((sessionId: string) => this.listPersonas(sessionId,\n personaType)));\n }\n\n // Get a short lived session token\n getToken(): Observable<string> {\n return this.api.getToken({}).pipe(map((r: GetTokenResponse) => r.token));\n }\n\n // Login into a user. Optionally specify the partner and persona type you want to log into\n login(email: string, password: string, personaType?: PersonaType, partnerId?: string): Observable<string> {\n return this.httpApi\n .login({\n email: email,\n password: password,\n namespace: partnerId,\n type: personaType\n })\n .pipe(map((r: LoginResponseInterface) => r.sessionId || ''));\n }\n\n // Logout of the current session, returns true if successful\n logout(): Observable<boolean> {\n return this.httpApi.logout().pipe(map((r: LogoutResponseInterface) => r.success));\n }\n\n // This will redirect the browser to IAM's sso login handler.\n ssoLogin(nextUrl: string, personaType?: PersonaType, partnerId?: string): void {\n this.httpApi.ssoLogin({\n nextUrl: nextUrl,\n namespace: partnerId,\n type: personaType\n });\n }\n\n // getMultiUsers takes an array of user identifiers and calls IAM to convert them into Users\n getMultiUsers(userIdentifiers: UserIdentifierInterface[]): Observable<User[]> {\n return this.iamApi.getMultiUsers({\n userIdentifiers\n }).pipe(\n map(resp => {\n if (!!resp.users) {\n return resp.users\n }\n return [];\n }),\n map(userContainers => userContainers.map(u => u.user))\n );\n }\n\n // listSecurityLogs returns security logs for a userId passed in. This is a paged function, but the\n // handling of paged information is left to the implementor (for now).\n listSecurityLogs(userId: string, cursor?: string, pageSize?: number, actionId = ''):\n Observable<ListSecurityLogsResponse> {\n const optionalArgs: {[key: string]: ListSecurityLogsRequestFilters} = {};\n if (actionId !== '') {\n optionalArgs.filters = new ListSecurityLogsRequestFilters({actionId});\n }\n return this.iamApi.listSecurityLogs({\n userId,\n cursor,\n pageSize,\n ...optionalArgs\n })\n }\n\n // listUsers returns users for a namespace passed in. This is a paged function, but the\n // handling of paged information is left to the implementor (for now).\n // An empty namespace will return users that exist outside of a namespace.\n listUsers(namespace: string, email?: string, cursor?: string, pageSize?: number, subjectTypes?: string[],\n searchTerms?: string[], sortOptions?: UserSortOptionsInterface[]): Observable<ListUsersResponse> {\n const userFilter: UserFilterInterface = {};\n if (!!subjectTypes && subjectTypes.length > 0) {\n userFilter.subjectTypes = subjectTypes;\n }\n if (!!searchTerms && searchTerms.length > 0) {\n userFilter.searchTerms = searchTerms;\n }\n\n return this.iamApi.listUsers({\n namespace: namespace,\n email: email,\n cursor: cursor,\n pageSize: pageSize,\n userFilter: userFilter,\n sortOptions: (sortOptions || [])\n })\n }\n}\n"]}