@wildo-ai/saas-models 1.1.2 → 1.1.3
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.
- package/dist/esm/applications/applications-context.schemas.d.ts +14 -10
- package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.js +4 -3
- package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts +0 -4
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.js +59 -17
- package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts +77 -21
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.js +85 -23
- package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.d.ts +3 -3
- package/dist/esm/billing/price.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/price.shared.schemas.js +7 -1
- package/dist/esm/billing/price.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product-behavior-policy.shared.schemas.js +52 -11
- package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-definition.shared.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product.shared.schemas.js +7 -3
- package/dist/esm/billing/product.shared.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js +15 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.d.ts +7 -3
- package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.js +22 -3
- package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +69 -2
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js +20 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +85 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +157 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts +23 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js +56 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +480 -20
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +547 -23
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +82 -3
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +31 -30
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +98 -3
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +17 -0
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js +27 -4
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +82 -29
- package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/redaction.shared.schemas.js +95 -29
- package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.js +12 -5
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +21 -0
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/analytics-value-moments.shared.schemas.js +20 -0
- package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +7 -5
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +8 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.js +29 -0
- package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +95 -17
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.js +86 -8
- package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
- package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +12 -12
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +28 -0
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +28 -0
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +45 -12
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +103 -58
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +176 -15
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts +15 -3
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +32 -5
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +83 -7
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts +59 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +61 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts +97 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js +41 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -0
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +148 -2
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js +56 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +5 -28
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.js +4 -2
- package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts +18 -8
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js +9 -4
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +338 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +332 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +178 -9
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js +181 -9
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts +7 -5
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js +7 -5
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts +40 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.js +80 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -0
- package/dist/esm/features/core-feature-definitions.shared.d.ts.map +1 -1
- package/dist/esm/features/core-feature-definitions.shared.js +7 -1
- package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
- package/dist/esm/features/feature-builders.shared.d.ts +32 -0
- package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
- package/dist/esm/features/feature-builders.shared.js +32 -0
- package/dist/esm/features/feature-builders.shared.js.map +1 -1
- package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +14 -2
- package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/file-upload-grant.shared.schemas.js +44 -5
- package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -1
- package/dist/esm/files/files.shared.schemas.d.ts +15 -8
- package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/files.shared.schemas.js +15 -8
- package/dist/esm/files/files.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts +54 -5
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts +6 -6
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +0 -3
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/deliberation.shared.schemas.js +0 -5
- package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +14 -0
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +40 -3
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +19 -0
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js +33 -0
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts +14 -9
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js +14 -9
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts +128 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +142 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -3
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +1 -4
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts +0 -16
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js +1 -17
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts +3 -3
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js +3 -3
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +2 -8
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +4 -15
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.utils.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.utils.js +1 -0
- package/dist/esm/guidance/guidance-state.shared.utils.js.map +1 -1
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +8 -0
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts +46 -0
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.js +49 -0
- package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +320 -50
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +137 -36
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +11 -2
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/email/email-template.shared.enums.d.ts +15 -0
- package/dist/esm/notifications/email/email-template.shared.enums.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-template.shared.enums.js +15 -0
- package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js +19 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts +30 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js +65 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.d.ts +6 -4
- package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.js +6 -4
- package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.d.ts +167 -5
- package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.js +191 -6
- package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.d.ts +107 -0
- package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.js +149 -1
- package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.js +22 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +26 -0
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.js +25 -0
- package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +25 -0
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.js +42 -17
- package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +3 -2
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.js +9 -2
- package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +18 -3
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/public-runtime/index.d.ts +49 -2
- package/dist/esm/public-runtime/index.d.ts.map +1 -1
- package/dist/esm/public-runtime/index.js +48 -1
- package/dist/esm/public-runtime/index.js.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +6 -5
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js +6 -5
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.d.ts +16 -3
- package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.js +16 -3
- package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts +137 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.js +1201 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts +67 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.js +78 -0
- package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.d.ts +11 -1
- package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.js +11 -1
- package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.d.ts +27 -4
- package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.js +35 -0
- package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.d.ts +1 -0
- package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.js +105 -20
- package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.d.ts +254 -72
- package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
- package/dist/esm/resources/resources-registry.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources-registry.shared.core.definitions.js +97 -5
- package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources-relationships.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-relationships.shared.factory.js +15 -0
- package/dist/esm/resources/resources-relationships.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.d.ts +37 -0
- package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.js +51 -0
- package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.d.ts +11 -2
- package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.js +34 -3
- package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
- package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts +51 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.js +53 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -0
- package/dist/esm/resources/utils/resources-summary.utils.d.ts +16 -2
- package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-summary.utils.js +19 -5
- package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js +11 -0
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
- package/dist/esm/runtime/domain-module.shared.definitions.d.ts +25 -0
- package/dist/esm/runtime/domain-module.shared.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.shared.definitions.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js +38 -0
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js +38 -0
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +4 -11
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +0 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +84 -5
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.js +83 -3
- package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js +11 -0
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +15 -0
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +21 -4
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +61 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +208 -6
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts +37 -27
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +134 -12
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +0 -6
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js +17 -8
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +27 -0
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +52 -7
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +45 -8
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +31 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js +198 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +31 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +191 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +250 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +486 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -0
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +4 -1
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +29 -0
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts +4 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +29 -0
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +6 -0
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +31 -0
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts +13 -0
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +24 -3
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +4 -4
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -4
- package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self.shared.resources-config.schemas.js +33 -3
- package/dist/esm/users/user-self.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.d.ts +17 -1
- package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.js +136 -5
- package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.schemas.d.ts +43 -12
- package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.schemas.js +38 -7
- package/dist/esm/users/users.shared.schemas.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -6,6 +6,7 @@ import { PlatformAccessGrantAutoApprovalReason, PlatformAccessGrantLifecycleTran
|
|
|
6
6
|
import { ExecutionContext_ExecutionType } from "../../runtime/execution-context.shared.schemas.js";
|
|
7
7
|
import { AuthScopeType, SsoConnectionType, } from "../../security/authentications/authentication.shared.schemas.js";
|
|
8
8
|
import { WebhookEndpointProbeOutcome } from "../../notifications/m2m/webhook-config.shared.schemas.js";
|
|
9
|
+
import { ProviderCredentialDeletionReason, ProviderCredentialResolutionSource, } from "../../security/connected-accounts/provider-credentials.shared.schemas.js";
|
|
9
10
|
export var CoreAuditableEventType;
|
|
10
11
|
(function (CoreAuditableEventType) {
|
|
11
12
|
// Authentication Events
|
|
@@ -172,6 +173,55 @@ export var CoreAuditableEventType;
|
|
|
172
173
|
// Organization Security Management Events
|
|
173
174
|
CoreAuditableEventType["ORGANIZATION_SSO_CONFIGURATION_CHANGED"] = "organization_sso_configuration_changed";
|
|
174
175
|
CoreAuditableEventType["ORGANIZATION_SIEM_EXPORT_CONFIGURED"] = "organization_siem_export_configured";
|
|
176
|
+
// Organization Provider Credential Events
|
|
177
|
+
//
|
|
178
|
+
// An organization's OWN credential toward a third party. The four verbs are separate members
|
|
179
|
+
// rather than one event with a `changeType`, because they answer four different questions a
|
|
180
|
+
// credential incident asks in a different order — when did this tenant grant us authority, when
|
|
181
|
+
// did the value last change, when was it last SPENT, and when did the grant end — and a SIEM
|
|
182
|
+
// rule that alerts on a spend cannot be written against a payload discriminator that also
|
|
183
|
+
// matches configuration edits.
|
|
184
|
+
//
|
|
185
|
+
// NONE of the four payloads carries the credential value. That is a structural property of the
|
|
186
|
+
// schemas below, not a redaction step somebody has to remember: there is no field to put it in.
|
|
187
|
+
//
|
|
188
|
+
// assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — an organization authorizes this
|
|
189
|
+
// application to act as it toward a named third party.
|
|
190
|
+
CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_SET"] = "organization_provider_credential_set";
|
|
191
|
+
CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_ROTATED"] = "organization_provider_credential_rotated";
|
|
192
|
+
CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_USED"] = "organization_provider_credential_used";
|
|
193
|
+
CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_DELETED"] = "organization_provider_credential_deleted";
|
|
194
|
+
// A PERSON's own credential toward a third party. Four members mirroring the organization's,
|
|
195
|
+
// and deliberately NOT the same members with a nullable organization: the subject differs, the
|
|
196
|
+
// SIEM routing differs (there is no tenant to route to), and the data-protection reading differs
|
|
197
|
+
// — a person's connection to a vendor is that person's, and an event saying so must not be
|
|
198
|
+
// indistinguishable from one about a tenant's shared integration.
|
|
199
|
+
CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_SET"] = "user_provider_credential_set";
|
|
200
|
+
CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_ROTATED"] = "user_provider_credential_rotated";
|
|
201
|
+
CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_USED"] = "user_provider_credential_used";
|
|
202
|
+
CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_DELETED"] = "user_provider_credential_deleted";
|
|
203
|
+
// A delegated authorization GRANTED at a vendor, for each owner scope.
|
|
204
|
+
//
|
|
205
|
+
// Distinct from `_SET` rather than a flag on it, on the same three grounds the vocabulary already
|
|
206
|
+
// uses to separate its members. The ACT differs: `_SET` is a value arriving in a row, and this is
|
|
207
|
+
// a principal completing a consent ceremony at a third party — the only event in this family that
|
|
208
|
+
// records somebody deciding something. The DATA differs: a grant carries the scopes that were
|
|
209
|
+
// authorized and the vendor account they were authorized for, neither of which exists for a pasted
|
|
210
|
+
// secret. And the EMISSION POINT differs, which is what makes a flag impractical as well as wrong:
|
|
211
|
+
// `_SET` is emitted by the resource's write hook, which sees the row after the value is sealed,
|
|
212
|
+
// while the scopes are known only to the store that received the grant, before sealing.
|
|
213
|
+
//
|
|
214
|
+
// The distinction is the one an auditor asks for first. "Which of our people granted a third party
|
|
215
|
+
// access, to what, and when" is a different question from "which credentials were configured", and
|
|
216
|
+
// a trail that answers them with the same event answers neither well.
|
|
217
|
+
//
|
|
218
|
+
// Neither payload carries a token, and as with the four above that is structural rather than a
|
|
219
|
+
// redaction step: there is no field to put one in.
|
|
220
|
+
//
|
|
221
|
+
// assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the act of authorizing is recorded
|
|
222
|
+
// as itself, with what was authorized.
|
|
223
|
+
CoreAuditableEventType["ORGANIZATION_PROVIDER_CONNECTION_GRANTED"] = "organization_provider_connection_granted";
|
|
224
|
+
CoreAuditableEventType["USER_PROVIDER_CONNECTION_GRANTED"] = "user_provider_connection_granted";
|
|
175
225
|
// Application Security Configuration Events
|
|
176
226
|
// The per-user-type authentication policy (`userTypes.<type>.auth` — MFA, password, and lockout
|
|
177
227
|
// requirements) is STATIC application configuration authored in code and taken into effect at
|
|
@@ -232,6 +282,7 @@ export var CoreAuditableEventType;
|
|
|
232
282
|
CoreAuditableEventType["USER_PASSKEY_AUTHENTICATION_SUCCESS"] = "user_passkey_authentication_success";
|
|
233
283
|
CoreAuditableEventType["USER_PASSKEY_AUTHENTICATION_FAILURE"] = "user_passkey_authentication_failure";
|
|
234
284
|
CoreAuditableEventType["USER_PASSKEY_REMOVED"] = "user_passkey_removed";
|
|
285
|
+
CoreAuditableEventType["USER_PASSKEY_CLONE_SUSPECTED"] = "user_passkey_clone_suspected";
|
|
235
286
|
// Magic Link Events (Phase G2)
|
|
236
287
|
CoreAuditableEventType["USER_MAGIC_LINK_SENT"] = "user_magic_link_sent";
|
|
237
288
|
CoreAuditableEventType["USER_MAGIC_LINK_VERIFIED"] = "user_magic_link_verified";
|
|
@@ -267,6 +318,37 @@ export var CoreAuditableEventType;
|
|
|
267
318
|
CoreAuditableEventType["FILE_UPLOAD_GRANT_ISSUED"] = "file_upload_grant_issued";
|
|
268
319
|
CoreAuditableEventType["FILE_UPLOAD_GRANT_REDEEMED"] = "file_upload_grant_redeemed";
|
|
269
320
|
CoreAuditableEventType["FILE_UPLOAD_GRANT_REVOKED"] = "file_upload_grant_revoked";
|
|
321
|
+
// File content-inspection outcomes (#506)
|
|
322
|
+
/**
|
|
323
|
+
* A scanner concluded that an uploaded file is INFECTED, and the file was quarantined.
|
|
324
|
+
*
|
|
325
|
+
* Until this existed, the scanner emitted no audit row of any kind: an infection produced a
|
|
326
|
+
* `SCANNING → INFECTED → QUARANTINED` status transition on the file record and nothing else, so
|
|
327
|
+
* the only way to learn that malware had reached the application's storage was to NOTICE a row
|
|
328
|
+
* sitting at `QUARANTINED` — a poll, not a signal. Malware arriving is one of the few things an
|
|
329
|
+
* operator wants to be alerted on, and one of the few a customer security questionnaire asks about
|
|
330
|
+
* by name.
|
|
331
|
+
*
|
|
332
|
+
* `CRITICAL`, on the same argument as `USER_PASSKEY_CLONE_SUSPECTED`: a conclusion the security
|
|
333
|
+
* mechanism reached about a real threat, not a routine outcome.
|
|
334
|
+
*
|
|
335
|
+
* assurance-control: WILDO.SECURITY.INGESTED_CONTENT_INSPECTION — a detected infection is
|
|
336
|
+
* attributable and monitorable, not only visible as a row status. This event is the RECORD half of
|
|
337
|
+
* that objective; the mechanism half is the fail-closed scan gate itself.
|
|
338
|
+
*/
|
|
339
|
+
CoreAuditableEventType["FILE_MALWARE_DETECTED"] = "file_malware_detected";
|
|
340
|
+
/**
|
|
341
|
+
* A scan could NOT be completed — the scanner was unreachable, or the pipeline errored.
|
|
342
|
+
*
|
|
343
|
+
* Its own event rather than a lower severity on the one above, because the operational stories are
|
|
344
|
+
* opposite: an infection means the control WORKED, a failure means it DID NOT RUN. From outside
|
|
345
|
+
* they are indistinguishable today — the file is non-downloadable either way — which is precisely
|
|
346
|
+
* why the trail has to tell them apart. A run of these means files are arriving unscanned.
|
|
347
|
+
*
|
|
348
|
+
* `WARNING`, not `CRITICAL`: nothing was found and nothing was exposed, because the file fails
|
|
349
|
+
* closed to `FAILED` and stays undownloadable. What is wrong is the control's availability.
|
|
350
|
+
*/
|
|
351
|
+
CoreAuditableEventType["FILE_MALWARE_SCAN_FAILED"] = "file_malware_scan_failed";
|
|
270
352
|
CoreAuditableEventType["ONE_OFF_TOKEN_CREATED"] = "one_off_token_created";
|
|
271
353
|
CoreAuditableEventType["ONE_OFF_TOKEN_EXCHANGED"] = "one_off_token_exchanged";
|
|
272
354
|
/** revocation-B1: a super-admin cancelled an un-exchanged one-off (impersonation) session token. */
|
|
@@ -354,6 +436,13 @@ export var CoreAuditableEventType;
|
|
|
354
436
|
* crossing is NAMED in the trail". Before this event, an operator could enumerate every user's
|
|
355
437
|
* email across every tenant and leave nothing behind.
|
|
356
438
|
*
|
|
439
|
+
* ⚠️ "Structurally unavailable" above is exact about the EXISTING grant mechanism — it needs a
|
|
440
|
+
* target tenant and a collection call names none — and must not be read as "prevention is
|
|
441
|
+
* impossible". An application-wide grant kind is buildable; what blocks it is the question of who
|
|
442
|
+
* approves an elevation that names no tenant. See
|
|
443
|
+
* `ScopeRootConfinementDisposition.UNCONFINED_APPLICATION_TIER_DIRECTORY`, which owns that
|
|
444
|
+
* reasoning beside the declaration that makes this read unconfined.
|
|
445
|
+
*
|
|
357
446
|
* INFO, not WARNING: unlike its cross-tenant sibling this is an ordinary, expected administrative
|
|
358
447
|
* read on a surface built for it. The subset worth escalating is selected by a SIEM rule on
|
|
359
448
|
* `resourceType` + `returnedCount`, both of which ride the payload.
|
|
@@ -384,7 +473,8 @@ export var CoreAuditableEventType;
|
|
|
384
473
|
// Retained-Data (Impersonalization) Access Events
|
|
385
474
|
// Emitted when a privileged SEE-THROUGH read reveals RETAINED (impersonalized-and-retained) records
|
|
386
475
|
// that the default retention hide-predicate keeps hidden. SYSTEM_CONTEXT_READ names only the RUNTIME
|
|
387
|
-
// that acted; this read is HUMAN-ATTRIBUTED (
|
|
476
|
+
// that acted; this read is HUMAN-ATTRIBUTED (an application super-administrator, the only role the
|
|
477
|
+
// see-through gate admits today) and carries a REQUIRED reason —
|
|
388
478
|
// a compliance-grade access record over scrubbed personal data. Strictly read-only. Classified
|
|
389
479
|
// DATA_ACCESS / WARNING (an authorized-but-elevated privileged access, not an anomaly ⇒ not CRITICAL).
|
|
390
480
|
CoreAuditableEventType["RETAINED_DATA_ACCESS"] = "retained_data_access";
|
|
@@ -527,6 +617,38 @@ export var AuditEventSeverity;
|
|
|
527
617
|
AuditEventSeverity["WARNING"] = "warning";
|
|
528
618
|
AuditEventSeverity["CRITICAL"] = "critical";
|
|
529
619
|
})(AuditEventSeverity || (AuditEventSeverity = {}));
|
|
620
|
+
/**
|
|
621
|
+
* What each audit category and severity MEANS to whoever reads the trail.
|
|
622
|
+
*
|
|
623
|
+
* The words were authored, correctly, in the technical-documentation catalog that renders the
|
|
624
|
+
* audit-trail page — and lived only there, so the same vocabularies reached every other surface as
|
|
625
|
+
* bare tokens. Moved here, beside the enums, because a vocabulary's words belong with the
|
|
626
|
+
* vocabulary: the catalog now imports them, the schemas describe their own fields from them, and
|
|
627
|
+
* there is one account of what `data_access` selects rather than two that can disagree.
|
|
628
|
+
*
|
|
629
|
+
* `name` is what a reader is shown; `meaning` is what selecting it actually gets them. Exhaustive by
|
|
630
|
+
* type, so a sixth category cannot ship as a bare value.
|
|
631
|
+
*/
|
|
632
|
+
export const AUDIT_EVENT_CATEGORY_MEANINGS = {
|
|
633
|
+
[AuditEventCategory.AUTHENTICATION]: { name: 'Authentication', meaning: 'Signing in, signing out, second factors and failed attempts.' },
|
|
634
|
+
[AuditEventCategory.AUTHORIZATION]: { name: 'Authorization', meaning: 'Access decisions: what an identity was allowed or refused.' },
|
|
635
|
+
[AuditEventCategory.USER_LIFECYCLE]: { name: 'User lifecycle', meaning: 'Accounts created, changed, suspended, restored or removed.' },
|
|
636
|
+
[AuditEventCategory.ORG_MANAGEMENT]: { name: 'Organization management', meaning: 'Membership, roles, units and organization settings.' },
|
|
637
|
+
[AuditEventCategory.DATA_ACCESS]: { name: 'Data access', meaning: 'Reads and changes of application data that are recorded for review.' },
|
|
638
|
+
};
|
|
639
|
+
export const AUDIT_EVENT_SEVERITY_MEANINGS = {
|
|
640
|
+
[AuditEventSeverity.INFO]: { name: 'Information', meaning: 'Expected activity. Useful as evidence, not a signal on its own.' },
|
|
641
|
+
[AuditEventSeverity.WARNING]: { name: 'Warning', meaning: 'Unusual or refused activity worth reviewing in context.' },
|
|
642
|
+
[AuditEventSeverity.CRITICAL]: { name: 'Critical', meaning: 'Activity that should reach whoever handles security incidents.' },
|
|
643
|
+
};
|
|
644
|
+
/**
|
|
645
|
+
* A `Values:` legend in the shape the generated API reference already uses, so a field described
|
|
646
|
+
* here reads exactly like one described from a resource specification.
|
|
647
|
+
*/
|
|
648
|
+
export function describeAuditVocabulary(lead, meanings) {
|
|
649
|
+
const legend = Object.entries(meanings).map(([value, words]) => `- \`${value}\`: ${words.meaning}`).join('\n');
|
|
650
|
+
return `${lead}\n\nValues:\n${legend}`;
|
|
651
|
+
}
|
|
530
652
|
/**
|
|
531
653
|
* Why the authorizer refused an operation. A CLOSED vocabulary — the authorizer resolves exactly
|
|
532
654
|
* one of these per refusal, and a SOC dashboard groups by it.
|
|
@@ -912,20 +1034,66 @@ export const AuditableEvent_Application_SuperAdminFloorBreachedEventDataSchema =
|
|
|
912
1034
|
* recorded rather than assumed zero: the floor's minimum is configurable, and an event that hard-codes
|
|
913
1035
|
* the consequence cannot be re-read against a changed policy.
|
|
914
1036
|
*/
|
|
1037
|
+
/**
|
|
1038
|
+
* HOW a tenant's owner-floor breach came to be known.
|
|
1039
|
+
*
|
|
1040
|
+
* The two answers mean genuinely different things to whoever reads the record, and a reader cannot
|
|
1041
|
+
* tell them apart from the rest of the payload — which is why this is a named member rather than an
|
|
1042
|
+
* inference from whether the action fields happen to be present.
|
|
1043
|
+
*
|
|
1044
|
+
* The event type stays SINGLE across both, deliberately. The fact recorded is "this tenant has no
|
|
1045
|
+
* administratively usable owner", and that is the query an operator needs to be one query: splitting
|
|
1046
|
+
* it in two would mean a breach is missed by whichever half somebody alerts on.
|
|
1047
|
+
*/
|
|
1048
|
+
export var AdministrativeContinuityBreachDetection;
|
|
1049
|
+
(function (AdministrativeContinuityBreachDetection) {
|
|
1050
|
+
/**
|
|
1051
|
+
* A guarded lifecycle write was ALLOWED through and stranded the tenant.
|
|
1052
|
+
*
|
|
1053
|
+
* The permissive branch is deliberate — refusing a suspension would mean an operator cannot lock
|
|
1054
|
+
* out a compromised owner without first transferring ownership using the tenant the attacker
|
|
1055
|
+
* controls — so this record IS the control that makes the trade acceptable. The action fields are
|
|
1056
|
+
* populated here, because there is an action to name.
|
|
1057
|
+
*/
|
|
1058
|
+
AdministrativeContinuityBreachDetection["ALLOWED_LIFECYCLE_ACTION"] = "allowed_lifecycle_action";
|
|
1059
|
+
/**
|
|
1060
|
+
* The boot report found the tenant ALREADY stranded, by a route no guard ever saw: a direct
|
|
1061
|
+
* database edit, a restore from a backup taken mid-erasure, a seed that authored no owner, or a
|
|
1062
|
+
* role-table change that redefined which roles confer ownership.
|
|
1063
|
+
*
|
|
1064
|
+
* There is no action to name, so the action fields are absent rather than filled with placeholders
|
|
1065
|
+
* — the same reading `logApplicationSuperAdminFloorBreached` takes for its missing `userId`.
|
|
1066
|
+
*/
|
|
1067
|
+
AdministrativeContinuityBreachDetection["BOOT_REPORT"] = "boot_report";
|
|
1068
|
+
})(AdministrativeContinuityBreachDetection || (AdministrativeContinuityBreachDetection = {}));
|
|
915
1069
|
export const AuditableEvent_Organization_OwnerFloorBreachedEventDataSchema = z.object({
|
|
916
1070
|
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_OWNER_FLOOR_BREACHED),
|
|
917
1071
|
/** The tenant left with no administratively usable owner. */
|
|
918
1072
|
organizationId: z.string(),
|
|
919
|
-
/**
|
|
920
|
-
|
|
1073
|
+
/**
|
|
1074
|
+
* WHICH observation produced this record. Required, so the compiler forces every emitter — present
|
|
1075
|
+
* and future — to say which; a reader cannot recover it from the payload, and guessing it from the
|
|
1076
|
+
* presence of the action fields would make an emitter's omission look like a boot observation.
|
|
1077
|
+
*/
|
|
1078
|
+
detectedBy: z.enum(AdministrativeContinuityBreachDetection),
|
|
921
1079
|
/** How many usable owners remain (expected: 0 when emitted). */
|
|
922
1080
|
remainingUsableOwners: z.number(),
|
|
923
|
-
/**
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
1081
|
+
/**
|
|
1082
|
+
* The owner-conferring memberships the action removed from the population.
|
|
1083
|
+
*
|
|
1084
|
+
* Absent under `BOOT_REPORT`: nothing was removed within sight of a guard, which is the whole
|
|
1085
|
+
* reason the boot report has to look.
|
|
1086
|
+
*/
|
|
1087
|
+
reducedMemberIds: z.array(z.string()).optional(),
|
|
1088
|
+
/** The lifecycle verb that caused it — the operator-facing "what did this". Absent under `BOOT_REPORT`. */
|
|
1089
|
+
operationIdentifier: z.string().optional(),
|
|
1090
|
+
/** The subject whose deactivation triggered it. Absent under `BOOT_REPORT`. */
|
|
1091
|
+
subjectUserId: z.string().optional(),
|
|
1092
|
+
/**
|
|
1093
|
+
* The status the subject moved to, so a reader need not infer usability from the verb alone. Absent
|
|
1094
|
+
* under `BOOT_REPORT`.
|
|
1095
|
+
*/
|
|
1096
|
+
subjectNextStatus: z.string().optional(),
|
|
929
1097
|
});
|
|
930
1098
|
// Organization Member Event Data Schemas
|
|
931
1099
|
export const AuditableEvent_OrganizationMember_InvitedEventDataSchema = z.object({
|
|
@@ -1547,6 +1715,239 @@ export const AuditableEvent_Organization_SIEMExportConfiguredEventDataSchema = z
|
|
|
1547
1715
|
webhookUrlDomain: z.string().optional(),
|
|
1548
1716
|
eventFormatConfigured: z.string().optional(),
|
|
1549
1717
|
});
|
|
1718
|
+
// Organization Provider Credential Event Data Schemas
|
|
1719
|
+
//
|
|
1720
|
+
// ## The value is absent by CONSTRUCTION
|
|
1721
|
+
//
|
|
1722
|
+
// Every field below is an identifier, a timestamp, a closed vocabulary or a count. There is no
|
|
1723
|
+
// free-text field an implementation could put a secret in by accident, and no `changes` /
|
|
1724
|
+
// `metadata` record — the shape the SSO event uses (`z.record(z.string(), z.any())`) is exactly
|
|
1725
|
+
// what a credential event must not have, because an audit row is replicated to the organization's
|
|
1726
|
+
// SIEM and to the immutable store, and neither can be edited afterwards.
|
|
1727
|
+
//
|
|
1728
|
+
// ## Why a provider ref and a slug, and nothing about the value
|
|
1729
|
+
//
|
|
1730
|
+
// A reader needs to know WHICH authority moved. `providerRef` + `secretSlug` say that completely.
|
|
1731
|
+
// A fingerprint of the value was considered and rejected: it is a stable oracle for confirming a
|
|
1732
|
+
// guessed secret, so it would put a verification oracle into the one store designed never to
|
|
1733
|
+
// forget.
|
|
1734
|
+
/**
|
|
1735
|
+
* A tenant granted this application authority to act as it toward a third party.
|
|
1736
|
+
*
|
|
1737
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — organization authorizes delegated
|
|
1738
|
+
* access to a named third party.
|
|
1739
|
+
*/
|
|
1740
|
+
export const AuditableEvent_OrganizationProviderCredential_SetEventDataSchema = z.object({
|
|
1741
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_SET),
|
|
1742
|
+
organizationId: z.string(),
|
|
1743
|
+
providerRef: z.string(),
|
|
1744
|
+
secretSlug: z.string(),
|
|
1745
|
+
/** The acting administrator. Absent only on a system-initiated write, which none exists today. */
|
|
1746
|
+
setBy: z.string().optional(),
|
|
1747
|
+
credentialId: z.string(),
|
|
1748
|
+
});
|
|
1749
|
+
/**
|
|
1750
|
+
* The stored VALUE changed for a credential that already existed.
|
|
1751
|
+
*
|
|
1752
|
+
* Separate from `_SET` because rotation is the response to a suspected compromise, and "was this
|
|
1753
|
+
* rotated after the incident?" must be answerable without reading every configuration edit.
|
|
1754
|
+
*
|
|
1755
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the delegated authority's secret is
|
|
1756
|
+
* replaced.
|
|
1757
|
+
*/
|
|
1758
|
+
export const AuditableEvent_OrganizationProviderCredential_RotatedEventDataSchema = z.object({
|
|
1759
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_ROTATED),
|
|
1760
|
+
organizationId: z.string(),
|
|
1761
|
+
providerRef: z.string(),
|
|
1762
|
+
secretSlug: z.string(),
|
|
1763
|
+
rotatedBy: z.string().optional(),
|
|
1764
|
+
credentialId: z.string(),
|
|
1765
|
+
/** When the value it replaced was set — how long the retired secret was live. */
|
|
1766
|
+
previousSecretSetAt: z.string().optional(),
|
|
1767
|
+
});
|
|
1768
|
+
/**
|
|
1769
|
+
* The credential was RESOLVED for an outbound call — the application acted as the tenant.
|
|
1770
|
+
*
|
|
1771
|
+
* The highest-volume of the four and the one that makes the other three worth having: without a
|
|
1772
|
+
* use event, a leaked credential's exploitation is invisible and only its configuration is
|
|
1773
|
+
* recorded. `resolvedFrom` distinguishes a tenant's own credential from the deployment-wide
|
|
1774
|
+
* environment fallback, which is precisely the distinction this whole resource exists to make
|
|
1775
|
+
* visible — a tenant silently acting as the shared principal is the defect, and here it is a
|
|
1776
|
+
* value in a field rather than something nobody can see.
|
|
1777
|
+
*
|
|
1778
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — delegated authority is exercised.
|
|
1779
|
+
*/
|
|
1780
|
+
export const AuditableEvent_OrganizationProviderCredential_UsedEventDataSchema = z.object({
|
|
1781
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_USED),
|
|
1782
|
+
organizationId: z.string(),
|
|
1783
|
+
providerRef: z.string(),
|
|
1784
|
+
secretSlug: z.string(),
|
|
1785
|
+
resolvedFrom: z.enum(ProviderCredentialResolutionSource),
|
|
1786
|
+
/** Absent when `resolvedFrom` is the deployment environment — there is no row to name. */
|
|
1787
|
+
credentialId: z.string().optional(),
|
|
1788
|
+
});
|
|
1789
|
+
/**
|
|
1790
|
+
* The grant ended — by the tenant removing it, or by the tenant itself being purged.
|
|
1791
|
+
*
|
|
1792
|
+
* `reason` separates the two, because "the credential is gone" means different things to an
|
|
1793
|
+
* incident reviewer depending on whether a human revoked it or a cascade removed it.
|
|
1794
|
+
*
|
|
1795
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — evidence that delegated authority
|
|
1796
|
+
* was withdrawn.
|
|
1797
|
+
*/
|
|
1798
|
+
export const AuditableEvent_OrganizationProviderCredential_DeletedEventDataSchema = z.object({
|
|
1799
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_DELETED),
|
|
1800
|
+
organizationId: z.string(),
|
|
1801
|
+
providerRef: z.string(),
|
|
1802
|
+
secretSlug: z.string(),
|
|
1803
|
+
deletedBy: z.string().optional(),
|
|
1804
|
+
credentialId: z.string(),
|
|
1805
|
+
reason: z.enum(ProviderCredentialDeletionReason),
|
|
1806
|
+
});
|
|
1807
|
+
/**
|
|
1808
|
+
* A PERSON connected their own account at a third party to this application.
|
|
1809
|
+
*
|
|
1810
|
+
* The organization's four events say "this tenant authorized the application". These four say "this
|
|
1811
|
+
* individual did", and the difference is not cosmetic: the vendor will attribute every resulting act
|
|
1812
|
+
* to that person's account, so the trail that answers "who authorized this" has to name them.
|
|
1813
|
+
*
|
|
1814
|
+
* `userId` is the subject, not the actor, and the two are the same here BY CONSTRUCTION — the
|
|
1815
|
+
* resource admits no administrative variant, so nobody but the holder can write one of these rows.
|
|
1816
|
+
* That is why there is no `setBy`: an organization credential needs one because several
|
|
1817
|
+
* administrators can write the tenant's row, and a person's own credential has exactly one possible
|
|
1818
|
+
* author. A `setBy` that could only ever repeat `userId` would invite a future reader to believe the
|
|
1819
|
+
* two can differ.
|
|
1820
|
+
*
|
|
1821
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — a user authorizes third-party
|
|
1822
|
+
* delegated access.
|
|
1823
|
+
*/
|
|
1824
|
+
export const AuditableEvent_UserProviderCredential_SetEventDataSchema = z.object({
|
|
1825
|
+
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_SET),
|
|
1826
|
+
userId: z.string(),
|
|
1827
|
+
providerRef: z.string(),
|
|
1828
|
+
secretSlug: z.string(),
|
|
1829
|
+
credentialId: z.string(),
|
|
1830
|
+
});
|
|
1831
|
+
/**
|
|
1832
|
+
* A PERSON completed a consent ceremony at a vendor and this application now holds their grant.
|
|
1833
|
+
*
|
|
1834
|
+
* The subject and the actor are the same by construction — the resource admits no administrative
|
|
1835
|
+
* variant, and the connect leg refuses any owner but the caller — so there is no `grantedBy`.
|
|
1836
|
+
*
|
|
1837
|
+
* `grantedScopes` is what the VENDOR said it issued, not what was asked for. The two differ often
|
|
1838
|
+
* enough to matter: a vendor may narrow a request against what the account is permitted, and the
|
|
1839
|
+
* answer to "what could this application actually do as them" is the granted set. Optional because
|
|
1840
|
+
* several vendors return no scope at all on a token response, and an empty array would assert
|
|
1841
|
+
* something stronger than silence.
|
|
1842
|
+
*
|
|
1843
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — a user authorizes third-party
|
|
1844
|
+
* delegated access, and the authorization's extent is recorded with it.
|
|
1845
|
+
*/
|
|
1846
|
+
export const AuditableEvent_UserProviderConnection_GrantedEventDataSchema = z.object({
|
|
1847
|
+
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CONNECTION_GRANTED),
|
|
1848
|
+
userId: z.string(),
|
|
1849
|
+
providerRef: z.string(),
|
|
1850
|
+
secretSlug: z.string(),
|
|
1851
|
+
credentialId: z.string(),
|
|
1852
|
+
grantedScopes: z.array(z.string()).optional(),
|
|
1853
|
+
/**
|
|
1854
|
+
* WHICH account at the vendor — a workspace, a tenant, a directory. Never a secret, and the answer
|
|
1855
|
+
* to a question the row alone cannot settle: two people connecting the same provider may be
|
|
1856
|
+
* granting access to entirely different organizations of that vendor.
|
|
1857
|
+
*/
|
|
1858
|
+
accountRef: z.string().optional(),
|
|
1859
|
+
/**
|
|
1860
|
+
* Whether this replaced a connection that already existed.
|
|
1861
|
+
*
|
|
1862
|
+
* A first connection and a re-authorization look identical in the row afterwards, and they are not
|
|
1863
|
+
* the same event to an auditor: a re-authorization frequently follows a revocation at the vendor,
|
|
1864
|
+
* which is exactly the sequence worth being able to see.
|
|
1865
|
+
*/
|
|
1866
|
+
replacedExistingConnection: z.boolean(),
|
|
1867
|
+
});
|
|
1868
|
+
/**
|
|
1869
|
+
* An ORGANIZATION's delegated authorization toward a vendor was granted.
|
|
1870
|
+
*
|
|
1871
|
+
* Mirrors the person's event and is deliberately not the same event with a nullable user: the
|
|
1872
|
+
* subject is a tenant, the SIEM routing is the tenant's, and the data-protection reading differs —
|
|
1873
|
+
* a tenant's shared integration is not anybody's personal connection.
|
|
1874
|
+
*
|
|
1875
|
+
* `grantedByUserId` exists here and not on the user's, for the reason the `_SET` pair already
|
|
1876
|
+
* records: several administrators can authorize on a tenant's behalf, so WHO did is a real question.
|
|
1877
|
+
*
|
|
1878
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — an organization authorizes this
|
|
1879
|
+
* application to act as it toward a named third party.
|
|
1880
|
+
*/
|
|
1881
|
+
export const AuditableEvent_OrganizationProviderConnection_GrantedEventDataSchema = z.object({
|
|
1882
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CONNECTION_GRANTED),
|
|
1883
|
+
organizationId: z.string(),
|
|
1884
|
+
providerRef: z.string(),
|
|
1885
|
+
secretSlug: z.string(),
|
|
1886
|
+
credentialId: z.string(),
|
|
1887
|
+
grantedByUserId: z.string().optional(),
|
|
1888
|
+
grantedScopes: z.array(z.string()).optional(),
|
|
1889
|
+
accountRef: z.string().optional(),
|
|
1890
|
+
replacedExistingConnection: z.boolean(),
|
|
1891
|
+
});
|
|
1892
|
+
/**
|
|
1893
|
+
* The stored VALUE changed for a person's credential that already existed.
|
|
1894
|
+
*
|
|
1895
|
+
* Separate from `_SET` for the organization's reason — rotation answers "was this replaced after the
|
|
1896
|
+
* incident?" — and for one that is specific to a person: a credential someone rotates on their own
|
|
1897
|
+
* initiative is often the first evidence that they believe their vendor account was compromised.
|
|
1898
|
+
*
|
|
1899
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the delegated authority's secret is
|
|
1900
|
+
* replaced.
|
|
1901
|
+
*/
|
|
1902
|
+
export const AuditableEvent_UserProviderCredential_RotatedEventDataSchema = z.object({
|
|
1903
|
+
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_ROTATED),
|
|
1904
|
+
userId: z.string(),
|
|
1905
|
+
providerRef: z.string(),
|
|
1906
|
+
secretSlug: z.string(),
|
|
1907
|
+
credentialId: z.string(),
|
|
1908
|
+
/** When the value it replaced was set — how long the retired secret was live. */
|
|
1909
|
+
previousSecretSetAt: z.string().optional(),
|
|
1910
|
+
});
|
|
1911
|
+
/**
|
|
1912
|
+
* The credential was RESOLVED for an outbound call — the application acted as that person.
|
|
1913
|
+
*
|
|
1914
|
+
* `resolvedFrom` is present for symmetry with the organization event but carries a narrower range:
|
|
1915
|
+
* a person's credential has NO fallback, because substituting the deployment's shared principal for
|
|
1916
|
+
* someone's own account would attribute the act to the wrong party at the vendor — the very
|
|
1917
|
+
* substitution the whole scope triangle exists to forbid. So this field reads
|
|
1918
|
+
* `USER_CREDENTIAL` on every event, and a reviewer seeing anything else is looking at a defect.
|
|
1919
|
+
*
|
|
1920
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — delegated authority is exercised.
|
|
1921
|
+
*/
|
|
1922
|
+
export const AuditableEvent_UserProviderCredential_UsedEventDataSchema = z.object({
|
|
1923
|
+
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_USED),
|
|
1924
|
+
userId: z.string(),
|
|
1925
|
+
providerRef: z.string(),
|
|
1926
|
+
secretSlug: z.string(),
|
|
1927
|
+
resolvedFrom: z.enum(ProviderCredentialResolutionSource),
|
|
1928
|
+
credentialId: z.string(),
|
|
1929
|
+
});
|
|
1930
|
+
/**
|
|
1931
|
+
* The person's grant ended — by them removing it, or by their own erasure.
|
|
1932
|
+
*
|
|
1933
|
+
* `reason` matters more here than on the organization sibling. A credential removed by a cascade
|
|
1934
|
+
* from a subject-erasure request is EVIDENCE that the erasure reached this store, and it is the
|
|
1935
|
+
* evidence an operator produces when asked whether a person's third-party keys were destroyed. The
|
|
1936
|
+
* row itself is gone by then, so the event is all that remains.
|
|
1937
|
+
*
|
|
1938
|
+
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — evidence that delegated authority
|
|
1939
|
+
* was withdrawn.
|
|
1940
|
+
* assurance-control: WILDO.PRIVACY.ERASURE — evidence that erasure destroyed the subject's
|
|
1941
|
+
* third-party credentials.
|
|
1942
|
+
*/
|
|
1943
|
+
export const AuditableEvent_UserProviderCredential_DeletedEventDataSchema = z.object({
|
|
1944
|
+
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_DELETED),
|
|
1945
|
+
userId: z.string(),
|
|
1946
|
+
providerRef: z.string(),
|
|
1947
|
+
secretSlug: z.string(),
|
|
1948
|
+
credentialId: z.string(),
|
|
1949
|
+
reason: z.enum(ProviderCredentialDeletionReason),
|
|
1950
|
+
});
|
|
1550
1951
|
// Outbound M2M Webhook Event Data Schemas
|
|
1551
1952
|
/**
|
|
1552
1953
|
* One `webhookConfig.testEndpoint` attempt — an admin causing the platform to open an
|
|
@@ -1736,6 +2137,91 @@ export const AuditableEvent_User_PasskeyAuthFailureEventDataSchema = z.object({
|
|
|
1736
2137
|
userAgent: z.string(),
|
|
1737
2138
|
sessionId: z.string(),
|
|
1738
2139
|
});
|
|
2140
|
+
/**
|
|
2141
|
+
* A passkey assertion whose SIGNATURE VERIFIED and whose signature counter did not advance.
|
|
2142
|
+
*
|
|
2143
|
+
* This is the WebAuthn cloned-authenticator signal (W3C WebAuthn L3 §6.1.1: "The signature
|
|
2144
|
+
* counter's purpose is to aid Relying Parties in detecting cloned authenticators"). It is emitted
|
|
2145
|
+
* on the spec's own predicate — either counter non-zero AND the received value not greater than
|
|
2146
|
+
* the stored one — so a credential that reports 0 permanently, which every synced passkey does,
|
|
2147
|
+
* compares 0-against-0 and never reaches here.
|
|
2148
|
+
*
|
|
2149
|
+
* spec-cite: W3C Web Authentication Level 3, §6.1.1 Signature Counter Considerations
|
|
2150
|
+
* (https://www.w3.org/TR/webauthn-3/#sctn-sign-counter). The spec declines to mandate an outcome
|
|
2151
|
+
* (§7.2 step 22: "whether the Relying Party ... fails the authentication ceremony or not, is
|
|
2152
|
+
* Relying Party-specific"); Wildo refuses, matching what every major implementation does.
|
|
2153
|
+
*
|
|
2154
|
+
* SEPARATE from `USER_PASSKEY_AUTHENTICATION_FAILURE` deliberately. A wrong credential, an absent
|
|
2155
|
+
* challenge and a bad signature are routine noise; this one means a private key may exist in two
|
|
2156
|
+
* places. Recorded as its own type at CRITICAL so it is alertable rather than buried among ordinary
|
|
2157
|
+
* failed logins — which is exactly where it lived until 2026-09-08.
|
|
2158
|
+
*
|
|
2159
|
+
* The device-type, backup and AAGUID fields are carried for TRIAGE, never for a decision: nothing
|
|
2160
|
+
* branches on them. A synced credential that once reported a non-zero counter and then regresses is
|
|
2161
|
+
* still a signal, and exempting by device type would silently disable clone detection for the
|
|
2162
|
+
* growing majority of credentials.
|
|
2163
|
+
*/
|
|
2164
|
+
/**
|
|
2165
|
+
* One file that a scanner concluded is infected (#506).
|
|
2166
|
+
*
|
|
2167
|
+
* `threatName` is the scanner's own signature or rule name (`Eicar-Test-Signature`, a YARA rule id).
|
|
2168
|
+
* It is carried because it is the first thing a responder needs and it names a THREAT, not a person
|
|
2169
|
+
* — unlike a file name, which is user-supplied content and is deliberately absent: audit rows are
|
|
2170
|
+
* replicated to the organisation's SIEM and to the immutable store, and an uploaded file's name
|
|
2171
|
+
* routinely carries personal data ("Invoice - Jane Doe.pdf"). The file id resolves to the row for
|
|
2172
|
+
* anyone authorised to look.
|
|
2173
|
+
*/
|
|
2174
|
+
export const AuditableEvent_File_MalwareDetectedEventDataSchema = z.object({
|
|
2175
|
+
eventType: z.literal(CoreAuditableEventType.FILE_MALWARE_DETECTED),
|
|
2176
|
+
fileId: z.string(),
|
|
2177
|
+
/** Which scanner concluded it — ClamAV signature matching and YARA pattern matching are different evidence. */
|
|
2178
|
+
scannerRef: z.string(),
|
|
2179
|
+
/** The signature or rule the scanner matched, when it reports one. */
|
|
2180
|
+
threatName: z.string().optional(),
|
|
2181
|
+
/** The resource the file belongs to, when the scan context carries it. */
|
|
2182
|
+
resourceType: z.string().optional(),
|
|
2183
|
+
resourceId: z.string().optional(),
|
|
2184
|
+
organizationId: z.string().optional(),
|
|
2185
|
+
/** Terminal status the file was moved to. Recorded so the row cannot claim a state the record does not hold. */
|
|
2186
|
+
fileStatus: z.string(),
|
|
2187
|
+
});
|
|
2188
|
+
/**
|
|
2189
|
+
* One scan that could not be completed (#506).
|
|
2190
|
+
*
|
|
2191
|
+
* Distinct from a detection: the control did not run. `failureReason` is TRUNCATED because a scanner
|
|
2192
|
+
* error routinely embeds a host, a socket path or a temporary file path, and this row reaches the
|
|
2193
|
+
* organisation's SIEM.
|
|
2194
|
+
*/
|
|
2195
|
+
export const AuditableEvent_File_MalwareScanFailedEventDataSchema = z.object({
|
|
2196
|
+
eventType: z.literal(CoreAuditableEventType.FILE_MALWARE_SCAN_FAILED),
|
|
2197
|
+
fileId: z.string(),
|
|
2198
|
+
scannerRef: z.string(),
|
|
2199
|
+
/** Truncated scanner/pipeline error — enough to triage, bounded so a path cannot ride into the SIEM whole. */
|
|
2200
|
+
failureReason: z.string().optional(),
|
|
2201
|
+
resourceType: z.string().optional(),
|
|
2202
|
+
resourceId: z.string().optional(),
|
|
2203
|
+
organizationId: z.string().optional(),
|
|
2204
|
+
fileStatus: z.string(),
|
|
2205
|
+
});
|
|
2206
|
+
export const AuditableEvent_User_PasskeyCloneSuspectedEventDataSchema = z.object({
|
|
2207
|
+
eventType: z.literal(CoreAuditableEventType.USER_PASSKEY_CLONE_SUSPECTED),
|
|
2208
|
+
userId: z.string(),
|
|
2209
|
+
credentialId: z.string(),
|
|
2210
|
+
/** The counter Wildo held for this credential before the assertion. */
|
|
2211
|
+
storedCounter: z.number().int().min(0),
|
|
2212
|
+
/** The counter the authenticator reported. Not greater than `storedCounter`, which is the signal. */
|
|
2213
|
+
receivedCounter: z.number().int().min(0),
|
|
2214
|
+
/** Triage only: `singleDevice` or `multiDevice`, as captured at registration. */
|
|
2215
|
+
credentialDeviceType: z.string(),
|
|
2216
|
+
/** Triage only: whether the credential is backed up (synced), as captured at registration. */
|
|
2217
|
+
credentialBackedUp: z.boolean(),
|
|
2218
|
+
/** Triage only: the authenticator model identifier, when the registration reported one. */
|
|
2219
|
+
aaguid: z.string().optional(),
|
|
2220
|
+
/** Which door the assertion arrived at — a step-up regression is not the same story as a login. */
|
|
2221
|
+
ceremony: z.string(),
|
|
2222
|
+
ipAddress: z.string(),
|
|
2223
|
+
userAgent: z.string(),
|
|
2224
|
+
});
|
|
1739
2225
|
export const AuditableEvent_User_PasskeyRemovedEventDataSchema = z.object({
|
|
1740
2226
|
eventType: z.literal(CoreAuditableEventType.USER_PASSKEY_REMOVED),
|
|
1741
2227
|
userId: z.string(),
|
|
@@ -1836,15 +2322,41 @@ export const AuditableEvent_OAuth2ProviderBlockedEventDataSchema = z.object({
|
|
|
1836
2322
|
}
|
|
1837
2323
|
});
|
|
1838
2324
|
// Emergency Access Event Data Schema
|
|
2325
|
+
/**
|
|
2326
|
+
* A named break-glass account signed in past its tenant's own SSO requirement (#423).
|
|
2327
|
+
*
|
|
2328
|
+
* `organizationId` was REQUIRED here and is now one of two scopes, because `emergencyAccess` lives
|
|
2329
|
+
* on the POLYMORPHIC SSO config: an application-scope policy carries break-glass accounts for the
|
|
2330
|
+
* application itself, and requiring an organization id would have made the one event that matters
|
|
2331
|
+
* unemittable for exactly that case — a privileged sign-in with no record, which is the opposite of
|
|
2332
|
+
* what this event is for. The exactly-one-scope refinement follows the OAuth2-provider-blocked
|
|
2333
|
+
* event above rather than inventing a second shape.
|
|
2334
|
+
*/
|
|
1839
2335
|
export const AuditableEvent_EmergencyAccess_UsedEventDataSchema = z.object({
|
|
1840
2336
|
eventType: z.literal(CoreAuditableEventType.EMERGENCY_ACCESS_USED),
|
|
1841
2337
|
userId: z.string(),
|
|
1842
2338
|
email: z.email(),
|
|
1843
|
-
|
|
2339
|
+
scopeType: z.enum(AuthScopeType),
|
|
2340
|
+
organizationId: z.string().optional(),
|
|
2341
|
+
applicationId: z.string().optional(),
|
|
1844
2342
|
reason: z.string().optional(),
|
|
1845
2343
|
ipAddress: z.string(),
|
|
1846
2344
|
userAgent: z.string(),
|
|
1847
2345
|
sessionId: z.string(),
|
|
2346
|
+
}).superRefine((event, ctx) => {
|
|
2347
|
+
const hasOrganizationScope = event.scopeType === AuthScopeType.ORGANIZATION
|
|
2348
|
+
&& event.organizationId !== undefined
|
|
2349
|
+
&& event.applicationId === undefined;
|
|
2350
|
+
const hasApplicationScope = event.scopeType === AuthScopeType.APPLICATION
|
|
2351
|
+
&& event.applicationId !== undefined
|
|
2352
|
+
&& event.organizationId === undefined;
|
|
2353
|
+
if (!hasOrganizationScope && !hasApplicationScope) {
|
|
2354
|
+
ctx.addIssue({
|
|
2355
|
+
code: 'custom',
|
|
2356
|
+
path: ['scopeType'],
|
|
2357
|
+
message: 'Emergency-access events require exactly one explicit tenant scope',
|
|
2358
|
+
});
|
|
2359
|
+
}
|
|
1848
2360
|
});
|
|
1849
2361
|
export const AuditableEvent_FieldAccess_EventDataSchema = z.object({
|
|
1850
2362
|
eventType: z.literal(CoreAuditableEventType.FIELD_ACCESS),
|
|
@@ -2034,17 +2546,21 @@ export const AuditableEvent_ResourceOperationPerformed_EventDataSchema = z.objec
|
|
|
2034
2546
|
* `organization-ownership-grant-hostile.e2e.ts` probe F-1a, which deleted a membership row in
|
|
2035
2547
|
* another tenant and got a 200.
|
|
2036
2548
|
*
|
|
2037
|
-
* This event is the visibility half
|
|
2038
|
-
*
|
|
2549
|
+
* This event is the visibility half, and it is NOT the refusal. The refusal shipped separately and
|
|
2550
|
+
* lives in `authorizeOrganizations`: an undeclared crossing is no longer admitted, and the caller is
|
|
2551
|
+
* answered as not-found so the response cannot be used as an existence oracle. Emission here stays
|
|
2039
2552
|
* best-effort and never blocks the request: an operator action must not fail because the audit sink
|
|
2040
2553
|
* is down, and a fail-closed variant would let anyone disable operator support by breaking the sink.
|
|
2554
|
+
* The observation is taken BEFORE the admission decision, on purpose, so a sanctioned crossing is
|
|
2555
|
+
* recorded too.
|
|
2041
2556
|
*
|
|
2042
2557
|
* ## Reading the event
|
|
2043
2558
|
*
|
|
2044
2559
|
* {@link admissionDeclared} is the field that matters most. `true` means the operation VARIANT
|
|
2045
2560
|
* declared `admitsCrossTenantPlatformAdministration` — an intended, reviewed crossing such as
|
|
2046
|
-
* `organizationMembers.grantOwnership
|
|
2047
|
-
*
|
|
2561
|
+
* `organizationMembers.grantOwnership`, which additionally requires a usable platform access grant.
|
|
2562
|
+
* `false` now means an ATTEMPTED undeclared crossing, which was refused: still the population to
|
|
2563
|
+
* watch, because it is reach nobody declared and no specification describes.
|
|
2048
2564
|
*
|
|
2049
2565
|
* assurance-control: WILDO.ACCESS.CROSS_TENANT_ADMINISTRATION — platform-tier access to a tenant the
|
|
2050
2566
|
* principal does not belong to.
|
|
@@ -2122,8 +2638,9 @@ export const AuditableEvent_CrossTenantAdministrativeAccess_EventDataSchema = z.
|
|
|
2122
2638
|
/**
|
|
2123
2639
|
* Did the operation variant DECLARE this crossing (`admitsCrossTenantPlatformAdministration`)?
|
|
2124
2640
|
*
|
|
2125
|
-
* `false` is the signal worth alerting on:
|
|
2126
|
-
* describes.
|
|
2641
|
+
* `false` is the signal worth alerting on: an ATTEMPTED crossing that no variant asked for and no
|
|
2642
|
+
* specification describes. It was refused, so the row records an attempt rather than a completed
|
|
2643
|
+
* access. See this schema's JSDoc.
|
|
2127
2644
|
*/
|
|
2128
2645
|
admissionDeclared: z.boolean(),
|
|
2129
2646
|
/** The caller's roles as they were at decision time. */
|
|
@@ -2236,22 +2753,24 @@ export const AuditableEvent_ResourceOperationDenied_EventDataSchema = z.object({
|
|
|
2236
2753
|
* that scrubbed data, and its two defining properties (vs `SYSTEM_CONTEXT_READ`, which names only the
|
|
2237
2754
|
* RUNTIME that acted, never a human) are:
|
|
2238
2755
|
*
|
|
2239
|
-
* 1. **Human attribution** — `accessingUserId` names the actual
|
|
2240
|
-
*
|
|
2241
|
-
*
|
|
2756
|
+
* 1. **Human attribution** — `accessingUserId` names the actual human who exercised the see-through,
|
|
2757
|
+
* so a retained-data reveal is never anonymous. Non-empty (`.trim().min(1)`) — a blank id cannot
|
|
2758
|
+
* stand in for a human. The gate admits `APP_ADMIN_SUPER_ADMIN` and nothing else; a dedicated
|
|
2759
|
+
* auditor role does not exist yet, and adding one is a purely additive change to that gate.
|
|
2242
2760
|
* 2. **A required reason** — `reason` is the mandatory justification for revealing scrubbed PII.
|
|
2243
2761
|
* Non-empty (`.trim().min(1)`): a blank OR whitespace-only reason fails validation, so the audit
|
|
2244
2762
|
* trail cannot record a reveal without a real "why". The see-through primitives ALSO fail-closed on
|
|
2245
2763
|
* blank attribution before the read (the schema `.min(1)` is the contract; the primitive guard is
|
|
2246
2764
|
* the enforcement point, since the audit store persists `eventData` as an unparsed record).
|
|
2247
2765
|
*
|
|
2248
|
-
* Strictly read-only (the see-through primitive never mutates). Emitted by
|
|
2249
|
-
*
|
|
2250
|
-
* contract
|
|
2766
|
+
* Strictly read-only (the see-through primitive never mutates). Emitted TODAY by both see-through
|
|
2767
|
+
* read primitives, `readRetainedAsSystem` and `listRetainedAsSystem`: each calls
|
|
2768
|
+
* `logRetainedDataAccess` after its gates pass, so this is a live event, not a contract awaiting a
|
|
2769
|
+
* producer.
|
|
2251
2770
|
*/
|
|
2252
2771
|
export const AuditableEvent_RetainedDataAccess_EventDataSchema = z.object({
|
|
2253
2772
|
eventType: z.literal(CoreAuditableEventType.RETAINED_DATA_ACCESS),
|
|
2254
|
-
/** The HUMAN principal who performed the see-through read (super-
|
|
2773
|
+
/** The HUMAN principal who performed the see-through read (an application super-administrator). Non-empty. */
|
|
2255
2774
|
accessingUserId: z.string().trim().min(1),
|
|
2256
2775
|
/** REQUIRED non-empty compliance justification for revealing the retained (scrubbed) records — the "why". */
|
|
2257
2776
|
reason: z.string().trim().min(1),
|
|
@@ -2861,6 +3380,10 @@ export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType',
|
|
|
2861
3380
|
AuditableEvent_User_TokenRefreshedEventDataSchema,
|
|
2862
3381
|
AuditableEvent_Organization_SSOConfigurationChangedEventDataSchema,
|
|
2863
3382
|
AuditableEvent_Organization_SIEMExportConfiguredEventDataSchema,
|
|
3383
|
+
AuditableEvent_OrganizationProviderCredential_SetEventDataSchema,
|
|
3384
|
+
AuditableEvent_OrganizationProviderCredential_RotatedEventDataSchema,
|
|
3385
|
+
AuditableEvent_OrganizationProviderCredential_UsedEventDataSchema,
|
|
3386
|
+
AuditableEvent_OrganizationProviderCredential_DeletedEventDataSchema,
|
|
2864
3387
|
AuditableEvent_ApplicationAuthPolicyChanged_EventDataSchema,
|
|
2865
3388
|
AuditableEvent_Webhook_EndpointTestDispatchedEventDataSchema,
|
|
2866
3389
|
AuditableEvent_SCIM_TokenCreatedEventDataSchema,
|
|
@@ -2881,6 +3404,7 @@ export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType',
|
|
|
2881
3404
|
AuditableEvent_User_PasskeyAuthSuccessEventDataSchema,
|
|
2882
3405
|
AuditableEvent_User_PasskeyAuthFailureEventDataSchema,
|
|
2883
3406
|
AuditableEvent_User_PasskeyRemovedEventDataSchema,
|
|
3407
|
+
AuditableEvent_User_PasskeyCloneSuspectedEventDataSchema,
|
|
2884
3408
|
AuditableEvent_User_MagicLinkSentEventDataSchema,
|
|
2885
3409
|
AuditableEvent_User_MagicLinkVerifiedEventDataSchema,
|
|
2886
3410
|
AuditableEvent_User_MagicLinkFailedEventDataSchema,
|