diff --git a/Cargo.toml b/Cargo.toml index 59381a7..813491e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,6 +37,7 @@ hyper-proxy = { version = "0.9.1", default-features = false, features = [ headers = "0.3" futures = "0.3.30" pbjson-types = "0.6.0" +serde_repr = "0.1.19" [lints.rust] dead_code = "warn" diff --git a/additional-types.list b/additional-types.list new file mode 100644 index 0000000..903206e --- /dev/null +++ b/additional-types.list @@ -0,0 +1,38 @@ +idpconfig internal/repository/idpconfig IDPConfigAddedEvent +idpconfig internal/repository/idpconfig IDPConfigChangedEvent +idpconfig internal/repository/idpconfig IDPConfigDeactivatedEvent +idpconfig internal/repository/idpconfig IDPConfigReactivatedEvent +idpconfig internal/repository/idpconfig IDPConfigRemovedEvent +idpconfig internal/repository/idpconfig JWTConfigAddedEvent +idpconfig internal/repository/idpconfig JWTConfigChangedEvent +idpconfig internal/repository/idpconfig OIDCConfigAddedEvent +idpconfig internal/repository/idpconfig OIDCConfigChangedEvent +idp internal/repository/idp AppleIDPAddedEvent +idp internal/repository/idp AppleIDPChangedEvent +idp internal/repository/idp AzureADIDPAddedEvent +idp internal/repository/idp AzureADIDPChangedEvent +idp internal/repository/idp GitHubIDPAddedEvent +idp internal/repository/idp GitHubIDPChangedEvent +idp internal/repository/idp GitHubEnterpriseIDPAddedEvent +idp internal/repository/idp GitHubEnterpriseIDPChangedEvent +idp internal/repository/idp GitLabIDPAddedEvent +idp internal/repository/idp GitLabIDPChangedEvent +idp internal/repository/idp GitLabSelfHostedIDPAddedEvent +idp internal/repository/idp GitLabSelfHostedIDPChangedEvent +idp internal/repository/idp GoogleIDPAddedEvent +idp internal/repository/idp GoogleIDPChangedEvent +idp internal/repository/idp JWTIDPAddedEvent +idp internal/repository/idp JWTIDPChangedEvent +idp internal/repository/idp LDAPIDPAddedEvent +idp internal/repository/idp LDAPIDPChangedEvent +idp internal/repository/idp OAuthIDPAddedEvent +idp internal/repository/idp OAuthIDPChangedEvent +idp internal/repository/idp OIDCIDPAddedEvent +idp internal/repository/idp OIDCIDPChangedEvent +idp internal/repository/idp OIDCIDPMigratedAzureADEvent +idp internal/repository/idp OIDCIDPMigratedGoogleEvent +idp internal/repository/idp RemovedEvent +idp internal/repository/idp SAMLIDPAddedEvent +idp internal/repository/idp SAMLIDPChangedEvent +idp internal/repository/idp Options +idp internal/repository/idp OptionChanges diff --git a/event-types.list b/event-types.list new file mode 100644 index 0000000..f0c2fd8 --- /dev/null +++ b/event-types.list @@ -0,0 +1,509 @@ +action.added action_action::AddedEvent +action.changed action_action::ChangedEvent +action.deactivated action_action::DeactivatedEvent +action.reactivated action_action::ReactivatedEvent +action.removed action_action::RemovedEvent +auth_request.added authrequest_auth_request::AddedEvent +auth_request.code.added authrequest_auth_request::CodeAddedEvent +auth_request.code.exchanged authrequest_auth_request::CodeExchangedEvent +auth_request.failed authrequest_auth_request::FailedEvent +auth_request.session.linked authrequest_auth_request::SessionLinkedEvent +auth_request.succeeded authrequest_auth_request::SucceededEvent +device.authorization.added deviceauth_device_auth::AddedEvent +device.authorization.approved deviceauth_device_auth::ApprovedEvent +device.authorization.canceled deviceauth_device_auth::CanceledEvent +device.authorization.done deviceauth_device_auth::DoneEvent +execution.removed execution_execution::RemovedEvent +execution.set execution_execution::SetEvent +execution.v2.set +feature.featurelogindefaultorg.set + +feature.instance.actions.set +feature.instance.debug_oidc_parent_error.set +feature.instance.disable_user_token_event.set +feature.instance.improved_performance.set +feature.instance.legacy_introspection.set +feature.instance.login_default_org.set +feature.instance.oidc_single_v1_session_termination.set +feature.instance.reset feature_feature_v2_feature::ResetEvent +feature.instance.token_exchange.set +feature.instance.trigger_introspection_projections.set +feature.instance.user_schema.set +feature.instance.web_key.set + +feature.system.actions.set +feature.system.disable_user_token_event.set +feature.system.improved_performance.set +feature.system.legacy_introspection.set +feature.system.login_default_org.set +feature.system.oidc_single_v1_session_termination.set +feature.system.reset NoPayload +feature.system.token_exchange.set +feature.system.trigger_introspection_projections.set +feature.system.user_schema.set + +iam.idp.config.added instance_idp_config::IDPConfigAddedEvent +iam.idp.config.changed instance_idp_config::IDPConfigChangedEvent +iam.idp.config.deactivated instance_idp_config::IDPConfigDeactivatedEvent +iam.idp.config.reactivated instance_idp_config::IDPConfigReactivatedEvent +iam.idp.config.removed instance_idp_config::IDPConfigRemovedEvent +iam.idp.jwt.config.added instance_idp_jwt_config::IDPJWTConfigAddedEvent +iam.idp.jwt.config.changed instance_idp_jwt_config::IDPJWTConfigChangedEvent +iam.idp.oidc.config.added instance_idp_oidc_config::IDPOIDCConfigAddedEvent +iam.idp.oidc.config.changed instance_idp_oidc_config::IDPOIDCConfigChangedEvent +idpintent.failed idpintent_intent::FailedEvent +idpintent.ldap.succeeded idpintent_intent::LDAPSucceededEvent +idpintent.saml.requested idpintent_intent::SAMLRequestEvent +idpintent.saml.succeeded idpintent_intent::SAMLSucceededEvent +idpintent.started idpintent_intent::StartedEvent +idpintent.succeeded idpintent_intent::SucceededEvent + +instance.added +instance.changed +instance.customtext.removed +instance.customtext.set +instance.customtext.template.removed +instance.default.language.set +instance.default.org.set +instance.domain.added +instance.domain.primary.set +instance.domain.removed +instance.iam.console.set +instance.iam.project.set +instance.idp.apple.added instance_idp::AppleIDPAddedEvent +instance.idp.apple.changed instance_idp::AppleIDPChangedEvent +instance.idp.azure.added instance_idp::AzureADIDPAddedEvent +instance.idp.azure.changed instance_idp::AzureADIDPChangedEvent +instance.idp.github.added instance_idp::GitHubIDPAddedEvent +instance.idp.github.changed instance_idp::GitHubIDPChangedEvent +instance.idp.github_enterprise.added instance_idp::GitHubEnterpriseIDPAddedEvent +instance.idp.github_enterprise.changed instance_idp::GitHubEnterpriseIDPChangedEvent +instance.idp.gitlab.added instance_idp::GitLabIDPAddedEvent +instance.idp.gitlab.changed instance_idp::GitLabIDPChangedEvent +instance.idp.gitlab_self_hosted.added instance_idp::GitLabSelfHostedIDPAddedEvent +instance.idp.gitlab_self_hosted.changed instance_idp::GitLabSelfHostedIDPChangedEvent +instance.idp.google.added instance_idp::GoogleIDPAddedEvent +instance.idp.google.changed instance_idp::GoogleIDPChangedEvent +instance.idp.jwt.added instance_idp::JWTIDPAddedEvent +instance.idp.jwt.changed instance_idp::JWTIDPChangedEvent +instance.idp.ldap.v2.added instance_idp::LDAPIDPAddedEvent +instance.idp.ldap.v2.changed instance_idp::LDAPIDPChangedEvent +instance.idp.oauth.added instance_idp::OAuthIDPAddedEvent +instance.idp.oauth.changed instance_idp::OAuthIDPChangedEvent +instance.idp.oidc.added instance_idp::OIDCIDPAddedEvent +instance.idp.oidc.changed instance_idp::OIDCIDPChangedEvent +instance.idp.oidc.migrated.azure instance_idp::OIDCIDPMigratedAzureADEvent +instance.idp.oidc.migrated.google instance_idp::OIDCIDPMigratedGoogleEvent +instance.idp.removed instance_idp::IDPRemovedEvent +instance.idp.saml.added instance_idp::SAMLIDPAddedEvent +instance.idp.saml.changed instance_idp::SAMLIDPChangedEvent +instance.mail.template.added +instance.mail.template.changed +instance.mail.text.added +instance.mail.text.changed +instance.member.added +instance.member.cascade.removed +instance.member.changed +instance.member.removed +instance.notification.provider.debug.fileadded +instance.notification.provider.debug.filechanged +instance.notification.provider.debug.fileremoved +instance.notification.provider.debug.logadded +instance.notification.provider.debug.logchanged +instance.notification.provider.debug.logremoved +instance.oidc.settings.added +instance.oidc.settings.changed +instance.policy.domain.added +instance.policy.domain.changed +instance.policy.label.activated +instance.policy.label.added +instance.policy.label.assets.removed +instance.policy.label.changed +instance.policy.label.font.added +instance.policy.label.font.removed +instance.policy.label.icon.added +instance.policy.label.icon.dark.added +instance.policy.label.icon.dark.removed +instance.policy.label.icon.removed +instance.policy.label.logo.added +instance.policy.label.logo.dark.added +instance.policy.label.logo.dark.removed +instance.policy.label.logo.removed +instance.policy.lockout.added +instance.policy.lockout.changed +instance.policy.login.added +instance.policy.login.changed +instance.policy.login.idpprovider.added +instance.policy.login.idpprovider.cascade.removed +instance.policy.login.idpprovider.removed +instance.policy.login.multifactor.added +instance.policy.login.multifactor.removed +instance.policy.login.secondfactor.added +instance.policy.login.secondfactor.removed +instance.policy.notification.added +instance.policy.notification.changed +instance.policy.password.age.added +instance.policy.password.age.changed +instance.policy.password.complexity.added +instance.policy.password.complexity.changed +instance.policy.privacy.added +instance.policy.privacy.changed +instance.policy.security.set +instance.removed +instance.secret.generator.added +instance.secret.generator.changed +instance.secret.generator.removed +instance.sms.configtwilio.activated +instance.sms.configtwilio.added +instance.sms.configtwilio.changed +instance.sms.configtwilio.deactivated +instance.sms.configtwilio.removed +instance.sms.configtwilio.token.changed +instance.smtp.config.activated +instance.smtp.config.added +instance.smtp.config.changed +instance.smtp.config.deactivated +instance.smtp.config.password.changed +instance.smtp.config.removed +instance.trusted_domains.added +instance.trusted_domains.removed +key_pair.added +key_pair.certificate.added +limits.reset +limits.set +milestone.pushed +oidc_session.access_token.added +oidc_session.access_token.revoked +oidc_session.added +oidc_session.refresh_token.added +oidc_session.refresh_token.renewed +oidc_session.refresh_token.revoked +org.added +org.changed +org.customtext.removed +org.customtext.set +org.customtext.template.removed +org.deactivated +org.domain.added +org.domain.primary.set +org.domain.removed +org.domain.verification.added +org.domain.verification.failed +org.domain.verified +org.flow.cleared +org.flow.trigger_actions.cascade.removed +org.flow.trigger_actions.set +org.idp.apple.added +org.idp.apple.changed +org.idp.azure.added +org.idp.azure.changed +org.idp.config.added idpconfig_idp_config::IDPConfigAddedEvent // FIXME +org.idp.config.changed idpconfig_idp_config::IDPConfigChangedEvent +org.idp.config.deactivated idpconfig_idp_config::IDPConfigDeactivatedEvent +org.idp.config.reactivated idpconfig_idp_config::IDPConfigReactivatedEvent +org.idp.config.removed idpconfig_idp_config::IDPConfigRemovedEvent +org.idp.github.added +org.idp.github.changed +org.idp.github_enterprise.added +org.idp.github_enterprise.changed +org.idp.gitlab.added +org.idp.gitlab.changed +org.idp.gitlab_self_hosted.added +org.idp.gitlab_self_hosted.changed +org.idp.google.added +org.idp.google.changed +org.idp.jwt.added +org.idp.jwt.changed +org.idp.jwt.config.added +org.idp.jwt.config.changed +org.idp.ldap.added +org.idp.ldap.changed +org.idp.oauth.added +org.idp.oauth.changed +org.idp.oidc.added +org.idp.oidc.changed +org.idp.oidc.config.added +org.idp.oidc.config.changed +org.idp.oidc.migrated.azure +org.idp.oidc.migrated.google +org.idp.removed +org.idp.saml.added +org.idp.saml.changed +org.mail.template.added +org.mail.template.changed +org.mail.template.removed +org.mail.text.added +org.mail.text.changed +org.mail.text.removed +org.member.added +org.member.cascade.removed +org.member.changed +org.member.removed +org.metadata.removed +org.metadata.removed.all +org.metadata.set +org.policy.domain.added +org.policy.domain.changed +org.policy.domain.removed +org.policy.label.activated +org.policy.label.added +org.policy.label.assets.removed +org.policy.label.changed +org.policy.label.font.added +org.policy.label.font.removed +org.policy.label.icon.added +org.policy.label.icon.dark.added +org.policy.label.icon.dark.removed +org.policy.label.icon.removed +org.policy.label.logo.added +org.policy.label.logo.dark.added +org.policy.label.logo.dark.removed +org.policy.label.logo.removed +org.policy.label.removed +org.policy.lockout.added +org.policy.lockout.changed +org.policy.lockout.removed +org.policy.login.added +org.policy.login.changed +org.policy.login.idpprovider.added +org.policy.login.idpprovider.cascade.removed +org.policy.login.idpprovider.removed +org.policy.login.multifactor.added +org.policy.login.multifactor.removed +org.policy.login.removed +org.policy.login.secondfactor.added +org.policy.login.secondfactor.removed +org.policy.notification.added +org.policy.notification.changed +org.policy.notification.removed +org.policy.password.age.added +org.policy.password.age.changed +org.policy.password.age.removed +org.policy.password.complexity.added +org.policy.password.complexity.changed +org.policy.password.complexity.removed +org.policy.privacy.added +org.policy.privacy.changed +org.policy.privacy.removed +org.reactivated +org.removed +project.added +project.application.added +project.application.changed +project.application.config.api.added +project.application.config.api.changed +project.application.config.api.secret.changed +project.application.config.api.secret.updated +project.application.config.oidc.added +project.application.config.oidc.changed +project.application.config.oidc.secret.changed +project.application.config.oidc.secret.updated +project.application.config.saml.added +project.application.config.saml.changed +project.application.deactivated +project.application.oidc.key.added +project.application.oidc.key.removed +project.application.reactivated +project.application.removed +project.changed +project.deactivated +project.grant.added +project.grant.cascade.changed +project.grant.changed +project.grant.deactivated +project.grant.member.added +project.grant.member.cascade.removed +project.grant.member.changed +project.grant.member.removed +project.grant.reactivated +project.grant.removed +project.member.added +project.member.cascade.removed +project.member.changed +project.member.removed +project.reactivated +project.removed +project.role.added +project.role.changed +project.role.removed +quota.added +quota.notificationdue +quota.notified +quota.removed +quota.set +restrictions.set +session.added +session.intent.checked +session.lifetime.set +session.metadata.set +session.otp.email.challenged +session.otp.email.checked +session.otp.email.sent +session.otp.sms.challenged +session.otp.sms.checked +session.otp.sms.sent +session.password.checked +session.terminated +session.token.set +session.totp.checked +session.user.checked +session.webAuthN.challenged +session.webAuthN.checked +system.migration.done +system.migration.failed +system.migration.repeatable.done +system.migration.started +target.added +target.changed +target.removed +user.added +user.address.changed +user.created +user.deactivated user_user::UserDeactivatedEvent +user.deleted +user.domain.claimed user_user::DomainClaimedEvent +user.domain.claimed.sent user_user::DomainClaimedEvent +user.email.changed +user.email.code.added +user.email.code.sent +user.email.verification.failed +user.email.verified +user.grant.added usergrant_user_grant::UserGrantAddedEvent +user.grant.cascade.changed usergrant_user_grant::UserGrantCascadeChangedEvent +user.grant.cascade.removed usergrant_user_grant::UserGrantCascadeRemovedEvent +user.grant.changed usergrant_user_grant::UserGrantChangedEvent +user.grant.deactivated usergrant_user_grant::UserGrantDeactivatedEvent +user.grant.reactivated usergrant_user_grant::UserGrantReactivatedEvent +user.grant.removed usergrant_user_grant::UserGrantRemovedEvent +user.human.added user_human::HumanAddedEvent +user.human.address.changed +user.human.avatar.added +user.human.avatar.removed +user.human.email.changed +user.human.email.code.added +user.human.email.code.sent +user.human.email.verification.failed +user.human.email.verified +user.human.externalidp.added +user.human.externalidp.cascade.removed +user.human.externalidp.id.migrated +user.human.externalidp.removed +user.human.externalidp.username.changed +user.human.externallogin.check.succeeded +user.human.initialization.check.failed user_human::HumanInitializedCheckFailedEvent +user.human.initialization.check.succeeded user_human::HumanInitializedCheckSucceededEvent +user.human.initialization.code.added user_human::HumanInitialCodeAddedEvent +user.human.initialization.code.sent user_human::HumanInitialCodeSentEvent +user.human.mfa.init.skipped +user.human.mfa.otp.added +user.human.mfa.otp.check.failed +user.human.mfa.otp.check.succeeded +user.human.mfa.otp.email.added +user.human.mfa.otp.email.check.failed +user.human.mfa.otp.email.check.succeeded +user.human.mfa.otp.email.code.added +user.human.mfa.otp.email.code.sent +user.human.mfa.otp.email.removed +user.human.mfa.otp.removed +user.human.mfa.otp.sms.added +user.human.mfa.otp.sms.check.failed +user.human.mfa.otp.sms.check.succeeded +user.human.mfa.otp.sms.code.added +user.human.mfa.otp.sms.code.sent +user.human.mfa.otp.sms.removed +user.human.mfa.otp.verified +user.human.mfa.u2f.token.added +user.human.mfa.u2f.token.begin.login +user.human.mfa.u2f.token.check.failed +user.human.mfa.u2f.token.check.succeeded +user.human.mfa.u2f.token.removed +user.human.mfa.u2f.token.signcount.changed +user.human.mfa.u2f.token.verified +user.human.password.change.sent +user.human.password.changed +user.human.password.check.failed +user.human.password.check.succeeded +user.human.password.code.added +user.human.password.code.sent +user.human.password.hash.updated +user.human.passwordless.initialization.code.added +user.human.passwordless.initialization.code.check.failed +user.human.passwordless.initialization.code.check.succeeded +user.human.passwordless.initialization.code.requested +user.human.passwordless.initialization.code.sent +user.human.passwordless.token.added +user.human.passwordless.token.begin.login +user.human.passwordless.token.check.failed +user.human.passwordless.token.check.succeeded +user.human.passwordless.token.removed +user.human.passwordless.token.signcount.changed +user.human.passwordless.token.verified +user.human.phone.changed +user.human.phone.code.added +user.human.phone.code.sent +user.human.phone.removed +user.human.phone.verification.failed +user.human.phone.verified +user.human.profile.changed +user.human.refresh.token.added +user.human.refresh.token.removed +user.human.refresh.token.renewed +user.human.selfregistered user_human::HumanRegisteredEvent +user.human.signed.out user_human::HumanSignedOutEvent +user.impersonated user_user::UserImpersonatedEvent +user.initialization.check.failed +user.initialization.check.succeeded +user.initialization.code.added +user.initialization.code.sent +user.locked user_user::UserLockedEvent +user.machine.added +user.machine.changed +user.machine.key.added +user.machine.key.removed +user.machine.secret.check.failed +user.machine.secret.check.succeeded +user.machine.secret.removed +user.machine.secret.set +user.machine.secret.updated +user.metadata.removed +user.metadata.removed.all +user.metadata.set +user.mfa.otp.added +user.mfa.otp.check.failed +user.mfa.otp.check.succeeded +user.mfa.otp.init.skipped +user.mfa.otp.removed +user.mfa.otp.verified +user.password.changed +user.password.check.failed +user.password.check.succeeded +user.password.code.added +user.password.code.sent +user.pat.added +user.pat.removed +user.phone.changed +user.phone.code.added +user.phone.code.sent +user.phone.removed +user.phone.verification.failed +user.phone.verified +user.profile.changed +user.reactivated user_user::UserReactivatedEvent +user.removed user_user::UserRemovedEvent +user.selfregistered +user.signed.out +user.token.added user_user::UserTokenAddedEvent +user.token.removed user_user::UserTokenRemovedEvent +user.token.v2.added user_user::UserTokenV2AddedEvent +user.unlocked user_user::UserUnlockedEvent +user.updated +user.username.changed user_user::UsernameChangedEvent +user_schema.created +user_schema.deactivated +user_schema.deleted +user_schema.reactivated +user_schema.updated +web_key.activated +web_key.added +web_key.deactivated +web_key.removed diff --git a/gen-event-types.sh b/gen-event-types.sh new file mode 100755 index 0000000..64f17d0 --- /dev/null +++ b/gen-event-types.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +findtype() { + files=$(git grep -l "type $1 .* {") + files=$(git grep -l "type $1 [^{]*$") + echo "// $1 found in: $(echo $files $files)" + + [ -z "$files" ] || awk "/type $1/" $(echo $files) + [ -z "$files" ] || awk "/type $1 struct {/,/}/" $(echo $files) + echo +} + +go_to_rust_struct() { + sed 's/type \(.*\) struct/#[derive(Debug, Clone, Deserialize, Serialize)]\npub struct \1/; + /^.*`json:"-"`$/d; + /^[[:space:]]*$/d; + s/^ \([A-Za-z][^ ]*\) \+\([^\/]*\)/ \1: \2,/; + s/^ \([A-Za-z][^ ]*\)$/ #[serde(flatten)]\n \1: \1,/; + /^ \([a-z][^ ]*\).*:/d; + /^ \([A-Za-z][^ ]*\).*: ,$/d; + s/}/}\n/; + s/\/String/g; + s/\/u64/g; + s/\/u16/g; + s/\/u32/g; + s/\/f64/g; + s/\/u8/g; + s/\*//; + s/\<\([a-z]\+\)\.\([^ ]\+\)\>/\2/; + s/\<\([a-z]\+\)\.\([^ ]\+\)\>/\1::\2/; + s/map\[\([A-Za-z]\+\)\]\[\]\([A-Za-z]\+\)/Map<\1,\2>/; + s/\[\]\[\]\([A-Za-z0-9]\+\)/Vec>/; + s/\[\]\([A-Za-z0-9]\+\)/Vec<\1>/; + s/^ \([A-Za-z]\+\): \([^ ]\+\).*`json:"\([^,]\+\)"`/ #[serde(rename="\3")]\n \1: \2/; + s/^ \([A-Za-z]\+\): \([^ ]\+\).*`json:"\([^,]\+\),omitempty"`/ #[serde(rename="\3")]\n \1: Option<\2>/; + # s/^ \([A-Z][^ ]*\):/ pub \1:/; + ' | sed 's/^ \([A-Z][^ ]*\):/ pub \1:/;' # is there a limit to a number of sed commands? +} + +main() { +rm -f /tmp/zitadel-events1.rs +rm -f /tmp/zitadel-events1.go + +echo 'package events' > /tmp/zitadel-events1.go +# false && +for f in $(grep -r 'type .*Event struct' -l | grep internal/repository); do + modname=$(echo $f | sed 's/internal\/repository\/\(.*\)\.go/\1/; s/[\/]/_/g') + echo "// { $modname $f" + echo '/*' + grep '\(EventType\|Prefix\)' $f | grep '=' + grep -A3 -B1 'NewBaseEventForPush' $f + echo '*/' + awk '/.*Event struct {/,/}/' $f + echo "// } $modname" + echo +done >> /tmp/zitadel-events1.go + +( +echo '#![allow(non_snake_case, missing_docs)]' +echo +echo 'use super::event_types_manual::*;' +echo 'use super::event_types_imports::*;'; +echo + +cat event-types.list | grep ' ' | while read line; do + pat='^\([^ ]\+\) *\([^ :]\+\)::\([^ ]\+\)' + t=$(echo $line | sed "s/$pat/\1/") + p=$(echo $line | sed "s/$pat/\2/") + tn=$(echo $line | sed "s/$pat/\3/") + name=$(echo $t | sed -E 's/[\._]([a-z])/\U\1/g; s/^([a-z])/\U\1/') + f="internal/repository/$p.go" + echo "/// \`$t\` event, $f $tn" + awk "/$tn struct {/,/}/" $f | go_to_rust_struct | sed "s/struct $tn/struct $name/" +done + +echo +echo '#[derive(Debug, Clone, Deserialize, Serialize)]' +echo 'pub enum ZitadelEvent {' +cat event-types.list | grep ' ' | while read line; do + pat='^\([^ ]\+\) *\([^ :]\+\)::\([^ ]\+\)' + t=$(echo $line | sed "s/$pat/\1/") + p=$(echo $line | sed "s/$pat/\2/") + name=$(echo $t | sed -E 's/[\._]([a-z])/\U\1/g; s/^([a-z])/\U\1/') + echo " $name($name)," +done +echo '}' +) > /tmp/zitadel-events1.rs + +gen_imports > /tmp/zitadel-events2.rs +} + +smth() { + imports_pat='.*: \([a-z]\+\)\.\([A-Za-z]\+\),' + cat /tmp/zitadel-events1.rs | grep "${imports_pat}" | sed "s/${imports_pat}/\1 \2/" +} + +gen_imports() { + echo '#![allow(non_snake_case, missing_docs)]' + echo 'use super::event_types_manual::*;' + + echo 'mod nomod {' + oldpackage= + cat additional-types.list | while read -r package lepath type; do + [ "$package" = "$oldpackage" ] || echo -e "}\n\npub mod $package { use super::*;" + oldpackage=$package + + name=$(echo $package $type | sed -E 's/[\._]([a-z])/\U\1/g; s/^([a-z])/\U\1/') + awk "/type $type struct {/,/}/" $(grep -l -r "type $type struct" $lepath) | go_to_rust_struct + done + echo '}' +} + +main diff --git a/src/v1/event_types.rs b/src/v1/event_types.rs new file mode 100644 index 0000000..821ea87 --- /dev/null +++ b/src/v1/event_types.rs @@ -0,0 +1,994 @@ +#![allow(non_snake_case, missing_docs)] + +use super::{event_types_imports::*, event_types_manual::*}; + +/// `action.added` event, internal/repository/action/action.go AddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ActionAdded { + #[serde(rename = "name")] + pub Name: String, + #[serde(rename = "script")] + pub Script: Option, + #[serde(rename = "timeout")] + pub Timeout: Option, + #[serde(rename = "allowedToFail")] + pub AllowedToFail: bool, +} + +/// `action.changed` event, internal/repository/action/action.go ChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ActionChanged { + #[serde(rename = "name")] + pub Name: Option, + #[serde(rename = "script")] + pub Script: Option, + #[serde(rename = "timeout")] + pub Timeout: Option, + #[serde(rename = "allowedToFail")] + pub AllowedToFail: Option, +} + +/// `action.deactivated` event, internal/repository/action/action.go +/// DeactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ActionDeactivated {} + +/// `action.reactivated` event, internal/repository/action/action.go +/// ReactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ActionReactivated {} + +/// `action.removed` event, internal/repository/action/action.go RemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ActionRemoved {} + +/// `auth_request.added` event, internal/repository/authrequest/auth_request.go +/// AddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct AuthRequestAdded { + #[serde(rename = "login_client")] + pub LoginClient: String, + #[serde(rename = "client_id")] + pub ClientID: String, + #[serde(rename = "redirect_uri")] + pub RedirectURI: String, + #[serde(rename = "state")] + pub State: Option, + #[serde(rename = "nonce")] + pub Nonce: Option, + #[serde(rename = "scope")] + pub Scope: Option>, + #[serde(rename = "audience")] + pub Audience: Option>, + #[serde(rename = "response_type")] + pub ResponseType: Option, + #[serde(rename = "response_mode")] + pub ResponseMode: Option, + #[serde(rename = "code_challenge")] + pub CodeChallenge: Option, + #[serde(rename = "prompt")] + pub Prompt: Option>, + #[serde(rename = "ui_locales")] + pub UILocales: Option>, + #[serde(rename = "max_age")] + pub MaxAge: Option, + #[serde(rename = "login_hint")] + pub LoginHint: Option, + #[serde(rename = "hint_user_id")] + pub HintUserID: Option, + #[serde(rename = "need_refresh_token")] + pub NeedRefreshToken: Option, +} + +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct CodeAddedEvent {} + +/// `auth_request.code.added` event, +/// internal/repository/authrequest/auth_request.go CodeAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct AuthRequestCodeAdded {} + +/// `auth_request.code.exchanged` event, +/// internal/repository/authrequest/auth_request.go CodeExchangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct AuthRequestCodeExchanged {} + +/// `auth_request.failed` event, internal/repository/authrequest/auth_request.go +/// FailedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct AuthRequestFailed { + #[serde(rename = "reason")] + pub Reason: Option, +} + +/// `auth_request.session.linked` event, +/// internal/repository/authrequest/auth_request.go SessionLinkedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct AuthRequestSessionLinked { + #[serde(rename = "session_id")] + pub SessionID: String, + #[serde(rename = "user_id")] + pub UserID: String, + #[serde(rename = "auth_time")] + pub AuthTime: Time, + #[serde(rename = "auth_methods")] + pub AuthMethods: Vec, +} + +/// `auth_request.succeeded` event, +/// internal/repository/authrequest/auth_request.go SucceededEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct AuthRequestSucceeded {} + +/// `device.authorization.added` event, +/// internal/repository/deviceauth/device_auth.go AddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct DeviceAuthorizationAdded { + pub ClientID: String, + pub DeviceCode: String, + pub UserCode: String, + pub Expires: Time, + pub Scopes: Vec, + pub Audience: Vec, + pub State: DeviceAuthState, + pub NeedRefreshToken: bool, +} + +/// `device.authorization.approved` event, +/// internal/repository/deviceauth/device_auth.go ApprovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct DeviceAuthorizationApproved { + pub UserID: String, + pub UserOrgID: String, + pub UserAuthMethods: Vec, + pub AuthTime: Time, + pub PreferredLanguage: Tag, + pub UserAgent: UserAgent, + pub SessionID: String, +} + +/// `device.authorization.canceled` event, +/// internal/repository/deviceauth/device_auth.go CanceledEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct DeviceAuthorizationCanceled { + pub Reason: DeviceAuthCanceled, +} + +/// `device.authorization.done` event, +/// internal/repository/deviceauth/device_auth.go DoneEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct DeviceAuthorizationDone {} + +/// `execution.removed` event, internal/repository/execution/execution.go +/// RemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ExecutionRemoved {} + +/// `execution.set` event, internal/repository/execution/execution.go SetEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ExecutionSet { + #[serde(rename = "targets")] + pub Targets: Vec, + #[serde(rename = "includes")] + pub Includes: Vec, +} + +/// `iam.idp.config.added` event, internal/repository/instance/idp_config.go +/// IDPConfigAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpConfigAdded { + #[serde(flatten)] + pub IDPConfigAddedEvent: idpconfig::IDPConfigAddedEvent, +} + +/// `iam.idp.config.changed` event, internal/repository/instance/idp_config.go +/// IDPConfigChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpConfigChanged { + #[serde(flatten)] + pub IDPConfigChangedEvent: idpconfig::IDPConfigChangedEvent, +} + +/// `iam.idp.config.deactivated` event, +/// internal/repository/instance/idp_config.go IDPConfigDeactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpConfigDeactivated { + #[serde(flatten)] + pub IDPConfigDeactivatedEvent: idpconfig::IDPConfigDeactivatedEvent, +} + +/// `iam.idp.config.reactivated` event, +/// internal/repository/instance/idp_config.go IDPConfigReactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpConfigReactivated { + #[serde(flatten)] + pub IDPConfigReactivatedEvent: idpconfig::IDPConfigReactivatedEvent, +} + +/// `iam.idp.config.removed` event, internal/repository/instance/idp_config.go +/// IDPConfigRemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpConfigRemoved { + #[serde(flatten)] + pub IDPConfigRemovedEvent: idpconfig::IDPConfigRemovedEvent, +} + +/// `iam.idp.jwt.config.added` event, +/// internal/repository/instance/idp_jwt_config.go IDPJWTConfigAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpJwtConfigAdded { + #[serde(flatten)] + pub JWTConfigAddedEvent: idpconfig::JWTConfigAddedEvent, +} + +/// `iam.idp.jwt.config.changed` event, +/// internal/repository/instance/idp_jwt_config.go IDPJWTConfigChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpJwtConfigChanged { + #[serde(flatten)] + pub JWTConfigChangedEvent: idpconfig::JWTConfigChangedEvent, +} + +/// `iam.idp.oidc.config.added` event, +/// internal/repository/instance/idp_oidc_config.go IDPOIDCConfigAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpOidcConfigAdded { + #[serde(flatten)] + pub OIDCConfigAddedEvent: idpconfig::OIDCConfigAddedEvent, +} + +/// `iam.idp.oidc.config.changed` event, +/// internal/repository/instance/idp_oidc_config.go IDPOIDCConfigChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IamIdpOidcConfigChanged { + #[serde(flatten)] + pub OIDCConfigChangedEvent: idpconfig::OIDCConfigChangedEvent, +} + +/// `idpintent.failed` event, internal/repository/idpintent/intent.go +/// FailedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IdpintentFailed { + #[serde(rename = "reason")] + pub Reason: Option, +} + +/// `idpintent.ldap.succeeded` event, internal/repository/idpintent/intent.go +/// LDAPSucceededEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IdpintentLdapSucceeded { + #[serde(rename = "idpUser")] + pub IDPUser: Vec, + #[serde(rename = "idpUserId")] + pub IDPUserID: Option, + #[serde(rename = "idpUserName")] + pub IDPUserName: Option, + #[serde(rename = "userId")] + pub UserID: Option, + #[serde(rename = "user")] + pub EntryAttributes: Option>, +} + +/// `idpintent.saml.requested` event, internal/repository/idpintent/intent.go +/// SAMLRequestEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IdpintentSamlRequested { + #[serde(rename = "requestId")] + pub RequestID: String, +} + +/// `idpintent.saml.succeeded` event, internal/repository/idpintent/intent.go +/// SAMLSucceededEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IdpintentSamlSucceeded { + #[serde(rename = "idpUser")] + pub IDPUser: Vec, + #[serde(rename = "idpUserId")] + pub IDPUserID: Option, + #[serde(rename = "idpUserName")] + pub IDPUserName: Option, + #[serde(rename = "userId")] + pub UserID: Option, + #[serde(rename = "assertion")] + pub Assertion: Option, +} + +/// `idpintent.started` event, internal/repository/idpintent/intent.go +/// StartedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IdpintentStarted { + #[serde(rename = "successURL")] + pub SuccessURL: URL, + #[serde(rename = "failureURL")] + pub FailureURL: URL, + #[serde(rename = "idpId")] + pub IDPID: String, +} + +/// `idpintent.succeeded` event, internal/repository/idpintent/intent.go +/// SucceededEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct IdpintentSucceeded { + #[serde(rename = "idpUser")] + pub IDPUser: Vec, + #[serde(rename = "idpUserId")] + pub IDPUserID: Option, + #[serde(rename = "idpUserName")] + pub IDPUserName: Option, + #[serde(rename = "userId")] + pub UserID: Option, + #[serde(rename = "idpAccessToken")] + pub IDPAccessToken: Option, + #[serde(rename = "idpIdToken")] + pub IDPIDToken: Option, +} + +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct SAMLSucceededEvent { + #[serde(rename = "idpUser")] + pub IDPUser: Vec, + #[serde(rename = "idpUserId")] + pub IDPUserID: Option, + #[serde(rename = "idpUserName")] + pub IDPUserName: Option, + #[serde(rename = "userId")] + pub UserID: Option, + #[serde(rename = "assertion")] + pub Assertion: Option, +} + +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct LDAPSucceededEvent { + #[serde(rename = "idpUser")] + pub IDPUser: Vec, + #[serde(rename = "idpUserId")] + pub IDPUserID: Option, + #[serde(rename = "idpUserName")] + pub IDPUserName: Option, + #[serde(rename = "userId")] + pub UserID: Option, + #[serde(rename = "user")] + pub EntryAttributes: Option>, +} + +/// `instance.idp.apple.added` event, internal/repository/instance/idp.go +/// AppleIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpAppleAdded { + #[serde(flatten)] + pub AppleIDPAddedEvent: idp::AppleIDPAddedEvent, +} + +/// `instance.idp.apple.changed` event, internal/repository/instance/idp.go +/// AppleIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpAppleChanged { + #[serde(flatten)] + pub AppleIDPChangedEvent: idp::AppleIDPChangedEvent, +} + +/// `instance.idp.azure.added` event, internal/repository/instance/idp.go +/// AzureADIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpAzureAdded { + #[serde(flatten)] + pub AzureADIDPAddedEvent: idp::AzureADIDPAddedEvent, +} + +/// `instance.idp.azure.changed` event, internal/repository/instance/idp.go +/// AzureADIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpAzureChanged { + #[serde(flatten)] + pub AzureADIDPChangedEvent: idp::AzureADIDPChangedEvent, +} + +/// `instance.idp.github.added` event, internal/repository/instance/idp.go +/// GitHubIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGithubAdded { + #[serde(flatten)] + pub GitHubIDPAddedEvent: idp::GitHubIDPAddedEvent, +} + +/// `instance.idp.github.changed` event, internal/repository/instance/idp.go +/// GitHubIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGithubChanged { + #[serde(flatten)] + pub GitHubIDPChangedEvent: idp::GitHubIDPChangedEvent, +} + +/// `instance.idp.github_enterprise.added` event, +/// internal/repository/instance/idp.go GitHubEnterpriseIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGithubEnterpriseAdded { + #[serde(flatten)] + pub GitHubEnterpriseIDPAddedEvent: idp::GitHubEnterpriseIDPAddedEvent, +} + +/// `instance.idp.github_enterprise.changed` event, +/// internal/repository/instance/idp.go GitHubEnterpriseIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGithubEnterpriseChanged { + #[serde(flatten)] + pub GitHubEnterpriseIDPChangedEvent: idp::GitHubEnterpriseIDPChangedEvent, +} + +/// `instance.idp.gitlab.added` event, internal/repository/instance/idp.go +/// GitLabIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGitlabAdded { + #[serde(flatten)] + pub GitLabIDPAddedEvent: idp::GitLabIDPAddedEvent, +} + +/// `instance.idp.gitlab.changed` event, internal/repository/instance/idp.go +/// GitLabIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGitlabChanged { + #[serde(flatten)] + pub GitLabIDPChangedEvent: idp::GitLabIDPChangedEvent, +} + +/// `instance.idp.gitlab_self_hosted.added` event, +/// internal/repository/instance/idp.go GitLabSelfHostedIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGitlabSelfHostedAdded { + #[serde(flatten)] + pub GitLabSelfHostedIDPAddedEvent: idp::GitLabSelfHostedIDPAddedEvent, +} + +/// `instance.idp.gitlab_self_hosted.changed` event, +/// internal/repository/instance/idp.go GitLabSelfHostedIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGitlabSelfHostedChanged { + #[serde(flatten)] + pub GitLabSelfHostedIDPChangedEvent: idp::GitLabSelfHostedIDPChangedEvent, +} + +/// `instance.idp.google.added` event, internal/repository/instance/idp.go +/// GoogleIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGoogleAdded { + #[serde(flatten)] + pub GoogleIDPAddedEvent: idp::GoogleIDPAddedEvent, +} + +/// `instance.idp.google.changed` event, internal/repository/instance/idp.go +/// GoogleIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpGoogleChanged { + #[serde(flatten)] + pub GoogleIDPChangedEvent: idp::GoogleIDPChangedEvent, +} + +/// `instance.idp.jwt.added` event, internal/repository/instance/idp.go +/// JWTIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpJwtAdded { + #[serde(flatten)] + pub JWTIDPAddedEvent: idp::JWTIDPAddedEvent, +} + +/// `instance.idp.jwt.changed` event, internal/repository/instance/idp.go +/// JWTIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpJwtChanged { + #[serde(flatten)] + pub JWTIDPChangedEvent: idp::JWTIDPChangedEvent, +} + +/// `instance.idp.ldap.v2.added` event, internal/repository/instance/idp.go +/// LDAPIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpLdapV2Added { + #[serde(flatten)] + pub LDAPIDPAddedEvent: idp::LDAPIDPAddedEvent, +} + +/// `instance.idp.ldap.v2.changed` event, internal/repository/instance/idp.go +/// LDAPIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpLdapV2Changed { + #[serde(flatten)] + pub LDAPIDPChangedEvent: idp::LDAPIDPChangedEvent, +} + +/// `instance.idp.oauth.added` event, internal/repository/instance/idp.go +/// OAuthIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpOauthAdded { + #[serde(flatten)] + pub OAuthIDPAddedEvent: idp::OAuthIDPAddedEvent, +} + +/// `instance.idp.oauth.changed` event, internal/repository/instance/idp.go +/// OAuthIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpOauthChanged { + #[serde(flatten)] + pub OAuthIDPChangedEvent: idp::OAuthIDPChangedEvent, +} + +/// `instance.idp.oidc.added` event, internal/repository/instance/idp.go +/// OIDCIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpOidcAdded { + #[serde(flatten)] + pub OIDCIDPAddedEvent: idp::OIDCIDPAddedEvent, +} + +/// `instance.idp.oidc.changed` event, internal/repository/instance/idp.go +/// OIDCIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpOidcChanged { + #[serde(flatten)] + pub OIDCIDPChangedEvent: idp::OIDCIDPChangedEvent, +} + +/// `instance.idp.oidc.migrated.azure` event, +/// internal/repository/instance/idp.go OIDCIDPMigratedAzureADEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpOidcMigratedAzure { + #[serde(flatten)] + pub OIDCIDPMigratedAzureADEvent: idp::OIDCIDPMigratedAzureADEvent, +} + +/// `instance.idp.oidc.migrated.google` event, +/// internal/repository/instance/idp.go OIDCIDPMigratedGoogleEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpOidcMigratedGoogle { + #[serde(flatten)] + pub OIDCIDPMigratedGoogleEvent: idp::OIDCIDPMigratedGoogleEvent, +} + +/// `instance.idp.removed` event, internal/repository/instance/idp.go +/// IDPRemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpRemoved { + #[serde(flatten)] + pub RemovedEvent: idp::RemovedEvent, +} + +/// `instance.idp.saml.added` event, internal/repository/instance/idp.go +/// SAMLIDPAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpSamlAdded { + #[serde(flatten)] + pub SAMLIDPAddedEvent: idp::SAMLIDPAddedEvent, +} + +/// `instance.idp.saml.changed` event, internal/repository/instance/idp.go +/// SAMLIDPChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct InstanceIdpSamlChanged { + #[serde(flatten)] + pub SAMLIDPChangedEvent: idp::SAMLIDPChangedEvent, +} + +/// `org.idp.config.added` event, internal/repository/idpconfig/idp_config.go +/// IDPConfigAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct OrgIdpConfigAdded { + #[serde(rename = "idpConfigId")] + pub ConfigID: String, + #[serde(rename = "name")] + pub Name: Option, + #[serde(rename = "idpType")] + pub Typ: Option, + #[serde(rename = "stylingType")] + pub StylingType: Option, + #[serde(rename = "autoRegister")] + pub AutoRegister: Option, +} + +/// `org.idp.config.changed` event, internal/repository/idpconfig/idp_config.go +/// IDPConfigChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct OrgIdpConfigChanged { + #[serde(rename = "idpConfigId")] + pub ConfigID: String, + #[serde(rename = "name")] + pub Name: Option, + #[serde(rename = "stylingType")] + pub StylingType: Option, + #[serde(rename = "autoRegister")] + pub AutoRegister: Option, +} + +/// `org.idp.config.deactivated` event, +/// internal/repository/idpconfig/idp_config.go IDPConfigDeactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct OrgIdpConfigDeactivated { + #[serde(rename = "idpConfigId")] + pub ConfigID: String, +} + +/// `org.idp.config.reactivated` event, +/// internal/repository/idpconfig/idp_config.go IDPConfigReactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct OrgIdpConfigReactivated { + #[serde(rename = "idpConfigId")] + pub ConfigID: String, +} + +/// `org.idp.config.removed` event, internal/repository/idpconfig/idp_config.go +/// IDPConfigRemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct OrgIdpConfigRemoved { + #[serde(rename = "idpConfigId")] + pub ConfigID: String, +} + +/// `user.deactivated` event, internal/repository/user/user.go +/// UserDeactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserDeactivated {} + +/// `user.domain.claimed` event, internal/repository/user/user.go +/// DomainClaimedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserDomainClaimed { + #[serde(rename = "userName")] + pub UserName: String, + #[serde(rename = "triggerOrigin")] + pub TriggeredAtOrigin: Option, +} + +/// `user.domain.claimed.sent` event, internal/repository/user/user.go +/// DomainClaimedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserDomainClaimedSent { + #[serde(rename = "userName")] + pub UserName: String, + #[serde(rename = "triggerOrigin")] + pub TriggeredAtOrigin: Option, +} + +/// `user.grant.added` event, internal/repository/usergrant/user_grant.go +/// UserGrantAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserGrantAdded { + #[serde(rename = "userId")] + pub UserID: Option, + #[serde(rename = "projectId")] + pub ProjectID: Option, + #[serde(rename = "grantId")] + pub ProjectGrantID: Option, + #[serde(rename = "roleKeys")] + pub RoleKeys: Option>, +} + +/// `user.grant.cascade.changed` event, +/// internal/repository/usergrant/user_grant.go UserGrantCascadeChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserGrantCascadeChanged { + #[serde(rename = "roleKeys")] + pub RoleKeys: Option>, +} + +/// `user.grant.cascade.removed` event, +/// internal/repository/usergrant/user_grant.go UserGrantCascadeRemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserGrantCascadeRemoved {} + +/// `user.grant.changed` event, internal/repository/usergrant/user_grant.go +/// UserGrantChangedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserGrantChanged { + #[serde(rename = "roleKeys")] + pub RoleKeys: Vec, +} + +/// `user.grant.deactivated` event, internal/repository/usergrant/user_grant.go +/// UserGrantDeactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserGrantDeactivated {} + +/// `user.grant.reactivated` event, internal/repository/usergrant/user_grant.go +/// UserGrantReactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserGrantReactivated {} + +/// `user.grant.removed` event, internal/repository/usergrant/user_grant.go +/// UserGrantRemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserGrantRemoved {} + +/// `user.human.added` event, internal/repository/user/human.go HumanAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserHumanAdded { + #[serde(rename = "userName")] + pub UserName: String, + #[serde(rename = "firstName")] + pub FirstName: Option, + #[serde(rename = "lastName")] + pub LastName: Option, + #[serde(rename = "nickName")] + pub NickName: Option, + #[serde(rename = "displayName")] + pub DisplayName: Option, + #[serde(rename = "preferredLanguage")] + pub PreferredLanguage: Option, + #[serde(rename = "gender")] + pub Gender: Option, + #[serde(rename = "email")] + pub EmailAddress: Option, + #[serde(rename = "phone")] + pub PhoneNumber: Option, + #[serde(rename = "country")] + pub Country: Option, + #[serde(rename = "locality")] + pub Locality: Option, + #[serde(rename = "postalCode")] + pub PostalCode: Option, + #[serde(rename = "region")] + pub Region: Option, + #[serde(rename = "streetAddress")] + pub StreetAddress: Option, + // New events only use EncodedHash. However, the secret field + // is preserved to handle events older than the switch to Passwap. + #[serde(rename = "secret")] + pub Secret: Option, + #[serde(rename = "encodedHash")] + pub EncodedHash: Option, + #[serde(rename = "changeRequired")] + pub ChangeRequired: Option, +} + +/// `user.human.initialization.check.failed` event, +/// internal/repository/user/human.go HumanInitializedCheckFailedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserHumanInitializationCheckFailed {} + +/// `user.human.initialization.check.succeeded` event, +/// internal/repository/user/human.go HumanInitializedCheckSucceededEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserHumanInitializationCheckSucceeded {} + +/// `user.human.initialization.code.added` event, +/// internal/repository/user/human.go HumanInitialCodeAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserHumanInitializationCodeAdded { + #[serde(rename = "code")] + pub Code: Option, + #[serde(rename = "expiry")] + pub Expiry: Option, + #[serde(rename = "triggerOrigin")] + pub TriggeredAtOrigin: Option, + #[serde(rename = "authRequestID")] + pub AuthRequestID: Option, +} + +/// `user.human.initialization.code.sent` event, +/// internal/repository/user/human.go HumanInitialCodeSentEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserHumanInitializationCodeSent {} + +/// `user.human.selfregistered` event, internal/repository/user/human.go +/// HumanRegisteredEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserHumanSelfregistered { + #[serde(rename = "userName")] + pub UserName: String, + #[serde(rename = "firstName")] + pub FirstName: Option, + #[serde(rename = "lastName")] + pub LastName: Option, + #[serde(rename = "nickName")] + pub NickName: Option, + #[serde(rename = "displayName")] + pub DisplayName: Option, + #[serde(rename = "preferredLanguage")] + pub PreferredLanguage: Option, + #[serde(rename = "gender")] + pub Gender: Option, + #[serde(rename = "email")] + pub EmailAddress: Option, + #[serde(rename = "phone")] + pub PhoneNumber: Option, + #[serde(rename = "country")] + pub Country: Option, + #[serde(rename = "locality")] + pub Locality: Option, + #[serde(rename = "postalCode")] + pub PostalCode: Option, + #[serde(rename = "region")] + pub Region: Option, + #[serde(rename = "streetAddress")] + pub StreetAddress: Option, + // New events only use EncodedHash. However, the secret field + // is preserved to handle events older than the switch to Passwap. + #[serde(rename = "secret")] + pub Secret: Option, // legacy + #[serde(rename = "encodedHash")] + pub EncodedHash: Option, + #[serde(rename = "changeRequired")] + pub ChangeRequired: Option, + #[serde(rename = "userAgentID")] + pub UserAgentID: Option, +} + +/// `user.human.signed.out` event, internal/repository/user/human.go +/// HumanSignedOutEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserHumanSignedOut { + #[serde(rename = "userAgentID")] + pub UserAgentID: String, +} + +/// `user.impersonated` event, internal/repository/user/user.go +/// UserImpersonatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserImpersonated { + #[serde(rename = "applicationId")] + pub ApplicationID: Option, + #[serde(rename = "actor")] + pub Actor: Option, +} + +/// `user.locked` event, internal/repository/user/user.go UserLockedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserLocked {} + +/// `user.reactivated` event, internal/repository/user/user.go +/// UserReactivatedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserReactivated {} + +/// `user.removed` event, internal/repository/user/user.go UserRemovedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserRemoved {} + +/// `user.token.added` event, internal/repository/user/user.go +/// UserTokenAddedEvent +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct UserTokenAdded { + #[serde(rename = "tokenId")] + pub TokenID: Option, + #[serde(rename = "applicationId")] + pub ApplicationID: Option, + #[serde(rename = "userAgentId")] + pub UserAgentID: Option, + #[serde(rename = "refreshTokenID")] + pub RefreshTokenID: Option, + #[serde(rename = "audience")] + pub Audience: Option>, + #[serde(rename = "scopes")] + pub Scopes: Option>, + #[serde(rename = "authMethodsReferences")] + pub AuthMethodsReferences: Option>, + #[serde(rename = "authTime")] + pub AuthTime: Option