fromJson static method

dynamic fromJson(
  1. dynamic value,
  2. String targetType, {
  3. bool growable = false,
})

Returns a native instance of an OpenAPI class matching the targetType.

Implementation

static dynamic fromJson(
  dynamic value,
  String targetType, {
  bool growable = false,
}) {
  try {
    switch (targetType) {
      case 'String':
        return value is String ? value : value.toString();
      case 'int':
        return value is int ? value : int.parse('$value');
      case 'double':
        return value is double ? value : double.parse('$value');
      case 'bool':
        if (value is bool) {
          return value;
        }
        final valueString = '$value'.toLowerCase();
        return valueString == 'true' || valueString == '1';
      case 'DateTime':
        return value is DateTime ? value : DateTime.tryParse(value);
      case 'ActorToken':
        return ActorToken.fromJson(value);
      case 'AddDomainRequest':
        return AddDomainRequest.fromJson(value);
      case 'AddRolesToRoleSetRequest':
        return AddRolesToRoleSetRequest.fromJson(value);
      case 'AllowlistIdentifier':
        return AllowlistIdentifier.fromJson(value);
      case 'BillingPaymentAttempt':
        return BillingPaymentAttempt.fromJson(value);
      case 'BillingPriceResponse':
        return BillingPriceResponse.fromJson(value);
      case 'BillingStatement':
        return BillingStatement.fromJson(value);
      case 'BillingStatementGroupsInner':
        return BillingStatementGroupsInner.fromJson(value);
      case 'BillingStatementTotals':
        return BillingStatementTotals.fromJson(value);
      case 'BlocklistIdentifier':
        return BlocklistIdentifier.fromJson(value);
      case 'BlocklistIdentifiers':
        return BlocklistIdentifiers.fromJson(value);
      case 'CNameTarget':
        return CNameTarget.fromJson(value);
      case 'ChangeProductionInstanceDomainRequest':
        return ChangeProductionInstanceDomainRequest.fromJson(value);
      case 'ClerkError':
        return ClerkError.fromJson(value);
      case 'ClerkErrors':
        return ClerkErrors.fromJson(value);
      case 'Client':
        return Client.fromJson(value);
      case 'CommerceMoneyResponse':
        return CommerceMoneyResponse.fromJson(value);
      case 'CommercePayerResponse':
        return CommercePayerResponse.fromJson(value);
      case 'CommercePaymentMethodResponse':
        return CommercePaymentMethodResponse.fromJson(value);
      case 'CommercePaymentSourceResponse':
        return CommercePaymentSourceResponse.fromJson(value);
      case 'CommercePlan':
        return CommercePlan.fromJson(value);
      case 'CommercePriceTransitionDetails':
        return CommercePriceTransitionDetails.fromJson(value);
      case 'CommercePriceTransitionResponse':
        return CommercePriceTransitionResponse.fromJson(value);
      case 'CommerceSubscription':
        return CommerceSubscription.fromJson(value);
      case 'CommerceSubscriptionCreditResponse':
        return CommerceSubscriptionCreditResponse.fromJson(value);
      case 'CommerceSubscriptionItem':
        return CommerceSubscriptionItem.fromJson(value);
      case 'CommerceSubscriptionItemNextPaymentResponse':
        return CommerceSubscriptionItemNextPaymentResponse.fromJson(value);
      case 'CommerceSubscriptionNextPayment':
        return CommerceSubscriptionNextPayment.fromJson(value);
      case 'Cookies':
        return Cookies.fromJson(value);
      case 'CreateActorTokenRequest':
        return CreateActorTokenRequest.fromJson(value);
      case 'CreateActorTokenRequestActor':
        return CreateActorTokenRequestActor.fromJson(value);
      case 'CreateAllowlistIdentifierRequest':
        return CreateAllowlistIdentifierRequest.fromJson(value);
      case 'CreateApiKey200Response':
        return CreateApiKey200Response.fromJson(value);
      case 'CreateApiKeyRequest':
        return CreateApiKeyRequest.fromJson(value);
      case 'CreateBillingPriceRequest':
        return CreateBillingPriceRequest.fromJson(value);
      case 'CreateBlocklistIdentifierRequest':
        return CreateBlocklistIdentifierRequest.fromJson(value);
      case 'CreateBulkInvitationsRequestInner':
        return CreateBulkInvitationsRequestInner.fromJson(value);
      case 'CreateBulkWaitlistEntriesRequestInner':
        return CreateBulkWaitlistEntriesRequestInner.fromJson(value);
      case 'CreateEmailAddressRequest':
        return CreateEmailAddressRequest.fromJson(value);
      case 'CreateInvitationRequest':
        return CreateInvitationRequest.fromJson(value);
      case 'CreateJWTTemplateRequest':
        return CreateJWTTemplateRequest.fromJson(value);
      case 'CreateM2MToken201Response':
        return CreateM2MToken201Response.fromJson(value);
      case 'CreateM2MTokenRequest':
        return CreateM2MTokenRequest.fromJson(value);
      case 'CreateMachine200Response':
        return CreateMachine200Response.fromJson(value);
      case 'CreateMachineRequest':
        return CreateMachineRequest.fromJson(value);
      case 'CreateMachineScopeRequest':
        return CreateMachineScopeRequest.fromJson(value);
      case 'CreateOAuthApplicationRequest':
        return CreateOAuthApplicationRequest.fromJson(value);
      case 'CreateOrganizationDomainRequest':
        return CreateOrganizationDomainRequest.fromJson(value);
      case 'CreateOrganizationInvitationRequest':
        return CreateOrganizationInvitationRequest.fromJson(value);
      case 'CreateOrganizationMembershipRequest':
        return CreateOrganizationMembershipRequest.fromJson(value);
      case 'CreateOrganizationPermissionRequest':
        return CreateOrganizationPermissionRequest.fromJson(value);
      case 'CreateOrganizationRequest':
        return CreateOrganizationRequest.fromJson(value);
      case 'CreateOrganizationRoleRequest':
        return CreateOrganizationRoleRequest.fromJson(value);
      case 'CreatePhoneNumberRequest':
        return CreatePhoneNumberRequest.fromJson(value);
      case 'CreateRedirectURLRequest':
        return CreateRedirectURLRequest.fromJson(value);
      case 'CreateRoleSetRequest':
        return CreateRoleSetRequest.fromJson(value);
      case 'CreateSAMLConnectionRequest':
        return CreateSAMLConnectionRequest.fromJson(value);
      case 'CreateSAMLConnectionRequestAttributeMapping':
        return CreateSAMLConnectionRequestAttributeMapping.fromJson(value);
      case 'CreateSessionRequest':
        return CreateSessionRequest.fromJson(value);
      case 'CreateSessionToken200Response':
        return CreateSessionToken200Response.fromJson(value);
      case 'CreateSessionTokenFromTemplateRequest':
        return CreateSessionTokenFromTemplateRequest.fromJson(value);
      case 'CreateSessionTokenRequest':
        return CreateSessionTokenRequest.fromJson(value);
      case 'CreateSignInTokenRequest':
        return CreateSignInTokenRequest.fromJson(value);
      case 'CreateUserRequest':
        return CreateUserRequest.fromJson(value);
      case 'CreateWaitlistEntryRequest':
        return CreateWaitlistEntryRequest.fromJson(value);
      case 'DeleteApiKey200Response':
        return DeleteApiKey200Response.fromJson(value);
      case 'DeleteMachine200Response':
        return DeleteMachine200Response.fromJson(value);
      case 'DeleteMachineScope200Response':
        return DeleteMachineScope200Response.fromJson(value);
      case 'DeletedObject':
        return DeletedObject.fromJson(value);
      case 'DisableMFA200Response':
        return DisableMFA200Response.fromJson(value);
      case 'Domain':
        return Domain.fromJson(value);
      case 'Domains':
        return Domains.fromJson(value);
      case 'EmailAddress':
        return EmailAddress.fromJson(value);
      case 'EmailAddressVerification':
        return EmailAddressVerification.fromJson(value);
      case 'EnterpriseAccount':
        return EnterpriseAccount.fromJson(value);
      case 'EnterpriseAccountEnterpriseConnection':
        return EnterpriseAccountEnterpriseConnection.fromJson(value);
      case 'EnterpriseAccountVerification':
        return EnterpriseAccountVerification.fromJson(value);
      case 'EnterpriseConnection':
        return EnterpriseConnection.fromJson(value);
      case 'ExtendFreeTrialRequest':
        return ExtendFreeTrialRequest.fromJson(value);
      case 'ExternalAccountWithVerification':
        return ExternalAccountWithVerification.fromJson(value);
      case 'ExternalAccountWithVerificationVerification':
        return ExternalAccountWithVerificationVerification.fromJson(value);
      case 'FeatureResponse':
        return FeatureResponse.fromJson(value);
      case 'GetApiKeySecret200Response':
        return GetApiKeySecret200Response.fromJson(value);
      case 'GetApiKeys200Response':
        return GetApiKeys200Response.fromJson(value);
      case 'GetApiKeys200ResponseDataInner':
        return GetApiKeys200ResponseDataInner.fromJson(value);
      case 'GetApiKeys400Response':
        return GetApiKeys400Response.fromJson(value);
      case 'GetApiKeys400ResponseErrorsInner':
        return GetApiKeys400ResponseErrorsInner.fromJson(value);
      case 'GetApiKeys404Response':
        return GetApiKeys404Response.fromJson(value);
      case 'GetApiKeys404ResponseErrorsInner':
        return GetApiKeys404ResponseErrorsInner.fromJson(value);
      case 'GetM2MTokens200Response':
        return GetM2MTokens200Response.fromJson(value);
      case 'GetM2MTokens200ResponseM2mTokensInner':
        return GetM2MTokens200ResponseM2mTokensInner.fromJson(value);
      case 'GetMachineSecretKey200Response':
        return GetMachineSecretKey200Response.fromJson(value);
      case 'IdentificationLink':
        return IdentificationLink.fromJson(value);
      case 'Instance':
        return Instance.fromJson(value);
      case 'InstanceProtect':
        return InstanceProtect.fromJson(value);
      case 'InstanceRestrictions':
        return InstanceRestrictions.fromJson(value);
      case 'Invitation':
        return Invitation.fromJson(value);
      case 'InviteWaitlistEntryRequest':
        return InviteWaitlistEntryRequest.fromJson(value);
      case 'JWKS':
        return JWKS.fromJson(value);
      case 'JWKSEcdsaPrivateKey':
        return JWKSEcdsaPrivateKey.fromJson(value);
      case 'JWKSEcdsaPublicKey':
        return JWKSEcdsaPublicKey.fromJson(value);
      case 'JWKSEd25519PrivateKey':
        return JWKSEd25519PrivateKey.fromJson(value);
      case 'JWKSEd25519PublicKey':
        return JWKSEd25519PublicKey.fromJson(value);
      case 'JWKSKeysInner':
        return JWKSKeysInner.fromJson(value);
      case 'JWKSRsaPrivateKey':
        return JWKSRsaPrivateKey.fromJson(value);
      case 'JWKSRsaPublicKey':
        return JWKSRsaPublicKey.fromJson(value);
      case 'JWKSSymmetricKey':
        return JWKSSymmetricKey.fromJson(value);
      case 'JWTTemplate':
        return JWTTemplate.fromJson(value);
      case 'ListMachines200Response':
        return ListMachines200Response.fromJson(value);
      case 'ListWaitlistEntries200Response':
        return ListWaitlistEntries200Response.fromJson(value);
      case 'Machine':
        return Machine.fromJson(value);
      case 'MachineScope':
        return MachineScope.fromJson(value);
      case 'MachineWithoutScopedMachines':
        return MachineWithoutScopedMachines.fromJson(value);
      case 'MergeOrganizationMetadataRequest':
        return MergeOrganizationMetadataRequest.fromJson(value);
      case 'OAuthAccessTokenInner':
        return OAuthAccessTokenInner.fromJson(value);
      case 'OAuthApplication':
        return OAuthApplication.fromJson(value);
      case 'OAuthApplicationWithSecret':
        return OAuthApplicationWithSecret.fromJson(value);
      case 'OAuthApplications':
        return OAuthApplications.fromJson(value);
      case 'Organization':
        return Organization.fromJson(value);
      case 'OrganizationDomain':
        return OrganizationDomain.fromJson(value);
      case 'OrganizationDomainVerification':
        return OrganizationDomainVerification.fromJson(value);
      case 'OrganizationDomains':
        return OrganizationDomains.fromJson(value);
      case 'OrganizationInvitation':
        return OrganizationInvitation.fromJson(value);
      case 'OrganizationInvitationPublicOrganizationData':
        return OrganizationInvitationPublicOrganizationData.fromJson(value);
      case 'OrganizationInvitationPublicUserData':
        return OrganizationInvitationPublicUserData.fromJson(value);
      case 'OrganizationInvitationWithPublicOrganizationData':
        return OrganizationInvitationWithPublicOrganizationData.fromJson(
            value);
      case 'OrganizationInvitations':
        return OrganizationInvitations.fromJson(value);
      case 'OrganizationInvitationsWithPublicOrganizationData':
        return OrganizationInvitationsWithPublicOrganizationData.fromJson(
            value);
      case 'OrganizationMembership':
        return OrganizationMembership.fromJson(value);
      case 'OrganizationMembershipPublicUserData':
        return OrganizationMembershipPublicUserData.fromJson(value);
      case 'OrganizationMemberships':
        return OrganizationMemberships.fromJson(value);
      case 'OrganizationSettings':
        return OrganizationSettings.fromJson(value);
      case 'OrganizationWithLogo':
        return OrganizationWithLogo.fromJson(value);
      case 'Organizations':
        return Organizations.fromJson(value);
      case 'PaginatedBillingPaymentAttemptResponse':
        return PaginatedBillingPaymentAttemptResponse.fromJson(value);
      case 'PaginatedBillingPriceResponse':
        return PaginatedBillingPriceResponse.fromJson(value);
      case 'PaginatedBillingStatementResponse':
        return PaginatedBillingStatementResponse.fromJson(value);
      case 'PaginatedCommercePlanResponse':
        return PaginatedCommercePlanResponse.fromJson(value);
      case 'PaginatedCommerceSubscriptionItemResponse':
        return PaginatedCommerceSubscriptionItemResponse.fromJson(value);
      case 'Passkey':
        return Passkey.fromJson(value);
      case 'PasskeyVerification':
        return PasskeyVerification.fromJson(value);
      case 'Permission':
        return Permission.fromJson(value);
      case 'Permissions':
        return Permissions.fromJson(value);
      case 'PhoneNumber':
        return PhoneNumber.fromJson(value);
      case 'PhoneNumberVerification':
        return PhoneNumberVerification.fromJson(value);
      case 'PreviewTemplateRequest':
        return PreviewTemplateRequest.fromJson(value);
      case 'PriceTransitionRequest':
        return PriceTransitionRequest.fromJson(value);
      case 'ProxyCheck':
        return ProxyCheck.fromJson(value);
      case 'RedirectURL':
        return RedirectURL.fromJson(value);
      case 'RefreshSessionRequest':
        return RefreshSessionRequest.fromJson(value);
      case 'ReplaceRoleInRoleSetRequest':
        return ReplaceRoleInRoleSetRequest.fromJson(value);
      case 'ReplaceRoleSetRequest':
        return ReplaceRoleSetRequest.fromJson(value);
      case 'RevokeApiKeyRequest':
        return RevokeApiKeyRequest.fromJson(value);
      case 'RevokeInvitation200Response':
        return RevokeInvitation200Response.fromJson(value);
      case 'RevokeOrganizationInvitationRequest':
        return RevokeOrganizationInvitationRequest.fromJson(value);
      case 'Role':
        return Role.fromJson(value);
      case 'RoleSet':
        return RoleSet.fromJson(value);
      case 'RoleSetItem':
        return RoleSetItem.fromJson(value);
      case 'RoleSetMigration':
        return RoleSetMigration.fromJson(value);
      case 'RoleSets':
        return RoleSets.fromJson(value);
      case 'Roles':
        return Roles.fromJson(value);
      case 'RotateMachineSecretKeyRequest':
        return RotateMachineSecretKeyRequest.fromJson(value);
      case 'SAMLAccount':
        return SAMLAccount.fromJson(value);
      case 'SAMLAccountSamlConnection':
        return SAMLAccountSamlConnection.fromJson(value);
      case 'SAMLAccountVerification':
        return SAMLAccountVerification.fromJson(value);
      case 'SAMLConnection':
        return SAMLConnection.fromJson(value);
      case 'SAMLConnectionAttributeMapping':
        return SAMLConnectionAttributeMapping.fromJson(value);
      case 'SAMLConnections':
        return SAMLConnections.fromJson(value);
      case 'SchemasCommercePayerResponse':
        return SchemasCommercePayerResponse.fromJson(value);
      case 'SchemasCommercePlan':
        return SchemasCommercePlan.fromJson(value);
      case 'SchemasCommerceSubscriptionItem':
        return SchemasCommerceSubscriptionItem.fromJson(value);
      case 'SchemasFeatureResponse':
        return SchemasFeatureResponse.fromJson(value);
      case 'SchemasSAMLConnection':
        return SchemasSAMLConnection.fromJson(value);
      case 'Session':
        return Session.fromJson(value);
      case 'SessionActivityResponse':
        return SessionActivityResponse.fromJson(value);
      case 'SessionRefresh':
        return SessionRefresh.fromJson(value);
      case 'SessionTask':
        return SessionTask.fromJson(value);
      case 'SetUserPasswordCompromisedRequest':
        return SetUserPasswordCompromisedRequest.fromJson(value);
      case 'SignInToken':
        return SignInToken.fromJson(value);
      case 'SignUp':
        return SignUp.fromJson(value);
      case 'SignUpVerification':
        return SignUpVerification.fromJson(value);
      case 'SignUpVerifications':
        return SignUpVerifications.fromJson(value);
      case 'SvixURL':
        return SvixURL.fromJson(value);
      case 'Template':
        return Template.fromJson(value);
      case 'TestingToken':
        return TestingToken.fromJson(value);
      case 'ToggleTemplateDeliveryRequest':
        return ToggleTemplateDeliveryRequest.fromJson(value);
      case 'Token':
        return Token.fromJson(value);
      case 'TotalCount':
        return TotalCount.fromJson(value);
      case 'UpdateApiKeyRequest':
        return UpdateApiKeyRequest.fromJson(value);
      case 'UpdateDomainRequest':
        return UpdateDomainRequest.fromJson(value);
      case 'UpdateEmailAddressRequest':
        return UpdateEmailAddressRequest.fromJson(value);
      case 'UpdateInstanceAuthConfig200Response':
        return UpdateInstanceAuthConfig200Response.fromJson(value);
      case 'UpdateInstanceAuthConfigRequest':
        return UpdateInstanceAuthConfigRequest.fromJson(value);
      case 'UpdateInstanceOrganizationSettingsRequest':
        return UpdateInstanceOrganizationSettingsRequest.fromJson(value);
      case 'UpdateInstanceProtectRequest':
        return UpdateInstanceProtectRequest.fromJson(value);
      case 'UpdateInstanceRequest':
        return UpdateInstanceRequest.fromJson(value);
      case 'UpdateInstanceRestrictionsRequest':
        return UpdateInstanceRestrictionsRequest.fromJson(value);
      case 'UpdateMachineRequest':
        return UpdateMachineRequest.fromJson(value);
      case 'UpdateOAuthApplicationRequest':
        return UpdateOAuthApplicationRequest.fromJson(value);
      case 'UpdateOrganizationDomainRequest':
        return UpdateOrganizationDomainRequest.fromJson(value);
      case 'UpdateOrganizationMembershipMetadataRequest':
        return UpdateOrganizationMembershipMetadataRequest.fromJson(value);
      case 'UpdateOrganizationMembershipRequest':
        return UpdateOrganizationMembershipRequest.fromJson(value);
      case 'UpdateOrganizationPermissionRequest':
        return UpdateOrganizationPermissionRequest.fromJson(value);
      case 'UpdateOrganizationRequest':
        return UpdateOrganizationRequest.fromJson(value);
      case 'UpdateOrganizationRoleRequest':
        return UpdateOrganizationRoleRequest.fromJson(value);
      case 'UpdatePhoneNumberRequest':
        return UpdatePhoneNumberRequest.fromJson(value);
      case 'UpdateProductionInstanceDomainRequest':
        return UpdateProductionInstanceDomainRequest.fromJson(value);
      case 'UpdateRoleSetRequest':
        return UpdateRoleSetRequest.fromJson(value);
      case 'UpdateSAMLConnectionRequest':
        return UpdateSAMLConnectionRequest.fromJson(value);
      case 'UpdateSignUpRequest':
        return UpdateSignUpRequest.fromJson(value);
      case 'UpdateUserMetadataRequest':
        return UpdateUserMetadataRequest.fromJson(value);
      case 'UpdateUserRequest':
        return UpdateUserRequest.fromJson(value);
      case 'UpsertTemplateRequest':
        return UpsertTemplateRequest.fromJson(value);
      case 'User':
        return User.fromJson(value);
      case 'UsersBanRequest':
        return UsersBanRequest.fromJson(value);
      case 'UsersUnbanRequest':
        return UsersUnbanRequest.fromJson(value);
      case 'VerificationAdmin':
        return VerificationAdmin.fromJson(value);
      case 'VerificationEmailLink':
        return VerificationEmailLink.fromJson(value);
      case 'VerificationFromOauth':
        return VerificationFromOauth.fromJson(value);
      case 'VerificationFromOauthError':
        return VerificationFromOauthError.fromJson(value);
      case 'VerificationGoogleOneTap':
        return VerificationGoogleOneTap.fromJson(value);
      case 'VerificationOauth':
        return VerificationOauth.fromJson(value);
      case 'VerificationOtp':
        return VerificationOtp.fromJson(value);
      case 'VerificationPasskey':
        return VerificationPasskey.fromJson(value);
      case 'VerificationSaml':
        return VerificationSaml.fromJson(value);
      case 'VerificationTicket':
        return VerificationTicket.fromJson(value);
      case 'VerificationWeb3':
        return VerificationWeb3.fromJson(value);
      case 'VerifyApiKeyRequest':
        return VerifyApiKeyRequest.fromJson(value);
      case 'VerifyClientRequest':
        return VerifyClientRequest.fromJson(value);
      case 'VerifyDomainProxyRequest':
        return VerifyDomainProxyRequest.fromJson(value);
      case 'VerifyM2MTokenRequest':
        return VerifyM2MTokenRequest.fromJson(value);
      case 'VerifyOAuthAccessToken200Response':
        return VerifyOAuthAccessToken200Response.fromJson(value);
      case 'VerifyOAuthAccessToken200ResponseAnyOf':
        return VerifyOAuthAccessToken200ResponseAnyOf.fromJson(value);
      case 'VerifyOAuthAccessToken200ResponseAnyOf1':
        return VerifyOAuthAccessToken200ResponseAnyOf1.fromJson(value);
      case 'VerifyOAuthAccessTokenRequest':
        return VerifyOAuthAccessTokenRequest.fromJson(value);
      case 'VerifyPassword200Response':
        return VerifyPassword200Response.fromJson(value);
      case 'VerifyPasswordRequest':
        return VerifyPasswordRequest.fromJson(value);
      case 'VerifyTOTP200Response':
        return VerifyTOTP200Response.fromJson(value);
      case 'VerifyTOTPRequest':
        return VerifyTOTPRequest.fromJson(value);
      case 'WaitlistEntry':
        return WaitlistEntry.fromJson(value);
      case 'Web3Wallet':
        return Web3Wallet.fromJson(value);
      case 'Web3WalletVerification':
        return Web3WalletVerification.fromJson(value);
      default:
        dynamic match;
        if (value is List &&
            (match = _regList.firstMatch(targetType)?.group(1)) != null) {
          return value
              .map<dynamic>((dynamic v) => fromJson(
                    v,
                    match,
                    growable: growable,
                  ))
              .toList(growable: growable);
        }
        if (value is Set &&
            (match = _regSet.firstMatch(targetType)?.group(1)) != null) {
          return value
              .map<dynamic>((dynamic v) => fromJson(
                    v,
                    match,
                    growable: growable,
                  ))
              .toSet();
        }
        if (value is Map &&
            (match = _regMap.firstMatch(targetType)?.group(1)) != null) {
          return Map<String, dynamic>.fromIterables(
            value.keys.cast<String>(),
            value.values.map<dynamic>((dynamic v) => fromJson(
                  v,
                  match,
                  growable: growable,
                )),
          );
        }
    }
  } on Exception catch (error, trace) {
    throw ApiException.withInner(
      HttpStatus.internalServerError,
      'Exception during deserialization.',
      error,
      trace,
    );
  }
  throw ApiException(
    HttpStatus.internalServerError,
    'Could not find a suitable class for deserialization',
  );
}