@wildo-ai/saas-models 1.1.4 → 1.1.6
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/__tests__/setup.d.ts.map +1 -1
- package/dist/esm/_inspect.d.ts.map +1 -1
- package/dist/esm/applications/application-metadata.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/applications/application-metadata.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/application-subject.shared.schemas.d.ts.map +1 -1
- package/dist/esm/applications/application-versions.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/applications/application-versions.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/application-versions.shared.resources-config.schemas.js +4 -3
- package/dist/esm/applications/application-versions.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/applications/applications-context.schemas.d.ts +412 -20
- package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts +1 -0
- 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/applications/applications.shared.schemas.d.ts +10 -7
- package/dist/esm/applications/applications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.schemas.js +46 -9
- package/dist/esm/applications/applications.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts +11 -3
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.js +50 -17
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/billing-account.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-account.shared.schemas.js +2 -2
- package/dist/esm/billing/billing-account.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts +25 -0
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.js +19 -0
- package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts +114 -10
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.js +121 -9
- package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.d.ts +61 -15
- package/dist/esm/billing/billing-types.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.js +54 -26
- package/dist/esm/billing/billing-types.shared.schemas.js.map +1 -1
- package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts +2 -0
- package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js +18 -7
- package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/credit-pool.shared.schemas.d.ts +2 -0
- package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/credit-pool.shared.schemas.js +7 -1
- package/dist/esm/billing/credit-pool.shared.schemas.js.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js +6 -6
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.schemas.js +1 -1
- package/dist/esm/billing/invoice-ref.shared.schemas.js.map +1 -1
- package/dist/esm/billing/price.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/price.shared.resources-config.schemas.js +32 -2
- package/dist/esm/billing/price.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/price.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/price.shared.schemas.js +5 -3
- package/dist/esm/billing/price.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts +11 -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 +39 -23
- package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-definition.shared.schemas.d.ts +30 -2
- package/dist/esm/billing/product-definition.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product-definition.shared.schemas.js +35 -0
- package/dist/esm/billing/product-definition.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +6 -3
- package/dist/esm/billing/product.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product.shared.resources-config.schemas.js +32 -2
- package/dist/esm/billing/product.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/product.shared.schemas.d.ts +8 -3
- package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product.shared.schemas.js +25 -7
- package/dist/esm/billing/product.shared.schemas.js.map +1 -1
- package/dist/esm/billing/promotions.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/promotions.shared.resources-config.schemas.js +41 -11
- package/dist/esm/billing/promotions.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/promotions.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/public-pricing-catalog.shared.atoms.d.ts +135 -0
- package/dist/esm/billing/public-pricing-catalog.shared.atoms.d.ts.map +1 -0
- package/dist/esm/billing/public-pricing-catalog.shared.atoms.js +112 -0
- package/dist/esm/billing/public-pricing-catalog.shared.atoms.js.map +1 -0
- package/dist/esm/billing/public-pricing-catalog.shared.d.ts +30 -0
- package/dist/esm/billing/public-pricing-catalog.shared.d.ts.map +1 -0
- package/dist/esm/billing/public-pricing-catalog.shared.js +53 -0
- package/dist/esm/billing/public-pricing-catalog.shared.js.map +1 -0
- package/dist/esm/billing/referral-reward.shared.schemas.d.ts +51 -0
- package/dist/esm/billing/referral-reward.shared.schemas.d.ts.map +1 -0
- package/dist/esm/billing/referral-reward.shared.schemas.js +92 -0
- package/dist/esm/billing/referral-reward.shared.schemas.js.map +1 -0
- package/dist/esm/billing/referral.shared.resources-config.schemas.d.ts +54 -33
- package/dist/esm/billing/referral.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/referral.shared.resources-config.schemas.js +76 -2
- package/dist/esm/billing/referral.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/referral.shared.schemas.d.ts +23 -37
- package/dist/esm/billing/referral.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/referral.shared.schemas.js +27 -44
- package/dist/esm/billing/referral.shared.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +32 -2
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js +95 -16
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.schemas.d.ts +81 -5
- package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.schemas.js +88 -25
- package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
- package/dist/esm/billing/usage-flush-evidence.shared.schemas.d.ts +49 -0
- package/dist/esm/billing/usage-flush-evidence.shared.schemas.d.ts.map +1 -0
- package/dist/esm/billing/usage-flush-evidence.shared.schemas.js +48 -0
- package/dist/esm/billing/usage-flush-evidence.shared.schemas.js.map +1 -0
- package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.d.ts +1 -0
- package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.js +8 -5
- package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
- package/dist/esm/charts/aggregation-query.shared.schemas.d.ts.map +1 -1
- package/dist/esm/charts/chart-definition-builder.shared.d.ts.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +150 -3
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js +84 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
- package/dist/esm/companion/shared-library-companion.shared.definitions.d.ts.map +1 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +28 -4
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +25 -7
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.d.ts +70 -0
- package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.js +87 -0
- package/dist/esm/compliance/audit-trails/audit-actor.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.d.ts +484 -0
- package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js +857 -0
- package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.d.ts +7 -0
- package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts +30 -4
- package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js +29 -8
- package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts +37 -6
- 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 +53 -9
- 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 +2432 -162
- 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 +2545 -124
- 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 +10 -0
- 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 +177 -7
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
- package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.d.ts +463 -0
- package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.js +526 -0
- package/dist/esm/compliance/documents/governed-document-interactions.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts +539 -15
- package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/documents/governed-documents.shared.schemas.js +402 -14
- package/dist/esm/compliance/documents/governed-documents.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.d.ts +18 -0
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.js +89 -0
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.d.ts +47 -0
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.js +73 -0
- package/dist/esm/compliance/documents/user-governed-document-acceptances.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts +23 -0
- package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.js +41 -1
- package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.d.ts +33 -0
- package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.js +30 -0
- package/dist/esm/compliance/privacy/capability-consent-purposes.shared.utils.js.map +1 -0
- package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts +6 -5
- package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/client-storage.shared.schemas.js +15 -5
- package/dist/esm/compliance/privacy/client-storage.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.d.ts +127 -0
- package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.js +94 -0
- package/dist/esm/compliance/privacy/consent-gate-vocabulary.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/consent-purposes.shared.d.ts +125 -0
- package/dist/esm/compliance/privacy/consent-purposes.shared.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/consent-purposes.shared.js +136 -0
- package/dist/esm/compliance/privacy/consent-purposes.shared.js.map +1 -0
- package/dist/esm/compliance/privacy/data-retention.shared.schemas.d.ts +0 -8
- package/dist/esm/compliance/privacy/data-retention.shared.schemas.d.ts.map +0 -1
- package/dist/esm/compliance/privacy/data-retention.shared.schemas.js.map +0 -1
- package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.d.ts +100 -0
- package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js +146 -0
- package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts +38 -0
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js +39 -0
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.d.ts +35 -0
- package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.js +82 -0
- package/dist/esm/compliance/privacy/legal-hold-subject-attribution.shared.utils.js.map +1 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.d.ts +37 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.js +223 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.schemas.d.ts +222 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.schemas.js +331 -0
- package/dist/esm/compliance/privacy/legal-holds.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts +105 -28
- package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js +107 -26
- package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/personal-data-category.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/personal-data-declaration.shared.utils.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +9 -17
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js +74 -31
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.d.ts +52 -0
- package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.js +116 -0
- package/dist/esm/compliance/privacy/provider-capability-disclosure.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.d.ts +11 -0
- package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.js +11 -0
- package/dist/esm/compliance/privacy/purpose-ref.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/retention-binding.shared.utils.d.ts +93 -0
- package/dist/esm/compliance/privacy/retention-binding.shared.utils.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/retention-binding.shared.utils.js +149 -0
- package/dist/esm/compliance/privacy/retention-binding.shared.utils.js.map +1 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.d.ts +43 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.js +106 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.d.ts +209 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.js +226 -0
- package/dist/esm/compliance/privacy/retention-enforcement-records.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.d.ts +129 -5
- package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.js +128 -4
- package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.d.ts +53 -0
- package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.js +74 -0
- package/dist/esm/compliance/privacy/retention-scope-deleted.shared.utils.js.map +1 -0
- package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.d.ts +311 -0
- package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.js +355 -0
- package/dist/esm/compliance/privacy/subject-data-recipients.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.d.ts +47 -0
- package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.js +98 -0
- package/dist/esm/compliance/privacy/subject-erasure-lane-evidence.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts +507 -35
- package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.js +513 -17
- package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/subject-export-render.shared.utils.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-export-render.shared.utils.js +26 -0
- package/dist/esm/compliance/privacy/subject-export-render.shared.utils.js.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts +9 -0
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/review-cadence.shared.schemas.d.ts +56 -0
- package/dist/esm/compliance/review-cadence.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/review-cadence.shared.schemas.js +71 -0
- package/dist/esm/compliance/review-cadence.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/risk-posture.shared.schemas.d.ts +161 -0
- package/dist/esm/compliance/risk-posture.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/risk-posture.shared.schemas.js +166 -0
- package/dist/esm/compliance/risk-posture.shared.schemas.js.map +1 -0
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +4 -3
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/analytics-value-moments.shared.schemas.js +4 -3
- package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +331 -10
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.js +289 -9
- package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +75 -3
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.js +93 -4
- package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
- package/dist/esm/config/brand-assets.shared.schemas.d.ts +5 -4
- package/dist/esm/config/brand-assets.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/brand-assets.shared.schemas.js +14 -4
- package/dist/esm/config/brand-assets.shared.schemas.js.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +532 -19
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.js +628 -28
- package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
- package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +32 -32
- package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/frontend/chart-registration-alignment.shared.d.ts.map +1 -1
- package/dist/esm/config/frontend/chart-registration-alignment.shared.js.map +1 -1
- package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +180 -77
- package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/frontend/navigation.shared.schemas.js +354 -104
- package/dist/esm/config/frontend/navigation.shared.schemas.js.map +1 -1
- package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts +90 -133
- package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/frontend/onboarding.shared.schemas.js +148 -100
- package/dist/esm/config/frontend/onboarding.shared.schemas.js.map +1 -1
- package/dist/esm/config/registration-acquisition-policy.shared.utils.d.ts.map +1 -1
- package/dist/esm/config-authoring.entry.d.ts.map +1 -1
- package/dist/esm/crdt/crdt-merge.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/data-seeding-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/errors/caught-error-description.shared.utils.d.ts +69 -0
- package/dist/esm/errors/caught-error-description.shared.utils.d.ts.map +1 -0
- package/dist/esm/errors/caught-error-description.shared.utils.js +77 -0
- package/dist/esm/errors/caught-error-description.shared.utils.js.map +1 -0
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +212 -42
- 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 +214 -41
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
- package/dist/esm/errors/errors.shared.definitions.d.ts.map +1 -1
- package/dist/esm/errors/errors.shared.definitions.js +1 -1
- package/dist/esm/errors/errors.shared.definitions.js.map +1 -1
- package/dist/esm/errors/errors.shared.schemas.d.ts +49 -41
- package/dist/esm/errors/errors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/errors/errors.shared.schemas.js +52 -62
- package/dist/esm/errors/errors.shared.schemas.js.map +1 -1
- package/dist/esm/errors/errors.shared.utils.d.ts.map +1 -1
- package/dist/esm/errors/thrown-value-description.shared.utils.d.ts +26 -0
- package/dist/esm/errors/thrown-value-description.shared.utils.d.ts.map +1 -0
- package/dist/esm/errors/thrown-value-description.shared.utils.js +66 -0
- package/dist/esm/errors/thrown-value-description.shared.utils.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-description.shared.d.ts +70 -0
- package/dist/esm/external-data/external-data-pipeline-description.shared.d.ts.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-description.shared.js +92 -0
- package/dist/esm/external-data/external-data-pipeline-description.shared.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.d.ts +154 -0
- package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.d.ts.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.js +161 -0
- package/dist/esm/external-data/external-data-pipeline-pass-mode.shared.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +1118 -95
- 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 +1166 -24
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
- package/dist/esm/external-data/external-data-provenance.shared.d.ts +71 -0
- package/dist/esm/external-data/external-data-provenance.shared.d.ts.map +1 -0
- package/dist/esm/external-data/external-data-provenance.shared.js +88 -0
- package/dist/esm/external-data/external-data-provenance.shared.js.map +1 -0
- package/dist/esm/external-data.exports.d.ts +6 -0
- package/dist/esm/external-data.exports.d.ts.map +1 -1
- package/dist/esm/external-data.exports.js +12 -0
- package/dist/esm/external-data.exports.js.map +1 -1
- package/dist/esm/external-providers/compose-provider-registry.shared.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +28 -14
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +33 -16
- 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 +5 -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 +8 -3
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
- package/dist/esm/external-providers/engine-capability-surface.shared.d.ts +77 -0
- package/dist/esm/external-providers/engine-capability-surface.shared.d.ts.map +1 -0
- package/dist/esm/external-providers/engine-capability-surface.shared.js +175 -0
- package/dist/esm/external-providers/engine-capability-surface.shared.js.map +1 -0
- package/dist/esm/external-providers/external-providers.shared.schemas.d.ts +2 -0
- package/dist/esm/external-providers/external-providers.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/external-providers.shared.schemas.js +21 -0
- package/dist/esm/external-providers/external-providers.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +281 -10
- 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 +115 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +149 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts +45 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js +14 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +242 -7
- 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 +127 -3
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts +187 -36
- package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-provider-public-config.shared.js +261 -47
- package/dist/esm/external-providers/frontend-provider-public-config.shared.js.map +1 -1
- package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.d.ts +53 -0
- package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.js +41 -0
- package/dist/esm/external-providers/model-cost-accounting-config.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.d.ts +150 -0
- package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.js +22 -0
- package/dist/esm/external-providers/provider-address-lookup-contract.shared.types.js.map +1 -0
- package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.d.ts +42 -0
- package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.js +49 -0
- package/dist/esm/external-providers/provider-augmentation-opt-ins.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.d.ts +30 -0
- package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.js +32 -0
- package/dist/esm/external-providers/provider-authentication-assurance.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-browser-operations.shared.schemas.d.ts +139 -0
- package/dist/esm/external-providers/provider-browser-operations.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js +141 -0
- package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +48 -13
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.js +44 -10
- 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 +341 -4
- 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 +270 -20
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts +6 -2
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js +6 -2
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js.map +1 -1
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +181 -6
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +132 -5
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +5 -2
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js +5 -2
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.d.ts +42 -0
- package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.js +57 -0
- package/dist/esm/external-providers/provider-package-allow-list.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts +6 -0
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js +6 -0
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.d.ts +58 -0
- package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.js +35 -0
- package/dist/esm/external-providers/provider-scope-reauthorization.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-shared-connections.shared.schemas.d.ts +115 -0
- package/dist/esm/external-providers/provider-shared-connections.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-shared-connections.shared.schemas.js +137 -0
- package/dist/esm/external-providers/provider-shared-connections.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -1
- package/dist/esm/external-providers/provider-usage-cost.shared.d.ts +73 -0
- package/dist/esm/external-providers/provider-usage-cost.shared.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-usage-cost.shared.js +171 -0
- package/dist/esm/external-providers/provider-usage-cost.shared.js.map +1 -0
- package/dist/esm/external-providers/provider-usage-pricing.example.d.ts +12 -0
- package/dist/esm/external-providers/provider-usage-pricing.example.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-usage-pricing.example.js +40 -0
- package/dist/esm/external-providers/provider-usage-pricing.example.js.map +1 -0
- package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.d.ts +68 -32
- package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.js +63 -52
- package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.js.map +1 -1
- package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts +7 -5
- package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/features/application-features.shared.resources-config.schemas.js +43 -8
- package/dist/esm/features/application-features.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/features/connected-feature.example.d.ts +64 -0
- package/dist/esm/features/connected-feature.example.d.ts.map +1 -0
- package/dist/esm/features/connected-feature.example.js +87 -0
- package/dist/esm/features/connected-feature.example.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 +2 -1
- package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
- package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
- package/dist/esm/features/feature-builders.shared.js.map +1 -1
- package/dist/esm/features/feature-definition.shared.schemas.d.ts +2 -11
- package/dist/esm/features/feature-definition.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/feature-definition.shared.schemas.js +0 -12
- package/dist/esm/features/feature-definition.shared.schemas.js.map +1 -1
- package/dist/esm/features/feature-registry.shared.d.ts.map +1 -1
- package/dist/esm/features/feature-resolution.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/scope-features.shared.schemas.d.ts +74 -7
- package/dist/esm/features/scope-features.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/scope-features.shared.schemas.js +64 -5
- package/dist/esm/features/scope-features.shared.schemas.js.map +1 -1
- package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts +6 -6
- package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/features/user-features.shared.resources-config.schemas.js +34 -52
- package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/files/file-remote-reference-link.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/file-remote-reference-link.shared.schemas.js.map +1 -1
- package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -1
- package/dist/esm/files/files.shared.resources-config.schemas.d.ts +3 -3
- package/dist/esm/files/files.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/files/files.shared.resources-config.schemas.js +3 -3
- package/dist/esm/files/files.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/files.shared.schemas.js.map +1 -1
- package/dist/esm/files/files.shared.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.d.ts +279 -140
- package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.js +130 -2
- package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts +22 -0
- package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/agent-traceability.shared.schemas.js +7 -0
- package/dist/esm/flows-actors/agent-traceability.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.d.ts +68 -0
- package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.js +276 -0
- package/dist/esm/flows-actors/agent-work-decisions.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.d.ts +468 -0
- package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.js +472 -0
- package/dist/esm/flows-actors/agent-work-decisions.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts +3 -3
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/agents.shared.schemas.js +11 -5
- package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/autonomous-agents.shared.schemas.d.ts +118 -0
- package/dist/esm/flows-actors/autonomous-agents.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/autonomous-agents.shared.schemas.js +144 -0
- package/dist/esm/flows-actors/autonomous-agents.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +13 -0
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.d.ts +45 -0
- package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.js +51 -0
- package/dist/esm/flows-actors/execution-plan-readiness.shared.utils.js.map +1 -0
- package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +173 -8
- 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 +269 -13
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts +2 -2
- package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +51 -8
- 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 +51 -11
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.d.ts +0 -200
- package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.js +25 -54
- package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts +45 -9
- package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.js +31 -6
- package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.js.map +1 -1
- 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 +30 -30
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts +16 -74
- 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 +1 -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 +15 -1
- package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts +627 -0
- package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/human-decision.shared.schemas.js +754 -0
- package/dist/esm/flows-actors/human-decision.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +4 -2
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.d.ts +46 -0
- package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.js +65 -0
- package/dist/esm/flows-actors/model-call-attributions.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/flows-actors/model-call-attributions.shared.schemas.d.ts +120 -0
- package/dist/esm/flows-actors/model-call-attributions.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/model-call-attributions.shared.schemas.js +165 -0
- package/dist/esm/flows-actors/model-call-attributions.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.d.ts +45 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.js +127 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.d.ts +83 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.js +97 -0
- package/dist/esm/flows-actors/model-cost-period-aggregates.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/model-cost-summary.shared.schemas.d.ts +136 -0
- package/dist/esm/flows-actors/model-cost-summary.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/model-cost-summary.shared.schemas.js +90 -0
- package/dist/esm/flows-actors/model-cost-summary.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/prompt-ir.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.d.ts +28 -0
- package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js +95 -0
- package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts +121 -0
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.js +194 -0
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/review-deadlines.shared.schemas.d.ts +268 -0
- package/dist/esm/flows-actors/review-deadlines.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/review-deadlines.shared.schemas.js +576 -0
- package/dist/esm/flows-actors/review-deadlines.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts +88 -81
- package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/tasks.actors.shared.schemas.js +75 -38
- package/dist/esm/flows-actors/tasks.actors.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/work-attribution.shared.schemas.d.ts +129 -0
- package/dist/esm/flows-actors/work-attribution.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/work-attribution.shared.schemas.js +141 -0
- package/dist/esm/flows-actors/work-attribution.shared.schemas.js.map +1 -0
- package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.d.ts +22 -1
- package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.d.ts.map +1 -1
- package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.js +23 -0
- package/dist/esm/frontend-definitions/frontend-notification-custom-message-ref.definitions.js.map +1 -1
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts +167 -1
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts.map +1 -1
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js +178 -0
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js.map +1 -1
- package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts +106 -24
- package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-flow.shared.schemas.js +152 -14
- package/dist/esm/guidance/guidance-flow.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.schemas.js +11 -10
- package/dist/esm/guidance/guidance-state.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.map +1 -1
- package/dist/esm/guidance/lifecycle-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts +0 -6
- package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.schemas.js +6 -25
- package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/milestone-builders.shared.d.ts +4 -2
- package/dist/esm/guidance/milestone-builders.shared.d.ts.map +1 -1
- package/dist/esm/guidance/milestone-builders.shared.js +4 -2
- package/dist/esm/guidance/milestone-builders.shared.js.map +1 -1
- package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts +66 -4
- package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/milestone-definition.shared.schemas.js +50 -0
- package/dist/esm/guidance/milestone-definition.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/progression-presentation.shared.schemas.d.ts +71 -0
- package/dist/esm/guidance/progression-presentation.shared.schemas.d.ts.map +1 -0
- package/dist/esm/guidance/progression-presentation.shared.schemas.js +72 -0
- package/dist/esm/guidance/progression-presentation.shared.schemas.js.map +1 -0
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +2 -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 +4 -0
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.js +12 -6
- package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.d.ts.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.js +2 -1
- package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.js.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +730 -441
- 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 +747 -233
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
- package/dist/esm/http-api-binding/http-api-erasure-stance.shared.d.ts +62 -0
- package/dist/esm/http-api-binding/http-api-erasure-stance.shared.d.ts.map +1 -0
- package/dist/esm/http-api-binding/http-api-erasure-stance.shared.js +66 -0
- package/dist/esm/http-api-binding/http-api-erasure-stance.shared.js.map +1 -0
- package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.d.ts +133 -0
- package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.d.ts.map +1 -0
- package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.js +191 -0
- package/dist/esm/http-api-binding/http-api-rest-write-operations.shared.schemas.js.map +1 -0
- package/dist/esm/http-api-binding/http-api-transport-dialect.shared.d.ts +138 -0
- package/dist/esm/http-api-binding/http-api-transport-dialect.shared.d.ts.map +1 -0
- package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js +139 -0
- package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js.map +1 -0
- package/dist/esm/http-api-binding/read-through-engine-anchors.shared.d.ts +38 -0
- package/dist/esm/http-api-binding/read-through-engine-anchors.shared.d.ts.map +1 -0
- package/dist/esm/http-api-binding/read-through-engine-anchors.shared.js +42 -0
- package/dist/esm/http-api-binding/read-through-engine-anchors.shared.js.map +1 -0
- package/dist/esm/i18n/application-config-vocabulary.shared.d.ts +36 -0
- package/dist/esm/i18n/application-config-vocabulary.shared.d.ts.map +1 -0
- package/dist/esm/i18n/application-config-vocabulary.shared.js +39 -0
- package/dist/esm/i18n/application-config-vocabulary.shared.js.map +1 -0
- package/dist/esm/i18n/engine-open-vocabulary-values.shared.d.ts +11 -0
- package/dist/esm/i18n/engine-open-vocabulary-values.shared.d.ts.map +1 -0
- package/dist/esm/i18n/engine-open-vocabulary-values.shared.js +14 -0
- package/dist/esm/i18n/engine-open-vocabulary-values.shared.js.map +1 -0
- package/dist/esm/i18n/engine-open-vocabulary.shared.d.ts +20 -0
- package/dist/esm/i18n/engine-open-vocabulary.shared.d.ts.map +1 -0
- package/dist/esm/i18n/engine-open-vocabulary.shared.js +21 -0
- package/dist/esm/i18n/engine-open-vocabulary.shared.js.map +1 -0
- package/dist/esm/i18n/labelling.dto.shared.schemas.d.ts.map +1 -1
- package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.d.ts +94 -0
- package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.js +206 -0
- package/dist/esm/inbound/conversation-threads.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/inbound/conversation-threads.shared.schemas.d.ts +169 -0
- package/dist/esm/inbound/conversation-threads.shared.schemas.d.ts.map +1 -0
- package/dist/esm/inbound/conversation-threads.shared.schemas.js +231 -0
- package/dist/esm/inbound/conversation-threads.shared.schemas.js.map +1 -0
- package/dist/esm/inbound/inbound-channels.shared.schemas.d.ts +195 -0
- package/dist/esm/inbound/inbound-channels.shared.schemas.d.ts.map +1 -0
- package/dist/esm/inbound/inbound-channels.shared.schemas.js +244 -0
- package/dist/esm/inbound/inbound-channels.shared.schemas.js.map +1 -0
- package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.d.ts +36 -0
- package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.js +169 -0
- package/dist/esm/inbound/inbound-delivery.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/inbound/inbound-delivery.shared.schemas.d.ts +404 -0
- package/dist/esm/inbound/inbound-delivery.shared.schemas.d.ts.map +1 -0
- package/dist/esm/inbound/inbound-delivery.shared.schemas.js +449 -0
- package/dist/esm/inbound/inbound-delivery.shared.schemas.js.map +1 -0
- package/dist/esm/inbound/inbound-endpoint-env.shared.d.ts +46 -0
- package/dist/esm/inbound/inbound-endpoint-env.shared.d.ts.map +1 -0
- package/dist/esm/inbound/inbound-endpoint-env.shared.js +57 -0
- package/dist/esm/inbound/inbound-endpoint-env.shared.js.map +1 -0
- package/dist/esm/index.d.ts +99 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +138 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +1 -0
- package/dist/esm/meta-workflows/actions.meta-workflows.shared.schemas.js.map +1 -0
- package/dist/esm/meta-workflows/catalog.meta-workflows.shared.schemas.d.ts.map +1 -0
- package/dist/esm/meta-workflows/catalog.meta-workflows.shared.schemas.js.map +1 -0
- package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.d.ts +130 -0
- package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.d.ts.map +1 -0
- package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.js +104 -0
- package/dist/esm/meta-workflows/coding-tasks.meta-workflows.shared.schemas.js.map +1 -0
- package/dist/esm/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -0
- package/dist/esm/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -0
- package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/decisions.meta-workflows.shared.schemas.d.ts +92 -0
- package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +1 -0
- package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/decisions.meta-workflows.shared.schemas.js +76 -0
- package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -0
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts +638 -0
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts.map +1 -0
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js +759 -0
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js.map +1 -0
- package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/portable-primitives.meta-workflows.shared.schemas.d.ts +15 -8
- package/dist/esm/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +1 -0
- package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/portable-primitives.meta-workflows.shared.schemas.js +15 -8
- package/dist/esm/meta-workflows/portable-primitives.meta-workflows.shared.schemas.js.map +1 -0
- package/dist/esm/meta-workflows.exports.d.ts +21 -26
- package/dist/esm/meta-workflows.exports.d.ts.map +1 -1
- package/dist/esm/meta-workflows.exports.js +21 -26
- package/dist/esm/meta-workflows.exports.js.map +1 -1
- package/dist/esm/monitoring/monitoring.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-context.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-submission.shared.enums.d.ts +16 -0
- package/dist/esm/notifications/email/email-submission.shared.enums.d.ts.map +1 -0
- package/dist/esm/notifications/email/email-submission.shared.enums.js +17 -0
- package/dist/esm/notifications/email/email-submission.shared.enums.js.map +1 -0
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +43 -1
- 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 +85 -3
- 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.map +1 -1
- package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
- package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.d.ts +131 -0
- package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.js +258 -0
- package/dist/esm/notifications/inbound-email/inbound-email.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.d.ts +448 -0
- package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.d.ts.map +1 -0
- package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.js +530 -0
- package/dist/esm/notifications/inbound-email/inbound-email.shared.schemas.js.map +1 -0
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.js +8 -4
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts +2 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.js +3 -2
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts +16 -1
- 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 +86 -15
- 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 +19 -12
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js +77 -12
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.d.ts +35 -3
- package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.js +43 -3
- package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js +12 -33
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.d.ts +85 -407
- package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.js +130 -66
- package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/application-owner-organization.shared.schemas.d.ts +145 -0
- package/dist/esm/organizations/application-owner-organization.shared.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/application-owner-organization.shared.schemas.js +146 -0
- package/dist/esm/organizations/application-owner-organization.shared.schemas.js.map +1 -0
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts +7 -5
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js +32 -9
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts +4 -1
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js +78 -28
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-members.shared.schemas.d.ts +4 -1
- package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-members.shared.schemas.js +39 -1
- package/dist/esm/organizations/organization-members.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.resources-config.schemas.d.ts.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 +9 -9
- package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +2 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.js +7 -4
- package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.resources-config.schemas.d.ts +0 -1
- package/dist/esm/organizations/organization-profile.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +8 -6
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.js +19 -12
- package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-unit-inheritance.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.js +1 -1
- package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-unit-members.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-members.shared.schemas.js +2 -1
- package/dist/esm/organizations/organization-unit-members.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing-decision.shared.d.ts +63 -1
- package/dist/esm/organizations/organization-unit-narrowing-decision.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing-decision.shared.js +106 -5
- package/dist/esm/organizations/organization-unit-narrowing-decision.shared.js.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.example.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +29 -2
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.js +36 -0
- package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
- package/dist/esm/organizations/organization-units.shared.resources-config.schemas.d.ts +2 -0
- package/dist/esm/organizations/organization-units.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js +10 -2
- package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-units.shared.schemas.d.ts +17 -5
- package/dist/esm/organizations/organization-units.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-units.shared.schemas.js +65 -5
- package/dist/esm/organizations/organization-units.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts +53 -7
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +162 -14
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organizations.shared.schemas.d.ts +23 -83
- package/dist/esm/organizations/organizations.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organizations.shared.schemas.js +87 -19
- package/dist/esm/organizations/organizations.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.d.ts +58 -0
- package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.js +188 -0
- package/dist/esm/organizations/service-provider-activity-feed.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.d.ts +122 -0
- package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.js +136 -0
- package/dist/esm/organizations/service-provider-activity-feed.shared.schemas.js.map +1 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.d.ts +36 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.js +155 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.d.ts +229 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.js +290 -0
- package/dist/esm/organizations/service-provider-capability-grants.shared.schemas.js.map +1 -0
- package/dist/esm/organizations/service-provider-client-controls.shared.schemas.d.ts +48 -0
- package/dist/esm/organizations/service-provider-client-controls.shared.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/service-provider-client-controls.shared.schemas.js +50 -0
- package/dist/esm/organizations/service-provider-client-controls.shared.schemas.js.map +1 -0
- package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.d.ts +97 -0
- package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.js +572 -0
- package/dist/esm/organizations/service-provider-relationships.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/organizations/service-provider-relationships.shared.schemas.d.ts +590 -0
- package/dist/esm/organizations/service-provider-relationships.shared.schemas.d.ts.map +1 -0
- package/dist/esm/organizations/service-provider-relationships.shared.schemas.js +869 -0
- package/dist/esm/organizations/service-provider-relationships.shared.schemas.js.map +1 -0
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts +36 -6
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js +57 -16
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js.map +1 -1
- package/dist/esm/provider-registration-runtime.exports.d.ts +1 -1
- package/dist/esm/provider-registration-runtime.exports.d.ts.map +1 -1
- package/dist/esm/provider-registration-runtime.exports.js +1 -1
- package/dist/esm/provider-registration-runtime.exports.js.map +1 -1
- package/dist/esm/public-runtime/index.d.ts +65 -17
- package/dist/esm/public-runtime/index.d.ts.map +1 -1
- package/dist/esm/public-runtime/index.js +65 -17
- package/dist/esm/public-runtime/index.js.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +7 -8
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js +30 -6
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.d.ts +416 -2
- package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.js +327 -11
- package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
- package/dist/esm/queue/jobs.shared.utils.d.ts +6 -4
- package/dist/esm/queue/jobs.shared.utils.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.utils.js +5 -4
- package/dist/esm/queue/jobs.shared.utils.js.map +1 -1
- package/dist/esm/queue/queues.shared.schemas.d.ts +20 -8
- package/dist/esm/queue/queues.shared.schemas.d.ts.map +1 -1
- package/dist/esm/queue/queues.shared.schemas.js +23 -18
- package/dist/esm/queue/queues.shared.schemas.js.map +1 -1
- package/dist/esm/queue/queues.shared.utils.d.ts +4 -2
- package/dist/esm/queue/queues.shared.utils.d.ts.map +1 -1
- package/dist/esm/queue/queues.shared.utils.js +4 -2
- package/dist/esm/queue/queues.shared.utils.js.map +1 -1
- package/dist/esm/rag/rag-retrieval-health.shared.d.ts +27 -0
- package/dist/esm/rag/rag-retrieval-health.shared.d.ts.map +1 -0
- package/dist/esm/rag/rag-retrieval-health.shared.js +29 -0
- package/dist/esm/rag/rag-retrieval-health.shared.js.map +1 -0
- package/dist/esm/requests/header-keys.shared.d.ts +12 -0
- package/dist/esm/requests/header-keys.shared.d.ts.map +1 -1
- package/dist/esm/requests/header-keys.shared.js +14 -0
- package/dist/esm/requests/header-keys.shared.js.map +1 -1
- package/dist/esm/requests/idempotency-key.shared.d.ts +76 -0
- package/dist/esm/requests/idempotency-key.shared.d.ts.map +1 -0
- package/dist/esm/requests/idempotency-key.shared.js +112 -0
- package/dist/esm/requests/idempotency-key.shared.js.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-documentation.js +365 -25
- package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts +138 -23
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.js +166 -0
- package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.d.ts +267 -26
- package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.js +310 -23
- package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
- package/dist/esm/resources/child-operations.shared.schemas.d.ts +56 -5
- package/dist/esm/resources/child-operations.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/child-operations.shared.schemas.js +97 -5
- package/dist/esm/resources/child-operations.shared.schemas.js.map +1 -1
- package/dist/esm/resources/context-policy.shared.schemas.d.ts +20 -0
- package/dist/esm/resources/context-policy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/context-policy.shared.schemas.js +3 -0
- package/dist/esm/resources/context-policy.shared.schemas.js.map +1 -1
- package/dist/esm/resources/embedded-resource-mark.shared.utils.d.ts +21 -0
- package/dist/esm/resources/embedded-resource-mark.shared.utils.d.ts.map +1 -0
- package/dist/esm/resources/embedded-resource-mark.shared.utils.js +22 -0
- package/dist/esm/resources/embedded-resource-mark.shared.utils.js.map +1 -0
- package/dist/esm/resources/relationship-display.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.js +1296 -47
- package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.d.ts +866 -92
- package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.js +460 -33
- 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 +730 -81
- 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.map +1 -1
- package/dist/esm/resources/resources-serialization.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.d.ts +64 -0
- package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.js +120 -0
- package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.d.ts +258 -27
- package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.js +233 -29
- package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
- package/dist/esm/resources/resources.shared.utils.d.ts +18 -9
- package/dist/esm/resources/resources.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.utils.js +54 -14
- package/dist/esm/resources/resources.shared.utils.js.map +1 -1
- package/dist/esm/resources/utils/collection-export.shared.utils.d.ts +2 -2
- package/dist/esm/resources/utils/collection-export.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/collection-export.shared.utils.js +4 -2
- package/dist/esm/resources/utils/collection-export.shared.utils.js.map +1 -1
- package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts +44 -12
- package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts.map +1 -1
- package/dist/esm/resources/utils/composition-cascade-deletability.validation.js +46 -23
- package/dist/esm/resources/utils/composition-cascade-deletability.validation.js.map +1 -1
- package/dist/esm/resources/utils/composition-seedability.validation.d.ts.map +1 -1
- package/dist/esm/resources/utils/context-addressed-composition-singleton.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.d.ts +61 -0
- package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.d.ts.map +1 -0
- package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.js +79 -0
- package/dist/esm/resources/utils/dependent-lifecycle-classification.validation.js.map +1 -0
- package/dist/esm/resources/utils/duplicate-relationship-registration.validation.d.ts.map +1 -1
- package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -1
- package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.d.ts +103 -0
- package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.d.ts.map +1 -0
- package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.js +275 -0
- package/dist/esm/resources/utils/http-api-write-declaration.shared.utils.js.map +1 -0
- package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.d.ts +60 -0
- package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.d.ts.map +1 -0
- package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.js +80 -0
- package/dist/esm/resources/utils/initiator-stamped-field-satisfiability.validation.js.map +1 -0
- package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.d.ts +51 -0
- package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.d.ts.map +1 -0
- package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.js +28 -0
- package/dist/esm/resources/utils/no-subject-data-stance-coherence.shared.utils.js.map +1 -0
- package/dist/esm/resources/utils/persistence-adapter-discrimination.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/populated-file-fields.shared.utils.d.ts +21 -0
- package/dist/esm/resources/utils/populated-file-fields.shared.utils.d.ts.map +1 -0
- package/dist/esm/resources/utils/populated-file-fields.shared.utils.js +170 -0
- package/dist/esm/resources/utils/populated-file-fields.shared.utils.js.map +1 -0
- package/dist/esm/resources/utils/repository-dto-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.d.ts +2 -0
- package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.d.ts.map +1 -0
- package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.js +33 -0
- package/dist/esm/resources/utils/request-schema-field-carriage.shared.utils.js.map +1 -0
- package/dist/esm/resources/utils/required-fk-fillability.validation.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-operation-type-guards.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.factory.d.ts +15 -0
- package/dist/esm/resources/utils/resource-polymorphism.factory.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.factory.js +6 -1
- package/dist/esm/resources/utils/resource-polymorphism.factory.js.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.relationships.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.schemas.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.schemas.js +30 -4
- package/dist/esm/resources/utils/resource-polymorphism.schemas.js.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-subtree.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-context-needs.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-naming.utils.d.ts +15 -0
- package/dist/esm/resources/utils/resources-config-naming.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-naming.utils.js +56 -11
- package/dist/esm/resources/utils/resources-config-naming.utils.js.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts +97 -1
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js +402 -60
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.path.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts +34 -0
- package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.js +45 -1
- package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.js.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-serialization.utils.d.ts +19 -2
- package/dist/esm/resources/utils/resources-serialization.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-serialization.utils.js +4 -0
- package/dist/esm/resources/utils/resources-serialization.utils.js.map +1 -1
- package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
- package/dist/esm/resources/utils/schema-family-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/schema-type-inference.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/schema-type-utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/schema-variant-resolver.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts +29 -0
- package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js +45 -9
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
- package/dist/esm/resources/utils/templatable-file-fields.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/templatable-file-fields.shared.utils.js +49 -11
- package/dist/esm/resources/utils/templatable-file-fields.shared.utils.js.map +1 -1
- package/dist/esm/resources/work-unit.shared.schemas.d.ts +20 -0
- package/dist/esm/resources/work-unit.shared.schemas.d.ts.map +1 -0
- package/dist/esm/resources/work-unit.shared.schemas.js +19 -0
- package/dist/esm/resources/work-unit.shared.schemas.js.map +1 -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/runtime/execution-context.shared.schemas.d.ts +48 -1
- package/dist/esm/runtime/execution-context.shared.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/execution-context.shared.schemas.js +101 -9
- package/dist/esm/runtime/execution-context.shared.schemas.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 +41 -21
- 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 +65 -49
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys.shared.schemas.d.ts +26 -0
- package/dist/esm/security/api-keys/api-keys.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.shared.schemas.js +39 -5
- package/dist/esm/security/api-keys/api-keys.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/anonymous-session/anonymous-session.shared.contract.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +133 -19
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +166 -6
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +324 -9
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.js +411 -8
- package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.utils.d.ts +87 -4
- package/dist/esm/security/authentications/authentication.shared.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.utils.js +95 -6
- package/dist/esm/security/authentications/authentication.shared.utils.js.map +1 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts +23 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.js +23 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts +7 -1
- package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.js +7 -1
- package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/password-blocklist.shared.utils.d.ts +74 -0
- package/dist/esm/security/authentications/password-blocklist.shared.utils.d.ts.map +1 -0
- package/dist/esm/security/authentications/password-blocklist.shared.utils.js +122 -0
- package/dist/esm/security/authentications/password-blocklist.shared.utils.js.map +1 -0
- package/dist/esm/security/authentications/password-reset.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +88 -2
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js +149 -2
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.d.ts +57 -11
- package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.js +46 -13
- package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.d.ts +11 -0
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.js +34 -10
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +16 -2
- 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 +36 -6
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.js +18 -12
- package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.d.ts +2 -0
- package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.js +9 -0
- package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.d.ts +169 -0
- package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.js +162 -0
- package/dist/esm/security/authentications/service-provider-client-authentication.shared.schemas.js.map +1 -0
- package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.js +14 -9
- package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.d.ts +27 -0
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.js +109 -0
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.d.ts +66 -0
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.js +107 -0
- package/dist/esm/security/authentications/siem/siem-delivery-outbox.shared.schemas.js.map +1 -0
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -1
- package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts +19 -0
- package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.js +50 -13
- package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts +18 -6
- package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.js +139 -10
- package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +26 -0
- 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 +63 -33
- 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 +0 -40
- 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 +127 -50
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.d.ts +26 -7
- package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.js +98 -38
- package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +6 -26
- 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 +153 -70
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts +13 -5
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js +12 -4
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts +4 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js +9 -1
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts +44 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js +52 -0
- package/dist/esm/security/authorizations/application-access-grants.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 +7 -7
- 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.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.defaults.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.defaults.js +62 -0
- package/dist/esm/security/authorizations/roles.shared.defaults.js.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +91 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.js +109 -0
- package/dist/esm/security/authorizations/roles.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.utils.js +2 -0
- package/dist/esm/security/authorizations/roles.shared.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.d.ts +86 -0
- package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.js +40 -0
- package/dist/esm/security/connected-accounts/provider-connection-listing.shared.schemas.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +6 -2
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js +2 -1
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +7 -3
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +15 -43
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +242 -23
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +310 -62
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -1
- package/dist/esm/security/credential-rotation-grace.shared.utils.d.ts +69 -0
- package/dist/esm/security/credential-rotation-grace.shared.utils.d.ts.map +1 -0
- package/dist/esm/security/credential-rotation-grace.shared.utils.js +77 -0
- package/dist/esm/security/credential-rotation-grace.shared.utils.js.map +1 -0
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +6 -3
- 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 +102 -12
- 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 +8 -3
- 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 +194 -17
- 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 +1 -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 +25 -4
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-resource-server.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/outbound-target-control.shared.schemas.d.ts +73 -0
- package/dist/esm/security/outbound-target-control.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/outbound-target-control.shared.schemas.js +75 -0
- package/dist/esm/security/outbound-target-control.shared.schemas.js.map +1 -0
- package/dist/esm/security/submission-challenge/submission-challenge.shared.d.ts +143 -0
- package/dist/esm/security/submission-challenge/submission-challenge.shared.d.ts.map +1 -0
- package/dist/esm/security/submission-challenge/submission-challenge.shared.js +123 -0
- package/dist/esm/security/submission-challenge/submission-challenge.shared.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.d.ts +384 -0
- package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.js +327 -0
- package/dist/esm/systems-of-record/system-of-record-actions.shared.schemas.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.d.ts +159 -0
- package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.js +164 -0
- package/dist/esm/systems-of-record/system-of-record-credential-kind.shared.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.d.ts +322 -0
- package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js +229 -0
- package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-env.shared.d.ts +79 -0
- package/dist/esm/systems-of-record/system-of-record-env.shared.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-env.shared.js +116 -0
- package/dist/esm/systems-of-record/system-of-record-env.shared.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts +403 -0
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js +430 -0
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts +788 -0
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js +985 -0
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.d.ts +31 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js +233 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.d.ts +127 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.d.ts.map +1 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.js +204 -0
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.schemas.js.map +1 -0
- package/dist/esm/testing/resource-config-builders.d.ts.map +1 -1
- package/dist/esm/testing/resource-config-builders.js +10 -4
- package/dist/esm/testing/resource-config-builders.js.map +1 -1
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts +2 -1
- package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.js +2 -1
- package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.js.map +1 -1
- package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts +141 -24
- package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/anonymous-users.shared.resources-config.schemas.js +264 -0
- package/dist/esm/users/anonymous-users.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/anonymous-users.shared.schema.d.ts +5 -3
- package/dist/esm/users/anonymous-users.shared.schema.d.ts.map +1 -1
- package/dist/esm/users/anonymous-users.shared.schema.js +18 -1
- package/dist/esm/users/anonymous-users.shared.schema.js.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts +2 -1
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js +29 -0
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.schemas.d.ts +2 -1
- package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-consent-decision.shared.utils.d.ts +127 -0
- package/dist/esm/users/user-consent-decision.shared.utils.d.ts.map +1 -0
- package/dist/esm/users/user-consent-decision.shared.utils.js +189 -0
- package/dist/esm/users/user-consent-decision.shared.utils.js.map +1 -0
- package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-identity-links.shared.schemas.d.ts +1 -0
- package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-identity-links.shared.schemas.js +30 -0
- package/dist/esm/users/user-identity-links.shared.schemas.js.map +1 -1
- package/dist/esm/users/user-preferences-reset.shared.utils.d.ts +6 -6
- package/dist/esm/users/user-preferences-reset.shared.utils.d.ts.map +1 -1
- package/dist/esm/users/user-preferences-reset.shared.utils.js +8 -8
- package/dist/esm/users/user-preferences-reset.shared.utils.js.map +1 -1
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +71 -29
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.js +99 -0
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.js +25 -9
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -7
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js +12 -1
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts +1 -0
- 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 +3 -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 +1 -0
- package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.js +84 -22
- package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.schemas.d.ts +23 -18
- package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.schemas.js +117 -27
- package/dist/esm/users/users.shared.schemas.js.map +1 -1
- package/package.json +14 -35
- package/dist/esm/compliance/privacy/data-retention.shared.schemas.js +0 -7
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.d.ts +0 -19
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.d.ts.map +0 -1
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.js +0 -35
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint-agent-personas.shared.enums.js.map +0 -1
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts +0 -213
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.js +0 -287
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts +0 -236
- package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.js +0 -212
- package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -17
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +0 -31
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/catalog.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/catalog.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.d.ts +0 -28
- package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.js +0 -28
- package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +0 -100
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +0 -232
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.d.ts +0 -29
- package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.js +0 -58
- package/dist/esm/flows-actors/meta-workflows/execution-binding-vocabularies.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts +0 -81
- package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts.map +0 -1
- package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.js +0 -82
- package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.js.map +0 -1
- package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.d.ts +0 -2
- package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.d.ts.map +0 -1
- package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.js +0 -1
- package/dist/esm/flows-actors/utils/flow-actors.context-builder.apps-context.shared.utils.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/actions.meta-workflows.shared.schemas.d.ts +0 -0
- /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/actions.meta-workflows.shared.schemas.js +0 -0
- /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/catalog.meta-workflows.shared.schemas.d.ts +0 -0
- /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/catalog.meta-workflows.shared.schemas.js +0 -0
- /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/context-selection.meta-workflows.shared.schemas.d.ts +0 -0
- /package/dist/esm/{flows-actors/meta-workflows → meta-workflows}/context-selection.meta-workflows.shared.schemas.js +0 -0
|
@@ -1,12 +1,42 @@
|
|
|
1
|
+
import { AuditApplicationReadAccess } from './audit-trail-config.shared.schemas.js';
|
|
2
|
+
import { EngineOpenVocabulary } from '../../i18n/engine-open-vocabulary.shared.js';
|
|
3
|
+
import { ApplicationConfigVocabulary } from '../../i18n/application-config-vocabulary.shared.js';
|
|
4
|
+
import { AuditActorKind, AuditAgentActorSchema } from './audit-actor.shared.schemas.js';
|
|
5
|
+
import { HumanDecision_Act, HumanDecision_Outcome, HumanDecision_Plane, HumanDecision_RefusalReason, HumanDecision_RequesterKind, HumanDecision_RouteChangeTrigger, HumanDecision_RouteKind, ReviewClockBasis, ReviewDeadlineKind, ReviewDeadlineOutcome, ReviewDeadlineStage, ReviewEscalationActionKind, } from '../../flows-actors/human-decision.shared.schemas.js';
|
|
6
|
+
import { AutonomousPrincipalSource, AutonomousTurnRefusalReason, AutonomousTurnTrigger } from '../../flows-actors/autonomous-agents.shared.schemas.js';
|
|
7
|
+
import { EvaluationDatasetExportRefusalReason } from '../../flows-actors/agent-work-decisions.shared.schemas.js';
|
|
8
|
+
import { WorkUnitRefSchema } from '../../resources/work-unit.shared.schemas.js';
|
|
9
|
+
import { ExternalAssuranceAssessmentSchema } from '../../external-providers/provider-authentication-assurance.shared.schemas.js';
|
|
1
10
|
import { z } from "zod";
|
|
11
|
+
import '@wildo-ai/zod-decorators';
|
|
12
|
+
import { AuthMethod } from "../../security/authentications/authentication.shared.schemas.js";
|
|
13
|
+
import { FactorSatisfactionSource } from "../../security/authentications/service-provider-client-authentication.shared.schemas.js";
|
|
14
|
+
import { ServiceProviderActivityFeedDisclosure, ServiceProviderMfaTrust } from "../../organizations/service-provider-client-controls.shared.schemas.js";
|
|
15
|
+
import { ServiceProviderActivityFeedStatus } from "../../organizations/service-provider-activity-feed.shared.schemas.js";
|
|
16
|
+
import { ExternalProvider_Connection_DelegationMode, RateBudgetCounting } from "@wildo-ai/external-connectors-models";
|
|
17
|
+
import { GovernedDocumentInteractionSchema } from "../documents/governed-document-interactions.shared.schemas.js";
|
|
2
18
|
import { PersonalDataCategory } from "../privacy/personal-data-category.shared.schemas.js";
|
|
19
|
+
import { ExternalDataConflictDecisionSource, ExternalDataConflictWinner, ExternalDataOutboundUnknownAnswer, ExternalDataPipelinePassMode, ExternalDataPipelineResetMode } from '../../external-data/external-data-pipeline-pass-mode.shared.js';
|
|
20
|
+
import { LegalHoldGround, LegalHoldPlacementTier, LegalHoldScopeKind } from "../privacy/legal-holds.shared.schemas.js";
|
|
21
|
+
import { DataRetentionClass } from "../privacy/retention-schedule.shared.schemas.js";
|
|
22
|
+
import { RetentionEnforcementOutcome } from "../privacy/retention-enforcement-records.shared.schemas.js";
|
|
23
|
+
import { SubjectErasureExternalEffectStatus } from "../privacy/subject-erasure.shared.schemas.js";
|
|
24
|
+
import { SubjectDataRecipientObligation, SubjectDataRecipientReach, SubjectDataRecipientRelevance, SubjectDataRecipientsStatementStatus, } from "../privacy/subject-data-recipients.shared.schemas.js";
|
|
25
|
+
import { RegistrationAcquisitionChannel } from "../../config/entity-identity-config.shared.schemas.js";
|
|
3
26
|
import { ResourceOperationRiskLevel, ResourceOperationVariantType } from "../../resources/resources.shared.schemas.js";
|
|
4
27
|
import { CoreResourceOperation } from "../../resources/resources.shared.core.definitions.js";
|
|
5
28
|
import { PlatformAccessGrantAutoApprovalReason, PlatformAccessGrantLifecycleTransition, PlatformAccessGrantScope, PlatformAccessGrantStatus, } from "../../security/authorizations/platform-access-grants.shared.schemas.js";
|
|
6
|
-
import {
|
|
29
|
+
import { SystemOfRecordPartitionAssignmentTransition } from "../../systems-of-record/system-of-record-partition-assignments.shared.schemas.js";
|
|
30
|
+
import { DelegatedAdministrativeCapability, ServiceProviderCapabilityGrantEndCause } from "../../organizations/service-provider-capability-grants.shared.schemas.js";
|
|
31
|
+
import { ServiceProviderExpertAdmissionPolicy, ServiceProviderExpertApprovalDenialReason, ServiceProviderRelationshipStatus, ServiceProviderRelationshipTransition, } from "../../organizations/service-provider-relationships.shared.schemas.js";
|
|
32
|
+
import { ExecutionContext_ExecutionType, ExecutionContext_MachineCredentialSchema } from "../../runtime/execution-context.shared.schemas.js";
|
|
33
|
+
import { InboundDeliveryRejectionReason, InboundDeliveryUnroutableReason, InboundResolvedScopeKind, InboundSourceKind } from "../../inbound/inbound-delivery.shared.schemas.js";
|
|
34
|
+
import { InboundBelowMinimumDisposition, InboundChannelKind, InboundSenderAssurance, ReplyTokenDowngradeReason } from "../../inbound/inbound-channels.shared.schemas.js";
|
|
35
|
+
import { ReplyTokenRevocationReason } from "../../inbound/conversation-threads.shared.schemas.js";
|
|
36
|
+
import { InboundEmailLimit, InboundEmailWithheldReason, OrganizationEmailDomainRemovalTrigger, OrganizationEmailDomainStatus, OrganizationEmailDomainSuspensionReason, } from "../../notifications/inbound-email/inbound-email.shared.schemas.js";
|
|
7
37
|
import { AuthScopeType, SsoConnectionType, } from "../../security/authentications/authentication.shared.schemas.js";
|
|
8
38
|
import { WebhookEndpointProbeOutcome } from "../../notifications/m2m/webhook-config.shared.schemas.js";
|
|
9
|
-
import { ProviderCredentialDeletionReason, ProviderCredentialResolutionSource, } from "../../security/connected-accounts/provider-credentials.shared.schemas.js";
|
|
39
|
+
import { ProviderCredentialDeletionReason, ProviderOAuth2RevocationOutcomeValues, ProviderCredentialResolutionSource, } from "../../security/connected-accounts/provider-credentials.shared.schemas.js";
|
|
10
40
|
export var CoreAuditableEventType;
|
|
11
41
|
(function (CoreAuditableEventType) {
|
|
12
42
|
// Authentication Events
|
|
@@ -106,6 +136,11 @@ export var CoreAuditableEventType;
|
|
|
106
136
|
CoreAuditableEventType["ORGANIZATION_CREATED"] = "organization_created";
|
|
107
137
|
// audit-event-unemitted: covered by the generic `RESOURCE_OPERATION_PERFORMED` row — see USER_CREATED.
|
|
108
138
|
CoreAuditableEventType["ORGANIZATION_UPDATED"] = "organization_updated";
|
|
139
|
+
/**
|
|
140
|
+
* The engine assigned an organization its `type`, at boot, with no actor — see
|
|
141
|
+
* {@link AuditableEvent_Organization_TypeAssignedEventDataSchema} for why this is not an `ORGANIZATION_UPDATED`.
|
|
142
|
+
*/
|
|
143
|
+
CoreAuditableEventType["ORGANIZATION_TYPE_ASSIGNED"] = "organization_type_assigned";
|
|
109
144
|
CoreAuditableEventType["ORGANIZATION_DELETED"] = "organization_deleted";
|
|
110
145
|
/** The tenant was MARKED for deletion (soft-delete). Its access dies here; its data dies at the purge. */
|
|
111
146
|
CoreAuditableEventType["ORGANIZATION_DELETION_REQUESTED"] = "organization_deletion_requested";
|
|
@@ -168,11 +203,47 @@ export var CoreAuditableEventType;
|
|
|
168
203
|
// SSO Authentication Events
|
|
169
204
|
CoreAuditableEventType["USER_SSO_LOGIN"] = "user_sso_login";
|
|
170
205
|
CoreAuditableEventType["USER_SSO_LOGIN_FAILED"] = "user_sso_login_failed";
|
|
206
|
+
/**
|
|
207
|
+
* A tenant that mandates its identity provider refused a local sign-in or an acquisition.
|
|
208
|
+
*
|
|
209
|
+
* Emitted since #1214/#1242 by `_enforceEnterpriseSsoOnLocalFirstFactor` (every local first-factor
|
|
210
|
+
* door), by the grace-login gate's three refusal clauses, and by the registration door's
|
|
211
|
+
* `blockForSSODomains` block. `enforcementPolicy` carries WHICH clause refused, because "the tenant
|
|
212
|
+
* allows no fallback" and "this account has spent its grace logins" have different remedies and a
|
|
213
|
+
* bare `sso_required` cannot tell them apart.
|
|
214
|
+
*
|
|
215
|
+
* ONE refusal site remains unwired and is tracked on #1242: the SOCIAL-vs-enforcement refusal in
|
|
216
|
+
* `oauth2-authentication.backend.service.ts`, whose sibling provider-restriction refusal ten lines
|
|
217
|
+
* below it already emits `logOAuth2ProviderBlocked`.
|
|
218
|
+
*
|
|
219
|
+
* Deliberately NOT emitted by the fail-closed refusals that share the same error — a Redis read
|
|
220
|
+
* that failed, the outer catch. Those are infrastructure outcomes, and recording them as an
|
|
221
|
+
* enforcement decision would assert a policy judgement nobody made.
|
|
222
|
+
*/
|
|
171
223
|
CoreAuditableEventType["USER_SSO_ENFORCEMENT_BLOCKED"] = "user_sso_enforcement_blocked";
|
|
172
224
|
CoreAuditableEventType["USER_TOKEN_REFRESHED"] = "user_token_refreshed";
|
|
173
225
|
// Organization Security Management Events
|
|
226
|
+
// audit-event-unemitted: covered by the generic `RESOURCE_OPERATION_PERFORMED` row — see USER_CREATED.
|
|
227
|
+
// Every SSO-config write is HIGH or CRITICAL (UPDATE, CREATE, and the three domain-ownership verbs),
|
|
228
|
+
// and its authentication-authority blocks carry `.isAuditEvidence()`, so the row names what changed
|
|
229
|
+
// and its before/after values. Its emit method had no caller and was removed (#591).
|
|
174
230
|
CoreAuditableEventType["ORGANIZATION_SSO_CONFIGURATION_CHANGED"] = "organization_sso_configuration_changed";
|
|
231
|
+
/** A change to where an organization's security events are exported: enabled, or a field other than the destination edited. INFO. */
|
|
175
232
|
CoreAuditableEventType["ORGANIZATION_SIEM_EXPORT_CONFIGURED"] = "organization_siem_export_configured";
|
|
233
|
+
/**
|
|
234
|
+
* Security-event export was turned OFF (#986). Its own kind, at CRITICAL, because the envelope's rule
|
|
235
|
+
* is that severity is a property of the event TYPE and danger rides the row's `riskLevel` — and
|
|
236
|
+
* `riskLevel` never reaches the SIEM. As one INFO kind, "export disabled" was filtered out by any
|
|
237
|
+
* organization that raised its severity minimum, on the one destination that most needed it.
|
|
238
|
+
* Delivered to the destination that STOPPED, as its last event (`dispatchToRetiredSiemSink`).
|
|
239
|
+
*/
|
|
240
|
+
CoreAuditableEventType["ORGANIZATION_SIEM_EXPORT_DISABLED"] = "organization_siem_export_disabled";
|
|
241
|
+
/**
|
|
242
|
+
* Security-event export was re-pointed at another destination (#986). WARNING: a destination move is
|
|
243
|
+
* how an attacker who reached the tenant's administration diverts the trail. Delivered to BOTH the
|
|
244
|
+
* old and the new destination.
|
|
245
|
+
*/
|
|
246
|
+
CoreAuditableEventType["ORGANIZATION_SIEM_EXPORT_DESTINATION_CHANGED"] = "organization_siem_export_destination_changed";
|
|
176
247
|
// Organization Provider Credential Events
|
|
177
248
|
//
|
|
178
249
|
// An organization's OWN credential toward a third party. The four verbs are separate members
|
|
@@ -223,6 +294,7 @@ export var CoreAuditableEventType;
|
|
|
223
294
|
CoreAuditableEventType["ORGANIZATION_PROVIDER_CONNECTION_GRANTED"] = "organization_provider_connection_granted";
|
|
224
295
|
CoreAuditableEventType["USER_PROVIDER_CONNECTION_GRANTED"] = "user_provider_connection_granted";
|
|
225
296
|
// Application Security Configuration Events
|
|
297
|
+
// Also records the effective authored audit-viewer admission policy, with independently typed before/after evidence.
|
|
226
298
|
// The per-user-type authentication policy (`userTypes.<type>.auth` — MFA, password, and lockout
|
|
227
299
|
// requirements) is STATIC application configuration authored in code and taken into effect at
|
|
228
300
|
// backend startup. A change to it — most consequentially a WEAKENING such as turning MFA off — is
|
|
@@ -234,6 +306,12 @@ export var CoreAuditableEventType;
|
|
|
234
306
|
// assurance-control: WILDO.IDENTITY.SESSION_ASSURANCE — a change to the authentication assurance
|
|
235
307
|
// requirements (MFA / password / lockout) must be attributable and evidenced.
|
|
236
308
|
CoreAuditableEventType["APPLICATION_AUTH_POLICY_CHANGED"] = "application_auth_policy_changed";
|
|
309
|
+
// Retention Enforcement (#1636)
|
|
310
|
+
// One per retention-class sweep run, by the system: per-class totals of what the run deleted, skipped and
|
|
311
|
+
// failed on. The queryable per-resource record is `retentionEnforcementRecords`; this event exists to reach
|
|
312
|
+
// the SIEM. Its row risk is HIGH when any resource failed, LOW otherwise.
|
|
313
|
+
// assurance-control: WILDO.PRIVACY.STORAGE_LIMITATION — records evidence that declared retention was enforced.
|
|
314
|
+
CoreAuditableEventType["RETENTION_ENFORCEMENT_RECORDED"] = "retention_enforcement_recorded";
|
|
237
315
|
// Outbound M2M Webhook Events
|
|
238
316
|
// An admin firing `webhookConfig.testEndpoint` makes the platform emit a signed HTTP
|
|
239
317
|
// request to an operator-supplied URL. That is an outbound-traffic primitive reachable
|
|
@@ -242,12 +320,71 @@ export var CoreAuditableEventType;
|
|
|
242
320
|
// assurance-control: WILDO.INTEGRATION.OUTBOUND_ACTIVITY_AUDIT — outbound connection initiated from an
|
|
243
321
|
// administrative surface is attributable and monitorable.
|
|
244
322
|
CoreAuditableEventType["WEBHOOK_ENDPOINT_TEST_DISPATCHED"] = "webhook_endpoint_test_dispatched";
|
|
323
|
+
// Inbound Delivery Events (#1596)
|
|
324
|
+
// Every verified message another system sends the application leaves a trail from the wire to its
|
|
325
|
+
// outcome: refused at the door, stored, never routable, processed, failed and retried, dead, replayed.
|
|
326
|
+
// The terminal and refused transitions are the ones an operator investigates; ACCEPTED and PROCESSED
|
|
327
|
+
// make the successes countable too, so a SIEM can see a sender's volume and not only its failures.
|
|
328
|
+
// assurance-control: WILDO.SECURITY.FAIL_CLOSED — a message whose signature, timestamp, size or media
|
|
329
|
+
// type does not verify is refused whole and the refusal is recorded.
|
|
330
|
+
CoreAuditableEventType["INBOUND_DELIVERY_REJECTED"] = "inbound_delivery_rejected";
|
|
331
|
+
// assurance-control: WILDO.AUDIT.SECURITY_EVENT — a verified external message entering the system is recorded.
|
|
332
|
+
CoreAuditableEventType["INBOUND_DELIVERY_ACCEPTED"] = "inbound_delivery_accepted";
|
|
333
|
+
// assurance-control: WILDO.OPERATIONS.EXECUTION_INTEGRITY — a message that resolves to no admissible scope is
|
|
334
|
+
// recorded as never run, rather than run somewhere it does not belong.
|
|
335
|
+
CoreAuditableEventType["INBOUND_DELIVERY_UNROUTABLE"] = "inbound_delivery_unroutable";
|
|
336
|
+
CoreAuditableEventType["INBOUND_DELIVERY_PROCESSED"] = "inbound_delivery_processed";
|
|
337
|
+
CoreAuditableEventType["INBOUND_DELIVERY_FAILED"] = "inbound_delivery_failed";
|
|
338
|
+
// assurance-control: WILDO.OPERATIONS.EXECUTION_INTEGRITY — work a sender was told was received and that never
|
|
339
|
+
// completed is recorded as such, so it can be found and replayed.
|
|
340
|
+
CoreAuditableEventType["INBOUND_DELIVERY_DEAD"] = "inbound_delivery_dead";
|
|
341
|
+
// assurance-control: WILDO.AUDIT.EVIDENCE_INTEGRITY — a privileged re-run of stored input is attributable
|
|
342
|
+
// and carries its written justification.
|
|
343
|
+
CoreAuditableEventType["INBOUND_DELIVERY_REPLAYED"] = "inbound_delivery_replayed";
|
|
344
|
+
// Inbound Channel Events (#1630) — a message on a channel, and the replies that answer it.
|
|
345
|
+
// assurance-control: WILDO.SECURITY.FAIL_CLOSED — a message whose sender assurance is below the handler's
|
|
346
|
+
// minimum never reaches that handler, and what happened to it instead is recorded.
|
|
347
|
+
CoreAuditableEventType["INBOUND_DELIVERY_BELOW_ASSURANCE"] = "inbound_delivery_below_assurance";
|
|
348
|
+
// assurance-control: WILDO.INTEGRATION.OUTBOUND_ACTIVITY_AUDIT — every reply a handler sends on a thread is
|
|
349
|
+
// attributable to the delivery and thread it answered.
|
|
350
|
+
CoreAuditableEventType["INBOUND_REPLY_SENT"] = "inbound_reply_sent";
|
|
351
|
+
CoreAuditableEventType["INBOUND_REPLY_FAILED"] = "inbound_reply_failed";
|
|
352
|
+
// assurance-control: WILDO.AUDIT.SECURITY_EVENT — a reply address (a bearer secret) stopping to bind replies is recorded with why.
|
|
353
|
+
CoreAuditableEventType["INBOUND_REPLY_TOKEN_REVOKED"] = "inbound_reply_token_revoked";
|
|
354
|
+
// assurance-control: WILDO.AUDIT.SECURITY_EVENT — a live reply address presented by a sender it was not issued
|
|
355
|
+
// to, or on an unauthenticated domain, is recorded: it is what a leaked address looks like.
|
|
356
|
+
CoreAuditableEventType["INBOUND_REPLY_TOKEN_DOWNGRADED"] = "inbound_reply_token_downgraded";
|
|
357
|
+
// Receiving Email Events (#1600) — the domains an organization proves, provisions and loses, the client
|
|
358
|
+
// mailboxes a firm keeps, and the parts of a received message that were not made available.
|
|
359
|
+
// assurance-control: WILDO.DATA.TENANT_ISOLATION — a claim on a domain is recorded; nothing routes on it until ownership is proven.
|
|
360
|
+
CoreAuditableEventType["ORGANIZATION_EMAIL_DOMAIN_CLAIMED"] = "organization_email_domain_claimed";
|
|
361
|
+
// assurance-control: WILDO.DATA.TENANT_ISOLATION — the moment an organization proved it controls a domain, which decides where that domain's mail may go.
|
|
362
|
+
CoreAuditableEventType["ORGANIZATION_EMAIL_DOMAIN_OWNERSHIP_VERIFIED"] = "organization_email_domain_ownership_verified";
|
|
363
|
+
CoreAuditableEventType["ORGANIZATION_EMAIL_DOMAIN_VERIFIED"] = "organization_email_domain_verified";
|
|
364
|
+
// assurance-control: WILDO.SECURITY.FAIL_CLOSED — a domain whose ownership or records disappeared stops routing and sending, and the stop is recorded.
|
|
365
|
+
CoreAuditableEventType["ORGANIZATION_EMAIL_DOMAIN_SUSPENDED"] = "organization_email_domain_suspended";
|
|
366
|
+
CoreAuditableEventType["ORGANIZATION_EMAIL_DOMAIN_REMOVED"] = "organization_email_domain_removed";
|
|
367
|
+
// assurance-control: WILDO.DATA.TENANT_ISOLATION — a mailbox routing a firm's domain into a client organization exists only under an active relationship, and is recorded.
|
|
368
|
+
CoreAuditableEventType["CLIENT_MAILBOX_CREATED"] = "client_mailbox_created";
|
|
369
|
+
CoreAuditableEventType["CLIENT_MAILBOX_REMOVED"] = "client_mailbox_removed";
|
|
370
|
+
// assurance-control: WILDO.SECURITY.INGESTED_CONTENT_INSPECTION — an attachment not proven clean is never exposed, and withholding it is recorded.
|
|
371
|
+
CoreAuditableEventType["INBOUND_EMAIL_ATTACHMENT_WITHHELD"] = "inbound_email_attachment_withheld";
|
|
372
|
+
// assurance-control: WILDO.OPERATIONS.RESOURCE_LIMIT — a message over a declared limit is kept as an envelope only, and recorded.
|
|
373
|
+
CoreAuditableEventType["INBOUND_EMAIL_REJECTED_LIMIT"] = "inbound_email_rejected_limit";
|
|
245
374
|
// SCIM Directory Provisioning Events
|
|
246
375
|
// audit-event-unemitted: covered by the generic `RESOURCE_OPERATION_PERFORMED` row — see USER_CREATED.
|
|
247
376
|
CoreAuditableEventType["SCIM_TOKEN_CREATED"] = "scim_token_created";
|
|
377
|
+
// audit-event-unemitted: covered by the generic `RESOURCE_OPERATION_PERFORMED` row — see USER_CREATED.
|
|
378
|
+
// `revoke_token` is a HIGH operation and `isActive` carries `.isAuditEvidence()`. Its emit method had no
|
|
379
|
+
// caller and was removed (#591), so a requirement body must not demand this member.
|
|
248
380
|
CoreAuditableEventType["SCIM_TOKEN_REVOKED"] = "scim_token_revoked";
|
|
381
|
+
// audit-event-unemitted: covered by the generic row — `generate_token` is HIGH. See SCIM_TOKEN_REVOKED.
|
|
249
382
|
CoreAuditableEventType["SCIM_TOKEN_GENERATED"] = "scim_token_generated";
|
|
383
|
+
// audit-event-unemitted: covered by the generic row — `rotate_token` is HIGH. See SCIM_TOKEN_REVOKED.
|
|
250
384
|
CoreAuditableEventType["SCIM_TOKEN_ROTATED"] = "scim_token_rotated";
|
|
385
|
+
// audit-event-unemitted: covered by the generic `RESOURCE_OPERATION_PERFORMED` row — see USER_CREATED.
|
|
386
|
+
// The provisioning-config UPDATE is HIGH and `autoCreateUsers`, `autoDeactivateUsers`, `defaultRole`,
|
|
387
|
+
// `organizationUnitMapping` and `defaultUnitRole` carry `.isAuditEvidence()`. Emit method removed (#591).
|
|
251
388
|
CoreAuditableEventType["SCIM_PROVISIONING_CONFIG_UPDATED"] = "scim_provisioning_config_updated";
|
|
252
389
|
CoreAuditableEventType["SCIM_PROVISIONING_FAILED"] = "scim_provisioning_failed";
|
|
253
390
|
CoreAuditableEventType["SCIM_USER_PROVISIONED"] = "scim_user_provisioned";
|
|
@@ -329,6 +466,15 @@ export var CoreAuditableEventType;
|
|
|
329
466
|
CoreAuditableEventType["FILE_UPLOAD_GRANT_ISSUED"] = "file_upload_grant_issued";
|
|
330
467
|
CoreAuditableEventType["FILE_UPLOAD_GRANT_REDEEMED"] = "file_upload_grant_redeemed";
|
|
331
468
|
CoreAuditableEventType["FILE_UPLOAD_GRANT_REVOKED"] = "file_upload_grant_revoked";
|
|
469
|
+
/**
|
|
470
|
+
* File share links (#1567). A share is a bearer link that serves ONE file to whoever holds it, with no
|
|
471
|
+
* session at all — the widest disclosure the file plane can make, so minting one is audited like a
|
|
472
|
+
* grant. `ISSUED` carries the file, its owning record/field binding, the expiry and the use budget —
|
|
473
|
+
* never the token value. `REVOKED` is "stop sharing this file" (`DELETE /files/:fileId/shares`) and
|
|
474
|
+
* carries how many live links it ended; a revocation that ended none records nothing.
|
|
475
|
+
*/
|
|
476
|
+
CoreAuditableEventType["FILE_SHARE_LINK_ISSUED"] = "file_share_link_issued";
|
|
477
|
+
CoreAuditableEventType["FILE_SHARE_LINKS_REVOKED"] = "file_share_links_revoked";
|
|
332
478
|
// File content-inspection outcomes (#506)
|
|
333
479
|
/**
|
|
334
480
|
* A scanner concluded that an uploaded file is INFECTED, and the file was quarantined.
|
|
@@ -424,6 +570,126 @@ export var CoreAuditableEventType;
|
|
|
424
570
|
CoreAuditableEventType["RESOURCE_OPERATION_DENIED"] = "resource_operation_denied";
|
|
425
571
|
CoreAuditableEventType["CROSS_TENANT_ADMINISTRATIVE_ACCESS"] = "cross_tenant_administrative_access";
|
|
426
572
|
CoreAuditableEventType["PLATFORM_ACCESS_GRANT_LIFECYCLE"] = "platform_access_grant_lifecycle";
|
|
573
|
+
/**
|
|
574
|
+
* A legal hold was placed (#1634): from this instant every deletion path skips or refuses the held scope.
|
|
575
|
+
* HIGH — it suspends a tenant's retention schedule and its data subjects' erasures.
|
|
576
|
+
*
|
|
577
|
+
* assurance-control: WILDO.PRIVACY.STORAGE_LIMITATION — deletion suspended under a recorded legal hold.
|
|
578
|
+
*/
|
|
579
|
+
CoreAuditableEventType["LEGAL_HOLD_PLACED"] = "legal_hold_placed";
|
|
580
|
+
/**
|
|
581
|
+
* A legal hold was released (#1634): deletion of its scope resumes on the next sweep, purge or erasure.
|
|
582
|
+
*
|
|
583
|
+
* assurance-control: WILDO.PRIVACY.STORAGE_LIMITATION — deletion resumes only on a recorded release.
|
|
584
|
+
*/
|
|
585
|
+
CoreAuditableEventType["LEGAL_HOLD_RELEASED"] = "legal_hold_released";
|
|
586
|
+
/**
|
|
587
|
+
* A model-cost period aggregate was linked to the invoice that bills it (#1598). A retention-deciding act: the
|
|
588
|
+
* link is what keeps the aggregate past its tenant's deletion, for the statutory bookkeeping period.
|
|
589
|
+
*
|
|
590
|
+
* assurance-control: WILDO.PRIVACY.ERASURE_PROPAGATION — only an aggregate an invoice bills outlives its tenant.
|
|
591
|
+
*/
|
|
592
|
+
CoreAuditableEventType["MODEL_COST_AGGREGATE_INVOICE_LINKED"] = "model_cost_aggregate_invoice_linked";
|
|
593
|
+
/**
|
|
594
|
+
* An organization changed whether it keeps the CONTENT of its experts' corrections to agent work (#1599): the
|
|
595
|
+
* opt-in, its purpose, its reader role or its narrowing.
|
|
596
|
+
*
|
|
597
|
+
* assurance-control: WILDO.PRIVACY.DATA_MINIMIZATION — every change to what the tenant keeps of its client material is recorded.
|
|
598
|
+
*/
|
|
599
|
+
CoreAuditableEventType["CORRECTION_CAPTURE_SETTING_CHANGED"] = "correction_capture_setting_changed";
|
|
600
|
+
/**
|
|
601
|
+
* An organization recorded, changed or revoked its basis for exporting its experts' corrections as evaluation
|
|
602
|
+
* data (#1599).
|
|
603
|
+
*
|
|
604
|
+
* assurance-control: WILDO.PRIVACY.COLLECTION_DATA_EXPORT — the authorisation an export relies on is recorded.
|
|
605
|
+
*/
|
|
606
|
+
CoreAuditableEventType["EVALUATION_EXPORT_AUTHORIZATION_CHANGED"] = "evaluation_export_authorization_changed";
|
|
607
|
+
/** A tenant's corrections were exported as an evaluation dataset under its recorded authorisation (#1599). */
|
|
608
|
+
CoreAuditableEventType["EVALUATION_DATASET_EXPORTED"] = "evaluation_dataset_exported";
|
|
609
|
+
/**
|
|
610
|
+
* An export of a tenant's corrections was REFUSED: no ACTIVE authorisation of that organization (#1599 I7).
|
|
611
|
+
*
|
|
612
|
+
* assurance-control: WILDO.PRIVACY.COLLECTION_DATA_EXPORT — a refused export is recorded, not only prevented.
|
|
613
|
+
*/
|
|
614
|
+
CoreAuditableEventType["EVALUATION_DATASET_EXPORT_REFUSED"] = "evaluation_dataset_export_refused";
|
|
615
|
+
/**
|
|
616
|
+
* A service-provider relationship moved (#1597) — proposed, accepted, declined, suspended, resumed,
|
|
617
|
+
* scope amended, terminated, withdrawn or expired. ONE event for the relationship's whole life with a
|
|
618
|
+
* {@link ServiceProviderRelationshipTransition} field (the `platformAccessGrants` shape), written to
|
|
619
|
+
* BOTH the client's and the firm's trail so each reads the relationship's timeline in its own.
|
|
620
|
+
*/
|
|
621
|
+
CoreAuditableEventType["SERVICE_PROVIDER_RELATIONSHIP_LIFECYCLE"] = "service_provider_relationship_lifecycle";
|
|
622
|
+
/** A firm-owned OAuth client was admitted into, or removed from, a client organization (#1597, S3). */
|
|
623
|
+
CoreAuditableEventType["SERVICE_PROVIDER_MACHINE_CLIENT_ADMISSION_CHANGED"] = "service_provider_machine_client_admission_changed";
|
|
624
|
+
/** A firm assigned one of its experts to serve a client relationship (#1597). */
|
|
625
|
+
CoreAuditableEventType["SERVICE_PROVIDER_EXPERT_ASSIGNED"] = "service_provider_expert_assigned";
|
|
626
|
+
/** A firm ended an expert's assignment to a client relationship (#1597). */
|
|
627
|
+
CoreAuditableEventType["SERVICE_PROVIDER_EXPERT_UNASSIGNED"] = "service_provider_expert_unassigned";
|
|
628
|
+
/**
|
|
629
|
+
* A firm assigned an expert under a relationship whose client approves each expert, so the assignment now waits
|
|
630
|
+
* for the client's administrators (#1612). The approval is a human decision; this row carries its `decisionRef`,
|
|
631
|
+
* so it joins that decision's own REQUESTED / RESOLVED rows rather than duplicating them. Both organizations' trails.
|
|
632
|
+
*/
|
|
633
|
+
CoreAuditableEventType["SERVICE_PROVIDER_EXPERT_APPROVAL_REQUESTED"] = "service_provider_expert_approval_requested";
|
|
634
|
+
/** The client approved the expert and the expert was admitted — a provider membership now exists (#1612). Both trails. */
|
|
635
|
+
CoreAuditableEventType["SERVICE_PROVIDER_EXPERT_APPROVAL_GRANTED"] = "service_provider_expert_approval_granted";
|
|
636
|
+
/**
|
|
637
|
+
* The expert was NOT admitted (#1612): the client refused, or approved when the relationship, the expert's firm
|
|
638
|
+
* membership or the (person, client) slot no longer allowed it. `denialReason` says which. Both trails.
|
|
639
|
+
*/
|
|
640
|
+
CoreAuditableEventType["SERVICE_PROVIDER_EXPERT_APPROVAL_DENIED"] = "service_provider_expert_approval_denied";
|
|
641
|
+
/** Nobody in the client answered before the approval's lapse; nothing was created (#1612). Both trails. */
|
|
642
|
+
CoreAuditableEventType["SERVICE_PROVIDER_EXPERT_APPROVAL_LAPSED"] = "service_provider_expert_approval_lapsed";
|
|
643
|
+
/**
|
|
644
|
+
* A client lent a service firm's experts a named administrative capability, until a stated end (#1631). HIGH, CRITICAL
|
|
645
|
+
* for a security-critical capability. Written to both organizations' trails.
|
|
646
|
+
*/
|
|
647
|
+
CoreAuditableEventType["SERVICE_PROVIDER_CAPABILITY_GRANTED"] = "service_provider_capability_granted";
|
|
648
|
+
/** A client revoked a lent capability — or the relationship ended, which revokes them all (#1631). Both trails. */
|
|
649
|
+
CoreAuditableEventType["SERVICE_PROVIDER_CAPABILITY_REVOKED"] = "service_provider_capability_revoked";
|
|
650
|
+
/**
|
|
651
|
+
* A client organization changed whether it trusts the firm's own identity provider's MFA on one relationship
|
|
652
|
+
* (#1633). HIGH: turning it on lets a proof made outside this application satisfy the client's authentication
|
|
653
|
+
* policy for the firm's experts. Written to the client's trail and the firm's.
|
|
654
|
+
*/
|
|
655
|
+
CoreAuditableEventType["SERVICE_PROVIDER_MFA_TRUST_CHANGED"] = "service_provider_mfa_trust_changed";
|
|
656
|
+
/**
|
|
657
|
+
* A firm's expert satisfied a CLIENT organization's authentication policy (#1633): a factor was recorded on the
|
|
658
|
+
* session for that client, with where it came from — a step-up answered here, or the firm's trusted identity
|
|
659
|
+
* provider. The client's answer to "was this expert's work MFA-protected, and by whom?". Client trail only.
|
|
660
|
+
*/
|
|
661
|
+
CoreAuditableEventType["SERVICE_PROVIDER_CLIENT_AUTHENTICATION_SATISFIED"] = "service_provider_client_authentication_satisfied";
|
|
662
|
+
/**
|
|
663
|
+
* A firm switched its expert-activity feed on or off (#1632). The record of a worker-monitoring decision: who,
|
|
664
|
+
* when, and whether the consultation notice was acknowledged. Firm trail.
|
|
665
|
+
*/
|
|
666
|
+
CoreAuditableEventType["SERVICE_PROVIDER_ACTIVITY_FEED_DECIDED"] = "service_provider_activity_feed_decided";
|
|
667
|
+
/**
|
|
668
|
+
* A client organization changed how much a firm's activity feed may say about work done in it (#1632). Written to
|
|
669
|
+
* the client's trail and the firm's, so the firm sees why its feed went quiet.
|
|
670
|
+
*/
|
|
671
|
+
CoreAuditableEventType["SERVICE_PROVIDER_ACTIVITY_FEED_DISCLOSURE_CHANGED"] = "service_provider_activity_feed_disclosure_changed";
|
|
672
|
+
/**
|
|
673
|
+
* A remote partition of a system of record was assigned to, moved between, or removed from an
|
|
674
|
+
* organization unit.
|
|
675
|
+
*
|
|
676
|
+
* ONE event for the whole life of the edge, with a {@link SystemOfRecordPartitionAssignmentTransition}
|
|
677
|
+
* field — the `platformAccessGrants` shape rather than three event types. Three types would put the
|
|
678
|
+
* same row's timeline in three buckets a reviewer has to reassemble, and the questions an auditor
|
|
679
|
+
* actually asks ("who has been able to see the German company, and since when?") are answered by
|
|
680
|
+
* reading one bucket in order.
|
|
681
|
+
*
|
|
682
|
+
* ## Why this exists beside the automatic row
|
|
683
|
+
*
|
|
684
|
+
* All three write verbs are HIGH, which is inside `AUTOMATIC_AUDIT_RISK_FLOOR`, so
|
|
685
|
+
* `RESOURCE_OPERATION_PERFORMED` already fires for each. What that row cannot carry is the thing a
|
|
686
|
+
* reviewer needs: which unit, and — on a move — which unit it was BEFORE. A generic operation row
|
|
687
|
+
* says an assignment changed; this one says what it changed from and to.
|
|
688
|
+
*
|
|
689
|
+
* assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE — the reach of each remote partition is recorded.
|
|
690
|
+
* assurance-control: WILDO.ACCESS.PRIVILEGE_EVIDENCE — evidence of the full life of that reach.
|
|
691
|
+
*/
|
|
692
|
+
CoreAuditableEventType["SYSTEM_OF_RECORD_PARTITION_ASSIGNMENT_LIFECYCLE"] = "system_of_record_partition_assignment_lifecycle";
|
|
427
693
|
/**
|
|
428
694
|
* An operator enumerated an APPLICATION-WIDE directory — a collection read that is deliberately
|
|
429
695
|
* not confined to any one tenant.
|
|
@@ -481,6 +747,8 @@ export var CoreAuditableEventType;
|
|
|
481
747
|
// is more sensitive than a read, so it is audited as its own distinct event
|
|
482
748
|
// rather than folded into SYSTEM_CONTEXT_READ.
|
|
483
749
|
CoreAuditableEventType["SYSTEM_CONTEXT_WRITE"] = "system_context_write";
|
|
750
|
+
/** Platform owner publication of application/service configuration; safe field names, caller and outcome only. */
|
|
751
|
+
CoreAuditableEventType["PLATFORM_CONFIGURATION_PUBLICATION"] = "platform_configuration_publication";
|
|
484
752
|
// Retained-Data (Impersonalization) Access Events
|
|
485
753
|
// Emitted when a privileged SEE-THROUGH read reveals RETAINED (impersonalized-and-retained) records
|
|
486
754
|
// that the default retention hide-predicate keeps hidden. SYSTEM_CONTEXT_READ names only the RUNTIME
|
|
@@ -497,8 +765,30 @@ export var CoreAuditableEventType;
|
|
|
497
765
|
// and what was in it?". The four routed export operations this capability replaced emitted
|
|
498
766
|
// NOTHING at all, which is the gap this closes. Classified DATA_ACCESS / WARNING: an authorized
|
|
499
767
|
// but maximally-sensitive disclosure, not an anomaly.
|
|
768
|
+
// A person MET a governed document — was shown a notice, acknowledged one, accepted terms,
|
|
769
|
+
// gave or withdrew a consent — and WHICH RELEASE they met (issue #54).
|
|
770
|
+
//
|
|
771
|
+
// The identity is the point. `documentRef` + `releaseId` + `releaseVersion` names a file in a
|
|
772
|
+
// commit, so a reviewer asking "what exactly did this person accept" reads the terms as they
|
|
773
|
+
// stood rather than as they stand now. Nothing here is digest-sealed: the previous lane's
|
|
774
|
+
// interaction RECEIPTS were removed with the rest of the sealed publication machine on
|
|
775
|
+
// 2026-08-28, and `.claude/rules/one-source-of-truth.md` Rule 0 keeps none of it.
|
|
776
|
+
//
|
|
777
|
+
// Classified USER_LIFECYCLE / INFO, beside USER_REGISTERED, because it records a change in the
|
|
778
|
+
// person's relationship with the OPERATOR rather than a read of data or an access decision.
|
|
779
|
+
// INFO because recording an acceptance is routine expected activity whose whole value is that the
|
|
780
|
+
// trail can be queried years later; an alarm on it would fire on every registration. What is NOT
|
|
781
|
+
// routine rides the payload instead — `releaseApprovalState` says whether anybody had approved
|
|
782
|
+
// the document at the moment a person was bound by it.
|
|
783
|
+
//
|
|
784
|
+
// assurance-control: WILDO.PRIVACY.CONSENT_RECORD — a person's decision about a governed document is
|
|
785
|
+
// recorded against the exact release version in force at that instant, together with the notice they
|
|
786
|
+
// were given before being asked (`acceptanceMode`) — or, when the surface declared none, an advisory
|
|
787
|
+
// saying so. It does NOT claim the document was SHOWN: only `EXPLICIT_AFTER_READING` presents it, and
|
|
788
|
+
// the other two modes link it (#1382).
|
|
789
|
+
CoreAuditableEventType["GOVERNED_DOCUMENT_INTERACTION_RECORDED"] = "governed_document_interaction_recorded";
|
|
500
790
|
CoreAuditableEventType["SUBJECT_DATA_EXPORT"] = "subject_data_export";
|
|
501
|
-
// A resource LISTING was exported to a file (CSV
|
|
791
|
+
// A resource LISTING was exported to a file (CSV, JSON or PDF) by an operator. Distinct from
|
|
502
792
|
// SUBJECT_DATA_EXPORT, which answers a data subject's own right over their own data: this one is
|
|
503
793
|
// an authorized operator taking rows they can already read and carrying them OUT of the system, so
|
|
504
794
|
// the questions it must answer are "which resource, how many rows, and was it the page they were
|
|
@@ -519,6 +809,55 @@ export var CoreAuditableEventType;
|
|
|
519
809
|
// probes the services tier never sees. Classified DATA_ACCESS / INFO: routine, authorized
|
|
520
810
|
// operation — the value is the queryable trail, not an alarm.
|
|
521
811
|
CoreAuditableEventType["HTTP_API_READ_THROUGH_ACCESS"] = "http_api_read_through_access";
|
|
812
|
+
// A row was WRITTEN THROUGH an HTTP-API resource binding (#1679) — a create, update or delete sent to a
|
|
813
|
+
// system of record the platform does not own, or refused before it was sent. The outbound twin of
|
|
814
|
+
// HTTP_API_READ_THROUGH_ACCESS and deliberately not folded into it: a read brings rows IN, this pushes a
|
|
815
|
+
// change OUT, and the reviewer's question is different — "who changed which row of which external
|
|
816
|
+
// system, which FIELDS did they change, and did it land". One event per write ATTEMPT, emitted at the
|
|
817
|
+
// adapter (the only tier that witnesses every remote write, repository-direct callers included), on
|
|
818
|
+
// every outcome: applied, refused before sending, refused by the remote, UNKNOWN, and replayed from an
|
|
819
|
+
// earlier attempt under the same Idempotency-Key. Carries field NAMES, never values: the trail must
|
|
820
|
+
// never become a second copy of what was written into someone else's system.
|
|
821
|
+
//
|
|
822
|
+
// Beside RESOURCE_OPERATION_PERFORMED, not instead of it, and the two cannot contradict each other:
|
|
823
|
+
// that row records that the OPERATION completed and is emitted only after it did; this one records
|
|
824
|
+
// what happened at the REMOTE and is emitted whatever the operation's fate. An applied write whose
|
|
825
|
+
// follow-up failed therefore shows this row (APPLIED) and no operation row — which is exactly the
|
|
826
|
+
// state the WRITE_APPLIED_FOLLOW_UP_FAILED answer describes.
|
|
827
|
+
CoreAuditableEventType["HTTP_API_WRITE_THROUGH"] = "http_api_write_through";
|
|
828
|
+
// A declared ACTION of a system of record was run (#1678) — a vendor operation that is not a row write (posting an
|
|
829
|
+
// invoice, confirming an order, an OData action), sent under the instance's service identity. One row per attempt that
|
|
830
|
+
// reached the remote, or was replayed from an earlier attempt under the same Idempotency-Key: applied, refused by the
|
|
831
|
+
// remote, of unknown outcome, replayed. Not folded into HTTP_API_WRITE_THROUGH: that row names the FIELDS a row write
|
|
832
|
+
// changed, this one names an OPERATION and whether it landed, and a reviewer asks different questions of each.
|
|
833
|
+
//
|
|
834
|
+
// It is also the action's OUTBOUND record, and subject-free in the #1712 sense: the instance, the action, the remote
|
|
835
|
+
// entity, the outcome and the time. No input VALUE (only the input's field names), no payload, no subject id — the
|
|
836
|
+
// record describes the application's egress, not a person. The initiating actor rides the audit row's own `userId`,
|
|
837
|
+
// as it does on every audit row; that is attribution, not a subject.
|
|
838
|
+
CoreAuditableEventType["SYSTEM_OF_RECORD_ACTION_EXECUTED"] = "system_of_record_action_executed";
|
|
839
|
+
// A declared ACTION of a system of record was REFUSED before anything was sent (#1678) — a non-owner organization, a
|
|
840
|
+
// role the caller does not hold, a context not admitted to initiate it, a record outside the caller's partition, an
|
|
841
|
+
// invalid input, a reused or missing Idempotency-Key. Its own type rather than an outcome of the row above because it
|
|
842
|
+
// is an AUTHORIZATION decision, classified and alerted on as one; the executed row is data access. Every refusal is
|
|
843
|
+
// recorded, so a probe for records one may not see leaves a trail even though it learns nothing.
|
|
844
|
+
CoreAuditableEventType["SYSTEM_OF_RECORD_ACTION_REFUSED"] = "system_of_record_action_refused";
|
|
845
|
+
// An operator RESET a pipeline through the admin door (#1734) — discarded its in-flight full pass (cursor, checkpoint,
|
|
846
|
+
// membership journal) and, for a full resync, its incremental watermark. Its own type because it is an administrative
|
|
847
|
+
// act on how a copy of a system of record is kept, not a read or a write of the records: the next run re-reads what
|
|
848
|
+
// the reset discarded, and the row names what that was, so a reviewer can tell a deliberate resync from a pipeline that
|
|
849
|
+
// lost its place. Classified ORG_MANAGEMENT / WARNING, like a platform configuration publication.
|
|
850
|
+
CoreAuditableEventType["EXTERNAL_DATA_PIPELINE_RESET"] = "external_data_pipeline_reset";
|
|
851
|
+
// An operator ANSWERED an outbound write of unknown outcome through the admin door (#2039): it landed (and, for a
|
|
852
|
+
// create, here is the remote key of the record found) or it did not (send it again). Its own type because it is a
|
|
853
|
+
// claim about ANOTHER system that nothing in the engine can check — the answer decides whether a record is linked or
|
|
854
|
+
// sent a second time — so the record is the control. Classified ORG_MANAGEMENT / WARNING, like a pipeline reset.
|
|
855
|
+
CoreAuditableEventType["EXTERNAL_DATA_OUTBOUND_UNKNOWN_RESOLVED"] = "external_data_outbound_unknown_resolved";
|
|
856
|
+
// A BIDIRECTIONAL pipeline RESOLVED a row changed on both sides since they last agreed (#1723): the system of record's
|
|
857
|
+
// values were loaded over the local ones, or the local ones were kept to be sent over the remote ones. One side's change
|
|
858
|
+
// to the named fields is discarded, by the declared policy or an operator's choice, so the record is the control.
|
|
859
|
+
// Classified DATA_ACCESS / WARNING: data was overwritten, by design, and a reviewer reads it beside the write-through.
|
|
860
|
+
CoreAuditableEventType["EXTERNAL_DATA_CONFLICT_RESOLVED"] = "external_data_conflict_resolved";
|
|
522
861
|
// A subject erasure INVOKED the declared external-erasure operation of an HTTP_API-bound
|
|
523
862
|
// resource (ETL D6 stance 6b) — rows linked to the erased subject were DELETED in a system the
|
|
524
863
|
// platform does not own (OData canonical DELETE / Odoo `unlink` / a declared REST_JSON call).
|
|
@@ -538,6 +877,15 @@ export var CoreAuditableEventType;
|
|
|
538
877
|
// USER_LIFECYCLE / CRITICAL: one event per acknowledged resource per erasure, never a standing
|
|
539
878
|
// posture.
|
|
540
879
|
CoreAuditableEventType["HTTP_API_NON_ERASURE_ACKNOWLEDGED"] = "http_api_non_erasure_acknowledged";
|
|
880
|
+
// A subject erasure's outcome at ONE RECIPIENT of the subject's data — a provider the
|
|
881
|
+
// application's declared flows reach (#1710). One row per recipient per erasure, naming the recipient, whose
|
|
882
|
+
// account reached it, who owes the Art. 19 communication and the outcome (a registered effect's status, or the
|
|
883
|
+
// status the recipient's declared erasure stance decides: UNMEASURED when it declares none). The queryable half of
|
|
884
|
+
// the per-recipient receipt `SubjectErasureReport.recipients` carries, so an evidence collector can read per-vendor
|
|
885
|
+
// outcomes without the application persisting reports. Vendor facts only — no personal data. USER_LIFECYCLE / INFO
|
|
886
|
+
// for every outcome: severity is fixed per event type, so a reader separates the recipients whose data stayed live by
|
|
887
|
+
// the row's `status`, never by its severity.
|
|
888
|
+
CoreAuditableEventType["SUBJECT_ERASURE_RECIPIENT_OUTCOME"] = "subject_erasure_recipient_outcome";
|
|
541
889
|
// The application CALLED a declared operation on a third-party provider — one event per outbound
|
|
542
890
|
// call, on both the success and the failure path.
|
|
543
891
|
//
|
|
@@ -563,6 +911,21 @@ export var CoreAuditableEventType;
|
|
|
563
911
|
// assurance-control: WILDO.AUDIT.ATTRIBUTION — an outbound call made on a user's behalf is
|
|
564
912
|
// recorded with the real initiating user carried through whichever account it spent.
|
|
565
913
|
CoreAuditableEventType["PROVIDER_OPERATION_CALL"] = "provider_operation_call";
|
|
914
|
+
// A signed-in person's BROWSER asked for a provider operation and the door REFUSED it (#367).
|
|
915
|
+
//
|
|
916
|
+
// A sibling of `PROVIDER_OPERATION_CALL`, not a failure case of it, because nothing was called: the
|
|
917
|
+
// refusal happens before any catalogue lookup, credential read or outbound request, so the call
|
|
918
|
+
// member's required `method`, `domain` and `classification` do not exist for it — an operation the
|
|
919
|
+
// application never declared browser-reachable may not even be in the catalogue. What it records is
|
|
920
|
+
// an ACCESS DECISION, which is the other half of "record access decisions" for this door, exactly as
|
|
921
|
+
// `RESOURCE_OPERATION_DENIED` is for the resource authorizer.
|
|
922
|
+
//
|
|
923
|
+
// Classified AUTHORIZATION / WARNING for that sibling's reason: a refusal is not routine traffic, and a
|
|
924
|
+
// run of them against one operation is a person probing what a browser can make the backend do.
|
|
925
|
+
//
|
|
926
|
+
// assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT — refusals at the browser door to a
|
|
927
|
+
// third-party operation are attributable and reviewable.
|
|
928
|
+
CoreAuditableEventType["PROVIDER_OPERATION_DENIED"] = "provider_operation_denied";
|
|
566
929
|
// An AGENT reached an MCP server on somebody's behalf (#491).
|
|
567
930
|
//
|
|
568
931
|
// A sibling of `PROVIDER_OPERATION_CALL`, not a case of it, and the split is the same one that
|
|
@@ -584,36 +947,85 @@ export var CoreAuditableEventType;
|
|
|
584
947
|
// assurance-control: WILDO.AUDIT.ATTRIBUTION — an agent's outbound tool call is recorded with the
|
|
585
948
|
// real initiating user carried through whichever account it spent.
|
|
586
949
|
CoreAuditableEventType["MCP_TOOL_CALL"] = "mcp_tool_call";
|
|
587
|
-
//
|
|
950
|
+
// The application's BACKEND called a vendor to discharge an engine CAPABILITY (#1712): sent a
|
|
951
|
+
// transactional email or an SMS, called the billing provider, moved bytes to or from a storage vendor.
|
|
588
952
|
//
|
|
589
|
-
//
|
|
590
|
-
//
|
|
591
|
-
//
|
|
592
|
-
//
|
|
593
|
-
//
|
|
953
|
+
// A sibling of `PROVIDER_OPERATION_CALL`, not a case of it, for the reason `MCP_TOOL_CALL` is one: a
|
|
954
|
+
// capability call is not a CATALOGUE operation. It has no `operationId`, no catalogue `domain` and no
|
|
955
|
+
// declared READ/WRITE classification; its act is named by the capability and a closed action instead.
|
|
956
|
+
// Folding them would make "which catalogue operations ran" answer with emails. The ATTRIBUTION fields
|
|
957
|
+
// are identical, so "what did this application send to that vendor" is one shape of query over all three.
|
|
594
958
|
//
|
|
595
|
-
//
|
|
596
|
-
//
|
|
597
|
-
//
|
|
598
|
-
//
|
|
599
|
-
//
|
|
959
|
+
// NO SUBJECT by construction, and that is a decision rather than an omission. #412 declined any
|
|
960
|
+
// persisted record of a sent email — even metadata-only, recipient and template included — because it
|
|
961
|
+
// would be a new personal-data store owing export, erasure and a retention class. So no field here
|
|
962
|
+
// names a recipient, a phone number, a file, a customer or a payload: the row describes the
|
|
963
|
+
// application's EGRESS, not the person the data is about. It still carries ATTRIBUTION like every audit
|
|
964
|
+
// row — the initiating actor where the egress knows one, and `connectionOwnerId`, whose account was
|
|
965
|
+
// spent (a person, for a file in their Drive) — which is why it exports at SUBJECT_DETAIL like its
|
|
966
|
+
// siblings. Email, SMS and billing are reached without an execution context and carry no actor.
|
|
600
967
|
//
|
|
601
|
-
//
|
|
602
|
-
//
|
|
603
|
-
// to the per-org SIEM and to an immutable ledger that cannot be scrubbed, so copying arbitrary
|
|
604
|
-
// tool arguments here would manufacture an unerasable duplicate of whatever a person typed, in
|
|
605
|
-
// direct conflict with GDPR Art. 17. The two digests prove executed ≠ proposed; the key names say
|
|
606
|
-
// WHICH arguments a person authored. Neither can leak content.
|
|
968
|
+
// Classified DATA_ACCESS / INFO for its siblings' reason: routine, authorized activity whose value is
|
|
969
|
+
// the queryable trail rather than an alarm.
|
|
607
970
|
//
|
|
608
|
-
//
|
|
609
|
-
//
|
|
610
|
-
|
|
611
|
-
//
|
|
612
|
-
//
|
|
613
|
-
//
|
|
614
|
-
//
|
|
615
|
-
//
|
|
616
|
-
|
|
971
|
+
// assurance-control: WILDO.INTEGRATION.OUTBOUND_ACTIVITY_AUDIT — every physical call a capability
|
|
972
|
+
// makes to a vendor is recorded with its provider, capability and outcome.
|
|
973
|
+
CoreAuditableEventType["PROVIDER_CAPABILITY_CALL"] = "provider_capability_call";
|
|
974
|
+
// ── Human decisions on an agent's work (#1594) ──
|
|
975
|
+
// One family for BOTH planes — the conversational tool approval and the actor-system suspension —
|
|
976
|
+
// keyed by one `decisionRef`. Every row carries names and ids only: no argument values and no
|
|
977
|
+
// digests (#1595 D5), because a trail that holds what an agent was about to write cannot be scrubbed.
|
|
978
|
+
// All AUTHORIZATION: each records who may, or did, authorize an agent's action.
|
|
979
|
+
/** A decision was raised and is waiting. Actor: the requester's principal, with the agent. */
|
|
980
|
+
CoreAuditableEventType["HUMAN_DECISION_REQUESTED"] = "human_decision_requested";
|
|
981
|
+
/**
|
|
982
|
+
* A decision ended — answered, lapsed, withdrawn, or its requester's authority lapsed. Exactly one
|
|
983
|
+
* per `decisionRef`, written only by whoever won the compare-and-swap that released the pause.
|
|
984
|
+
* `outcome` says which; a SIEM that wants modified approvals filters on it.
|
|
985
|
+
*
|
|
986
|
+
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT — every human decision on an agent's action is recorded once, with its decider and outcome.
|
|
987
|
+
*/
|
|
988
|
+
CoreAuditableEventType["HUMAN_DECISION_RESOLVED"] = "human_decision_resolved";
|
|
989
|
+
/** A decision was moved to another person (an answerer's handover, or a supervisor's takeover). */
|
|
990
|
+
CoreAuditableEventType["HUMAN_DECISION_REASSIGNED"] = "human_decision_reassigned";
|
|
991
|
+
/** A decision was escalated — moved up, never denied. */
|
|
992
|
+
CoreAuditableEventType["HUMAN_DECISION_ESCALATED"] = "human_decision_escalated";
|
|
993
|
+
/** A role-routed decision was claimed by one holder, or given back to the role (`claimed: false`). */
|
|
994
|
+
CoreAuditableEventType["HUMAN_DECISION_CLAIMED"] = "human_decision_claimed";
|
|
995
|
+
/** Someone tried to act on a decision and the predicate refused them. WARNING: the refusal is the evidence. */
|
|
996
|
+
CoreAuditableEventType["HUMAN_DECISION_ANSWER_REFUSED"] = "human_decision_answer_refused";
|
|
997
|
+
// #1628 — deadlines. A deadline changes who is asked and who is told, never the outcome, so none of
|
|
998
|
+
// these rows is a decision: RESOLVED stays the one row that says how a decision ended.
|
|
999
|
+
/** A decision's CLAIM or DECISION deadline passed with nobody having taken or answered it. Actor: the application. */
|
|
1000
|
+
CoreAuditableEventType["HUMAN_DECISION_DEADLINE_MISSED"] = "human_decision_deadline_missed";
|
|
1001
|
+
/**
|
|
1002
|
+
* A deadline stage's escalation rule fired: who was notified, and — for a REASSIGN rule — whether its
|
|
1003
|
+
* target resolved and could answer. Actor: the application.
|
|
1004
|
+
*
|
|
1005
|
+
* assurance-control: WILDO.AUDIT.SECURITY_EVENT — every rule-driven change to who is asked about an agent's action is recorded, including a reassignment refused because its target could not answer.
|
|
1006
|
+
*/
|
|
1007
|
+
CoreAuditableEventType["HUMAN_DECISION_ESCALATION_FIRED"] = "human_decision_escalation_fired";
|
|
1008
|
+
/** A person admitted to answer stopped the decision's CLAIM and DECISION clocks, naming a declared pause state. */
|
|
1009
|
+
CoreAuditableEventType["HUMAN_DECISION_CLOCK_PAUSED"] = "human_decision_clock_paused";
|
|
1010
|
+
/** A person admitted to answer restarted the clocks; the paused time was added to both deadlines. */
|
|
1011
|
+
CoreAuditableEventType["HUMAN_DECISION_CLOCK_RESUMED"] = "human_decision_clock_resumed";
|
|
1012
|
+
// ── Autonomous agents (#1611) ──
|
|
1013
|
+
// An agent that runs with nobody on a socket, under a tenant-granted machine credential. The binding is
|
|
1014
|
+
// a grant of standing authority, so both directions are recorded; every turn the entry point starts or
|
|
1015
|
+
// refuses is recorded too, so an unattended action is never unexplained.
|
|
1016
|
+
/**
|
|
1017
|
+
* An autonomous agent may now run in an organization: a client of that organization was bound to it,
|
|
1018
|
+
* or a firm's client that runs it was admitted by the organization's service-provider relationship.
|
|
1019
|
+
*
|
|
1020
|
+
* assurance-control: WILDO.ACCESS.PRIVILEGE_EVIDENCE — granting an agent standing authority to act unattended is recorded.
|
|
1021
|
+
*/
|
|
1022
|
+
CoreAuditableEventType["AUTONOMOUS_AGENT_BOUND"] = "autonomous_agent_bound";
|
|
1023
|
+
/** An autonomous agent may no longer run in an organization: its binding or its admission was removed. */
|
|
1024
|
+
CoreAuditableEventType["AUTONOMOUS_AGENT_UNBOUND"] = "autonomous_agent_unbound";
|
|
1025
|
+
/** The autonomous entry point opened a turn. Actor: the machine principal it resolved. */
|
|
1026
|
+
CoreAuditableEventType["AUTONOMOUS_AGENT_TURN_STARTED"] = "autonomous_agent_turn_started";
|
|
1027
|
+
/** The autonomous entry point refused to open a turn, and created nothing. WARNING: `reason` says why. */
|
|
1028
|
+
CoreAuditableEventType["AUTONOMOUS_AGENT_TURN_REFUSED"] = "autonomous_agent_turn_refused";
|
|
617
1029
|
// ── OAuth2 / OIDC Provider Events (Wildo AS the authorization server) ──
|
|
618
1030
|
// Distinct from the `OAUTH2_*` family above, which records Wildo CONSUMING an
|
|
619
1031
|
// EXTERNAL social OAuth provider. These record the app-issued OAuth2/OIDC provider
|
|
@@ -736,6 +1148,113 @@ export function describeAuditVocabulary(lead, meanings) {
|
|
|
736
1148
|
const legend = Object.entries(meanings).map(([value, words]) => `- \`${value}\`: ${words.meaning}`).join('\n');
|
|
737
1149
|
return `${lead}\n\nValues:\n${legend}`;
|
|
738
1150
|
}
|
|
1151
|
+
/**
|
|
1152
|
+
* Why the browser door to a provider operation refused a request (#367). A CLOSED vocabulary: the door
|
|
1153
|
+
* resolves exactly one of these per refusal, in the order listed, and a reviewer groups by it.
|
|
1154
|
+
*
|
|
1155
|
+
* Deliberately NOT a reuse of {@link ResourceOperationDenialReason}. The two doors ask different
|
|
1156
|
+
* questions of different declarations — that one checks an operation variant's roles and a row's scope,
|
|
1157
|
+
* this one checks an application's browser-reachability policy and whose third-party account is named —
|
|
1158
|
+
* and sharing members would make "insufficient roles" mean two things in one column.
|
|
1159
|
+
*/
|
|
1160
|
+
/**
|
|
1161
|
+
* What a provider operation's `requiredScopes` check concluded for one call (#979).
|
|
1162
|
+
*
|
|
1163
|
+
* Carried on {@link AuditableEvent_ProviderOperationCall_EventDataSchema} only when the operation declares required
|
|
1164
|
+
* scopes; an operation declaring none carries no scope field at all, rather than a verdict about nothing.
|
|
1165
|
+
*/
|
|
1166
|
+
export var ProviderOperationScopeCheck;
|
|
1167
|
+
(function (ProviderOperationScopeCheck) {
|
|
1168
|
+
/** The grant recorded its scopes and every required one is among them. The call proceeded. */
|
|
1169
|
+
ProviderOperationScopeCheck["VERIFIED"] = "verified";
|
|
1170
|
+
/**
|
|
1171
|
+
* The spent credential records no granted scopes — a pasted key, the application's own credential, or a vendor
|
|
1172
|
+
* that did not echo `scope`. The call proceeded UNCHECKED, and this row is what says so.
|
|
1173
|
+
*/
|
|
1174
|
+
ProviderOperationScopeCheck["NOT_RECORDED"] = "not_recorded";
|
|
1175
|
+
/** The grant recorded its scopes and lacks at least one required scope. The call was refused before any request. */
|
|
1176
|
+
ProviderOperationScopeCheck["MISSING"] = "missing";
|
|
1177
|
+
})(ProviderOperationScopeCheck || (ProviderOperationScopeCheck = {}));
|
|
1178
|
+
/**
|
|
1179
|
+
* WHICH engine capability an outbound capability call discharged (#1712) — the egress, not the vendor.
|
|
1180
|
+
*
|
|
1181
|
+
* Deliberately not {@link EngineCapability}: file storage is not an engine capability (a storage is selected
|
|
1182
|
+
* per field, not per application), and email is two capabilities (transactional and marketing) with one
|
|
1183
|
+
* egress. The finer engine capability, where one exists, rides `engineCapability` beside it.
|
|
1184
|
+
*/
|
|
1185
|
+
export var ProviderCapabilityEgress;
|
|
1186
|
+
(function (ProviderCapabilityEgress) {
|
|
1187
|
+
ProviderCapabilityEgress["EMAIL"] = "email";
|
|
1188
|
+
ProviderCapabilityEgress["SMS"] = "sms";
|
|
1189
|
+
ProviderCapabilityEgress["BILLING"] = "billing";
|
|
1190
|
+
ProviderCapabilityEgress["FILE_STORAGE"] = "file_storage";
|
|
1191
|
+
/** A captcha vendor's backend verification of a token a public form submitted (#1735). */
|
|
1192
|
+
ProviderCapabilityEgress["CAPTCHA"] = "captcha";
|
|
1193
|
+
})(ProviderCapabilityEgress || (ProviderCapabilityEgress = {}));
|
|
1194
|
+
/** WHAT a capability call did (#1712). One member per act the egress performs; billing names its adapter method apart. */
|
|
1195
|
+
export var ProviderCapabilityCallAction;
|
|
1196
|
+
(function (ProviderCapabilityCallAction) {
|
|
1197
|
+
ProviderCapabilityCallAction["EMAIL_SEND"] = "email_send";
|
|
1198
|
+
ProviderCapabilityCallAction["SMS_SEND"] = "sms_send";
|
|
1199
|
+
/** One call of the billing adapter; `billingOperation` names which. */
|
|
1200
|
+
ProviderCapabilityCallAction["BILLING_OPERATION"] = "billing_operation";
|
|
1201
|
+
ProviderCapabilityCallAction["FILE_STORAGE_UPLOAD"] = "file_storage_upload";
|
|
1202
|
+
ProviderCapabilityCallAction["FILE_STORAGE_DOWNLOAD"] = "file_storage_download";
|
|
1203
|
+
ProviderCapabilityCallAction["FILE_STORAGE_READ_METADATA"] = "file_storage_read_metadata";
|
|
1204
|
+
ProviderCapabilityCallAction["FILE_STORAGE_DELETE"] = "file_storage_delete";
|
|
1205
|
+
/** One token sent to a captcha vendor's verification endpoint (reCAPTCHA `siteverify`). */
|
|
1206
|
+
ProviderCapabilityCallAction["CAPTCHA_VERIFY"] = "captcha_verify";
|
|
1207
|
+
})(ProviderCapabilityCallAction || (ProviderCapabilityCallAction = {}));
|
|
1208
|
+
/**
|
|
1209
|
+
* How ONE capability call ended, as far as the application can know (#1712).
|
|
1210
|
+
*
|
|
1211
|
+
* Three members, not two, because a call can leave and never be answered: an email whose transport timed out after
|
|
1212
|
+
* the request was sent may or may not have been accepted. Reporting that as a failure would invite a resend the
|
|
1213
|
+
* vendor may already have honoured; reporting it as a success would claim what nobody observed.
|
|
1214
|
+
*/
|
|
1215
|
+
export var ProviderCapabilityCallOutcome;
|
|
1216
|
+
(function (ProviderCapabilityCallOutcome) {
|
|
1217
|
+
/** The vendor answered and accepted the call. */
|
|
1218
|
+
ProviderCapabilityCallOutcome["SUCCEEDED"] = "succeeded";
|
|
1219
|
+
/** The call was refused — by the vendor, or before it left (a missing credential, a refused request). */
|
|
1220
|
+
ProviderCapabilityCallOutcome["FAILED"] = "failed";
|
|
1221
|
+
/** The call left and its result was not observed (a timeout or a broken connection after sending). */
|
|
1222
|
+
ProviderCapabilityCallOutcome["OUTCOME_UNKNOWN"] = "outcome_unknown";
|
|
1223
|
+
})(ProviderCapabilityCallOutcome || (ProviderCapabilityCallOutcome = {}));
|
|
1224
|
+
export var ProviderOperationDenialReason;
|
|
1225
|
+
(function (ProviderOperationDenialReason) {
|
|
1226
|
+
/**
|
|
1227
|
+
* The caller authenticated without a person — an application API key, a machine identity. This door
|
|
1228
|
+
* exists for a signed-in person's browser, and the policy's roles and the target-authorization port
|
|
1229
|
+
* both reason about a person; a backend caller has the executor and the typed client instead.
|
|
1230
|
+
*/
|
|
1231
|
+
ProviderOperationDenialReason["MISSING_USER_SESSION"] = "missing_user_session";
|
|
1232
|
+
/**
|
|
1233
|
+
* The application's `providers.browserOperations` names no policy for this provider and operation.
|
|
1234
|
+
* The fail-closed default: nothing is reachable from a browser unless declared. Also the answer for an
|
|
1235
|
+
* operation that does not exist, so a refusal never reveals what a catalogue contains.
|
|
1236
|
+
*/
|
|
1237
|
+
ProviderOperationDenialReason["NOT_BROWSER_REACHABLE"] = "not_browser_reachable";
|
|
1238
|
+
/** The request names a connection shape — owner scope × delegation — the operation's policy does not admit. */
|
|
1239
|
+
ProviderOperationDenialReason["CONNECTION_NOT_ADMITTED"] = "connection_not_admitted";
|
|
1240
|
+
/**
|
|
1241
|
+
* The policy declares roles and the target is the caller's OWN user account, over which nobody holds a
|
|
1242
|
+
* role. A policy mistake rather than a caller's, recorded as its own reason so it is not read as a
|
|
1243
|
+
* person lacking a role they could be granted.
|
|
1244
|
+
*/
|
|
1245
|
+
ProviderOperationDenialReason["ROLES_NOT_APPLICABLE_TO_TARGET"] = "roles_not_applicable_to_target";
|
|
1246
|
+
/**
|
|
1247
|
+
* The target-authorization port refused: the caller named an organization they do not belong to
|
|
1248
|
+
* organization-wide, or a user account that is not their own.
|
|
1249
|
+
*/
|
|
1250
|
+
ProviderOperationDenialReason["TARGET_NOT_AUTHORIZED"] = "target_not_authorized";
|
|
1251
|
+
/**
|
|
1252
|
+
* The caller may act for the account, and holds none of the policy's roles — after hierarchy
|
|
1253
|
+
* expansion, in the scope of that account. Checked AFTER {@link TARGET_NOT_AUTHORIZED}, so a person
|
|
1254
|
+
* naming a tenant they do not belong to is recorded as that, not as a person short of a role.
|
|
1255
|
+
*/
|
|
1256
|
+
ProviderOperationDenialReason["INSUFFICIENT_ROLES"] = "insufficient_roles";
|
|
1257
|
+
})(ProviderOperationDenialReason || (ProviderOperationDenialReason = {}));
|
|
739
1258
|
/**
|
|
740
1259
|
* Why the authorizer refused an operation. A CLOSED vocabulary — the authorizer resolves exactly
|
|
741
1260
|
* one of these per refusal, and a SOC dashboard groups by it.
|
|
@@ -747,6 +1266,20 @@ export function describeAuditVocabulary(lead, meanings) {
|
|
|
747
1266
|
*/
|
|
748
1267
|
export var ResourceOperationDenialReason;
|
|
749
1268
|
(function (ResourceOperationDenialReason) {
|
|
1269
|
+
/**
|
|
1270
|
+
* The application requires consent purposes before it may be used
|
|
1271
|
+
* (`compliance.serviceConsentRequirement`), and this person has not granted them (#534). The person is
|
|
1272
|
+
* authenticated and may hold every role the operation needs; what is missing is their own decision.
|
|
1273
|
+
* Distinct from every role/scope reason, because the remedy is the person's choice, not an administrator's.
|
|
1274
|
+
*/
|
|
1275
|
+
ResourceOperationDenialReason["SERVICE_CONSENT_REQUIRED"] = "service_consent_required";
|
|
1276
|
+
/**
|
|
1277
|
+
* ONE operation declared the purpose its own processing rests on
|
|
1278
|
+
* (`ResourceOperationConsentGateDeclaration`), and this person has not granted it (#1258 Step 3).
|
|
1279
|
+
* Distinct from {@link SERVICE_CONSENT_REQUIRED}: only this operation was refused, never the whole
|
|
1280
|
+
* application.
|
|
1281
|
+
*/
|
|
1282
|
+
ResourceOperationDenialReason["CAPABILITY_CONSENT_REQUIRED"] = "capability_consent_required";
|
|
750
1283
|
/**
|
|
751
1284
|
* No initiator identity or roles on the execution context. Fail-closed: the authorizer refuses
|
|
752
1285
|
* rather than assuming an anonymous caller.
|
|
@@ -813,6 +1346,81 @@ export var ResourceOperationDenialReason;
|
|
|
813
1346
|
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT
|
|
814
1347
|
*/
|
|
815
1348
|
ResourceOperationDenialReason["APPLICATION_WIDE_ELEVATION_MISSING"] = "application_wide_elevation_missing";
|
|
1349
|
+
/**
|
|
1350
|
+
* The caller tried to GRANT authority it does not itself hold — a privilege-escalation attempt,
|
|
1351
|
+
* refused by the role-ceiling gate (`assertRequestedRolesWithinCallerCeiling`).
|
|
1352
|
+
*
|
|
1353
|
+
* Its own member rather than {@link INSUFFICIENT_ROLES}, for the same reason
|
|
1354
|
+
* {@link APPLICATION_WIDE_ELEVATION_MISSING} is: the caller PASSED the operation's role check —
|
|
1355
|
+
* an `ORG_ADMIN` really may update a membership — and was refused on the CONTENT of the write.
|
|
1356
|
+
* Folding the two together would make the single refusal an access review most wants to see
|
|
1357
|
+
* indistinguishable from the everyday "you are not an admin", and a reviewer asking "has anyone
|
|
1358
|
+
* tried to escalate?" would have nothing to count.
|
|
1359
|
+
*
|
|
1360
|
+
* Uniquely among the members here, the row carries {@link
|
|
1361
|
+
* AuditableEvent_ResourceOperationDenied_EventDataSchema.escalatedRoles} — the roles that were
|
|
1362
|
+
* actually asked for. `requiredRoles` and `initiatorRoles` cannot express it: neither is the set
|
|
1363
|
+
* the caller tried to confer on somebody else.
|
|
1364
|
+
*
|
|
1365
|
+
* Raised OUTSIDE the authorization phase — the gate runs in custom-implementation prefixes, after
|
|
1366
|
+
* the authorizer has returned — so it does not reach `classifyAuthorizationDenial`. The gate emits
|
|
1367
|
+
* it directly through the same chokepoint, keeping the dedup window, the logarithmic escalation
|
|
1368
|
+
* ladder and the loss counters.
|
|
1369
|
+
*
|
|
1370
|
+
* assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE — an attempt to grant authority the caller does
|
|
1371
|
+
* not hold is refused AND recorded.
|
|
1372
|
+
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT
|
|
1373
|
+
*/
|
|
1374
|
+
ResourceOperationDenialReason["ROLE_CEILING_EXCEEDED"] = "role_ceiling_exceeded";
|
|
1375
|
+
/**
|
|
1376
|
+
* A high-impact action was refused because the operation ITSELF demands a fresh re-proof of
|
|
1377
|
+
* identity (`requiresStepUpAuthentication`), and the caller presented none.
|
|
1378
|
+
*
|
|
1379
|
+
* The caller is authenticated and may hold every role the operation needs. What is missing is a
|
|
1380
|
+
* ceremony, so this belongs with {@link SERVICE_CONSENT_REQUIRED} rather than with
|
|
1381
|
+
* {@link INSUFFICIENT_ROLES}: the remedy is an act by the same person, not a grant by an
|
|
1382
|
+
* administrator.
|
|
1383
|
+
*
|
|
1384
|
+
* Paired with {@link STEP_UP_REQUIRED_BY_FRESHNESS} for the reason the two consent members are
|
|
1385
|
+
* paired — the missing thing is the same and the party that DEMANDED it is not, and the two read
|
|
1386
|
+
* very differently in a review. A burst of these is somebody repeatedly attempting an action the
|
|
1387
|
+
* application has declared dangerous; a burst of the other is sessions ageing out.
|
|
1388
|
+
*
|
|
1389
|
+
* Raised OUTSIDE the authorization phase, like {@link ROLE_CEILING_EXCEEDED}: the step-up gate is
|
|
1390
|
+
* a private check at the services-registry tier that throws without passing through the
|
|
1391
|
+
* authorizer, so it reaches no `classifyAuthorizationDenial`. It emits through the same chokepoint
|
|
1392
|
+
* instead, keeping the dedup window, the escalation ladder and the loss counters.
|
|
1393
|
+
*
|
|
1394
|
+
* assurance-control: WILDO.IDENTITY.STEP_UP_AUTHENTICATION — a refused high-impact action is
|
|
1395
|
+
* recorded, not merely refused.
|
|
1396
|
+
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT
|
|
1397
|
+
*/
|
|
1398
|
+
ResourceOperationDenialReason["STEP_UP_REQUIRED_BY_OPERATION"] = "step_up_required_by_operation";
|
|
1399
|
+
/**
|
|
1400
|
+
* The same refusal, demanded by the USER TYPE's freshness policy (`UserTypeAuthPolicy.stepUpAuth`)
|
|
1401
|
+
* rather than by the operation: the caller's authentication is older than the declared maximum age.
|
|
1402
|
+
*
|
|
1403
|
+
* Distinct from {@link STEP_UP_REQUIRED_BY_OPERATION} because the two send a reviewer to different
|
|
1404
|
+
* places — one to the operation's own declaration, the other to the user-type policy — and because
|
|
1405
|
+
* only this one varies with how long a person has been signed in. The refusal's own error context
|
|
1406
|
+
* already carried the distinction before either was audited; this keeps it in the durable record.
|
|
1407
|
+
*
|
|
1408
|
+
* assurance-control: WILDO.IDENTITY.STEP_UP_AUTHENTICATION
|
|
1409
|
+
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT
|
|
1410
|
+
*/
|
|
1411
|
+
ResourceOperationDenialReason["STEP_UP_REQUIRED_BY_FRESHNESS"] = "step_up_required_by_freshness";
|
|
1412
|
+
/**
|
|
1413
|
+
* A service firm's expert was refused in a CLIENT organization because the client organization type's
|
|
1414
|
+
* authentication policy asks for a factor the session has not satisfied FOR THAT CLIENT (#1633).
|
|
1415
|
+
*
|
|
1416
|
+
* Distinct from the two above because the party that demanded the proof is a third one: not the operation, not the
|
|
1417
|
+
* expert's own user type, but the TENANT the expert is working in. A reviewer reading the client's trail sees its
|
|
1418
|
+
* own policy being enforced on outside staff; the row carries the relationship through the usual attribution.
|
|
1419
|
+
*
|
|
1420
|
+
* assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE — the resource tenant's authentication policy is enforced on external experts, per request.
|
|
1421
|
+
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT
|
|
1422
|
+
*/
|
|
1423
|
+
ResourceOperationDenialReason["STEP_UP_REQUIRED_BY_CLIENT_ORGANIZATION_POLICY"] = "step_up_required_by_client_organization_policy";
|
|
816
1424
|
})(ResourceOperationDenialReason || (ResourceOperationDenialReason = {}));
|
|
817
1425
|
/** SSO configuration change type. */
|
|
818
1426
|
export var SsoConfigChangeType;
|
|
@@ -880,7 +1488,32 @@ export var MachineAccessOperation;
|
|
|
880
1488
|
MachineAccessOperation["A2A_TASKS_LIST"] = "a2a_tasks_list";
|
|
881
1489
|
MachineAccessOperation["MCP_TOOLS_LIST"] = "mcp_tools_list";
|
|
882
1490
|
MachineAccessOperation["MCP_TOOLS_CALL"] = "mcp_tools_call";
|
|
1491
|
+
/**
|
|
1492
|
+
* A MACHINE principal's READ / LIST / SEARCH on a DECLARED cross-tenant REST door
|
|
1493
|
+
* (`admitsCrossTenantPlatformAdministration`) — today the application audit-log door.
|
|
1494
|
+
*
|
|
1495
|
+
* Deliberately NOT every REST call a machine makes: the plain resource API is audited per operation
|
|
1496
|
+
* through `RESOURCE_OPERATION_PERFORMED`, which carries `machineCredentialId`. These three exist because a
|
|
1497
|
+
* declared crossing's only other row, `CROSS_TENANT_ADMINISTRATIVE_ACCESS`, is written per TENANT REACHED —
|
|
1498
|
+
* so a machine read returning only application-wide rows, or nothing, left no row naming who read (#297).
|
|
1499
|
+
* One member per verb, like the A2A task members: a LIST enumerates, a READ fetches a row somebody named.
|
|
1500
|
+
*/
|
|
1501
|
+
MachineAccessOperation["API_READ"] = "api_read";
|
|
1502
|
+
MachineAccessOperation["API_LIST"] = "api_list";
|
|
1503
|
+
MachineAccessOperation["API_SEARCH"] = "api_search";
|
|
883
1504
|
})(MachineAccessOperation || (MachineAccessOperation = {}));
|
|
1505
|
+
const API_READ_MACHINE_ACCESS_OPERATIONS = {
|
|
1506
|
+
[CoreResourceOperation.READ]: MachineAccessOperation.API_READ,
|
|
1507
|
+
[CoreResourceOperation.LIST]: MachineAccessOperation.API_LIST,
|
|
1508
|
+
[CoreResourceOperation.SEARCH]: MachineAccessOperation.API_SEARCH,
|
|
1509
|
+
};
|
|
1510
|
+
/**
|
|
1511
|
+
* The MACHINE_ACCESS identifier for an executed REST read, or `undefined` for any verb that is not one.
|
|
1512
|
+
* The one place the core-operation → audit-vocabulary mapping lives, so a recorder never spells it.
|
|
1513
|
+
*/
|
|
1514
|
+
export function resolveApiReadMachineAccessOperation(operation) {
|
|
1515
|
+
return operation === undefined ? undefined : API_READ_MACHINE_ACCESS_OPERATIONS[operation];
|
|
1516
|
+
}
|
|
884
1517
|
export const AuditableEventTypeSchema = z.union([
|
|
885
1518
|
z.enum(CoreAuditableEventType),
|
|
886
1519
|
z.string()
|
|
@@ -1011,9 +1644,9 @@ export const AuditableEvent_MachineAccess_EventDataSchema = z.object({
|
|
|
1011
1644
|
* single authorization axis; recorded so a SIEM sees the authority the access ran under.
|
|
1012
1645
|
*/
|
|
1013
1646
|
roles: z.array(z.string()).optional(),
|
|
1014
|
-
/** ResourceServerKind of the surface accessed: `a2a` | `mcp
|
|
1647
|
+
/** ResourceServerKind of the surface accessed: `a2a` | `mcp` | `api` (a declared cross-tenant REST read). */
|
|
1015
1648
|
resourceServer: z.string(),
|
|
1016
|
-
/**
|
|
1649
|
+
/** A2A/MCP: the resource-server audience / agent endpoint / systemRef hit. `api`: the resource type read. */
|
|
1017
1650
|
resourceIdentifier: z.string().optional(),
|
|
1018
1651
|
/** Normalised MachineAccessOperation value (e.g. `a2a_message_send`, `mcp_tools_call`). */
|
|
1019
1652
|
operationIdentifier: z.string(),
|
|
@@ -1263,6 +1896,15 @@ export const AuditableEvent_OrganizationMember_RoleChangedEventDataSchema = z.ob
|
|
|
1263
1896
|
/** Which write path produced the change — the operation identifier (`create`, `update`, …). */
|
|
1264
1897
|
operation: z.string(),
|
|
1265
1898
|
changedBy: z.string(),
|
|
1899
|
+
/**
|
|
1900
|
+
* The actor's stated reason, on the paths that REQUIRE one — today `grantOwnership`, the
|
|
1901
|
+
* platform-tier repair door that crosses into a tenant the caller is not a member of. There the
|
|
1902
|
+
* justification is the whole control: no downstream check can second-guess an operator acting
|
|
1903
|
+
* outside the tenant, so the record of WHY is what makes the crossing accountable. It was required
|
|
1904
|
+
* on the request and discarded at the service boundary until #593. Absent on `create` / `update`,
|
|
1905
|
+
* which collect none. Bounded by the request DTO (1000 characters).
|
|
1906
|
+
*/
|
|
1907
|
+
justification: z.string().optional(),
|
|
1266
1908
|
});
|
|
1267
1909
|
/**
|
|
1268
1910
|
* Per-unit role assignment on an `ORGANIZATION_UNIT_MEMBERS` row.
|
|
@@ -1470,6 +2112,104 @@ export const AuditableEvent_Organization_UpdatedEventDataSchema = z.object({
|
|
|
1470
2112
|
changes: z.record(z.string(), z.any()),
|
|
1471
2113
|
updatedBy: z.string(),
|
|
1472
2114
|
});
|
|
2115
|
+
/**
|
|
2116
|
+
* WHY an organization was assigned the type it now carries, when no person chose it.
|
|
2117
|
+
*
|
|
2118
|
+
* A closed vocabulary, deliberately named rather than implied: the assignment is only defensible because the answer
|
|
2119
|
+
* was DERIVED, and a reader of the audit row must be able to see which derivation produced it without re-deriving
|
|
2120
|
+
* the application's configuration — or its membership rows — as they stood at that boot. The two members answer
|
|
2121
|
+
* from different evidence, which is exactly why a single "derived" value would not do: one is a fact about the
|
|
2122
|
+
* DECLARATION and stays true however the tenant changes, the other is a fact about the ORGANIZATION on one day.
|
|
2123
|
+
*/
|
|
2124
|
+
export var OrganizationTypeAssignmentBasis;
|
|
2125
|
+
(function (OrganizationTypeAssignmentBasis) {
|
|
2126
|
+
/**
|
|
2127
|
+
* The application declares exactly one organization type, so an organization whose type resolves to nothing —
|
|
2128
|
+
* none stored, or one the declaration no longer carries — can only be that type: it is the only policy the
|
|
2129
|
+
* application has. Nothing is guessed, and nothing about the organization was read.
|
|
2130
|
+
*/
|
|
2131
|
+
OrganizationTypeAssignmentBasis["SOLE_DECLARED_TYPE"] = "sole_declared_type";
|
|
2132
|
+
/**
|
|
2133
|
+
* The application declares several organization types, and exactly one of them covers every user type held by
|
|
2134
|
+
* this organization's own members — so the others are types this organization cannot be. Nothing is guessed: it
|
|
2135
|
+
* is the coverage test the first-administrator organization's type is already derived by, asked of the members.
|
|
2136
|
+
*
|
|
2137
|
+
* Narrower than {@link SOLE_DECLARED_TYPE} in what it proves. It reports the answer for the membership as it
|
|
2138
|
+
* stood at that boot; an organization whose members later span two declared types would not derive again. That is
|
|
2139
|
+
* why the row records the basis rather than only the outcome — a reviewer asking "could this have been wrong?"
|
|
2140
|
+
* needs to know which question was answered.
|
|
2141
|
+
*/
|
|
2142
|
+
OrganizationTypeAssignmentBasis["MEMBER_USER_TYPES"] = "member_user_types";
|
|
2143
|
+
/**
|
|
2144
|
+
* An operator promoted this organization to the one that OWNS the application, through
|
|
2145
|
+
* `organizations.promoteToOwnerOrganization` (#1054).
|
|
2146
|
+
*
|
|
2147
|
+
* The odd one out of the three, and deliberately kept in the same event rather than given its own.
|
|
2148
|
+
* What the event records is "this organization's `type` changed, and here is what decided it" — true
|
|
2149
|
+
* of all three — and an access reviewer asking "how did this tenant come to be typed this way?" must
|
|
2150
|
+
* find one row wherever the answer lies, not two events they have to know to look for separately.
|
|
2151
|
+
*
|
|
2152
|
+
* What differs is everything a derivation does not have: there IS an actor (the audit row carries
|
|
2153
|
+
* them, and {@link AuditableEvent_Organization_TypeAssignedEventData.justification} carries their
|
|
2154
|
+
* stated reason), the previous type is always present, and the decision was a human's. A row
|
|
2155
|
+
* carrying this basis is the only one on which `justification` may appear — the other two are
|
|
2156
|
+
* derivations, and a derivation has nothing to justify.
|
|
2157
|
+
*/
|
|
2158
|
+
OrganizationTypeAssignmentBasis["OPERATOR_PROMOTION"] = "operator_promotion";
|
|
2159
|
+
})(OrganizationTypeAssignmentBasis || (OrganizationTypeAssignmentBasis = {}));
|
|
2160
|
+
/**
|
|
2161
|
+
* An organization whose type resolved to nothing — none stored, or one no longer declared — was assigned one by the
|
|
2162
|
+
* engine at boot.
|
|
2163
|
+
*
|
|
2164
|
+
* ## Why this is its own event rather than an `ORGANIZATION_UPDATED`
|
|
2165
|
+
*
|
|
2166
|
+
* An organization's type is not a label. It decides which user types its members hold, which authentication
|
|
2167
|
+
* methods they may use, and which step-up policy applies to them — so assigning one changes what every member of
|
|
2168
|
+
* that tenant can do at sign-in. Folded into a generic `changes` map it would be an authentication-relevant
|
|
2169
|
+
* change with no actor, filed where an access review does not look.
|
|
2170
|
+
*
|
|
2171
|
+
* ## Who the actor is, per basis
|
|
2172
|
+
*
|
|
2173
|
+
* For the two DERIVATIONS there is none, and that is the point: organizations minted before the type was required
|
|
2174
|
+
* (the platform's own seeds, the first-administrator bootstrap) were typeless, and the engine repairs them before
|
|
2175
|
+
* the first read that would refuse them. `basis` is what makes that repair legible as a derivation instead of a
|
|
2176
|
+
* write nobody made, and those rows carry no `userId` because the application-scope repair has no initiator.
|
|
2177
|
+
*
|
|
2178
|
+
* For {@link OrganizationTypeAssignmentBasis.OPERATOR_PROMOTION} there IS one. It rides where every other
|
|
2179
|
+
* operator action's actor does — on the audit ROW, resolved from the execution context — rather than as a field
|
|
2180
|
+
* here, so an access review reads it the same way it reads a suspension or an ownership grant. What this schema
|
|
2181
|
+
* adds for that basis is the one thing the row cannot carry: the operator's stated REASON (`RESOURCE_OPERATION_PERFORMED`
|
|
2182
|
+
* carries no request payload, which is how `grantOwnership`'s required justification went unrecorded for months — #593).
|
|
2183
|
+
*
|
|
2184
|
+
* assurance-control: WILDO.AUDIT.SECURITY_EVENT — an authentication-relevant attribute of a tenant changed, and the
|
|
2185
|
+
* record says what decided it and, when a person did, who and why.
|
|
2186
|
+
*/
|
|
2187
|
+
export const AuditableEvent_Organization_TypeAssignedEventDataSchema = z.object({
|
|
2188
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_TYPE_ASSIGNED),
|
|
2189
|
+
organizationId: z.string(),
|
|
2190
|
+
/** The declared organization type now stored on the row, shown as its word (`system_enums.OrganizationType.<type>`). */
|
|
2191
|
+
organizationType: z.string().systemEnum(ApplicationConfigVocabulary.ORGANIZATION_TYPE),
|
|
2192
|
+
/**
|
|
2193
|
+
* The type the row stored before, when it stored one the configuration no longer declares. Absent for an organization
|
|
2194
|
+
* that had no type. Recorded because this assignment REPLACES a value someone once chose: a type removed from the
|
|
2195
|
+
* declaration by mistake is recovered from exactly this field.
|
|
2196
|
+
*/
|
|
2197
|
+
previousType: z.string().optional(),
|
|
2198
|
+
basis: z.enum(OrganizationTypeAssignmentBasis),
|
|
2199
|
+
/**
|
|
2200
|
+
* The operator's stated reason, on the ONE basis that has a person behind it —
|
|
2201
|
+
* {@link OrganizationTypeAssignmentBasis.OPERATOR_PROMOTION}, whose `requestDto` requires it.
|
|
2202
|
+
*
|
|
2203
|
+
* Optional on the schema because the two derivation bases have nothing to justify: a required field
|
|
2204
|
+
* would force the boot repair to invent a sentence, and an invented justification is worse than an
|
|
2205
|
+
* absent one — it reads as a decision somebody made.
|
|
2206
|
+
*
|
|
2207
|
+
* Recorded HERE rather than left on the request because a required field nothing stores is a promise
|
|
2208
|
+
* nobody keeps, and `RESOURCE_OPERATION_PERFORMED` (which the CRITICAL promotion also emits) carries
|
|
2209
|
+
* no request payload.
|
|
2210
|
+
*/
|
|
2211
|
+
justification: z.string().optional(),
|
|
2212
|
+
});
|
|
1473
2213
|
export const AuditableEvent_Organization_DeletedEventDataSchema = z.object({
|
|
1474
2214
|
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_DELETED),
|
|
1475
2215
|
organizationId: z.string(),
|
|
@@ -1618,13 +2358,14 @@ export const AuditableEvent_Organization_ActivatedEventDataSchema = z.object({
|
|
|
1618
2358
|
*/
|
|
1619
2359
|
export const ApplicationAuthPolicySnapshotSchema = z.record(z.string(), z.unknown());
|
|
1620
2360
|
/**
|
|
1621
|
-
* The application's authored authentication policy changed between two boots.
|
|
2361
|
+
* The application's authored authentication or audit-viewer admission policy changed between two boots.
|
|
1622
2362
|
*
|
|
1623
2363
|
* The per-user-type authentication policy (`userTypes.<type>.auth` — MFA, password, and lockout
|
|
1624
2364
|
* requirements) is STATIC application configuration authored in code and taken into effect at backend
|
|
1625
2365
|
* startup. A change to it — most consequentially a WEAKENING such as turning MFA off — is a
|
|
1626
2366
|
* security-posture decision that, before this event, left no product-side record: only the source
|
|
1627
|
-
* history showed it. This event closes that gap.
|
|
2367
|
+
* history showed it. This event closes that gap. The effective `auditTrail.applicationReadAccess`
|
|
2368
|
+
* posture is recorded separately from the user-type snapshots and compared independently.
|
|
1628
2369
|
*
|
|
1629
2370
|
* It is emitted at boot, by the system, when the resolved policy snapshot differs from the last one
|
|
1630
2371
|
* recorded in the trail (detected by comparing against the most recent event of this type for the
|
|
@@ -1642,28 +2383,15 @@ export const ApplicationAuthPolicySnapshotSchema = z.record(z.string(), z.unknow
|
|
|
1642
2383
|
*/
|
|
1643
2384
|
export const AuditableEvent_ApplicationAuthPolicyChanged_EventDataSchema = z.object({
|
|
1644
2385
|
eventType: z.literal(CoreAuditableEventType.APPLICATION_AUTH_POLICY_CHANGED),
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
* The row this payload rides on ALREADY carries `applicationId` as its scope column, injected by
|
|
1649
|
-
* the repository's write-path enrichment from the writer's own execution context. A second copy in
|
|
1650
|
-
* the payload could only ever agree with it or contradict it, and it contradicted it: the boot
|
|
1651
|
-
* emitter had no application id to hand — `appIdentity.applicationId` is merged in for the FRONTEND
|
|
1652
|
-
* projection only — so it passed `appIdentity.appName`, the SLUG, into both. Measured on the
|
|
1653
|
-
* dogfood trail: 2,175 rows carried the correct id and this event's one row carried `wonder-todos`,
|
|
1654
|
-
* which made it reachable through no API, on the door built for exactly that population (#317).
|
|
1655
|
-
*
|
|
1656
|
-
* Dropping the field is what makes the two-copies question unaskable, rather than answering it
|
|
1657
|
-
* again per emitter. Nothing read it: no SIEM projection, no OCSF mapping, no consumer. Old stored
|
|
1658
|
-
* rows keep parsing — `z.object` strips an unknown key rather than refusing it — so the change is
|
|
1659
|
-
* a shrink with no migration.
|
|
1660
|
-
*/
|
|
1661
|
-
/** Which user types' policies differed from the previously-recorded snapshot. Sorted, non-empty. */
|
|
2386
|
+
// The owning application identity lives on the audit row, resolved by the shared writer before
|
|
2387
|
+
// database/SIEM/immutable-sink fanout. It is not duplicated inside this policy payload.
|
|
2388
|
+
/** Which user types' policies differed. Sorted; empty when only the audit-viewer access posture changed. */
|
|
1662
2389
|
changedUserTypes: z.array(z.string()),
|
|
1663
2390
|
/**
|
|
1664
2391
|
* A stable digest of the `after` snapshot. Boot change-detection compares the current digest
|
|
1665
2392
|
* against the digest carried by the most recent recorded event of this type; equal digests are the
|
|
1666
|
-
*
|
|
2393
|
+
* authentication-policy comparison. Audit-viewer access is compared independently; equal digests
|
|
2394
|
+
* alone do not suppress an access-policy change.
|
|
1667
2395
|
*/
|
|
1668
2396
|
snapshotDigest: z.string(),
|
|
1669
2397
|
/**
|
|
@@ -1673,6 +2401,15 @@ export const AuditableEvent_ApplicationAuthPolicyChanged_EventDataSchema = z.obj
|
|
|
1673
2401
|
before: z.record(z.string(), ApplicationAuthPolicySnapshotSchema).nullable(),
|
|
1674
2402
|
/** The per-user-type policy snapshot that took effect at this boot. Keys are user-type identifiers. */
|
|
1675
2403
|
after: z.record(z.string(), ApplicationAuthPolicySnapshotSchema),
|
|
2404
|
+
/**
|
|
2405
|
+
* Effective audit-viewer access posture, separately typed from authentication user types.
|
|
2406
|
+
* Absent on historical events predating this evidence. A null before means no prior recorded
|
|
2407
|
+
* policy is known, not that an earlier deployment was strict or role based.
|
|
2408
|
+
*/
|
|
2409
|
+
auditApplicationReadAccess: z.object({
|
|
2410
|
+
before: z.enum(AuditApplicationReadAccess).nullable(),
|
|
2411
|
+
after: z.enum(AuditApplicationReadAccess),
|
|
2412
|
+
}).optional(),
|
|
1676
2413
|
});
|
|
1677
2414
|
/**
|
|
1678
2415
|
* A governed lifecycle transition changed a subject's `status`.
|
|
@@ -1747,6 +2484,7 @@ export const AuditableEvent_OrganizationUnit_UpdatedEventDataSchema = z.object({
|
|
|
1747
2484
|
});
|
|
1748
2485
|
// SSO Authentication Event Data Schemas
|
|
1749
2486
|
export const AuditableEvent_User_SSOLoginEventDataSchema = z.object({
|
|
2487
|
+
assurance: ExternalAssuranceAssessmentSchema.optional(),
|
|
1750
2488
|
eventType: z.literal(CoreAuditableEventType.USER_SSO_LOGIN),
|
|
1751
2489
|
userId: z.string(),
|
|
1752
2490
|
email: z.email(),
|
|
@@ -1787,6 +2525,7 @@ export const AuditableEvent_User_SSOLoginEventDataSchema = z.object({
|
|
|
1787
2525
|
}
|
|
1788
2526
|
});
|
|
1789
2527
|
export const AuditableEvent_User_SSOLoginFailedEventDataSchema = z.object({
|
|
2528
|
+
assurance: ExternalAssuranceAssessmentSchema.optional(),
|
|
1790
2529
|
eventType: z.literal(CoreAuditableEventType.USER_SSO_LOGIN_FAILED),
|
|
1791
2530
|
email: z.email().optional(),
|
|
1792
2531
|
providerRef: z.string().optional(),
|
|
@@ -1799,15 +2538,46 @@ export const AuditableEvent_User_SSOLoginFailedEventDataSchema = z.object({
|
|
|
1799
2538
|
ipAddress: z.string(),
|
|
1800
2539
|
userAgent: z.string(),
|
|
1801
2540
|
});
|
|
2541
|
+
/**
|
|
2542
|
+
* A sign-in was refused because the claiming scope requires SSO (#1242).
|
|
2543
|
+
*
|
|
2544
|
+
* `organizationId` was REQUIRED here, and that is what made the event unemittable at half its own
|
|
2545
|
+
* refusal sites: `enforcement.requireSSO` lives on the POLYMORPHIC SSO config, so an APPLICATION-scope
|
|
2546
|
+
* policy refuses sign-ins for the application itself and there is no organization to name. Requiring
|
|
2547
|
+
* one would have left exactly those refusals with no trail — the outcome this CRITICAL event exists to
|
|
2548
|
+
* prevent. It now carries either scope and refuses anything but exactly one, following
|
|
2549
|
+
* `EMERGENCY_ACCESS_USED`, which was widened for the same reason on the same config.
|
|
2550
|
+
*
|
|
2551
|
+
* `attemptedProviderRef` and `attemptedConnectionType` are OPTIONAL because two of the four refusal
|
|
2552
|
+
* sites have no attempted provider at all: a password sign-in and a registration are refused BECAUSE
|
|
2553
|
+
* no SSO was attempted. Requiring them would have forced a placeholder, and a placeholder in an
|
|
2554
|
+
* audit row is worse than an absent field — it is a fact nobody can distinguish from a real one.
|
|
2555
|
+
*/
|
|
1802
2556
|
export const AuditableEvent_User_SSOEnforcementBlockedEventDataSchema = z.object({
|
|
1803
2557
|
eventType: z.literal(CoreAuditableEventType.USER_SSO_ENFORCEMENT_BLOCKED),
|
|
1804
2558
|
email: z.email(),
|
|
1805
|
-
attemptedProviderRef: z.string(),
|
|
1806
|
-
attemptedConnectionType: z.enum(SsoConnectionType),
|
|
1807
|
-
|
|
2559
|
+
attemptedProviderRef: z.string().optional(),
|
|
2560
|
+
attemptedConnectionType: z.enum(SsoConnectionType).optional(),
|
|
2561
|
+
scopeType: z.enum(AuthScopeType),
|
|
2562
|
+
organizationId: z.string().optional(),
|
|
2563
|
+
applicationId: z.string().optional(),
|
|
1808
2564
|
enforcementPolicy: z.string(),
|
|
1809
2565
|
ipAddress: z.string(),
|
|
1810
2566
|
userAgent: z.string(),
|
|
2567
|
+
}).superRefine((event, ctx) => {
|
|
2568
|
+
const hasOrganizationScope = event.scopeType === AuthScopeType.ORGANIZATION
|
|
2569
|
+
&& event.organizationId !== undefined
|
|
2570
|
+
&& event.applicationId === undefined;
|
|
2571
|
+
const hasApplicationScope = event.scopeType === AuthScopeType.APPLICATION
|
|
2572
|
+
&& event.applicationId !== undefined
|
|
2573
|
+
&& event.organizationId === undefined;
|
|
2574
|
+
if (!hasOrganizationScope && !hasApplicationScope) {
|
|
2575
|
+
ctx.addIssue({
|
|
2576
|
+
code: 'custom',
|
|
2577
|
+
path: ['scopeType'],
|
|
2578
|
+
message: 'SSO-enforcement-blocked events require exactly one explicit tenant scope',
|
|
2579
|
+
});
|
|
2580
|
+
}
|
|
1811
2581
|
});
|
|
1812
2582
|
export const AuditableEvent_User_TokenRefreshedEventDataSchema = z.object({
|
|
1813
2583
|
eventType: z.literal(CoreAuditableEventType.USER_TOKEN_REFRESHED),
|
|
@@ -1825,13 +2595,33 @@ export const AuditableEvent_Organization_SSOConfigurationChangedEventDataSchema
|
|
|
1825
2595
|
affectedProviderRef: z.string().optional(),
|
|
1826
2596
|
changes: z.record(z.string(), z.any()).optional(),
|
|
1827
2597
|
});
|
|
1828
|
-
|
|
1829
|
-
|
|
2598
|
+
/**
|
|
2599
|
+
* The fields every SIEM export-configuration event carries; three kinds share them (#986) and differ
|
|
2600
|
+
* only in what they SAY happened, which is what a SIEM rule keys on.
|
|
2601
|
+
*/
|
|
2602
|
+
const SIEM_EXPORT_CONFIGURATION_EVENT_FIELDS = {
|
|
1830
2603
|
organizationId: z.string(),
|
|
1831
2604
|
changedBy: z.string(),
|
|
1832
2605
|
changeType: z.enum(SiemExportChangeType),
|
|
2606
|
+
/** The destination HOST only — a collector secret can live in the URL path, and this row is immutable. */
|
|
1833
2607
|
webhookUrlDomain: z.string().optional(),
|
|
1834
2608
|
eventFormatConfigured: z.string().optional(),
|
|
2609
|
+
/** NAMES of the configuration fields the write changed; never their values (the credential is among them). */
|
|
2610
|
+
changedFields: z.array(z.string()).optional(),
|
|
2611
|
+
};
|
|
2612
|
+
export const AuditableEvent_Organization_SIEMExportConfiguredEventDataSchema = z.object({
|
|
2613
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_SIEM_EXPORT_CONFIGURED),
|
|
2614
|
+
...SIEM_EXPORT_CONFIGURATION_EVENT_FIELDS,
|
|
2615
|
+
});
|
|
2616
|
+
/** Export turned OFF (#986). Same fields; its own kind so it classifies CRITICAL. */
|
|
2617
|
+
export const AuditableEvent_Organization_SIEMExportDisabledEventDataSchema = z.object({
|
|
2618
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_SIEM_EXPORT_DISABLED),
|
|
2619
|
+
...SIEM_EXPORT_CONFIGURATION_EVENT_FIELDS,
|
|
2620
|
+
});
|
|
2621
|
+
/** Export re-pointed at another destination (#986). Same fields; its own kind so it classifies WARNING. */
|
|
2622
|
+
export const AuditableEvent_Organization_SIEMExportDestinationChangedEventDataSchema = z.object({
|
|
2623
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_SIEM_EXPORT_DESTINATION_CHANGED),
|
|
2624
|
+
...SIEM_EXPORT_CONFIGURATION_EVENT_FIELDS,
|
|
1835
2625
|
});
|
|
1836
2626
|
// Organization Provider Credential Event Data Schemas
|
|
1837
2627
|
//
|
|
@@ -1845,7 +2635,8 @@ export const AuditableEvent_Organization_SIEMExportConfiguredEventDataSchema = z
|
|
|
1845
2635
|
//
|
|
1846
2636
|
// ## Why a provider ref and a slug, and nothing about the value
|
|
1847
2637
|
//
|
|
1848
|
-
// A reader needs to know WHICH authority moved. `
|
|
2638
|
+
// A reader needs to know WHICH authority moved. `connectionRef` + `secretSlug` say that completely — the
|
|
2639
|
+
// stored credential's key (#1670) — and `providerRef` says which ref the act went through.
|
|
1849
2640
|
// A fingerprint of the value was considered and rejected: it is a stable oracle for confirming a
|
|
1850
2641
|
// guessed secret, so it would put a verification oracle into the one store designed never to
|
|
1851
2642
|
// forget.
|
|
@@ -1859,6 +2650,13 @@ export const AuditableEvent_OrganizationProviderCredential_SetEventDataSchema =
|
|
|
1859
2650
|
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_SET),
|
|
1860
2651
|
organizationId: z.string(),
|
|
1861
2652
|
providerRef: z.string(),
|
|
2653
|
+
/**
|
|
2654
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2655
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2656
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2657
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2658
|
+
*/
|
|
2659
|
+
connectionRef: z.string().optional(),
|
|
1862
2660
|
secretSlug: z.string(),
|
|
1863
2661
|
/** The acting administrator. Absent only on a system-initiated write, which none exists today. */
|
|
1864
2662
|
setBy: z.string().optional(),
|
|
@@ -1877,6 +2675,13 @@ export const AuditableEvent_OrganizationProviderCredential_RotatedEventDataSchem
|
|
|
1877
2675
|
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_ROTATED),
|
|
1878
2676
|
organizationId: z.string(),
|
|
1879
2677
|
providerRef: z.string(),
|
|
2678
|
+
/**
|
|
2679
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2680
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2681
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2682
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2683
|
+
*/
|
|
2684
|
+
connectionRef: z.string().optional(),
|
|
1880
2685
|
secretSlug: z.string(),
|
|
1881
2686
|
rotatedBy: z.string().optional(),
|
|
1882
2687
|
credentialId: z.string(),
|
|
@@ -1899,10 +2704,29 @@ export const AuditableEvent_OrganizationProviderCredential_UsedEventDataSchema =
|
|
|
1899
2704
|
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_USED),
|
|
1900
2705
|
organizationId: z.string(),
|
|
1901
2706
|
providerRef: z.string(),
|
|
2707
|
+
/**
|
|
2708
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2709
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2710
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2711
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2712
|
+
*/
|
|
2713
|
+
connectionRef: z.string().optional(),
|
|
2714
|
+
/**
|
|
2715
|
+
* The npm package that owns the ref the grant was spent or granted through (#1725). On a shared connection several
|
|
2716
|
+
* refs — from several packages — spend one grant, so the connection alone does not say whose code acted.
|
|
2717
|
+
*/
|
|
2718
|
+
providerPackageName: z.string().optional(),
|
|
1902
2719
|
secretSlug: z.string(),
|
|
1903
2720
|
resolvedFrom: z.enum(ProviderCredentialResolutionSource),
|
|
1904
2721
|
/** Absent when `resolvedFrom` is the deployment environment — there is no row to name. */
|
|
1905
2722
|
credentialId: z.string().optional(),
|
|
2723
|
+
/**
|
|
2724
|
+
* WHOSE credential was spent: the member who set it. For a USER-delegated organization connection
|
|
2725
|
+
* that is the person whose own vendor account every member's call acts through — the vendor
|
|
2726
|
+
* attributes the act to them, so the trail must too (decision on wildo-ai/wildo-ai#18). Absent for
|
|
2727
|
+
* a deployment-environment resolution, and for a row set with no recorded member.
|
|
2728
|
+
*/
|
|
2729
|
+
credentialSetByUserId: z.string().optional(),
|
|
1906
2730
|
});
|
|
1907
2731
|
/**
|
|
1908
2732
|
* The grant ended — by the tenant removing it, or by the tenant itself being purged.
|
|
@@ -1917,10 +2741,34 @@ export const AuditableEvent_OrganizationProviderCredential_DeletedEventDataSchem
|
|
|
1917
2741
|
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_DELETED),
|
|
1918
2742
|
organizationId: z.string(),
|
|
1919
2743
|
providerRef: z.string(),
|
|
2744
|
+
/**
|
|
2745
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2746
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2747
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2748
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2749
|
+
*/
|
|
2750
|
+
connectionRef: z.string().optional(),
|
|
1920
2751
|
secretSlug: z.string(),
|
|
1921
2752
|
deletedBy: z.string().optional(),
|
|
1922
2753
|
credentialId: z.string(),
|
|
1923
2754
|
reason: z.enum(ProviderCredentialDeletionReason),
|
|
2755
|
+
/**
|
|
2756
|
+
* What telling the VENDOR achieved, when the delete ended an OAuth2 grant (#545).
|
|
2757
|
+
*
|
|
2758
|
+
* Deleting our copy stops the application using a token; it does not end the grant at the vendor,
|
|
2759
|
+
* and a refresh token frequently never expires on its own. So this field is the difference between
|
|
2760
|
+
* a trail that says "we deleted our copy" and one that says whether the person's access was
|
|
2761
|
+
* actually withdrawn where it lives.
|
|
2762
|
+
*
|
|
2763
|
+
* Written by EVERY door that destroys a credential: the revoke doors (#545), and since #1711 the
|
|
2764
|
+
* cascade observers for a subject erasure, a hard delete of the user row, the invitation sweep and an
|
|
2765
|
+
* organization purge — each reads the token out of the pre-deletion row the cascade hands over. ABSENT
|
|
2766
|
+
* only on a row written before #1711, when the cascades attempted nothing. `not_declared` is the
|
|
2767
|
+
* ordinary answer for a vendor whose revocation is not RFC 7009-shaped, and for a pasted credential that
|
|
2768
|
+
* was never a grant; it is a recorded fact, not a failure. There is no retry: the token existed only in
|
|
2769
|
+
* the destroyed row, so this value is the whole record.
|
|
2770
|
+
*/
|
|
2771
|
+
vendorRevocation: z.enum(ProviderOAuth2RevocationOutcomeValues).optional(),
|
|
1924
2772
|
});
|
|
1925
2773
|
/**
|
|
1926
2774
|
* A PERSON connected their own account at a third party to this application.
|
|
@@ -1943,6 +2791,13 @@ export const AuditableEvent_UserProviderCredential_SetEventDataSchema = z.object
|
|
|
1943
2791
|
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_SET),
|
|
1944
2792
|
userId: z.string(),
|
|
1945
2793
|
providerRef: z.string(),
|
|
2794
|
+
/**
|
|
2795
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2796
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2797
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2798
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2799
|
+
*/
|
|
2800
|
+
connectionRef: z.string().optional(),
|
|
1946
2801
|
secretSlug: z.string(),
|
|
1947
2802
|
credentialId: z.string(),
|
|
1948
2803
|
});
|
|
@@ -1954,9 +2809,12 @@ export const AuditableEvent_UserProviderCredential_SetEventDataSchema = z.object
|
|
|
1954
2809
|
*
|
|
1955
2810
|
* `grantedScopes` is what the VENDOR said it issued, not what was asked for. The two differ often
|
|
1956
2811
|
* enough to matter: a vendor may narrow a request against what the account is permitted, and the
|
|
1957
|
-
* answer to "what could this application actually do as them" is the granted set.
|
|
1958
|
-
*
|
|
1959
|
-
*
|
|
2812
|
+
* answer to "what could this application actually do as them" is the granted set. Since #1671 it is the
|
|
2813
|
+
* set the stored grant RECORDS after this authorization: a token answer without `scope` granted what was
|
|
2814
|
+
* requested (RFC 6749 §5.1), and a re-authorization of a vendor that accumulates consent unites the new
|
|
2815
|
+
* answer with the previous consent (`consentAccumulated`). Optional because a grant may record none, and an
|
|
2816
|
+
* empty array would assert something stronger than silence.
|
|
2817
|
+
* spec-cite: RFC 6749 §5.1 (the `scope` row of the access token response).
|
|
1960
2818
|
*
|
|
1961
2819
|
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — a user authorizes third-party
|
|
1962
2820
|
* delegated access, and the authorization's extent is recorded with it.
|
|
@@ -1965,6 +2823,18 @@ export const AuditableEvent_UserProviderConnection_GrantedEventDataSchema = z.ob
|
|
|
1965
2823
|
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CONNECTION_GRANTED),
|
|
1966
2824
|
userId: z.string(),
|
|
1967
2825
|
providerRef: z.string(),
|
|
2826
|
+
/**
|
|
2827
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2828
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2829
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2830
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2831
|
+
*/
|
|
2832
|
+
connectionRef: z.string().optional(),
|
|
2833
|
+
/**
|
|
2834
|
+
* The npm package that owns the ref the grant was spent or granted through (#1725). On a shared connection several
|
|
2835
|
+
* refs — from several packages — spend one grant, so the connection alone does not say whose code acted.
|
|
2836
|
+
*/
|
|
2837
|
+
providerPackageName: z.string().optional(),
|
|
1968
2838
|
secretSlug: z.string(),
|
|
1969
2839
|
credentialId: z.string(),
|
|
1970
2840
|
grantedScopes: z.array(z.string()).optional(),
|
|
@@ -1982,6 +2852,17 @@ export const AuditableEvent_UserProviderConnection_GrantedEventDataSchema = z.ob
|
|
|
1982
2852
|
* which is exactly the sequence worth being able to see.
|
|
1983
2853
|
*/
|
|
1984
2854
|
replacedExistingConnection: z.boolean(),
|
|
2855
|
+
/**
|
|
2856
|
+
* Present when this authorization GREW an existing grant (#1671): the scopes the re-authorization was started to
|
|
2857
|
+
* add, the operation whose refusal offered it and the package whose code that operation is (an opted-in
|
|
2858
|
+
* augmentation's, or the ref's own). `addedForOperationId` is as the start request named it; the scopes were
|
|
2859
|
+
* checked against the connection's ceiling. `consentAccumulated` says whether the stored granted set was united
|
|
2860
|
+
* with the previous consent (a vendor that accumulates consent) or replaced by a restated authorization.
|
|
2861
|
+
*/
|
|
2862
|
+
addedScopes: z.array(z.string()).optional(),
|
|
2863
|
+
addedForOperationId: z.string().optional(),
|
|
2864
|
+
addedForPackageName: z.string().optional(),
|
|
2865
|
+
consentAccumulated: z.boolean().optional(),
|
|
1985
2866
|
});
|
|
1986
2867
|
/**
|
|
1987
2868
|
* An ORGANIZATION's delegated authorization toward a vendor was granted.
|
|
@@ -2000,12 +2881,37 @@ export const AuditableEvent_OrganizationProviderConnection_GrantedEventDataSchem
|
|
|
2000
2881
|
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CONNECTION_GRANTED),
|
|
2001
2882
|
organizationId: z.string(),
|
|
2002
2883
|
providerRef: z.string(),
|
|
2884
|
+
/**
|
|
2885
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2886
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2887
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2888
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2889
|
+
*/
|
|
2890
|
+
connectionRef: z.string().optional(),
|
|
2891
|
+
/**
|
|
2892
|
+
* The npm package that owns the ref the grant was spent or granted through (#1725). On a shared connection several
|
|
2893
|
+
* refs — from several packages — spend one grant, so the connection alone does not say whose code acted.
|
|
2894
|
+
*/
|
|
2895
|
+
providerPackageName: z.string().optional(),
|
|
2003
2896
|
secretSlug: z.string(),
|
|
2004
2897
|
credentialId: z.string(),
|
|
2005
2898
|
grantedByUserId: z.string().optional(),
|
|
2006
2899
|
grantedScopes: z.array(z.string()).optional(),
|
|
2007
2900
|
accountRef: z.string().optional(),
|
|
2008
2901
|
replacedExistingConnection: z.boolean(),
|
|
2902
|
+
/**
|
|
2903
|
+
* On whose behalf the linked account acts. `user` means `grantedByUserId` linked THEIR OWN vendor
|
|
2904
|
+
* account for the organization, and every member's call will act through it (decision on
|
|
2905
|
+
* wildo-ai/wildo-ai#18) — which is why the grantor is named and the acknowledgement below recorded.
|
|
2906
|
+
*/
|
|
2907
|
+
delegation: z.enum(ExternalProvider_Connection_DelegationMode).optional(),
|
|
2908
|
+
/** The grantor acknowledged, before consenting at the vendor, that the whole organization will use their account. */
|
|
2909
|
+
organizationWideUseAcknowledged: z.boolean().optional(),
|
|
2910
|
+
/** See the person's event: the re-authorization that grew the grant (#1671). */
|
|
2911
|
+
addedScopes: z.array(z.string()).optional(),
|
|
2912
|
+
addedForOperationId: z.string().optional(),
|
|
2913
|
+
addedForPackageName: z.string().optional(),
|
|
2914
|
+
consentAccumulated: z.boolean().optional(),
|
|
2009
2915
|
});
|
|
2010
2916
|
/**
|
|
2011
2917
|
* The stored VALUE changed for a person's credential that already existed.
|
|
@@ -2021,6 +2927,13 @@ export const AuditableEvent_UserProviderCredential_RotatedEventDataSchema = z.ob
|
|
|
2021
2927
|
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_ROTATED),
|
|
2022
2928
|
userId: z.string(),
|
|
2023
2929
|
providerRef: z.string(),
|
|
2930
|
+
/**
|
|
2931
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2932
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2933
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2934
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2935
|
+
*/
|
|
2936
|
+
connectionRef: z.string().optional(),
|
|
2024
2937
|
secretSlug: z.string(),
|
|
2025
2938
|
credentialId: z.string(),
|
|
2026
2939
|
/** When the value it replaced was set — how long the retired secret was live. */
|
|
@@ -2041,30 +2954,74 @@ export const AuditableEvent_UserProviderCredential_UsedEventDataSchema = z.objec
|
|
|
2041
2954
|
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_USED),
|
|
2042
2955
|
userId: z.string(),
|
|
2043
2956
|
providerRef: z.string(),
|
|
2957
|
+
/**
|
|
2958
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2959
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
2960
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
2961
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
2962
|
+
*/
|
|
2963
|
+
connectionRef: z.string().optional(),
|
|
2964
|
+
/**
|
|
2965
|
+
* The npm package that owns the ref the grant was spent or granted through (#1725). On a shared connection several
|
|
2966
|
+
* refs — from several packages — spend one grant, so the connection alone does not say whose code acted.
|
|
2967
|
+
*/
|
|
2968
|
+
providerPackageName: z.string().optional(),
|
|
2044
2969
|
secretSlug: z.string(),
|
|
2045
2970
|
resolvedFrom: z.enum(ProviderCredentialResolutionSource),
|
|
2046
2971
|
credentialId: z.string(),
|
|
2047
2972
|
});
|
|
2048
2973
|
/**
|
|
2049
|
-
* The person's grant ended — by them removing it, or by their
|
|
2974
|
+
* The person's grant ended — by them removing it, by their own erasure, or by their account being deleted.
|
|
2050
2975
|
*
|
|
2051
2976
|
* `reason` matters more here than on the organization sibling. A credential removed by a cascade
|
|
2052
2977
|
* from a subject-erasure request is EVIDENCE that the erasure reached this store, and it is the
|
|
2053
2978
|
* evidence an operator produces when asked whether a person's third-party keys were destroyed. The
|
|
2054
2979
|
* row itself is gone by then, so the event is all that remains.
|
|
2055
2980
|
*
|
|
2981
|
+
* `deletedBy` exists for the one reason whose actor is NOT the person: `reason: USER_DELETED`, an
|
|
2982
|
+
* account deletion (#1016) — an administrator's hard delete or the invitation sweep reaping a pending
|
|
2983
|
+
* user — where it names the deleting principal (the administrator's user id, or the `SYSTEM` sentinel).
|
|
2984
|
+
* Absent on the owner's own revoke, whose actor is `userId` by construction.
|
|
2985
|
+
*
|
|
2056
2986
|
* assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — evidence that delegated authority
|
|
2057
2987
|
* was withdrawn.
|
|
2058
|
-
* assurance-control: WILDO.PRIVACY.
|
|
2059
|
-
* third-party credentials
|
|
2988
|
+
* assurance-control: WILDO.PRIVACY.ERASURE_PROPAGATION — evidence that erasure destroyed the
|
|
2989
|
+
* subject's third-party credentials: one row per destroyed credential with `reason: USER_ERASED`,
|
|
2990
|
+
* written by the credential resource's parent-cascade removal observer because the erasure cascade
|
|
2991
|
+
* removes these rows through the raw repository (#975).
|
|
2060
2992
|
*/
|
|
2061
2993
|
export const AuditableEvent_UserProviderCredential_DeletedEventDataSchema = z.object({
|
|
2062
2994
|
eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_DELETED),
|
|
2063
2995
|
userId: z.string(),
|
|
2064
2996
|
providerRef: z.string(),
|
|
2997
|
+
/**
|
|
2998
|
+
* The CONNECTION the credential belongs to (#1670) — the row's key and what its seal binds. `providerRef`
|
|
2999
|
+
* beside it names the ref the act went through (or, on a write, the ref that created the row); the two
|
|
3000
|
+
* differ once several refs of one vendor share a connection (#1725). Optional only because rows written
|
|
3001
|
+
* before #1670 in the immutable trail do not carry it; every emitter since sets it.
|
|
3002
|
+
*/
|
|
3003
|
+
connectionRef: z.string().optional(),
|
|
2065
3004
|
secretSlug: z.string(),
|
|
3005
|
+
deletedBy: z.string().optional(),
|
|
2066
3006
|
credentialId: z.string(),
|
|
2067
3007
|
reason: z.enum(ProviderCredentialDeletionReason),
|
|
3008
|
+
/**
|
|
3009
|
+
* What telling the VENDOR achieved, when the delete ended an OAuth2 grant (#545).
|
|
3010
|
+
*
|
|
3011
|
+
* Deleting our copy stops the application using a token; it does not end the grant at the vendor,
|
|
3012
|
+
* and a refresh token frequently never expires on its own. So this field is the difference between
|
|
3013
|
+
* a trail that says "we deleted our copy" and one that says whether the person's access was
|
|
3014
|
+
* actually withdrawn where it lives.
|
|
3015
|
+
*
|
|
3016
|
+
* Written by EVERY door that destroys a credential: the revoke doors (#545), and since #1711 the
|
|
3017
|
+
* cascade observers for a subject erasure, a hard delete of the user row, the invitation sweep and an
|
|
3018
|
+
* organization purge — each reads the token out of the pre-deletion row the cascade hands over. ABSENT
|
|
3019
|
+
* only on a row written before #1711, when the cascades attempted nothing. `not_declared` is the
|
|
3020
|
+
* ordinary answer for a vendor whose revocation is not RFC 7009-shaped, and for a pasted credential that
|
|
3021
|
+
* was never a grant; it is a recorded fact, not a failure. There is no retry: the token existed only in
|
|
3022
|
+
* the destroyed row, so this value is the whole record.
|
|
3023
|
+
*/
|
|
3024
|
+
vendorRevocation: z.enum(ProviderOAuth2RevocationOutcomeValues).optional(),
|
|
2068
3025
|
});
|
|
2069
3026
|
// Outbound M2M Webhook Event Data Schemas
|
|
2070
3027
|
/**
|
|
@@ -2097,17 +3054,225 @@ export const AuditableEvent_Webhook_EndpointTestDispatchedEventDataSchema = z.ob
|
|
|
2097
3054
|
/** `jti` of the signed probe, for correlation with the consumer's own logs. */
|
|
2098
3055
|
signatureJti: z.string(),
|
|
2099
3056
|
});
|
|
2100
|
-
//
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
3057
|
+
// Inbound Delivery Event Data Schemas (#1596)
|
|
3058
|
+
//
|
|
3059
|
+
// None of these carries the payload, a header value or an error message: the payload is the sender's
|
|
3060
|
+
// data (routinely a client's personal data) and lives on the delivery row, which is erased with its
|
|
3061
|
+
// organization. The trail names the delivery and says what happened to it.
|
|
3062
|
+
const InboundDeliveryAuditBase = {
|
|
3063
|
+
sourceKind: z.enum(InboundSourceKind),
|
|
3064
|
+
/** `{providerRef}:{endpointKey}`, `app` for an application endpoint. */
|
|
3065
|
+
sourceKey: z.string(),
|
|
3066
|
+
};
|
|
3067
|
+
export const AuditableEvent_InboundDelivery_RejectedEventDataSchema = z.object({
|
|
3068
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_REJECTED),
|
|
3069
|
+
...InboundDeliveryAuditBase,
|
|
3070
|
+
reason: z.enum(InboundDeliveryRejectionReason),
|
|
3071
|
+
/**
|
|
3072
|
+
* How many identical refusals (same source, same reason) this row records. Refusals are aggregated to
|
|
3073
|
+
* one row per source and reason per minute, so a flood of unsigned requests cannot grow the audit trail
|
|
3074
|
+
* without bound: the first refusal of a window is written at once (1), and the ones folded after it are
|
|
3075
|
+
* written when the window closes, as one row carrying their count. Summing `refusalCount` over the rows
|
|
3076
|
+
* gives the number of refusals — no row is counted twice. The one count that can be lost is the window
|
|
3077
|
+
* open when the backend process stops.
|
|
3078
|
+
*/
|
|
3079
|
+
refusalCount: z.number().int().positive(),
|
|
2109
3080
|
});
|
|
2110
|
-
export const
|
|
3081
|
+
export const AuditableEvent_InboundDelivery_AcceptedEventDataSchema = z.object({
|
|
3082
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_ACCEPTED),
|
|
3083
|
+
...InboundDeliveryAuditBase,
|
|
3084
|
+
inboundDeliveryId: z.string(),
|
|
3085
|
+
handlerRef: z.string(),
|
|
3086
|
+
resolvedScopeKind: z.enum(InboundResolvedScopeKind),
|
|
3087
|
+
organizationId: z.string().optional(),
|
|
3088
|
+
/**
|
|
3089
|
+
* The channel and how well the sender was known when the delivery was accepted (#1630, I8) — the record
|
|
3090
|
+
* of what a handler's work was triggered by. Identification only: the handler's roles are its declared
|
|
3091
|
+
* `actingRoles` whatever this says. Never the sender's address.
|
|
3092
|
+
*/
|
|
3093
|
+
channel: z.enum(InboundChannelKind),
|
|
3094
|
+
senderAssurance: z.enum(InboundSenderAssurance),
|
|
3095
|
+
});
|
|
3096
|
+
export const AuditableEvent_InboundDelivery_UnroutableEventDataSchema = z.object({
|
|
3097
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_UNROUTABLE),
|
|
3098
|
+
...InboundDeliveryAuditBase,
|
|
3099
|
+
inboundDeliveryId: z.string(),
|
|
3100
|
+
handlerRef: z.string(),
|
|
3101
|
+
reason: z.enum(InboundDeliveryUnroutableReason),
|
|
3102
|
+
});
|
|
3103
|
+
export const AuditableEvent_InboundDelivery_ProcessedEventDataSchema = z.object({
|
|
3104
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_PROCESSED),
|
|
3105
|
+
...InboundDeliveryAuditBase,
|
|
3106
|
+
inboundDeliveryId: z.string(),
|
|
3107
|
+
handlerRef: z.string(),
|
|
3108
|
+
attempt: z.number().int().positive(),
|
|
3109
|
+
});
|
|
3110
|
+
export const AuditableEvent_InboundDelivery_FailedEventDataSchema = z.object({
|
|
3111
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_FAILED),
|
|
3112
|
+
...InboundDeliveryAuditBase,
|
|
3113
|
+
inboundDeliveryId: z.string(),
|
|
3114
|
+
handlerRef: z.string(),
|
|
3115
|
+
attempt: z.number().int().positive(),
|
|
3116
|
+
/** A classification (an error type or reference), never an error message. */
|
|
3117
|
+
errorCode: z.string(),
|
|
3118
|
+
nextAttemptAt: z.date(),
|
|
3119
|
+
});
|
|
3120
|
+
export const AuditableEvent_InboundDelivery_DeadEventDataSchema = z.object({
|
|
3121
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_DEAD),
|
|
3122
|
+
...InboundDeliveryAuditBase,
|
|
3123
|
+
inboundDeliveryId: z.string(),
|
|
3124
|
+
handlerRef: z.string(),
|
|
3125
|
+
attempts: z.number().int().positive(),
|
|
3126
|
+
errorCode: z.string(),
|
|
3127
|
+
});
|
|
3128
|
+
export const AuditableEvent_InboundDelivery_ReplayedEventDataSchema = z.object({
|
|
3129
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_REPLAYED),
|
|
3130
|
+
...InboundDeliveryAuditBase,
|
|
3131
|
+
inboundDeliveryId: z.string(),
|
|
3132
|
+
handlerRef: z.string(),
|
|
3133
|
+
replayedBy: z.string(),
|
|
3134
|
+
/** The operator's written reason — free text, so this event's bag is SUBJECT_DETAIL for export. */
|
|
3135
|
+
justification: z.string(),
|
|
3136
|
+
});
|
|
3137
|
+
// Inbound Channel Event Data Schemas (#1630). Ids and named outcomes only — never an address, a subject
|
|
3138
|
+
// or a body: the correspondence lives in its thread and channel record, erasable there.
|
|
3139
|
+
export const AuditableEvent_InboundDelivery_BelowAssuranceEventDataSchema = z.object({
|
|
3140
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_DELIVERY_BELOW_ASSURANCE),
|
|
3141
|
+
channel: z.enum(InboundChannelKind),
|
|
3142
|
+
/** The handler selected for the message, whose minimum it did not meet. */
|
|
3143
|
+
handlerRef: z.string(),
|
|
3144
|
+
senderAssurance: z.enum(InboundSenderAssurance),
|
|
3145
|
+
minimumSenderAssurance: z.enum(InboundSenderAssurance),
|
|
3146
|
+
disposition: z.enum(InboundBelowMinimumDisposition),
|
|
3147
|
+
/** For `ROUTED_TO_BELOW_MINIMUM_HANDLER`: the handler that received it instead, and its delivery. */
|
|
3148
|
+
belowMinimumHandlerRef: z.string().optional(),
|
|
3149
|
+
inboundDeliveryId: z.string().optional(),
|
|
3150
|
+
/** The channel's id for the message (the provider message id for email). */
|
|
3151
|
+
channelMessageId: z.string(),
|
|
3152
|
+
organizationId: z.string(),
|
|
3153
|
+
});
|
|
3154
|
+
const InboundReplyAuditBase = {
|
|
3155
|
+
channel: z.enum(InboundChannelKind),
|
|
3156
|
+
threadId: z.string(),
|
|
3157
|
+
conversationMessageId: z.string(),
|
|
3158
|
+
submissionId: z.string(),
|
|
3159
|
+
};
|
|
3160
|
+
export const AuditableEvent_InboundReply_SentEventDataSchema = z.object({
|
|
3161
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_REPLY_SENT),
|
|
3162
|
+
...InboundReplyAuditBase,
|
|
3163
|
+
templateRef: z.string(),
|
|
3164
|
+
recipientCount: z.number().int().positive(),
|
|
3165
|
+
/** True when the provider reported it had already accepted this submission — a retried send, not a second email. */
|
|
3166
|
+
deduplicated: z.boolean(),
|
|
3167
|
+
});
|
|
3168
|
+
export const AuditableEvent_InboundReply_FailedEventDataSchema = z.object({
|
|
3169
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_REPLY_FAILED),
|
|
3170
|
+
...InboundReplyAuditBase,
|
|
3171
|
+
/** A classification, never an error message. */
|
|
3172
|
+
failureCode: z.string(),
|
|
3173
|
+
});
|
|
3174
|
+
export const AuditableEvent_InboundReplyToken_RevokedEventDataSchema = z.object({
|
|
3175
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_REPLY_TOKEN_REVOKED),
|
|
3176
|
+
threadId: z.string(),
|
|
3177
|
+
replyTokenId: z.string(),
|
|
3178
|
+
reason: z.enum(ReplyTokenRevocationReason),
|
|
3179
|
+
});
|
|
3180
|
+
export const AuditableEvent_InboundReplyToken_DowngradedEventDataSchema = z.object({
|
|
3181
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_REPLY_TOKEN_DOWNGRADED),
|
|
3182
|
+
threadId: z.string(),
|
|
3183
|
+
replyTokenId: z.string(),
|
|
3184
|
+
reason: z.enum(ReplyTokenDowngradeReason),
|
|
3185
|
+
/** The level the message was given instead of `THREAD_TOKEN_BOUND`. */
|
|
3186
|
+
derivedAssurance: z.enum(InboundSenderAssurance),
|
|
3187
|
+
});
|
|
3188
|
+
// Receiving Email Event Data Schemas (#1600). A domain and a client mailbox address are an ORGANIZATION's
|
|
3189
|
+
// infrastructure, not a person's data, so they are named. A received message is named by its row id only:
|
|
3190
|
+
// its sender, subject and filenames live in the `inboundEmails` row, erasable there.
|
|
3191
|
+
const OrganizationEmailDomainAuditBase = {
|
|
3192
|
+
organizationId: z.string(),
|
|
3193
|
+
organizationEmailDomainId: z.string(),
|
|
3194
|
+
domain: z.string(),
|
|
3195
|
+
};
|
|
3196
|
+
export const AuditableEvent_OrganizationEmailDomain_ClaimedEventDataSchema = z.object({
|
|
3197
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_EMAIL_DOMAIN_CLAIMED),
|
|
3198
|
+
...OrganizationEmailDomainAuditBase,
|
|
3199
|
+
sending: z.boolean(),
|
|
3200
|
+
receiving: z.boolean(),
|
|
3201
|
+
});
|
|
3202
|
+
export const AuditableEvent_OrganizationEmailDomain_OwnershipVerifiedEventDataSchema = z.object({
|
|
3203
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_EMAIL_DOMAIN_OWNERSHIP_VERIFIED),
|
|
3204
|
+
...OrganizationEmailDomainAuditBase,
|
|
3205
|
+
providerRef: z.string(),
|
|
3206
|
+
providerDomainId: z.string(),
|
|
3207
|
+
});
|
|
3208
|
+
export const AuditableEvent_OrganizationEmailDomain_VerifiedEventDataSchema = z.object({
|
|
3209
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_EMAIL_DOMAIN_VERIFIED),
|
|
3210
|
+
...OrganizationEmailDomainAuditBase,
|
|
3211
|
+
/** What the provider answered: VERIFIED, FAILED, or still PROVIDER_PENDING (its verification is asynchronous). */
|
|
3212
|
+
status: z.enum(OrganizationEmailDomainStatus),
|
|
3213
|
+
});
|
|
3214
|
+
export const AuditableEvent_OrganizationEmailDomain_SuspendedEventDataSchema = z.object({
|
|
3215
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_EMAIL_DOMAIN_SUSPENDED),
|
|
3216
|
+
...OrganizationEmailDomainAuditBase,
|
|
3217
|
+
reason: z.enum(OrganizationEmailDomainSuspensionReason),
|
|
3218
|
+
});
|
|
3219
|
+
export const AuditableEvent_OrganizationEmailDomain_RemovedEventDataSchema = z.object({
|
|
3220
|
+
eventType: z.literal(CoreAuditableEventType.ORGANIZATION_EMAIL_DOMAIN_REMOVED),
|
|
3221
|
+
...OrganizationEmailDomainAuditBase,
|
|
3222
|
+
trigger: z.enum(OrganizationEmailDomainRemovalTrigger),
|
|
3223
|
+
/** Whether a provider domain existed and was deleted there (false for a claim that never proved ownership). */
|
|
3224
|
+
providerDomainDeleted: z.boolean(),
|
|
3225
|
+
});
|
|
3226
|
+
/**
|
|
3227
|
+
* A client mailbox links two organizations, so the event is written to BOTH trails: the firm that owns the mailbox,
|
|
3228
|
+
* and the client whose organization it routes mail into. `organizationId` is the trail the row is in.
|
|
3229
|
+
*/
|
|
3230
|
+
const ClientMailboxAuditBase = {
|
|
3231
|
+
organizationId: z.string(),
|
|
3232
|
+
clientMailboxId: z.string(),
|
|
3233
|
+
address: z.string(),
|
|
3234
|
+
emailDomainId: z.string(),
|
|
3235
|
+
serviceProviderRelationshipId: z.string(),
|
|
3236
|
+
/** The firm that owns the domain and the mailbox. */
|
|
3237
|
+
firmOrganizationId: z.string(),
|
|
3238
|
+
/** The client organization the mailbox routes into. */
|
|
3239
|
+
clientOrganizationId: z.string(),
|
|
3240
|
+
};
|
|
3241
|
+
export const AuditableEvent_ClientMailbox_CreatedEventDataSchema = z.object({
|
|
3242
|
+
eventType: z.literal(CoreAuditableEventType.CLIENT_MAILBOX_CREATED),
|
|
3243
|
+
...ClientMailboxAuditBase,
|
|
3244
|
+
});
|
|
3245
|
+
export const AuditableEvent_ClientMailbox_RemovedEventDataSchema = z.object({
|
|
3246
|
+
eventType: z.literal(CoreAuditableEventType.CLIENT_MAILBOX_REMOVED),
|
|
3247
|
+
...ClientMailboxAuditBase,
|
|
3248
|
+
});
|
|
3249
|
+
export const AuditableEvent_InboundEmail_AttachmentWithheldEventDataSchema = z.object({
|
|
3250
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_EMAIL_ATTACHMENT_WITHHELD),
|
|
3251
|
+
organizationId: z.string(),
|
|
3252
|
+
inboundEmailId: z.string(),
|
|
3253
|
+
reason: z.enum(InboundEmailWithheldReason),
|
|
3254
|
+
/** The stored (quarantined) file, when one was stored. */
|
|
3255
|
+
fileId: z.string().optional(),
|
|
3256
|
+
});
|
|
3257
|
+
export const AuditableEvent_InboundEmail_RejectedLimitEventDataSchema = z.object({
|
|
3258
|
+
eventType: z.literal(CoreAuditableEventType.INBOUND_EMAIL_REJECTED_LIMIT),
|
|
3259
|
+
organizationId: z.string(),
|
|
3260
|
+
inboundEmailId: z.string(),
|
|
3261
|
+
limit: z.enum(InboundEmailLimit),
|
|
3262
|
+
sizeBytes: z.number().int().nonnegative(),
|
|
3263
|
+
attachmentCount: z.number().int().nonnegative(),
|
|
3264
|
+
});
|
|
3265
|
+
// SCIM Directory Provisioning Event Data Schemas
|
|
3266
|
+
export const AuditableEvent_SCIM_TokenCreatedEventDataSchema = z.object({
|
|
3267
|
+
eventType: z.literal(CoreAuditableEventType.SCIM_TOKEN_CREATED),
|
|
3268
|
+
organizationId: z.string(),
|
|
3269
|
+
tokenDisplayName: z.string(),
|
|
3270
|
+
createdByUserId: z.string(),
|
|
3271
|
+
expiresAt: z.string().optional(),
|
|
3272
|
+
ipAddress: z.string(),
|
|
3273
|
+
userAgent: z.string(),
|
|
3274
|
+
});
|
|
3275
|
+
export const AuditableEvent_SCIM_TokenRevokedEventDataSchema = z.object({
|
|
2111
3276
|
eventType: z.literal(CoreAuditableEventType.SCIM_TOKEN_REVOKED),
|
|
2112
3277
|
organizationId: z.string(),
|
|
2113
3278
|
tokenDisplayName: z.string(),
|
|
@@ -2190,6 +3355,18 @@ export const AuditableEvent_User_RegisteredEventDataSchema = z.object({
|
|
|
2190
3355
|
email: z.string(),
|
|
2191
3356
|
ipAddress: z.string(),
|
|
2192
3357
|
userAgent: z.string(),
|
|
3358
|
+
/**
|
|
3359
|
+
* HOW the account was acquired — the same vocabulary the registration policy is authored in, so "who
|
|
3360
|
+
* registered through which door" is answered by the trail rather than reconstructed from neighbouring
|
|
3361
|
+
* events. A first social or enterprise sign-in creates an account exactly as `/auth/register` does, and
|
|
3362
|
+
* until #1141 only the password door recorded it.
|
|
3363
|
+
*
|
|
3364
|
+
* Optional on the schema only because rows written before the field existed carry none; every emitter
|
|
3365
|
+
* states it (`logUserRegistered` requires it).
|
|
3366
|
+
*/
|
|
3367
|
+
acquisitionChannel: z.enum(RegistrationAcquisitionChannel).optional(),
|
|
3368
|
+
/** The external identity provider that vouched for the account, for a social or enterprise sign-in. */
|
|
3369
|
+
providerRef: z.string().optional(),
|
|
2193
3370
|
});
|
|
2194
3371
|
export const AuditableEvent_User_EmailVerifiedEventDataSchema = z.object({
|
|
2195
3372
|
eventType: z.literal(CoreAuditableEventType.USER_EMAIL_VERIFIED),
|
|
@@ -2545,7 +3722,8 @@ export const AuditableEvent_FieldAccess_EventDataSchema = z.object({
|
|
|
2545
3722
|
*
|
|
2546
3723
|
* ## Correlation across a cascade
|
|
2547
3724
|
*
|
|
2548
|
-
*
|
|
3725
|
+
* The framework-managed lane covers API, internal call and repository-only writes; OVERRIDE_ALL
|
|
3726
|
+
* implementations own their committed emission. A framework-managed tenant deletion
|
|
2549
3727
|
* produces one row per cascaded child. The top-level `correlationId` is inherited by every sub-call
|
|
2550
3728
|
* context and preserved across mid-flight operation corrections, so it groups the whole fan-out to one request;
|
|
2551
3729
|
* `subCallDepth` separates the initiating operation (0) from what it cascaded into.
|
|
@@ -2554,7 +3732,8 @@ export const AuditableEvent_FieldAccess_EventDataSchema = z.object({
|
|
|
2554
3732
|
*
|
|
2555
3733
|
* `changedFields` names every field the write touched — a field NAME is not personal data, so it is
|
|
2556
3734
|
* always safe and always recorded. `fieldEvidence` carries before/after VALUES only for fields the
|
|
2557
|
-
* schema marks `.isAuditEvidence()`.
|
|
3735
|
+
* schema marks `.isAuditEvidence()`. The separate `reason` records an explicitly selected operator
|
|
3736
|
+
* justification, not an arbitrary request payload or a copy of a mutable resource reason field.
|
|
2558
3737
|
*
|
|
2559
3738
|
* Values are limited on purpose: audit rows replicate to the per-org SIEM and to the immutable
|
|
2560
3739
|
* ledger, and **the immutable ledger cannot be scrubbed** — so copying arbitrary personal data into
|
|
@@ -2584,10 +3763,26 @@ export const AuditableEvent_ResourceOperationPerformed_EventDataSchema = z.objec
|
|
|
2584
3763
|
/** `true` for the bulk form, whose subject is a set rather than one row. */
|
|
2585
3764
|
isBulkOperation: z.boolean().optional(),
|
|
2586
3765
|
// ── Subject ──
|
|
2587
|
-
/** The row acted on. Absent for bulk operations,
|
|
3766
|
+
/** The row acted on. Absent for bulk operations, whose subject is the set below. */
|
|
2588
3767
|
resourceId: z.string().optional(),
|
|
2589
3768
|
/** Bulk operations only: how many rows the write affected. */
|
|
2590
3769
|
affectedRecordCount: z.number().optional(),
|
|
3770
|
+
/**
|
|
3771
|
+
* Bulk operations only: WHICH rows the write affected.
|
|
3772
|
+
*
|
|
3773
|
+
* A count answers "how much"; a trail has to answer "what". Without this, one actor changing
|
|
3774
|
+
* forty rows left a single record saying `affectedRecordCount: 40` and naming none of them — so
|
|
3775
|
+
* the question an investigator asks first, "who changed THIS row", had no answer for any write
|
|
3776
|
+
* that was not single-row, which is exactly the case where one actor touches many records at once.
|
|
3777
|
+
*
|
|
3778
|
+
* Bounded by the batch maximum a synchronous bulk already enforces, so this is a complete list
|
|
3779
|
+
* rather than a sample: the background lane does not produce it at all, because it runs the
|
|
3780
|
+
* single-row twin per id and each row audits itself.
|
|
3781
|
+
*
|
|
3782
|
+
* Rides `eventData`, which the audit store persists as an unparsed record — so naming the rows
|
|
3783
|
+
* costs no column and no migration.
|
|
3784
|
+
*/
|
|
3785
|
+
affectedResourceIds: z.array(z.string()).optional(),
|
|
2591
3786
|
// ── Principal (the row's `userId` / `organizationId` / `applicationId` carry the identity) ──
|
|
2592
3787
|
/**
|
|
2593
3788
|
* The caller's roles AS THEY WERE at decision time. Roles are the framework's single
|
|
@@ -2604,6 +3799,12 @@ export const AuditableEvent_ResourceOperationPerformed_EventDataSchema = z.objec
|
|
|
2604
3799
|
/** `0` for the operation the caller invoked; deeper for what it cascaded into. */
|
|
2605
3800
|
subCallDepth: z.number(),
|
|
2606
3801
|
// ── Effect ──
|
|
3802
|
+
/**
|
|
3803
|
+
* Operator justification explicitly selected from the request by the operation's audit contract.
|
|
3804
|
+
* Historical evidence, independent of mutable resource fields such as cancellationReason.
|
|
3805
|
+
* It is not inferred from arbitrary request fields and must not contain secrets.
|
|
3806
|
+
*/
|
|
3807
|
+
reason: z.string().optional(),
|
|
2607
3808
|
/** Every field the write touched. Names only — always safe, always recorded. */
|
|
2608
3809
|
changedFields: z.array(z.string()).optional(),
|
|
2609
3810
|
/**
|
|
@@ -2727,6 +3928,101 @@ export const AuditableEvent_ResourceOperationPerformed_EventDataSchema = z.objec
|
|
|
2727
3928
|
* assurance-control: WILDO.ACCESS.CROSS_TENANT_ADMINISTRATION
|
|
2728
3929
|
* assurance-control: WILDO.ACCESS.PRIVILEGE_EVIDENCE — evidence of a privileged assignment's full life.
|
|
2729
3930
|
*/
|
|
3931
|
+
/**
|
|
3932
|
+
* The fields both legal-hold events carry: which hold, which tenant, what it covers and on what ground.
|
|
3933
|
+
* The `justification` / `releaseReason` prose is NOT carried — it is free text most likely to name a third
|
|
3934
|
+
* party, and it stays on the hold row, which the tenant and the operator can read.
|
|
3935
|
+
*/
|
|
3936
|
+
const LegalHoldAuditEventFields = {
|
|
3937
|
+
holdId: z.string(),
|
|
3938
|
+
heldOrganizationId: z.string(),
|
|
3939
|
+
scopeKind: z.enum(LegalHoldScopeKind),
|
|
3940
|
+
legalGround: z.enum(LegalHoldGround),
|
|
3941
|
+
placementTier: z.enum(LegalHoldPlacementTier),
|
|
3942
|
+
/** `RESOURCE_ROWS` only. */
|
|
3943
|
+
heldResourceType: z.string().optional(),
|
|
3944
|
+
/** `RESOURCE_ROWS` only: how many rows the hold lists (absent = every row of the resource type). */
|
|
3945
|
+
heldRowCount: z.number().int().min(0).optional(),
|
|
3946
|
+
/** `DATA_SUBJECT` only. */
|
|
3947
|
+
subjectUserId: z.string().optional(),
|
|
3948
|
+
};
|
|
3949
|
+
/** A legal hold was placed (#1634). */
|
|
3950
|
+
export const AuditableEvent_LegalHoldPlaced_EventDataSchema = z.object({
|
|
3951
|
+
eventType: z.literal(CoreAuditableEventType.LEGAL_HOLD_PLACED),
|
|
3952
|
+
...LegalHoldAuditEventFields,
|
|
3953
|
+
placedByUserId: z.string(),
|
|
3954
|
+
});
|
|
3955
|
+
/**
|
|
3956
|
+
* A model-cost period aggregate was linked to its invoice (#1598). Identifiers, the period and the currency
|
|
3957
|
+
* only: no amount (the aggregate row holds it), no personal data.
|
|
3958
|
+
*/
|
|
3959
|
+
export const AuditableEvent_ModelCostAggregateInvoiceLinked_EventDataSchema = z.object({
|
|
3960
|
+
eventType: z.literal(CoreAuditableEventType.MODEL_COST_AGGREGATE_INVOICE_LINKED),
|
|
3961
|
+
aggregateId: z.string(),
|
|
3962
|
+
/** The tenant whose cost the aggregate records, and whose invoice it is. */
|
|
3963
|
+
billedOrganizationId: z.string(),
|
|
3964
|
+
/** First instant of the aggregate's calendar month (UTC), ISO. */
|
|
3965
|
+
periodStart: z.string(),
|
|
3966
|
+
currency: z.string(),
|
|
3967
|
+
organizationInvoiceRefId: z.string(),
|
|
3968
|
+
/** The administrator (or the billing flow's principal) who linked it. */
|
|
3969
|
+
linkedByUserId: z.string().optional(),
|
|
3970
|
+
});
|
|
3971
|
+
/** An organization's content-capture setting changed (#1599). The setting, never any content. */
|
|
3972
|
+
export const AuditableEvent_CorrectionCaptureSettingChanged_EventDataSchema = z.object({
|
|
3973
|
+
eventType: z.literal(CoreAuditableEventType.CORRECTION_CAPTURE_SETTING_CHANGED),
|
|
3974
|
+
settingOrganizationId: z.string(),
|
|
3975
|
+
/** `metadata_only` / `with_content`, before and after. */
|
|
3976
|
+
previousContentCapture: z.string().optional(),
|
|
3977
|
+
contentCapture: z.string(),
|
|
3978
|
+
/** Whether a purpose is stated (the purpose text is on the setting row, not on the trail). */
|
|
3979
|
+
purposeStated: z.boolean(),
|
|
3980
|
+
contentReaderRole: z.string().optional(),
|
|
3981
|
+
narrowedToCaseCount: z.number().int().min(0),
|
|
3982
|
+
changedByUserId: z.string().optional(),
|
|
3983
|
+
});
|
|
3984
|
+
/** An organization's evaluation-export authorisation changed (#1599). The basis and counts, never case identities. */
|
|
3985
|
+
export const AuditableEvent_EvaluationExportAuthorizationChanged_EventDataSchema = z.object({
|
|
3986
|
+
eventType: z.literal(CoreAuditableEventType.EVALUATION_EXPORT_AUTHORIZATION_CHANGED),
|
|
3987
|
+
authorizationOrganizationId: z.string(),
|
|
3988
|
+
status: z.string(),
|
|
3989
|
+
previousStatus: z.string().optional(),
|
|
3990
|
+
/** Absent when the authorisation holds none (NOT_GRANTED). */
|
|
3991
|
+
basis: z.string().optional(),
|
|
3992
|
+
clientConsentCount: z.number().int().min(0),
|
|
3993
|
+
excludedCaseCount: z.number().int().min(0),
|
|
3994
|
+
changedByUserId: z.string().optional(),
|
|
3995
|
+
});
|
|
3996
|
+
/** An evaluation dataset was exported (#1599). The ledger row names every record; the trail names the export. */
|
|
3997
|
+
export const AuditableEvent_EvaluationDatasetExported_EventDataSchema = z.object({
|
|
3998
|
+
eventType: z.literal(CoreAuditableEventType.EVALUATION_DATASET_EXPORTED),
|
|
3999
|
+
exportId: z.string(),
|
|
4000
|
+
exportOrganizationId: z.string(),
|
|
4001
|
+
agentRef: z.string(),
|
|
4002
|
+
basis: z.string(),
|
|
4003
|
+
recordCount: z.number().int().min(0),
|
|
4004
|
+
windowFrom: z.string(),
|
|
4005
|
+
windowTo: z.string(),
|
|
4006
|
+
destination: z.string(),
|
|
4007
|
+
exportedByUserId: z.string().optional(),
|
|
4008
|
+
});
|
|
4009
|
+
/** An evaluation-dataset export was refused (#1599 I7). */
|
|
4010
|
+
export const AuditableEvent_EvaluationDatasetExportRefused_EventDataSchema = z.object({
|
|
4011
|
+
eventType: z.literal(CoreAuditableEventType.EVALUATION_DATASET_EXPORT_REFUSED),
|
|
4012
|
+
exportOrganizationId: z.string(),
|
|
4013
|
+
agentRef: z.string(),
|
|
4014
|
+
/** Why: no authorisation recorded, or it is revoked. */
|
|
4015
|
+
reason: z.enum(EvaluationDatasetExportRefusalReason),
|
|
4016
|
+
attemptedByUserId: z.string().optional(),
|
|
4017
|
+
});
|
|
4018
|
+
/** A legal hold was released (#1634). */
|
|
4019
|
+
export const AuditableEvent_LegalHoldReleased_EventDataSchema = z.object({
|
|
4020
|
+
eventType: z.literal(CoreAuditableEventType.LEGAL_HOLD_RELEASED),
|
|
4021
|
+
...LegalHoldAuditEventFields,
|
|
4022
|
+
releasedByUserId: z.string(),
|
|
4023
|
+
/** How long the hold was in force, so a reviewer sees the suspension window without a join. */
|
|
4024
|
+
heldForSeconds: z.number().int().min(0),
|
|
4025
|
+
});
|
|
2730
4026
|
export const AuditableEvent_PlatformAccessGrantLifecycle_EventDataSchema = z.object({
|
|
2731
4027
|
eventType: z.literal(CoreAuditableEventType.PLATFORM_ACCESS_GRANT_LIFECYCLE),
|
|
2732
4028
|
/** Which transition this row records. */
|
|
@@ -2766,6 +4062,243 @@ export const AuditableEvent_PlatformAccessGrantLifecycle_EventDataSchema = z.obj
|
|
|
2766
4062
|
decidedByUserId: z.string().optional(),
|
|
2767
4063
|
/** Their stated reason, when they gave one. */
|
|
2768
4064
|
decisionReason: z.string().optional(),
|
|
4065
|
+
/**
|
|
4066
|
+
* The machine credential an application-wide grant is bound to, when it is (#297). Present on EVERY transition
|
|
4067
|
+
* of such a grant, so the second administrator's signature and every later reader see which credential the
|
|
4068
|
+
* elevation reaches — a request naming a machine must never read, in the trail, as the requester's own window.
|
|
4069
|
+
*/
|
|
4070
|
+
grantedMachineCredential: ExecutionContext_MachineCredentialSchema.optional(),
|
|
4071
|
+
});
|
|
4072
|
+
/**
|
|
4073
|
+
* One transition in the life of a service-provider relationship (#1597).
|
|
4074
|
+
*
|
|
4075
|
+
* Read it to answer "which firm could reach this tenant, under what scope, since when — and who decided".
|
|
4076
|
+
* Written once to the CLIENT's trail and once to the FIRM's: the same facts, each organization reading
|
|
4077
|
+
* them in its own tenant. `purpose` and `decisionReason` are free text people typed, so they are carried
|
|
4078
|
+
* for the tenants' own trails and are NOT exported to a SIEM by default.
|
|
4079
|
+
*
|
|
4080
|
+
* assurance-control: WILDO.ACCESS.PRIVILEGE_EVIDENCE
|
|
4081
|
+
* assurance-control: WILDO.PRIVACY.THIRD_PARTY_PROCESSING
|
|
4082
|
+
*/
|
|
4083
|
+
export const AuditableEvent_ServiceProviderRelationshipLifecycle_EventDataSchema = z.object({
|
|
4084
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_RELATIONSHIP_LIFECYCLE),
|
|
4085
|
+
transition: z.enum(ServiceProviderRelationshipTransition),
|
|
4086
|
+
relationshipId: z.string(),
|
|
4087
|
+
clientOrganizationId: z.string(),
|
|
4088
|
+
providerOrganizationId: z.string(),
|
|
4089
|
+
resultingStatus: z.enum(ServiceProviderRelationshipStatus),
|
|
4090
|
+
/** The role the relationship confers after this transition. */
|
|
4091
|
+
role: z.string(),
|
|
4092
|
+
/** Its scope after this transition; empty ⇒ organization-wide. */
|
|
4093
|
+
organizationUnitIds: z.array(z.string()),
|
|
4094
|
+
endsAt: z.date().optional(),
|
|
4095
|
+
proposedByOrganizationId: z.string(),
|
|
4096
|
+
/** The person who acted, and on which side. Absent for the expiry sweep. */
|
|
4097
|
+
actorUserId: z.string().optional(),
|
|
4098
|
+
actorOrganizationId: z.string().optional(),
|
|
4099
|
+
purpose: z.string().optional(),
|
|
4100
|
+
decisionReason: z.string().optional(),
|
|
4101
|
+
/** How the firm's experts are admitted after this transition (#1612) — what `EXPERT_ADMISSION_POLICY_CHANGED` changed. */
|
|
4102
|
+
expertAdmissionPolicy: z.enum(ServiceProviderExpertAdmissionPolicy).optional(),
|
|
4103
|
+
});
|
|
4104
|
+
/** A firm machine client admitted into / removed from a client organization under a relationship (#1597, S3). */
|
|
4105
|
+
export const AuditableEvent_ServiceProviderMachineClientAdmissionChanged_EventDataSchema = z.object({
|
|
4106
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_MACHINE_CLIENT_ADMISSION_CHANGED),
|
|
4107
|
+
admitted: z.boolean(),
|
|
4108
|
+
relationshipId: z.string(),
|
|
4109
|
+
clientOrganizationId: z.string(),
|
|
4110
|
+
providerOrganizationId: z.string(),
|
|
4111
|
+
oauthClientId: z.string(),
|
|
4112
|
+
actorUserId: z.string().optional(),
|
|
4113
|
+
});
|
|
4114
|
+
/** An expert assigned to a client relationship by their firm (#1597). */
|
|
4115
|
+
export const AuditableEvent_ServiceProviderExpertAssigned_EventDataSchema = z.object({
|
|
4116
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_EXPERT_ASSIGNED),
|
|
4117
|
+
assignmentId: z.string(),
|
|
4118
|
+
relationshipId: z.string(),
|
|
4119
|
+
clientOrganizationId: z.string(),
|
|
4120
|
+
providerOrganizationId: z.string(),
|
|
4121
|
+
expertUserId: z.string(),
|
|
4122
|
+
actorUserId: z.string().optional(),
|
|
4123
|
+
});
|
|
4124
|
+
/** An expert's assignment to a client relationship ended by their firm (#1597). */
|
|
4125
|
+
export const AuditableEvent_ServiceProviderExpertUnassigned_EventDataSchema = z.object({
|
|
4126
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_EXPERT_UNASSIGNED),
|
|
4127
|
+
assignmentId: z.string(),
|
|
4128
|
+
relationshipId: z.string(),
|
|
4129
|
+
clientOrganizationId: z.string(),
|
|
4130
|
+
providerOrganizationId: z.string(),
|
|
4131
|
+
expertUserId: z.string(),
|
|
4132
|
+
actorUserId: z.string().optional(),
|
|
4133
|
+
});
|
|
4134
|
+
/**
|
|
4135
|
+
* The facts every per-expert approval event carries (#1612). Identical in the client's and the firm's trail — which
|
|
4136
|
+
* is why none of them names the client administrator who answered: the firm reads its copy, and the decider is on
|
|
4137
|
+
* the decision's own `human_decision_resolved` row in the CLIENT's trail, joined by `decisionRef`.
|
|
4138
|
+
*
|
|
4139
|
+
* assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE
|
|
4140
|
+
* assurance-control: WILDO.PRIVACY.THIRD_PARTY_PROCESSING
|
|
4141
|
+
*/
|
|
4142
|
+
const ServiceProviderExpertApprovalEventShape = {
|
|
4143
|
+
/** The human decision this approval is — the key that joins every row about it. */
|
|
4144
|
+
decisionRef: z.string().trim().min(1),
|
|
4145
|
+
assignmentId: z.string(),
|
|
4146
|
+
relationshipId: z.string(),
|
|
4147
|
+
clientOrganizationId: z.string(),
|
|
4148
|
+
providerOrganizationId: z.string(),
|
|
4149
|
+
expertUserId: z.string(),
|
|
4150
|
+
};
|
|
4151
|
+
/** A firm's assignment now waits for the client's approval (#1612). Actor: the firm administrator who assigned. */
|
|
4152
|
+
export const AuditableEvent_ServiceProviderExpertApprovalRequested_EventDataSchema = z.object({
|
|
4153
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_EXPERT_APPROVAL_REQUESTED),
|
|
4154
|
+
...ServiceProviderExpertApprovalEventShape,
|
|
4155
|
+
/** The policy that made the assignment wait — the client's, read at assignment time. */
|
|
4156
|
+
expertAdmissionPolicy: z.enum(ServiceProviderExpertAdmissionPolicy),
|
|
4157
|
+
/** The role the expert would receive. */
|
|
4158
|
+
role: z.string(),
|
|
4159
|
+
actorUserId: z.string().optional(),
|
|
4160
|
+
});
|
|
4161
|
+
/** The client approved, and the expert was admitted (#1612). */
|
|
4162
|
+
export const AuditableEvent_ServiceProviderExpertApprovalGranted_EventDataSchema = z.object({
|
|
4163
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_EXPERT_APPROVAL_GRANTED),
|
|
4164
|
+
...ServiceProviderExpertApprovalEventShape,
|
|
4165
|
+
role: z.string(),
|
|
4166
|
+
});
|
|
4167
|
+
/** The expert was not admitted (#1612). */
|
|
4168
|
+
export const AuditableEvent_ServiceProviderExpertApprovalDenied_EventDataSchema = z.object({
|
|
4169
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_EXPERT_APPROVAL_DENIED),
|
|
4170
|
+
...ServiceProviderExpertApprovalEventShape,
|
|
4171
|
+
denialReason: z.enum(ServiceProviderExpertApprovalDenialReason),
|
|
4172
|
+
});
|
|
4173
|
+
/** Nobody answered in time (#1612). */
|
|
4174
|
+
export const AuditableEvent_ServiceProviderExpertApprovalLapsed_EventDataSchema = z.object({
|
|
4175
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_EXPERT_APPROVAL_LAPSED),
|
|
4176
|
+
...ServiceProviderExpertApprovalEventShape,
|
|
4177
|
+
});
|
|
4178
|
+
/**
|
|
4179
|
+
* The facts of one delegated capability grant (#1631), identical in the client's and the firm's trail: which
|
|
4180
|
+
* capability, lent through which relationship, until when.
|
|
4181
|
+
*
|
|
4182
|
+
* assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE
|
|
4183
|
+
* assurance-control: WILDO.ACCESS.PRIVILEGE_EVIDENCE
|
|
4184
|
+
*/
|
|
4185
|
+
const ServiceProviderCapabilityGrantEventShape = {
|
|
4186
|
+
grantId: z.string(),
|
|
4187
|
+
relationshipId: z.string(),
|
|
4188
|
+
clientOrganizationId: z.string(),
|
|
4189
|
+
providerOrganizationId: z.string(),
|
|
4190
|
+
capability: z.enum(DelegatedAdministrativeCapability),
|
|
4191
|
+
/** Whether only an owner could lend it — the CRITICAL rows. */
|
|
4192
|
+
securityCritical: z.boolean(),
|
|
4193
|
+
endsAt: z.date(),
|
|
4194
|
+
/** The client person who acted. Absent when the relationship's end revoked it with nobody acting. */
|
|
4195
|
+
actorUserId: z.string().optional(),
|
|
4196
|
+
};
|
|
4197
|
+
/** A capability was lent (#1631). */
|
|
4198
|
+
export const AuditableEvent_ServiceProviderCapabilityGranted_EventDataSchema = z.object({
|
|
4199
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_CAPABILITY_GRANTED),
|
|
4200
|
+
...ServiceProviderCapabilityGrantEventShape,
|
|
4201
|
+
});
|
|
4202
|
+
/** A lent capability was revoked (#1631). */
|
|
4203
|
+
export const AuditableEvent_ServiceProviderCapabilityRevoked_EventDataSchema = z.object({
|
|
4204
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_CAPABILITY_REVOKED),
|
|
4205
|
+
...ServiceProviderCapabilityGrantEventShape,
|
|
4206
|
+
/** True when the relationship's ending revoked it, rather than a client administrator. */
|
|
4207
|
+
byRelationshipEnd: z.boolean(),
|
|
4208
|
+
/**
|
|
4209
|
+
* Why it ended (#1631 review F10): a client administrator revoked it, the relationship ended, or the relationship was
|
|
4210
|
+
* narrowed to organization units (which no capability can be carried by). Tells a narrowing apart from a manual
|
|
4211
|
+
* revocation, which `byRelationshipEnd` alone cannot.
|
|
4212
|
+
*/
|
|
4213
|
+
endCause: z.enum(ServiceProviderCapabilityGrantEndCause).optional(),
|
|
4214
|
+
/** How many standing credentials the firm had obtained under the grant were ended with it (review F2). */
|
|
4215
|
+
endedCredentials: z.number().int().nonnegative().optional(),
|
|
4216
|
+
});
|
|
4217
|
+
/** A client's decision about trusting a firm's identity provider's MFA on one relationship (#1633). */
|
|
4218
|
+
export const AuditableEvent_ServiceProviderMfaTrustChanged_EventDataSchema = z.object({
|
|
4219
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_MFA_TRUST_CHANGED),
|
|
4220
|
+
relationshipId: z.string(),
|
|
4221
|
+
clientOrganizationId: z.string(),
|
|
4222
|
+
providerOrganizationId: z.string(),
|
|
4223
|
+
previousProviderMfaTrust: z.enum(ServiceProviderMfaTrust),
|
|
4224
|
+
providerMfaTrust: z.enum(ServiceProviderMfaTrust),
|
|
4225
|
+
actorUserId: z.string().optional(),
|
|
4226
|
+
});
|
|
4227
|
+
/**
|
|
4228
|
+
* A factor recorded on an expert's session for one client organization (#1633).
|
|
4229
|
+
*
|
|
4230
|
+
* Names the factor and its SOURCE, never the proof itself. `identityProviderOrganizationId` is present exactly when
|
|
4231
|
+
* the source is the firm's trusted identity provider.
|
|
4232
|
+
*
|
|
4233
|
+
* assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE — the resource tenant's authentication policy is enforced on external experts, per request.
|
|
4234
|
+
*/
|
|
4235
|
+
export const AuditableEvent_ServiceProviderClientAuthenticationSatisfied_EventDataSchema = z.object({
|
|
4236
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_CLIENT_AUTHENTICATION_SATISFIED),
|
|
4237
|
+
organizationId: z.string(),
|
|
4238
|
+
relationshipId: z.string(),
|
|
4239
|
+
providerOrganizationId: z.string(),
|
|
4240
|
+
expertUserId: z.string(),
|
|
4241
|
+
factor: z.enum(AuthMethod),
|
|
4242
|
+
source: z.enum(FactorSatisfactionSource),
|
|
4243
|
+
identityProviderOrganizationId: z.string().optional(),
|
|
4244
|
+
});
|
|
4245
|
+
/** A firm's decision about collecting activity metadata on its own experts' client work (#1632). */
|
|
4246
|
+
export const AuditableEvent_ServiceProviderActivityFeedDecided_EventDataSchema = z.object({
|
|
4247
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_ACTIVITY_FEED_DECIDED),
|
|
4248
|
+
providerOrganizationId: z.string(),
|
|
4249
|
+
previousStatus: z.enum(ServiceProviderActivityFeedStatus),
|
|
4250
|
+
status: z.enum(ServiceProviderActivityFeedStatus),
|
|
4251
|
+
acknowledgedWorkerConsultationNotice: z.boolean(),
|
|
4252
|
+
actorUserId: z.string().optional(),
|
|
4253
|
+
});
|
|
4254
|
+
/** A client's decision about how much a firm's activity feed may say about work in it (#1632). */
|
|
4255
|
+
export const AuditableEvent_ServiceProviderActivityFeedDisclosureChanged_EventDataSchema = z.object({
|
|
4256
|
+
eventType: z.literal(CoreAuditableEventType.SERVICE_PROVIDER_ACTIVITY_FEED_DISCLOSURE_CHANGED),
|
|
4257
|
+
relationshipId: z.string(),
|
|
4258
|
+
clientOrganizationId: z.string(),
|
|
4259
|
+
providerOrganizationId: z.string(),
|
|
4260
|
+
previousActivityFeedDisclosure: z.enum(ServiceProviderActivityFeedDisclosure),
|
|
4261
|
+
activityFeedDisclosure: z.enum(ServiceProviderActivityFeedDisclosure),
|
|
4262
|
+
actorUserId: z.string().optional(),
|
|
4263
|
+
});
|
|
4264
|
+
/**
|
|
4265
|
+
* One transition in the life of a system-of-record partition assignment.
|
|
4266
|
+
*
|
|
4267
|
+
* Read it to answer "who could see this remote company, and when did that start or stop". The row
|
|
4268
|
+
* names both units on a move, so a timeline reconstructed from these events is complete without
|
|
4269
|
+
* joining anything: each row carries the state it left as well as the state it reached.
|
|
4270
|
+
*
|
|
4271
|
+
* assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE
|
|
4272
|
+
* assurance-control: WILDO.ACCESS.PRIVILEGE_EVIDENCE
|
|
4273
|
+
*/
|
|
4274
|
+
export const AuditableEvent_SystemOfRecordPartitionAssignmentLifecycle_EventDataSchema = z.object({
|
|
4275
|
+
eventType: z.literal(CoreAuditableEventType.SYSTEM_OF_RECORD_PARTITION_ASSIGNMENT_LIFECYCLE),
|
|
4276
|
+
/** Which transition this row records. */
|
|
4277
|
+
transition: z.enum(SystemOfRecordPartitionAssignmentTransition),
|
|
4278
|
+
/** The assignment row, so its whole timeline can be reassembled. */
|
|
4279
|
+
assignmentId: z.string(),
|
|
4280
|
+
/** The declared instance — `systemsOfRecord.<name>`. Instance, never vendor: two Odoo deployments have unrelated company ids. */
|
|
4281
|
+
system: z.string(),
|
|
4282
|
+
/** The partition's key as the remote spells it, in canonical text. */
|
|
4283
|
+
remoteKey: z.string(),
|
|
4284
|
+
/**
|
|
4285
|
+
* The unit the partition belongs to AFTER this transition.
|
|
4286
|
+
*
|
|
4287
|
+
* Absent exactly when the transition is `UNASSIGNED` — there is no resulting unit, and writing the
|
|
4288
|
+
* departed one here would make an unassignment read as an assignment to the unit that lost it.
|
|
4289
|
+
*/
|
|
4290
|
+
organizationUnitId: z.string().optional(),
|
|
4291
|
+
/**
|
|
4292
|
+
* The unit the partition belonged to BEFORE this transition.
|
|
4293
|
+
*
|
|
4294
|
+
* Present on `REASSIGNED` and `UNASSIGNED`, absent on `ASSIGNED`. This is the field the automatic
|
|
4295
|
+
* `RESOURCE_OPERATION_PERFORMED` row cannot carry, and the reason this event type exists.
|
|
4296
|
+
*/
|
|
4297
|
+
previousOrganizationUnitId: z.string().optional(),
|
|
4298
|
+
/** The operator's stated reason. Recorded on every transition, not only the first. */
|
|
4299
|
+
justification: z.string().optional(),
|
|
4300
|
+
/** The operator who made the change. */
|
|
4301
|
+
assignedByUserId: z.string().optional(),
|
|
2769
4302
|
});
|
|
2770
4303
|
export const AuditableEvent_CrossTenantAdministrativeAccess_EventDataSchema = z.object({
|
|
2771
4304
|
eventType: z.literal(CoreAuditableEventType.CROSS_TENANT_ADMINISTRATIVE_ACCESS),
|
|
@@ -2813,6 +4346,12 @@ export const AuditableEvent_CrossTenantAdministrativeAccess_EventDataSchema = z.
|
|
|
2813
4346
|
initiatorRoles: z.array(z.string()),
|
|
2814
4347
|
/** How the call was initiated — separates a human operator from framework machinery. */
|
|
2815
4348
|
executionType: z.enum(ExecutionContext_ExecutionType),
|
|
4349
|
+
/**
|
|
4350
|
+
* The credential that read, when the reader is a MACHINE. A machine has no `userId`, so without this the
|
|
4351
|
+
* row names no reader at all — an assurance collector's reads would be unattributable in the very trail it
|
|
4352
|
+
* measures, and could not be told apart from its own earlier runs (#297). Absent for a human operator.
|
|
4353
|
+
*/
|
|
4354
|
+
machineCredential: ExecutionContext_MachineCredentialSchema.optional(),
|
|
2816
4355
|
});
|
|
2817
4356
|
/**
|
|
2818
4357
|
* An application-wide directory enumeration.
|
|
@@ -2900,6 +4439,30 @@ export const AuditableEvent_ResourceOperationDenied_EventDataSchema = z.object({
|
|
|
2900
4439
|
* the operation's config as it stood that day.
|
|
2901
4440
|
*/
|
|
2902
4441
|
requiredRoles: z.array(z.string()).optional(),
|
|
4442
|
+
/**
|
|
4443
|
+
* The roles the caller tried to GRANT and could not — present only on
|
|
4444
|
+
* {@link ResourceOperationDenialReason.ROLE_CEILING_EXCEEDED}.
|
|
4445
|
+
*
|
|
4446
|
+
* A third set, distinct from both of its neighbours and not expressible by either: `requiredRoles`
|
|
4447
|
+
* is what the OPERATION demanded of the caller, `initiatorRoles` is what the caller HELD, and this
|
|
4448
|
+
* is what the caller attempted to confer on somebody else. It is the whole content of an
|
|
4449
|
+
* escalation attempt — "an ORG_ADMIN asked for ORG_OWNER" — and without it the row says only that
|
|
4450
|
+
* a ceiling was hit.
|
|
4451
|
+
*
|
|
4452
|
+
* Only the REFUSED subset is recorded, not the whole requested array: the roles the caller was
|
|
4453
|
+
* entitled to grant are not evidence of anything, and the difference is what a reviewer reads.
|
|
4454
|
+
*/
|
|
4455
|
+
escalatedRoles: z.array(z.string()).optional(),
|
|
4456
|
+
/**
|
|
4457
|
+
* The surface the person called, when the refusal happened on one that is NOT a resource operation — a
|
|
4458
|
+
* manual-controller route (`GET /api/v1/charts/:chartId/data`) or a WebSocket event (`badge:get`).
|
|
4459
|
+
*
|
|
4460
|
+
* On such a surface the operation fields above name only the context it was authorized under (an
|
|
4461
|
+
* application read), which on its own cannot tell a chart from a feature resolution (#534 third review L3).
|
|
4462
|
+
* Absent on a resource operation, whose operation fields already ARE the surface. Carries a route TEMPLATE
|
|
4463
|
+
* where one is known, so the trail records which door was refused rather than which row was asked for.
|
|
4464
|
+
*/
|
|
4465
|
+
refusedSurface: z.string().optional(),
|
|
2903
4466
|
/**
|
|
2904
4467
|
* The caller's roles AS THEY WERE at decision time — empty when the refusal WAS the absence of
|
|
2905
4468
|
* them ({@link ResourceOperationDenialReason.MISSING_INITIATOR}).
|
|
@@ -2969,6 +4532,58 @@ export const AuditableEvent_RetainedDataAccess_EventDataSchema = z.object({
|
|
|
2969
4532
|
organizationId: z.string().optional(),
|
|
2970
4533
|
ipAddress: z.string().optional(),
|
|
2971
4534
|
});
|
|
4535
|
+
/**
|
|
4536
|
+
* A person met a governed document, and this is the release they met.
|
|
4537
|
+
*
|
|
4538
|
+
* `interaction` is the composed record from `composeGovernedDocumentInteraction`, which has already
|
|
4539
|
+
* refused anything the release does not permit and marked anything the workflow has not finished.
|
|
4540
|
+
* It is nested rather than flattened so there is ONE shape for a governed-document interaction — a
|
|
4541
|
+
* second, flatter copy here would be a second thing to keep in step with the release vocabulary.
|
|
4542
|
+
*
|
|
4543
|
+
* The SUBJECT is the audit envelope's own actor attribution plus `userId` here, never a third
|
|
4544
|
+
* spelling inside the record; see the interaction schema's JSDoc for why.
|
|
4545
|
+
*
|
|
4546
|
+
* assurance-control: WILDO.PRIVACY.CONSENT_RECORD
|
|
4547
|
+
*/
|
|
4548
|
+
export const AuditableEvent_GovernedDocument_InteractionRecordedEventDataSchema = z.object({
|
|
4549
|
+
eventType: z.literal(CoreAuditableEventType.GOVERNED_DOCUMENT_INTERACTION_RECORDED),
|
|
4550
|
+
/**
|
|
4551
|
+
* The identified person who met the document. Absent exactly when `anonymousUserId` is present
|
|
4552
|
+
* (#1258 Step 5) — a signed-in registrant or an already-identified reader has one; a visitor
|
|
4553
|
+
* reading a public notice before ever creating an account does not.
|
|
4554
|
+
*/
|
|
4555
|
+
userId: z.string().optional(),
|
|
4556
|
+
/**
|
|
4557
|
+
* The pre-identity visitor who met the document, when nobody is signed in (#1258 Step 5).
|
|
4558
|
+
* `AnonymousUser._id` / `ExecutionContext.anonymousUserId` — the same identity Step 1's consent
|
|
4559
|
+
* carry is keyed on, never a second visitor-identity concept.
|
|
4560
|
+
*/
|
|
4561
|
+
anonymousUserId: z.string().optional(),
|
|
4562
|
+
/** What they did, which release they did it to, and that release's standing at the time. */
|
|
4563
|
+
interaction: GovernedDocumentInteractionSchema,
|
|
4564
|
+
/**
|
|
4565
|
+
* TRUE-but-unfinished notes carried from composition — today, that the release was UNAPPROVED.
|
|
4566
|
+
*
|
|
4567
|
+
* Recorded rather than discarded because an advisory is the only trace that the mechanism
|
|
4568
|
+
* proceeded deliberately rather than by omission.
|
|
4569
|
+
*/
|
|
4570
|
+
advisoryKinds: z.array(z.string()),
|
|
4571
|
+
ipAddress: z.string().optional(),
|
|
4572
|
+
}).superRefine((event, context) => {
|
|
4573
|
+
// Exactly one subject, never zero (a record naming nobody is not a record) and never both (two
|
|
4574
|
+
// identities for one act is two different claims about who acted).
|
|
4575
|
+
const hasUser = event.userId !== undefined;
|
|
4576
|
+
const hasAnonymous = event.anonymousUserId !== undefined;
|
|
4577
|
+
if (hasUser === hasAnonymous) {
|
|
4578
|
+
context.addIssue({
|
|
4579
|
+
code: 'custom',
|
|
4580
|
+
path: hasUser ? ['anonymousUserId'] : ['userId'],
|
|
4581
|
+
message: hasUser
|
|
4582
|
+
? 'a governed-document interaction names both userId and anonymousUserId — exactly one subject met the document'
|
|
4583
|
+
: 'a governed-document interaction names neither userId nor anonymousUserId — a record must name who met the document',
|
|
4584
|
+
});
|
|
4585
|
+
}
|
|
4586
|
+
});
|
|
2972
4587
|
/**
|
|
2973
4588
|
* A DATA SUBJECT EXPORT — the compliance record of the framework assembling everything it holds
|
|
2974
4589
|
* about one person and disclosing it.
|
|
@@ -3016,6 +4631,13 @@ export const AuditableEvent_SubjectDataExport_EventDataSchema = z.object({
|
|
|
3016
4631
|
fieldsWithheldAsNonDisclosable: z.array(z.string()),
|
|
3017
4632
|
/** Tenant scope, when the export ran org-scoped. */
|
|
3018
4633
|
organizationId: z.string().optional(),
|
|
4634
|
+
/**
|
|
4635
|
+
* Whether the application declares its subject-data recipients (#1710) — `declared` or `not-declared`. The value an
|
|
4636
|
+
* evidence collector tallies: an export answering Art. 15(1)(c) from a declaration, versus one that could not.
|
|
4637
|
+
*/
|
|
4638
|
+
recipientsStatus: z.enum(SubjectDataRecipientsStatementStatus),
|
|
4639
|
+
/** The recipients (provider refs) the export named for this subject, sorted. Systems of record are accounted on their own lane. */
|
|
4640
|
+
recipientRefs: z.array(z.string().trim().min(1)),
|
|
3019
4641
|
});
|
|
3020
4642
|
/**
|
|
3021
4643
|
* A COLLECTION EXPORT — an operator rendered a resource listing to a file and downloaded it.
|
|
@@ -3052,7 +4674,7 @@ export const AuditableEvent_CollectionDataExport_EventDataSchema = z.object({
|
|
|
3052
4674
|
resourceType: z.string().trim().min(1),
|
|
3053
4675
|
/** The LIST/SEARCH operation whose result set was exported. */
|
|
3054
4676
|
sourceOperationIdentifier: z.string().trim().min(1),
|
|
3055
|
-
/** `
|
|
4677
|
+
/** The rendered wire format — a `ResourceCollectionExportFormat` value (`csv`, `json` or `pdf`). */
|
|
3056
4678
|
format: z.string().trim().min(1),
|
|
3057
4679
|
/** `visible_page` | `full_result_set` — see the docstring; this is the field that matters most. */
|
|
3058
4680
|
rowScope: z.string().trim().min(1),
|
|
@@ -3108,12 +4730,149 @@ export const AuditableEvent_ProviderOperationCall_EventDataSchema = z.object({
|
|
|
3108
4730
|
status: z.number().int().optional(),
|
|
3109
4731
|
/** Present when the call failed, naming the failure KIND rather than the vendor's prose. */
|
|
3110
4732
|
failureKind: z.string().optional(),
|
|
4733
|
+
/**
|
|
4734
|
+
* The `requiredScopes` verdict (#979) — present only when the operation declares required scopes. `not_recorded`
|
|
4735
|
+
* is the one to read twice: the call went out without its scopes being checked.
|
|
4736
|
+
*/
|
|
4737
|
+
scopeCheck: z.enum(ProviderOperationScopeCheck).optional(),
|
|
4738
|
+
/** The required scopes the grant lacked — present with `scopeCheck: missing`. Scope names only, never a token. */
|
|
4739
|
+
missingScopes: z.array(z.string()).optional(),
|
|
3111
4740
|
/** The REAL initiating user — absent only for genuine machine/internal executions. */
|
|
3112
4741
|
initiatorUserId: z.string().optional(),
|
|
3113
4742
|
/** The execution type that acted, for the machine/internal cases. */
|
|
3114
4743
|
executionType: z.string().optional(),
|
|
3115
4744
|
/** The tenant the REQUEST was scoped to — see `connectionOwnerScope`. */
|
|
3116
4745
|
organizationId: z.string().optional(),
|
|
4746
|
+
/**
|
|
4747
|
+
* The package that CONTRIBUTED this operation when it is not the provider's own (#1672) — an augmentation
|
|
4748
|
+
* an application opted into, adding operations to a provider it does not own. Absent for an operation the
|
|
4749
|
+
* provider's own module declares.
|
|
4750
|
+
*
|
|
4751
|
+
* The question it answers is the one a shared grant raises: when a call spends a connection the base
|
|
4752
|
+
* provider owns, whose code wrote the request? Without it a reviewer sees the base ref and cannot tell the
|
|
4753
|
+
* base's own operation from a third party's.
|
|
4754
|
+
*/
|
|
4755
|
+
augmentationPackage: z.string().optional(),
|
|
4756
|
+
/** The installed version of {@link augmentationPackage}, as `wildo config sync` recorded it. */
|
|
4757
|
+
augmentationPackageVersion: z.string().optional(),
|
|
4758
|
+
/**
|
|
4759
|
+
* The CONNECTION whose grant the call spent (#1725) — the declared base of a shared connection, or the ref itself.
|
|
4760
|
+
* On a shared connection `providerRef` names only the ref the call went THROUGH; this names the grant.
|
|
4761
|
+
*/
|
|
4762
|
+
connectionRef: z.string().optional(),
|
|
4763
|
+
/** The npm package that owns `providerRef` — whose code the call ran, when several packages share one grant. */
|
|
4764
|
+
providerPackageName: z.string().optional(),
|
|
4765
|
+
/**
|
|
4766
|
+
* The resource AUDIENCE whose token was attached (#1725) — `graph`, `dataverse` — when the connection's grant spans
|
|
4767
|
+
* several resources. Absent for a provider that mints one token for one resource.
|
|
4768
|
+
*/
|
|
4769
|
+
tokenAudience: z.string().optional(),
|
|
4770
|
+
/**
|
|
4771
|
+
* What the call's RATE BUDGETS cost it (#1729). A vendor's allowance belongs to the connection (and, where the vendor
|
|
4772
|
+
* counts per account, to the account it spends), so every call names the budgets it drew on — keys only, never a
|
|
4773
|
+
* count of anyone's traffic — how long it waited for room, and whether the count was the deployment's SHARED one or
|
|
4774
|
+
* this process's alone. On a refusal, `exhaustedBudgetKey` names the budget that was still full: an exhausted
|
|
4775
|
+
* allowance is visible here instead of arriving as a vendor `429`.
|
|
4776
|
+
*/
|
|
4777
|
+
rateBudget: z.object({
|
|
4778
|
+
budgetKeys: z.array(z.string()),
|
|
4779
|
+
counting: z.enum(RateBudgetCounting),
|
|
4780
|
+
waitedMs: z.number().nonnegative(),
|
|
4781
|
+
exhaustedBudgetKey: z.string().optional(),
|
|
4782
|
+
}).optional(),
|
|
4783
|
+
});
|
|
4784
|
+
/**
|
|
4785
|
+
* The backend CALLED a vendor to discharge an engine capability (#1712) — see the enum member for why this is
|
|
4786
|
+
* neither a catalogue operation call nor a record about the data's subject.
|
|
4787
|
+
*
|
|
4788
|
+
* One event per PHYSICAL call the egress controls, on the success and the failure path. The granularity is the
|
|
4789
|
+
* egress's own act: one email submission, one SMS, one storage verb, one billing adapter call. A billing adapter
|
|
4790
|
+
* call that pages through a list may make several HTTP requests to the vendor under one row, as an agent turn does
|
|
4791
|
+
* under one `providerCallRecords` row; the count is of the application's acts, not of the vendor's requests.
|
|
4792
|
+
*
|
|
4793
|
+
* No field names a subject — no recipient, number, file, customer or payload — so the schema, not a redaction
|
|
4794
|
+
* step, is what keeps it out of the personal-data population.
|
|
4795
|
+
*
|
|
4796
|
+
* assurance-control: WILDO.INTEGRATION.OUTBOUND_ACTIVITY_AUDIT — records which vendor each capability reached,
|
|
4797
|
+
* with what outcome, for every call the application made.
|
|
4798
|
+
*/
|
|
4799
|
+
export const AuditableEvent_ProviderCapabilityCall_EventDataSchema = z.object({
|
|
4800
|
+
eventType: z.literal(CoreAuditableEventType.PROVIDER_CAPABILITY_CALL),
|
|
4801
|
+
/** The egress the call went out through. */
|
|
4802
|
+
capability: z.enum(ProviderCapabilityEgress),
|
|
4803
|
+
/** What it did. */
|
|
4804
|
+
action: z.enum(ProviderCapabilityCallAction),
|
|
4805
|
+
/**
|
|
4806
|
+
* The vendor: the provider ref the capability resolved (`resend`, `twilio`, `stripe`), or, for file storage, the
|
|
4807
|
+
* storage the file is kept in (`wildo_managed`, `google_drive`).
|
|
4808
|
+
*/
|
|
4809
|
+
providerRef: z.string().trim().min(1),
|
|
4810
|
+
/** The engine capability the egress served, when it serves several (email: transactional or marketing). */
|
|
4811
|
+
engineCapability: z.string().optional(),
|
|
4812
|
+
/** The billing adapter method, for {@link ProviderCapabilityCallAction.BILLING_OPERATION}. A method NAME, never its arguments. */
|
|
4813
|
+
billingOperation: z.string().optional(),
|
|
4814
|
+
outcome: z.enum(ProviderCapabilityCallOutcome),
|
|
4815
|
+
/** HTTP status of the vendor's answer, when the egress observes one. */
|
|
4816
|
+
status: z.number().int().optional(),
|
|
4817
|
+
/**
|
|
4818
|
+
* The failure KIND (an error type or a submission outcome), never the vendor's prose, which may quote the request. The
|
|
4819
|
+
* recorder keeps it to an identifier-shaped token and replaces anything else with `unclassified`, so an SDK error
|
|
4820
|
+
* that carried text in its code cannot put that text on the trail.
|
|
4821
|
+
*/
|
|
4822
|
+
failureKind: z.string().optional(),
|
|
4823
|
+
/** WHOSE account the call spent: `application` | `organization` | `user` — the vocabulary its siblings use. */
|
|
4824
|
+
connectionOwnerScope: z.string().trim().min(1),
|
|
4825
|
+
/**
|
|
4826
|
+
* The owner's id; absent for the application's own account. For a person's Drive this is the file's LINKER, who may
|
|
4827
|
+
* not be the reader — the reason this event exports at SUBJECT_DETAIL.
|
|
4828
|
+
*/
|
|
4829
|
+
connectionOwnerId: z.string().optional(),
|
|
4830
|
+
/** The REAL initiating user, when the egress runs under an execution context that has one. */
|
|
4831
|
+
initiatorUserId: z.string().optional(),
|
|
4832
|
+
/** The execution type that acted, when the egress runs under an execution context. */
|
|
4833
|
+
executionType: z.string().optional(),
|
|
4834
|
+
/** The tenant the call was made for, when the egress knows one (an email sent for an organization). */
|
|
4835
|
+
organizationId: z.string().optional(),
|
|
4836
|
+
});
|
|
4837
|
+
/**
|
|
4838
|
+
* The browser door REFUSED a provider operation (#367) — see the enum member for why this is not a
|
|
4839
|
+
* failed call.
|
|
4840
|
+
*
|
|
4841
|
+
* Ids and shape only, like its call sibling: the request's `input` is never recorded. What the caller
|
|
4842
|
+
* ASKED FOR is recorded even when it names nothing real, because a refusal records an attempt rather
|
|
4843
|
+
* than proving the provider or operation exists.
|
|
4844
|
+
*
|
|
4845
|
+
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT
|
|
4846
|
+
*/
|
|
4847
|
+
export const AuditableEvent_ProviderOperationDenied_EventDataSchema = z.object({
|
|
4848
|
+
eventType: z.literal(CoreAuditableEventType.PROVIDER_OPERATION_DENIED),
|
|
4849
|
+
denialReason: z.enum(ProviderOperationDenialReason),
|
|
4850
|
+
/** The provider the request named. */
|
|
4851
|
+
providerRef: z.string().trim().min(1),
|
|
4852
|
+
/** The operation id the request named. */
|
|
4853
|
+
operationId: z.string().trim().min(1),
|
|
4854
|
+
/** The account the request asked to spend: `application` | `organization` | `user`. */
|
|
4855
|
+
connectionOwnerScope: z.string().trim().min(1),
|
|
4856
|
+
/** The owner's id, absent for an application-owned request. */
|
|
4857
|
+
connectionOwnerId: z.string().optional(),
|
|
4858
|
+
/** `service` | `user`, as requested. */
|
|
4859
|
+
connectionDelegation: z.string().trim().min(1),
|
|
4860
|
+
/**
|
|
4861
|
+
* The roles the policy required — present on {@link ProviderOperationDenialReason.INSUFFICIENT_ROLES}
|
|
4862
|
+
* and {@link ProviderOperationDenialReason.ROLES_NOT_APPLICABLE_TO_TARGET}.
|
|
4863
|
+
*/
|
|
4864
|
+
requiredRoles: z.array(z.string()).optional(),
|
|
4865
|
+
/**
|
|
4866
|
+
* The roles the caller held IN THE SCOPE THAT WAS CHECKED, at decision time — present on
|
|
4867
|
+
* {@link ProviderOperationDenialReason.INSUFFICIENT_ROLES}, so the row explains itself.
|
|
4868
|
+
*/
|
|
4869
|
+
heldRoles: z.array(z.string()).optional(),
|
|
4870
|
+
/** The refused person. Absent only on {@link ProviderOperationDenialReason.MISSING_USER_SESSION}. */
|
|
4871
|
+
initiatorUserId: z.string().optional(),
|
|
4872
|
+
/** The execution type that asked, which is what explains a missing user. */
|
|
4873
|
+
executionType: z.string().optional(),
|
|
4874
|
+
/** The tenant the REQUEST was scoped to. */
|
|
4875
|
+
organizationId: z.string().optional(),
|
|
3117
4876
|
});
|
|
3118
4877
|
/**
|
|
3119
4878
|
* An agent reached an MCP server — the outbound trail for a tool call that leaves the trust
|
|
@@ -3142,7 +4901,10 @@ export const AuditableEvent_McpToolCall_EventDataSchema = z.object({
|
|
|
3142
4901
|
destinationHost: z.string().trim().min(1),
|
|
3143
4902
|
/** The tool called. Absent when the attempt failed before any tool was chosen (discovery). */
|
|
3144
4903
|
toolName: z.string().optional(),
|
|
3145
|
-
/**
|
|
4904
|
+
/**
|
|
4905
|
+
* The client's outcome kind — `ok`, `refused_target`, `unreachable`, `timed_out`, `protocol_error`, `tool_error`, or
|
|
4906
|
+
* `rate_budget_exhausted` (the connection's rate budget stayed full; nothing was sent — #1938).
|
|
4907
|
+
*/
|
|
3146
4908
|
outcome: z.string().trim().min(1),
|
|
3147
4909
|
/**
|
|
3148
4910
|
* WHOSE ACCOUNT the call spent: `user` | `organization`. Absent when no credential was resolved,
|
|
@@ -3154,6 +4916,12 @@ export const AuditableEvent_McpToolCall_EventDataSchema = z.object({
|
|
|
3154
4916
|
connectionOwnerScope: z.string().optional(),
|
|
3155
4917
|
/** The credential row that was spent, for the audit trail. */
|
|
3156
4918
|
credentialId: z.string().optional(),
|
|
4919
|
+
/**
|
|
4920
|
+
* WHOSE credential it was: the member who set an organization credential. For an organization-lent
|
|
4921
|
+
* member account (decision on wildo-ai/wildo-ai#18) that is the person the far server attributes the
|
|
4922
|
+
* call to, captured at call time rather than joined later, since a reconnect moves it.
|
|
4923
|
+
*/
|
|
4924
|
+
credentialSetByUserId: z.string().optional(),
|
|
3157
4925
|
/** The REAL initiating user — absent only for genuine machine/internal executions. */
|
|
3158
4926
|
initiatorUserId: z.string().optional(),
|
|
3159
4927
|
/** The tenant the turn was scoped to — see `connectionOwnerScope`. */
|
|
@@ -3162,45 +4930,211 @@ export const AuditableEvent_McpToolCall_EventDataSchema = z.object({
|
|
|
3162
4930
|
agentRef: z.string().optional(),
|
|
3163
4931
|
});
|
|
3164
4932
|
/**
|
|
3165
|
-
*
|
|
3166
|
-
*
|
|
3167
|
-
* One row per MODIFIED approval — never per approval. See the enum member's docstring for why an
|
|
3168
|
-
* ordinary approval is not this event, and for why no argument VALUE appears in this schema.
|
|
3169
|
-
*
|
|
3170
|
-
* `proposedInputDigest` / `executedInputDigest` are the model SDK's own canonical input digests, the
|
|
3171
|
-
* same values its approval signature is computed over. That is what makes them evidence rather than
|
|
3172
|
-
* a convenience: a reader holding the executed call can recompute the second and see it match, and
|
|
3173
|
-
* the two differing is proof that the call which ran is not the call which was proposed — with no
|
|
3174
|
-
* copy of either payload on the trail.
|
|
3175
|
-
*
|
|
3176
|
-
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT — records that an authorization
|
|
3177
|
-
* decision REWROTE the act it authorized, and who made it.
|
|
4933
|
+
* The fields every human-decision event carries: which decision, on which plane, raised by which
|
|
4934
|
+
* agent's work, routed how. Ids and names only (#1595 D5).
|
|
3178
4935
|
*/
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
4936
|
+
const HumanDecisionEventBaseShape = {
|
|
4937
|
+
/** The one decision id (`HumanDecision_Request.decisionId`), shared by both planes and every row about this decision. */
|
|
4938
|
+
decisionRef: z.string().trim().min(1),
|
|
4939
|
+
/** The execution whose work is waiting — the conversational execution or the actor-system execution. */
|
|
3182
4940
|
executionId: z.string().trim().min(1),
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
/**
|
|
3192
|
-
|
|
3193
|
-
/**
|
|
3194
|
-
executedInputDigest: z.string().trim().min(1),
|
|
3195
|
-
/**
|
|
3196
|
-
* The argument NAMES the approver changed, sorted. Names only — a field name is not personal data,
|
|
3197
|
-
* which is exactly why it is always safe and always recorded.
|
|
3198
|
-
*/
|
|
3199
|
-
modifiedArgumentKeys: z.array(z.string()),
|
|
3200
|
-
/** The approver. Absent never happens on this plane — only a present human can answer — but the envelope owns the field. */
|
|
3201
|
-
approverUserId: z.string().optional(),
|
|
3202
|
-
/** The tenant the turn was scoped to. */
|
|
4941
|
+
plane: z.enum(HumanDecision_Plane),
|
|
4942
|
+
/** The actor system the work belongs to. */
|
|
4943
|
+
systemRef: z.string().trim().min(1).optional(),
|
|
4944
|
+
/** The agent whose gate raised the decision. */
|
|
4945
|
+
agentRef: z.string().trim().min(1).optional(),
|
|
4946
|
+
/** The gated tool, when the decision is a tool approval. */
|
|
4947
|
+
toolName: z.string().trim().min(1).optional(),
|
|
4948
|
+
routeKind: z.enum(HumanDecision_RouteKind),
|
|
4949
|
+
/** The route's eligible role — the floor every holder must meet. Absent for OWNER. */
|
|
4950
|
+
routeEligibleRole: z.string().trim().min(1).optional(),
|
|
4951
|
+
/** The tenant the decision is routed within. */
|
|
3203
4952
|
organizationId: z.string().optional(),
|
|
4953
|
+
};
|
|
4954
|
+
/** A decision was raised. */
|
|
4955
|
+
export const AuditableEvent_HumanDecisionRequested_EventDataSchema = z.object({
|
|
4956
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_REQUESTED),
|
|
4957
|
+
...HumanDecisionEventBaseShape,
|
|
4958
|
+
requesterKind: z.enum(HumanDecision_RequesterKind),
|
|
4959
|
+
/** ASSIGNEE routes only: who it was routed to. */
|
|
4960
|
+
assigneeUserId: z.string().optional(),
|
|
4961
|
+
/** When answering is refused. Absent means the decision does not lapse. */
|
|
4962
|
+
expiresAt: z.string().optional(),
|
|
4963
|
+
/** #1628: the armed CLAIM deadline, and the clock it counts on. Absent on the actor plane before a host arms one. */
|
|
4964
|
+
claimDeadlineAt: z.string().optional(),
|
|
4965
|
+
claimClockBasis: z.enum(ReviewClockBasis).optional(),
|
|
4966
|
+
/** #1628: the armed DECISION deadline, and the clock it counts on. */
|
|
4967
|
+
decisionDeadlineAt: z.string().optional(),
|
|
4968
|
+
decisionClockBasis: z.enum(ReviewClockBasis).optional(),
|
|
4969
|
+
});
|
|
4970
|
+
/** A decision ended. Exactly one per `decisionRef`. */
|
|
4971
|
+
export const AuditableEvent_HumanDecisionResolved_EventDataSchema = z.object({
|
|
4972
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_RESOLVED),
|
|
4973
|
+
...HumanDecisionEventBaseShape,
|
|
4974
|
+
outcome: z.enum(HumanDecision_Outcome),
|
|
4975
|
+
/** The person who decided. Absent for LAPSED and for a WITHDRAWN nobody answered. */
|
|
4976
|
+
decidedByUserId: z.string().optional(),
|
|
4977
|
+
/** The decider's roles in the decision's organization at the moment they decided. */
|
|
4978
|
+
deciderRoles: z.array(z.string()).optional(),
|
|
4979
|
+
/** The route role that admitted the decider (ROLE and ASSIGNEE routes). */
|
|
4980
|
+
admittedByRouteRole: z.string().optional(),
|
|
4981
|
+
/** ACCEPTED_WITH_MODIFICATIONS: the argument NAMES the decider changed, sorted. Never their values. */
|
|
4982
|
+
modifiedArgumentNames: z.array(z.string()).default([]),
|
|
4983
|
+
/** Whether the decider gave a reason. The reason itself stays in the transcript, not on the trail. */
|
|
4984
|
+
reasonGiven: z.boolean(),
|
|
4985
|
+
/** LAPSED only: a person who answered after the deadline, whose answer was therefore refused. */
|
|
4986
|
+
lateDecisionUserId: z.string().optional(),
|
|
4987
|
+
/** #1628: whether each armed service target was met. A clock that was never armed is absent, never guessed. */
|
|
4988
|
+
deadlineOutcomes: z.partialRecord(z.enum(ReviewDeadlineKind), z.enum(ReviewDeadlineOutcome)).optional(),
|
|
4989
|
+
});
|
|
4990
|
+
/** A decision was moved — reassigned or escalated. */
|
|
4991
|
+
const HumanDecisionMoveShape = {
|
|
4992
|
+
...HumanDecisionEventBaseShape,
|
|
4993
|
+
/** Who held it before the move. Absent when it moved off a ROLE route nobody had claimed. */
|
|
4994
|
+
fromAssigneeUserId: z.string().optional(),
|
|
4995
|
+
/** Who holds it now. */
|
|
4996
|
+
toAssigneeUserId: z.string().trim().min(1),
|
|
4997
|
+
/** The route version after the move; an answer read under an older version loses. */
|
|
4998
|
+
routeVersion: z.number().int().nonnegative(),
|
|
4999
|
+
/** Whether the mover gave a reason. The reason itself is not recorded here. */
|
|
5000
|
+
reasonGiven: z.boolean(),
|
|
5001
|
+
};
|
|
5002
|
+
export const AuditableEvent_HumanDecisionReassigned_EventDataSchema = z.object({
|
|
5003
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_REASSIGNED),
|
|
5004
|
+
...HumanDecisionMoveShape,
|
|
5005
|
+
/** #1628: a person's move, or a deadline's REASSIGN rule — so a rule-driven move is never read as a choice. */
|
|
5006
|
+
trigger: z.enum(HumanDecision_RouteChangeTrigger),
|
|
5007
|
+
/** ESCALATION_RULE only: the stage whose rule moved it. */
|
|
5008
|
+
stage: z.enum(ReviewDeadlineStage).optional(),
|
|
5009
|
+
});
|
|
5010
|
+
export const AuditableEvent_HumanDecisionEscalated_EventDataSchema = z.object({
|
|
5011
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_ESCALATED),
|
|
5012
|
+
...HumanDecisionMoveShape,
|
|
5013
|
+
/** True when the target came from the gate's declared `escalateTo`, false when the escalator named it. */
|
|
5014
|
+
toDeclaredTarget: z.boolean(),
|
|
5015
|
+
});
|
|
5016
|
+
/** A role-routed decision was claimed (`claimed: true`) or given back to its role (`claimed: false`). */
|
|
5017
|
+
export const AuditableEvent_HumanDecisionClaimed_EventDataSchema = z.object({
|
|
5018
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_CLAIMED),
|
|
5019
|
+
...HumanDecisionEventBaseShape,
|
|
5020
|
+
claimed: z.boolean(),
|
|
5021
|
+
/** The holder who claimed, or who gave it back. */
|
|
5022
|
+
assigneeUserId: z.string().trim().min(1),
|
|
5023
|
+
routeVersion: z.number().int().nonnegative(),
|
|
5024
|
+
});
|
|
5025
|
+
/** Someone tried to act on a decision and was refused. The decision is unchanged. */
|
|
5026
|
+
export const AuditableEvent_HumanDecisionAnswerRefused_EventDataSchema = z.object({
|
|
5027
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_ANSWER_REFUSED),
|
|
5028
|
+
...HumanDecisionEventBaseShape,
|
|
5029
|
+
act: z.enum(HumanDecision_Act),
|
|
5030
|
+
reason: z.enum(HumanDecision_RefusalReason),
|
|
5031
|
+
/** Who tried. Absent when the attempt carried no person at all (a machine principal). */
|
|
5032
|
+
attemptedByUserId: z.string().optional(),
|
|
5033
|
+
});
|
|
5034
|
+
/** A CLAIM or DECISION deadline passed (#1628). The decision is unchanged and still answerable. */
|
|
5035
|
+
export const AuditableEvent_HumanDecisionDeadlineMissed_EventDataSchema = z.object({
|
|
5036
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_DEADLINE_MISSED),
|
|
5037
|
+
...HumanDecisionEventBaseShape,
|
|
5038
|
+
kind: z.enum(ReviewDeadlineKind),
|
|
5039
|
+
/** The deadline that passed, after any pause was added to it. */
|
|
5040
|
+
deadlineAt: z.string().trim().min(1),
|
|
5041
|
+
basis: z.enum(ReviewClockBasis),
|
|
5042
|
+
});
|
|
5043
|
+
/**
|
|
5044
|
+
* A deadline stage's rule fired (#1628). Ids and counts only: who was told is the route's candidates at
|
|
5045
|
+
* that moment, recorded as a count so the row holds no list of people that would need scrubbing.
|
|
5046
|
+
*/
|
|
5047
|
+
export const AuditableEvent_HumanDecisionEscalationFired_EventDataSchema = z.object({
|
|
5048
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_ESCALATION_FIRED),
|
|
5049
|
+
...HumanDecisionEventBaseShape,
|
|
5050
|
+
stage: z.enum(ReviewDeadlineStage),
|
|
5051
|
+
/** What the stage did. A REASSIGN whose target did not resolve, or could not answer, did NOTIFY instead. */
|
|
5052
|
+
action: z.enum(ReviewEscalationActionKind),
|
|
5053
|
+
/** Whether a REASSIGN rule was declared for this stage and attempted. */
|
|
5054
|
+
reassignAttempted: z.boolean(),
|
|
5055
|
+
/** REASSIGN attempted: whether its target resolved to someone who may answer. False: the decision did not move. */
|
|
5056
|
+
targetResolved: z.boolean().optional(),
|
|
5057
|
+
/** REASSIGN attempted and refused: why the resolved target may not answer (#1594 I8). */
|
|
5058
|
+
targetRefusalReason: z.enum(HumanDecision_RefusalReason).optional(),
|
|
5059
|
+
/** REASSIGN applied: who held it before (absent for an unclaimed ROLE route) and who holds it now. */
|
|
5060
|
+
fromAssigneeUserId: z.string().optional(),
|
|
5061
|
+
toAssigneeUserId: z.string().optional(),
|
|
5062
|
+
/** REASSIGN applied: the route version after the move. */
|
|
5063
|
+
routeVersion: z.number().int().nonnegative().optional(),
|
|
5064
|
+
/** How many people were told. Zero is recorded, not hidden: it is the finding. */
|
|
5065
|
+
recipientCount: z.number().int().nonnegative(),
|
|
5066
|
+
});
|
|
5067
|
+
/** A person stopped a decision's CLAIM and DECISION clocks (#1628). The lapse keeps running. */
|
|
5068
|
+
export const AuditableEvent_HumanDecisionClockPaused_EventDataSchema = z.object({
|
|
5069
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_CLOCK_PAUSED),
|
|
5070
|
+
...HumanDecisionEventBaseShape,
|
|
5071
|
+
/** The gate-declared pause state. An application identifier, never free text. */
|
|
5072
|
+
pauseStateRef: z.string().trim().min(1),
|
|
5073
|
+
pausedByUserId: z.string().trim().min(1),
|
|
5074
|
+
});
|
|
5075
|
+
/** A person restarted a decision's clocks (#1628); `pausedMs` was added to both service targets. */
|
|
5076
|
+
export const AuditableEvent_HumanDecisionClockResumed_EventDataSchema = z.object({
|
|
5077
|
+
eventType: z.literal(CoreAuditableEventType.HUMAN_DECISION_CLOCK_RESUMED),
|
|
5078
|
+
...HumanDecisionEventBaseShape,
|
|
5079
|
+
pauseStateRef: z.string().trim().min(1),
|
|
5080
|
+
resumedByUserId: z.string().trim().min(1),
|
|
5081
|
+
/** How long this pause lasted, in wall-clock milliseconds. */
|
|
5082
|
+
pausedMs: z.number().int().nonnegative(),
|
|
5083
|
+
});
|
|
5084
|
+
/**
|
|
5085
|
+
* The fields every autonomous-agent binding event carries (#1611). Ids and refs only: an agent's
|
|
5086
|
+
* instruction lives in the application's code, and a turn's input stays in its transcript.
|
|
5087
|
+
*/
|
|
5088
|
+
const AutonomousAgentBindingEventShape = {
|
|
5089
|
+
/** The application-declared autonomous agent. */
|
|
5090
|
+
autonomousAgentRef: z.string().trim().min(1),
|
|
5091
|
+
/** The organization the agent may (or may no longer) act in. */
|
|
5092
|
+
organizationId: z.string().trim().min(1),
|
|
5093
|
+
/** The OAuth client whose authority the agent's turns carry. */
|
|
5094
|
+
oauthClientId: z.string().trim().min(1),
|
|
5095
|
+
principalSource: z.enum(AutonomousPrincipalSource),
|
|
5096
|
+
/** RELATIONSHIP_ADMITTED_CLIENT only: the firm that owns the client. */
|
|
5097
|
+
providerOrganizationId: z.string().trim().min(1).optional(),
|
|
5098
|
+
/** RELATIONSHIP_ADMITTED_CLIENT only: the relationship whose admission carries it. */
|
|
5099
|
+
serviceProviderRelationshipId: z.string().trim().min(1).optional(),
|
|
5100
|
+
};
|
|
5101
|
+
export const AuditableEvent_AutonomousAgent_BoundEventDataSchema = z.object({
|
|
5102
|
+
eventType: z.literal(CoreAuditableEventType.AUTONOMOUS_AGENT_BOUND),
|
|
5103
|
+
...AutonomousAgentBindingEventShape,
|
|
5104
|
+
});
|
|
5105
|
+
export const AuditableEvent_AutonomousAgent_UnboundEventDataSchema = z.object({
|
|
5106
|
+
eventType: z.literal(CoreAuditableEventType.AUTONOMOUS_AGENT_UNBOUND),
|
|
5107
|
+
...AutonomousAgentBindingEventShape,
|
|
5108
|
+
});
|
|
5109
|
+
/** The fields every autonomous-turn event carries: which agent, where, on which occurrence, started by what. */
|
|
5110
|
+
const AutonomousAgentTurnEventShape = {
|
|
5111
|
+
autonomousAgentRef: z.string().trim().min(1),
|
|
5112
|
+
organizationId: z.string().trim().min(1),
|
|
5113
|
+
/** The schedule occurrence or the inbound delivery id. The same occurrence twice is one turn. */
|
|
5114
|
+
occurrenceKey: z.string().trim().min(1),
|
|
5115
|
+
trigger: z.enum(AutonomousTurnTrigger),
|
|
5116
|
+
/** The case the turn was started for, when one was named. */
|
|
5117
|
+
caseRef: WorkUnitRefSchema.optional(),
|
|
5118
|
+
};
|
|
5119
|
+
export const AuditableEvent_AutonomousAgent_TurnStartedEventDataSchema = z.object({
|
|
5120
|
+
eventType: z.literal(CoreAuditableEventType.AUTONOMOUS_AGENT_TURN_STARTED),
|
|
5121
|
+
...AutonomousAgentTurnEventShape,
|
|
5122
|
+
/** The conversational execution the turn runs in. Deterministic from the agent, organization and occurrence. */
|
|
5123
|
+
executionId: z.string().trim().min(1),
|
|
5124
|
+
systemRef: z.string().trim().min(1),
|
|
5125
|
+
oauthClientId: z.string().trim().min(1),
|
|
5126
|
+
principalSource: z.enum(AutonomousPrincipalSource),
|
|
5127
|
+
});
|
|
5128
|
+
export const AuditableEvent_AutonomousAgent_TurnRefusedEventDataSchema = z.object({
|
|
5129
|
+
eventType: z.literal(CoreAuditableEventType.AUTONOMOUS_AGENT_TURN_REFUSED),
|
|
5130
|
+
...AutonomousAgentTurnEventShape,
|
|
5131
|
+
reason: z.enum(AutonomousTurnRefusalReason),
|
|
5132
|
+
/** OVER_BUDGET: the budget gate's own reason (exhausted, or unverifiable). */
|
|
5133
|
+
budgetDenialReason: z.string().trim().min(1).optional(),
|
|
5134
|
+
/** RUNTIME_REFUSED: the runtime's error code. */
|
|
5135
|
+
runtimeErrorCode: z.string().trim().min(1).optional(),
|
|
5136
|
+
/** The OAuth client, when one had been resolved before the refusal. */
|
|
5137
|
+
oauthClientId: z.string().trim().min(1).optional(),
|
|
3204
5138
|
});
|
|
3205
5139
|
/**
|
|
3206
5140
|
* Rows were read THROUGH an HTTP-API resource binding — the read-through trail for data living in
|
|
@@ -3226,8 +5160,13 @@ export const AuditableEvent_HttpApiReadThroughAccess_EventDataSchema = z.object(
|
|
|
3226
5160
|
resourceType: z.string().trim().min(1),
|
|
3227
5161
|
/** The read-family member executed: `read` | `list` | `count` | `search`. */
|
|
3228
5162
|
operationIdentifier: z.string().trim().min(1),
|
|
3229
|
-
/**
|
|
3230
|
-
|
|
5163
|
+
/**
|
|
5164
|
+
* The system-of-record INSTANCE the binding reads (`systemsOfRecord.<name>`, #1055). Was `providerRef`
|
|
5165
|
+
* until #1679 found the emitters had sent `systemOfRecord` since #1055 while this schema still named the
|
|
5166
|
+
* retired provider field — a trail whose declared shape and whose rows disagreed about the one field
|
|
5167
|
+
* that says WHICH external system was reached.
|
|
5168
|
+
*/
|
|
5169
|
+
systemOfRecord: z.string().trim().min(1),
|
|
3231
5170
|
/** The remote entity (OData entity set / Odoo model / declared REST surface). */
|
|
3232
5171
|
remoteEntityRef: z.string().trim().min(1),
|
|
3233
5172
|
/** The transport dialect spoken (`odata` | `rest-json` | `odoo-jsonrpc`). */
|
|
@@ -3242,6 +5181,35 @@ export const AuditableEvent_HttpApiReadThroughAccess_EventDataSchema = z.object(
|
|
|
3242
5181
|
resourceId: z.string().optional(),
|
|
3243
5182
|
/** Rows returned (list/search), or the count answered (count). Absent for a single READ. */
|
|
3244
5183
|
rowCount: z.number().int().nonnegative().optional(),
|
|
5184
|
+
/*
|
|
5185
|
+
* ── A PIPELINE RUN's extras (`operationIdentifier: 'externalDataPipelineRun'`) ─────────────
|
|
5186
|
+
*
|
|
5187
|
+
* The run service has emitted `rejectedRows` and `completedPass` since the pipeline landed, and this
|
|
5188
|
+
* schema never declared them — a trail whose rows carried fields its declared shape did not name.
|
|
5189
|
+
* Declared together with the pass mode (#1682) and the erasure-suppression count (#1746), all optional
|
|
5190
|
+
* because a read-through operation has none.
|
|
5191
|
+
*/
|
|
5192
|
+
/** Rows the pipeline's transform rejected this run (reported per row in the run log; never loaded). */
|
|
5193
|
+
rejectedRows: z.number().int().nonnegative().optional(),
|
|
5194
|
+
/**
|
|
5195
|
+
* Whether the run finished its pass. Read with `pipelinePassMode`: on a FULL run it means the whole
|
|
5196
|
+
* remote population was read; on an INCREMENTAL run, every change since the watermark was.
|
|
5197
|
+
*/
|
|
5198
|
+
completedPass: z.boolean().optional(),
|
|
5199
|
+
/** Which track the run advanced (#1682) — a full pass or an incremental one. */
|
|
5200
|
+
pipelinePassMode: z.enum(ExternalDataPipelinePassMode).optional(),
|
|
5201
|
+
/**
|
|
5202
|
+
* Source rows the run did NOT load because a subject erasure suppresses their remote records (#1746) — the
|
|
5203
|
+
* evidence that an erasure survived the next pass. A count, never a key.
|
|
5204
|
+
*
|
|
5205
|
+
* assurance-control: WILDO.PRIVACY.ERASURE_PROPAGATION — a pipeline run records how many erased records it declined to re-import.
|
|
5206
|
+
*/
|
|
5207
|
+
suppressedRows: z.number().int().nonnegative().optional(),
|
|
5208
|
+
/**
|
|
5209
|
+
* Of those suppressed records, how many still have a LIVE row in the destination — an erasure that committed while an
|
|
5210
|
+
* earlier pass was loading, and that pass wrote the row back (#1746). Above zero is an erasure that did not hold.
|
|
5211
|
+
*/
|
|
5212
|
+
liveSuppressedRows: z.number().int().nonnegative().optional(),
|
|
3245
5213
|
});
|
|
3246
5214
|
/**
|
|
3247
5215
|
* A subject erasure invoked the DECLARED external-erasure operation of an HTTP_API binding
|
|
@@ -3253,6 +5221,9 @@ export const AuditableEvent_HttpApiReadThroughAccess_EventDataSchema = z.object(
|
|
|
3253
5221
|
* assurance-control: WILDO.AUDIT.ATTRIBUTION — the outbound deletion names the subject it served
|
|
3254
5222
|
* and the external system it reached; the erasure report is the per-request receipt, this row is
|
|
3255
5223
|
* the queryable trail.
|
|
5224
|
+
*
|
|
5225
|
+
* assurance-control: WILDO.PRIVACY.ERASURE_PROPAGATION — an erasure that deleted rows in an external
|
|
5226
|
+
* system leaves a durable record naming that system and how many rows it deleted there.
|
|
3256
5227
|
*/
|
|
3257
5228
|
export const AuditableEvent_HttpApiExternalErasure_EventDataSchema = z.object({
|
|
3258
5229
|
eventType: z.literal(CoreAuditableEventType.HTTP_API_EXTERNAL_ERASURE),
|
|
@@ -3262,8 +5233,8 @@ export const AuditableEvent_HttpApiExternalErasure_EventDataSchema = z.object({
|
|
|
3262
5233
|
subjectIds: z.array(z.string().trim().min(1)).min(1),
|
|
3263
5234
|
/** The HTTP_API-bound Wildo resource whose declared erasure operation ran. */
|
|
3264
5235
|
resourceType: z.string().trim().min(1),
|
|
3265
|
-
/** The
|
|
3266
|
-
|
|
5236
|
+
/** The system-of-record INSTANCE the erasure reached (`systemsOfRecord.<name>`) — see the read-through schema for the rename. */
|
|
5237
|
+
systemOfRecord: z.string().trim().min(1),
|
|
3267
5238
|
/** The remote entity (OData entity set / Odoo model / declared REST surface). */
|
|
3268
5239
|
remoteEntityRef: z.string().trim().min(1),
|
|
3269
5240
|
/** The transport dialect spoken (`odata` | `rest-json` | `odoo-jsonrpc`). */
|
|
@@ -3273,6 +5244,267 @@ export const AuditableEvent_HttpApiExternalErasure_EventDataSchema = z.object({
|
|
|
3273
5244
|
/** Tenant scope, when the erasure request carried one. */
|
|
3274
5245
|
organizationId: z.string().optional(),
|
|
3275
5246
|
});
|
|
5247
|
+
/**
|
|
5248
|
+
* What became of ONE write sent (or about to be sent) through an HTTP-API binding (#1679).
|
|
5249
|
+
*
|
|
5250
|
+
* Distinct members because each one sends a reviewer somewhere different, and two of them are the
|
|
5251
|
+
* answers a client must not read as "not written".
|
|
5252
|
+
*/
|
|
5253
|
+
export var HttpApiWriteThroughOutcome;
|
|
5254
|
+
(function (HttpApiWriteThroughOutcome) {
|
|
5255
|
+
/** The system of record applied the write. */
|
|
5256
|
+
HttpApiWriteThroughOutcome["APPLIED"] = "applied";
|
|
5257
|
+
/**
|
|
5258
|
+
* The ENGINE refused before anything was sent — a non-owner organization, a partition outside the
|
|
5259
|
+
* caller's grant, an engine-owned field in the payload. Nothing reached the remote.
|
|
5260
|
+
*/
|
|
5261
|
+
HttpApiWriteThroughOutcome["REFUSED"] = "refused";
|
|
5262
|
+
/** The request was sent and the system of record refused it with a definite answer; nothing was applied. */
|
|
5263
|
+
HttpApiWriteThroughOutcome["REMOTE_REFUSED"] = "remote_refused";
|
|
5264
|
+
/**
|
|
5265
|
+
* The request was sent and nobody knows whether it was applied — a timeout, a connection dropped after
|
|
5266
|
+
* the request left, a gateway answering for the vendor. A retry under the same Idempotency-Key answers
|
|
5267
|
+
* this again rather than sending a second write.
|
|
5268
|
+
*/
|
|
5269
|
+
HttpApiWriteThroughOutcome["OUTCOME_UNKNOWN"] = "outcome_unknown";
|
|
5270
|
+
/**
|
|
5271
|
+
* A retry under an Idempotency-Key whose first attempt was APPLIED. Nothing was sent: the outcome was
|
|
5272
|
+
* replayed from the first attempt's record. Recorded so the second RESOURCE_OPERATION_PERFORMED row such a
|
|
5273
|
+
* retry produces is visibly one that changed nothing remote.
|
|
5274
|
+
*/
|
|
5275
|
+
HttpApiWriteThroughOutcome["REPLAYED"] = "replayed";
|
|
5276
|
+
})(HttpApiWriteThroughOutcome || (HttpApiWriteThroughOutcome = {}));
|
|
5277
|
+
/**
|
|
5278
|
+
* A row was written THROUGH an HTTP-API resource binding, or a write was refused (#1679) — see the enum
|
|
5279
|
+
* member's docstring for the vocabulary argument and the relation to RESOURCE_OPERATION_PERFORMED.
|
|
5280
|
+
*
|
|
5281
|
+
* MINIMISATION is the shape of this schema: it names the FIELDS written and never their values. The
|
|
5282
|
+
* values live in the system of record; a copy here would be a second store of that system's content, one
|
|
5283
|
+
* the application's erasure never reaches. `writtenFieldNames` are the LOCAL names the caller sent,
|
|
5284
|
+
* because those are the names a reviewer of this application reads.
|
|
5285
|
+
*
|
|
5286
|
+
* assurance-control: WILDO.AUDIT.ATTRIBUTION — every write sent into an external system through the shared
|
|
5287
|
+
* service identity is recorded with the real initiating user, the row it reached and the fields it changed.
|
|
5288
|
+
*/
|
|
5289
|
+
export const AuditableEvent_HttpApiWriteThrough_EventDataSchema = z.object({
|
|
5290
|
+
eventType: z.literal(CoreAuditableEventType.HTTP_API_WRITE_THROUGH),
|
|
5291
|
+
/** The Wildo resource whose binding was written through. */
|
|
5292
|
+
resourceType: z.string().trim().min(1),
|
|
5293
|
+
/** The write verb: `create` | `update` | `delete` — the core operation, so OCSF refines its activity from it. */
|
|
5294
|
+
operationIdentifier: z.string().trim().min(1),
|
|
5295
|
+
/** The system-of-record INSTANCE written (`systemsOfRecord.<name>`). */
|
|
5296
|
+
systemOfRecord: z.string().trim().min(1),
|
|
5297
|
+
/** The remote entity (OData entity set / Odoo model / declared REST surface). */
|
|
5298
|
+
remoteEntityRef: z.string().trim().min(1),
|
|
5299
|
+
/** The transport dialect spoken. */
|
|
5300
|
+
dialect: z.string().trim().min(1),
|
|
5301
|
+
outcome: z.enum(HttpApiWriteThroughOutcome),
|
|
5302
|
+
/**
|
|
5303
|
+
* The written row's synthesized id — its remote key. Present for an update or delete (addressed by it)
|
|
5304
|
+
* and for an applied or replayed create (the remote assigned it). Absent for a create that was refused
|
|
5305
|
+
* or whose outcome is unknown, because no key exists that the engine could honestly name.
|
|
5306
|
+
*/
|
|
5307
|
+
resourceId: z.string().optional(),
|
|
5308
|
+
/** The LOCAL names of the fields the write carried, sorted. Never their values. Empty for a delete. */
|
|
5309
|
+
writtenFieldNames: z.array(z.string()),
|
|
5310
|
+
/** The stable refusal code for REFUSED, REMOTE_REFUSED and OUTCOME_UNKNOWN (a `SystemOfRecordErrorCode`, or the transport kind). */
|
|
5311
|
+
refusalCode: z.string().optional(),
|
|
5312
|
+
/** The REAL initiating user — absent only for genuine machine/internal executions. */
|
|
5313
|
+
initiatorUserId: z.string().optional(),
|
|
5314
|
+
/** The execution type that acted. */
|
|
5315
|
+
executionType: z.string().optional(),
|
|
5316
|
+
/** The organization the write was scoped to — the owner organization when it was admitted. */
|
|
5317
|
+
organizationId: z.string().optional(),
|
|
5318
|
+
/** The organization unit whose partition the row belongs to, when the instance is partitioned. */
|
|
5319
|
+
organizationUnitId: z.string().optional(),
|
|
5320
|
+
/**
|
|
5321
|
+
* The LOCAL row whose change the write carried — present only for a write an OUTBOUND pipeline sent (#1690), which is
|
|
5322
|
+
* how a reviewer tells such a write from a caller's write through a read-through resource. `initiatorUserId` is then
|
|
5323
|
+
* the member whose change the pass sent, not whoever triggered the pass.
|
|
5324
|
+
*/
|
|
5325
|
+
localResourceId: z.string().optional(),
|
|
5326
|
+
});
|
|
5327
|
+
/**
|
|
5328
|
+
* What became of ONE declared system-of-record action that was sent, or replayed (#1678). Refusals before sending are a
|
|
5329
|
+
* separate event type ({@link CoreAuditableEventType.SYSTEM_OF_RECORD_ACTION_REFUSED}).
|
|
5330
|
+
*/
|
|
5331
|
+
export var SystemOfRecordActionOutcome;
|
|
5332
|
+
(function (SystemOfRecordActionOutcome) {
|
|
5333
|
+
/** The system of record performed the action. */
|
|
5334
|
+
SystemOfRecordActionOutcome["APPLIED"] = "applied";
|
|
5335
|
+
/** The action was sent and the system of record refused it with a definite answer; nothing was applied. */
|
|
5336
|
+
SystemOfRecordActionOutcome["REMOTE_REFUSED"] = "remote_refused";
|
|
5337
|
+
/**
|
|
5338
|
+
* The action was sent and nobody knows whether it was performed — a timeout, a connection dropped after the request
|
|
5339
|
+
* left, a gateway answering for the vendor, or an answer the engine could not read after the vendor answered success.
|
|
5340
|
+
* A retry under the same Idempotency-Key answers this again rather than acting twice.
|
|
5341
|
+
*/
|
|
5342
|
+
SystemOfRecordActionOutcome["OUTCOME_UNKNOWN"] = "outcome_unknown";
|
|
5343
|
+
/** A retry under an Idempotency-Key whose first attempt was APPLIED. Nothing was sent. */
|
|
5344
|
+
SystemOfRecordActionOutcome["REPLAYED"] = "replayed";
|
|
5345
|
+
})(SystemOfRecordActionOutcome || (SystemOfRecordActionOutcome = {}));
|
|
5346
|
+
/**
|
|
5347
|
+
* A declared system-of-record action was run (#1678) — see the enum member for the vocabulary argument.
|
|
5348
|
+
*
|
|
5349
|
+
* MINIMISATION is the shape: the input's field NAMES, never their values, and no result. The values live in the system
|
|
5350
|
+
* of record; a copy here would be a second store of that system's content, one no erasure reaches.
|
|
5351
|
+
*
|
|
5352
|
+
* assurance-control: WILDO.INTEGRATION.OUTBOUND_ACTIVITY_AUDIT — every physical action call to a system of record is
|
|
5353
|
+
* recorded with the instance, the action, the remote entity and its outcome.
|
|
5354
|
+
* assurance-control: WILDO.AUDIT.ATTRIBUTION — the real initiating actor is recorded through the shared service identity.
|
|
5355
|
+
*/
|
|
5356
|
+
export const AuditableEvent_SystemOfRecordActionExecuted_EventDataSchema = z.object({
|
|
5357
|
+
eventType: z.literal(CoreAuditableEventType.SYSTEM_OF_RECORD_ACTION_EXECUTED),
|
|
5358
|
+
/** The system-of-record INSTANCE acted on (`systemsOfRecord.<name>`). */
|
|
5359
|
+
systemOfRecord: z.string().trim().min(1),
|
|
5360
|
+
/** The application's name for the action (`postInvoice`), as the binding declares it. */
|
|
5361
|
+
action: z.string().trim().min(1),
|
|
5362
|
+
/** The read-through resource whose binding declares the action. */
|
|
5363
|
+
resourceType: z.string().trim().min(1),
|
|
5364
|
+
/** The remote entity or model the call was made on (`account.move`, an OData entity set or action import). */
|
|
5365
|
+
remoteEntityRef: z.string().trim().min(1),
|
|
5366
|
+
/** The call shape (`odoo-execute-kw` | `odata-bound-action` | `odata-unbound-action`). Spelled as a string: see `dialect` on the read-through row. */
|
|
5367
|
+
callShape: z.string().trim().min(1),
|
|
5368
|
+
outcome: z.enum(SystemOfRecordActionOutcome),
|
|
5369
|
+
/** Whether the action is declared as changing remote state. */
|
|
5370
|
+
writes: z.boolean(),
|
|
5371
|
+
/** The target record's synthesized id — a remote KEY, never a person's id. Absent for a record-free action. */
|
|
5372
|
+
targetResourceId: z.string().optional(),
|
|
5373
|
+
/** The LOCAL names of the input fields the call carried, sorted. Never their values. */
|
|
5374
|
+
inputFieldNames: z.array(z.string()),
|
|
5375
|
+
/** The stable code for REMOTE_REFUSED and OUTCOME_UNKNOWN (a `SystemOfRecordErrorCode`, or the transport kind). */
|
|
5376
|
+
failureCode: z.string().optional(),
|
|
5377
|
+
/** The REAL initiating user — absent only for machine and system executions. */
|
|
5378
|
+
initiatorUserId: z.string().optional(),
|
|
5379
|
+
/** The execution type that acted. */
|
|
5380
|
+
executionType: z.string().optional(),
|
|
5381
|
+
/** The organization the action was run for — the owner organization, once admitted. */
|
|
5382
|
+
organizationId: z.string().optional(),
|
|
5383
|
+
/** The organization unit whose partition the action landed in, when the instance is partitioned and it is known. */
|
|
5384
|
+
organizationUnitId: z.string().optional(),
|
|
5385
|
+
});
|
|
5386
|
+
/**
|
|
5387
|
+
* A declared system-of-record action was REFUSED before anything was sent (#1678).
|
|
5388
|
+
*
|
|
5389
|
+
* assurance-control: WILDO.ACCESS.AUTHORIZATION_DECISION_AUDIT — every refusal of an action on a system of record is
|
|
5390
|
+
* recorded with the caller, the instance, the action and the rule that refused it.
|
|
5391
|
+
*/
|
|
5392
|
+
export const AuditableEvent_SystemOfRecordActionRefused_EventDataSchema = z.object({
|
|
5393
|
+
eventType: z.literal(CoreAuditableEventType.SYSTEM_OF_RECORD_ACTION_REFUSED),
|
|
5394
|
+
systemOfRecord: z.string().trim().min(1),
|
|
5395
|
+
action: z.string().trim().min(1),
|
|
5396
|
+
/** The declaring resource, when the action was found at all (absent for ACTION_NOT_DECLARED). */
|
|
5397
|
+
resourceType: z.string().optional(),
|
|
5398
|
+
/** The target the caller named, for a record-targeted action. */
|
|
5399
|
+
targetResourceId: z.string().optional(),
|
|
5400
|
+
/** The `SystemOfRecordErrorCode` that refused it. */
|
|
5401
|
+
refusalCode: z.string().trim().min(1),
|
|
5402
|
+
/** The partition rule that refused it, for ACTION_PARTITION_REFUSED (`SystemOfRecordWritePartitionRefusal`). */
|
|
5403
|
+
refusalReason: z.string().optional(),
|
|
5404
|
+
initiatorUserId: z.string().optional(),
|
|
5405
|
+
executionType: z.string().optional(),
|
|
5406
|
+
/** The organization the caller initiated the action for — possibly NOT the owner, which is what a reviewer looks for. */
|
|
5407
|
+
organizationId: z.string().optional(),
|
|
5408
|
+
});
|
|
5409
|
+
/**
|
|
5410
|
+
* An operator reset a pipeline (#1734) — see {@link CoreAuditableEventType.EXTERNAL_DATA_PIPELINE_RESET}.
|
|
5411
|
+
*
|
|
5412
|
+
* The DISCARDED state is the point of the row: the pass id, cursor and watermark are remote POSITIONS (an id, a
|
|
5413
|
+
* continuation link, a timestamp), never record content, and they are what lets a reviewer say which part of a sync
|
|
5414
|
+
* the reset threw away. The door is authenticated by the application admin secret, which names no person, so the
|
|
5415
|
+
* row's `userId` is empty; `statedOperator` is who the operator SAID they are, recorded as a statement, and `reason`
|
|
5416
|
+
* is their own words — which is why the event exports at SUBJECT_DETAIL.
|
|
5417
|
+
*
|
|
5418
|
+
* assurance-control: WILDO.AUDIT.SECURITY_EVENT — an operator's reset of a pipeline is recorded with what it discarded
|
|
5419
|
+
* and why.
|
|
5420
|
+
*/
|
|
5421
|
+
export const AuditableEvent_ExternalDataPipelineReset_EventDataSchema = z.object({
|
|
5422
|
+
eventType: z.literal(CoreAuditableEventType.EXTERNAL_DATA_PIPELINE_RESET),
|
|
5423
|
+
/** The destination resource whose pipeline was reset. */
|
|
5424
|
+
pipelineResourceType: z.string().trim().min(1),
|
|
5425
|
+
/** The system-of-record instance the pipeline reads (`systemsOfRecord.<name>`). */
|
|
5426
|
+
systemOfRecord: z.string().trim().min(1),
|
|
5427
|
+
resetMode: z.enum(ExternalDataPipelineResetMode),
|
|
5428
|
+
/** Why, in the operator's words. Required by the door. */
|
|
5429
|
+
reason: z.string().trim().min(1).max(2000),
|
|
5430
|
+
/** Who the operator said they are, when they said. A statement, not an authenticated identity. */
|
|
5431
|
+
statedOperator: z.string().trim().min(1).max(200).optional(),
|
|
5432
|
+
/** Whether the pipeline had a state row at all. A reset of a pipeline that never ran discards nothing. */
|
|
5433
|
+
stateFound: z.boolean(),
|
|
5434
|
+
/** The discarded full pass's id; null when no pass was in flight. */
|
|
5435
|
+
discardedPassId: z.string().nullable(),
|
|
5436
|
+
/** The discarded full pass's cursor — a remote position; null at the start of a pass or with none in flight. */
|
|
5437
|
+
discardedCursor: z.string().nullable(),
|
|
5438
|
+
/** When the discarded pass started, ISO-8601; null when none was in flight. */
|
|
5439
|
+
discardedPassStartedAt: z.string().nullable(),
|
|
5440
|
+
/** The discarded incremental watermark (FULL_RESYNC only) — a remote position; null when none was discarded. */
|
|
5441
|
+
discardedIncrementalWatermark: z.string().nullable(),
|
|
5442
|
+
/** The discarded in-flight incremental cursor (FULL_RESYNC only); null when none was discarded. */
|
|
5443
|
+
discardedIncrementalCursor: z.string().nullable(),
|
|
5444
|
+
});
|
|
5445
|
+
/**
|
|
5446
|
+
* An operator answered an outbound write of unknown outcome (#2039) — see
|
|
5447
|
+
* {@link CoreAuditableEventType.EXTERNAL_DATA_OUTBOUND_UNKNOWN_RESOLVED}.
|
|
5448
|
+
*
|
|
5449
|
+
* Like the reset, the door is authenticated by the application admin secret, which names no person: the row's `userId`
|
|
5450
|
+
* is empty, `statedOperator` is who the operator SAID they are, and `reason` is their own words (SUBJECT_DETAIL on
|
|
5451
|
+
* export). `remoteKey` is the remote record's identity the operator supplied, never record content.
|
|
5452
|
+
*
|
|
5453
|
+
* assurance-control: WILDO.AUDIT.SECURITY_EVENT — an operator's answer about another system's state is recorded with
|
|
5454
|
+
* what it changed locally and why.
|
|
5455
|
+
*/
|
|
5456
|
+
export const AuditableEvent_ExternalDataOutboundUnknownResolved_EventDataSchema = z.object({
|
|
5457
|
+
eventType: z.literal(CoreAuditableEventType.EXTERNAL_DATA_OUTBOUND_UNKNOWN_RESOLVED),
|
|
5458
|
+
/** The OUTBOUND pipeline's destination resource. */
|
|
5459
|
+
pipelineResourceType: z.string().trim().min(1),
|
|
5460
|
+
/** The system-of-record instance the pipeline sends to (`systemsOfRecord.<name>`). */
|
|
5461
|
+
systemOfRecord: z.string().trim().min(1),
|
|
5462
|
+
/** The destination row whose change was of unknown outcome. */
|
|
5463
|
+
localResourceId: z.string().trim().min(1),
|
|
5464
|
+
/** The write that was of unknown outcome, as its core operation (`create` / `update`). */
|
|
5465
|
+
operationIdentifier: z.string().trim().min(1),
|
|
5466
|
+
answer: z.enum(ExternalDataOutboundUnknownAnswer),
|
|
5467
|
+
/** The remote key the operator supplied for an applied CREATE; null otherwise. */
|
|
5468
|
+
remoteKey: z.string().nullable(),
|
|
5469
|
+
/** Whether the answer wrote that key onto the local row (false when the row already held the same key). */
|
|
5470
|
+
remoteKeyWritten: z.boolean(),
|
|
5471
|
+
/** Whether a change is still owed after the answer: a NOT_APPLIED answer, or a local change made since the send. */
|
|
5472
|
+
changeStillOwed: z.boolean(),
|
|
5473
|
+
/** Why, in the operator's words. Required by the door. */
|
|
5474
|
+
reason: z.string().trim().min(1).max(2000),
|
|
5475
|
+
/** Who the operator said they are, when they said. A statement, not an authenticated identity. */
|
|
5476
|
+
statedOperator: z.string().trim().min(1).max(200).optional(),
|
|
5477
|
+
});
|
|
5478
|
+
/**
|
|
5479
|
+
* A BIDIRECTIONAL pipeline resolved a conflict on one row (#1723) — see
|
|
5480
|
+
* {@link CoreAuditableEventType.EXTERNAL_DATA_CONFLICT_RESOLVED}. Identities and field NAMES only, never a field's
|
|
5481
|
+
* value: the row says which side's change to which fields was discarded, and the values are in the two systems.
|
|
5482
|
+
*
|
|
5483
|
+
* assurance-control: WILDO.AUDIT.SECURITY_EVENT — a resolution that overwrites one side's data is recorded with the row,
|
|
5484
|
+
* the fields, the winning side and who chose it.
|
|
5485
|
+
*/
|
|
5486
|
+
export const AuditableEvent_ExternalDataConflictResolved_EventDataSchema = z.object({
|
|
5487
|
+
eventType: z.literal(CoreAuditableEventType.EXTERNAL_DATA_CONFLICT_RESOLVED),
|
|
5488
|
+
/** The BIDIRECTIONAL pipeline's destination resource. */
|
|
5489
|
+
pipelineResourceType: z.string().trim().min(1),
|
|
5490
|
+
/** The system-of-record instance on the other side (`systemsOfRecord.<name>`). */
|
|
5491
|
+
systemOfRecord: z.string().trim().min(1),
|
|
5492
|
+
/** The local row. */
|
|
5493
|
+
localResourceId: z.string().trim().min(1),
|
|
5494
|
+
/** The remote record's key. */
|
|
5495
|
+
remoteKey: z.string().trim().min(1),
|
|
5496
|
+
winner: z.enum(ExternalDataConflictWinner),
|
|
5497
|
+
decidedBy: z.enum(ExternalDataConflictDecisionSource),
|
|
5498
|
+
/**
|
|
5499
|
+
* The local fields whose values differ between the two sides, and so are overwritten on the LOSING side: loaded over
|
|
5500
|
+
* now when the remote side wins, sent over by the next outbound pass when the local side wins.
|
|
5501
|
+
*/
|
|
5502
|
+
overwrittenFieldNames: z.array(z.string().min(1)),
|
|
5503
|
+
/** The record's row version on the system of record when the conflict was resolved; null when it carried none. */
|
|
5504
|
+
remoteVersion: z.string().nullable(),
|
|
5505
|
+
/** The version the two sides last agreed on; null when they never had. */
|
|
5506
|
+
agreedVersion: z.string().nullable(),
|
|
5507
|
+
});
|
|
3276
5508
|
/**
|
|
3277
5509
|
* A subject erasure COMPLETED while rows linked to the subject remain live in an HTTP_API-bound
|
|
3278
5510
|
* external system, on the controller's explicit per-request acknowledgement (ETL D6 stance 6c).
|
|
@@ -3284,6 +5516,9 @@ export const AuditableEvent_HttpApiExternalErasure_EventDataSchema = z.object({
|
|
|
3284
5516
|
*
|
|
3285
5517
|
* assurance-control: WILDO.AUDIT.ATTRIBUTION — an acknowledged erasure hole is recorded per
|
|
3286
5518
|
* resource, per erasure request, never as a standing posture.
|
|
5519
|
+
*
|
|
5520
|
+
* assurance-control: WILDO.PRIVACY.ERASURE_PROPAGATION — a store the erasure deliberately did not
|
|
5521
|
+
* reach is recorded as such, so the accounting cannot read as complete.
|
|
3287
5522
|
*/
|
|
3288
5523
|
export const AuditableEvent_HttpApiNonErasureAcknowledged_EventDataSchema = z.object({
|
|
3289
5524
|
eventType: z.literal(CoreAuditableEventType.HTTP_API_NON_ERASURE_ACKNOWLEDGED),
|
|
@@ -3293,8 +5528,8 @@ export const AuditableEvent_HttpApiNonErasureAcknowledged_EventDataSchema = z.ob
|
|
|
3293
5528
|
subjectIds: z.array(z.string().trim().min(1)).min(1),
|
|
3294
5529
|
/** The HTTP_API-bound Wildo resource whose rows remain un-erased. */
|
|
3295
5530
|
resourceType: z.string().trim().min(1),
|
|
3296
|
-
/** The
|
|
3297
|
-
|
|
5531
|
+
/** The system-of-record INSTANCE the rows remain in (`systemsOfRecord.<name>`) — see the read-through schema for the rename. */
|
|
5532
|
+
systemOfRecord: z.string().trim().min(1),
|
|
3298
5533
|
/** The remote entity (OData entity set / Odoo model / declared REST surface). */
|
|
3299
5534
|
remoteEntityRef: z.string().trim().min(1),
|
|
3300
5535
|
/** The transport dialect spoken (`odata` | `rest-json` | `odoo-jsonrpc`). */
|
|
@@ -3308,6 +5543,40 @@ export const AuditableEvent_HttpApiNonErasureAcknowledged_EventDataSchema = z.ob
|
|
|
3308
5543
|
/** Tenant scope, when the erasure request carried one. */
|
|
3309
5544
|
organizationId: z.string().optional(),
|
|
3310
5545
|
});
|
|
5546
|
+
/**
|
|
5547
|
+
* A subject erasure's outcome at one RECIPIENT of the subject's data (#1710) — see
|
|
5548
|
+
* {@link CoreAuditableEventType.SUBJECT_ERASURE_RECIPIENT_OUTCOME}.
|
|
5549
|
+
*
|
|
5550
|
+
* Art. 19 asks the controller to communicate an erasure "to each recipient to whom the personal data have been
|
|
5551
|
+
* disclosed" and to tell the data subject who they are on request; this row records, per recipient, what the erasure
|
|
5552
|
+
* did and who owes that communication. `status` is absent for a recipient reached with the TENANT's account, which is
|
|
5553
|
+
* the tenant's to notify and never the operator's effect to run.
|
|
5554
|
+
* spec-cite: GDPR Art. 19, https://gdpr-info.eu/art-19-gdpr/ (fetched 2026-09-29)
|
|
5555
|
+
*
|
|
5556
|
+
* assurance-control: WILDO.PRIVACY.ERASURE_PROPAGATION — every recipient the application declares is accounted for
|
|
5557
|
+
* at every erasure, and one that no effect reached is recorded as unmeasured rather than passing silently.
|
|
5558
|
+
*/
|
|
5559
|
+
export const AuditableEvent_SubjectErasureRecipientOutcome_EventDataSchema = z.object({
|
|
5560
|
+
eventType: z.literal(CoreAuditableEventType.SUBJECT_ERASURE_RECIPIENT_OUTCOME),
|
|
5561
|
+
/** The erased subject's resource type. */
|
|
5562
|
+
subjectResourceType: z.string().trim().min(1),
|
|
5563
|
+
/** The erased subject rows. */
|
|
5564
|
+
subjectIds: z.array(z.string().trim().min(1)).min(1),
|
|
5565
|
+
/** The recipient: a provider ref. */
|
|
5566
|
+
recipientRef: z.string().trim().min(1),
|
|
5567
|
+
/** `SubjectDataRecipientReach` — whose account reached it. */
|
|
5568
|
+
reach: z.enum(SubjectDataRecipientReach),
|
|
5569
|
+
/** `SubjectDataRecipientObligation` — who owes the Art. 19 communication. */
|
|
5570
|
+
obligation: z.enum(SubjectDataRecipientObligation),
|
|
5571
|
+
/** `SubjectDataRecipientRelevance` — carries this subject's data, or may have received it. */
|
|
5572
|
+
relevance: z.enum(SubjectDataRecipientRelevance),
|
|
5573
|
+
/** `SubjectErasureExternalEffectStatus` at the recipient. Absent for a tenant-account recipient. */
|
|
5574
|
+
status: z.enum(SubjectErasureExternalEffectStatus).optional(),
|
|
5575
|
+
/** The effects that answered for it (`billing-provider`, `recipient:<ref>`, …). */
|
|
5576
|
+
effectRefs: z.array(z.string().trim().min(1)),
|
|
5577
|
+
/** Tenant scope, when the erasure request carried one. */
|
|
5578
|
+
organizationId: z.string().optional(),
|
|
5579
|
+
});
|
|
3311
5580
|
/**
|
|
3312
5581
|
* Audit-log event for cross-frontend session handoff issuance
|
|
3313
5582
|
* (cross-app-jwt-propagation Step 2).
|
|
@@ -3548,16 +5817,23 @@ export const AuditableEvent_DataSchema = z.record(z.string(), z.any());
|
|
|
3548
5817
|
export const AuditableEvent_BaseSchema = z.object({
|
|
3549
5818
|
_id: z.string().isPrimaryKey().isSummaryField(),
|
|
3550
5819
|
/**
|
|
3551
|
-
* Store-agnostic, server-
|
|
5820
|
+
* Store-agnostic, server-assigned correlation key (UUID). The Mongo `_id` is
|
|
3552
5821
|
* THIS store's primary key, but immudb (and any future audit sink) has its
|
|
3553
5822
|
* own native key — so cross-store correlation needs an id that belongs to the
|
|
3554
|
-
* EVENT, not to one store.
|
|
5823
|
+
* EVENT, not to one store. Fixed in `AuditLogsBackendService._createAuditLog`
|
|
5824
|
+
* — minted there, or supplied deterministically by a deferred recording (#535) —
|
|
3555
5825
|
* BEFORE the DB write and carried on BOTH the DB row AND the provider fan-out
|
|
3556
5826
|
* emission, so the Phase-3 completeness reconciler can match DB rows ⇄ immudb
|
|
3557
5827
|
* records (and `AuditLogVerification.verifyAuditEvent(eventId)` resolves the
|
|
3558
5828
|
* same key). Not the primary key: `_id` stays the DB PK.
|
|
5829
|
+
*
|
|
5830
|
+
* UNIQUE, because it names ONE event (#535). A caller that delivers an event at least once — an outbox relay replaying
|
|
5831
|
+
* an audit record after a crash — supplies a deterministic `eventId`, and a redelivery then collides here instead of
|
|
5832
|
+
* writing a second row. immudb (write-if-absent by `eventId`) and every SIEM wire format (whose dedup key is this
|
|
5833
|
+
* value) are idempotent on the same id, so all three destinations agree on "once". Sparse, as `.isUnique()` defaults:
|
|
5834
|
+
* a row written before `eventId` existed carries none and is not a duplicate of another.
|
|
3559
5835
|
*/
|
|
3560
|
-
eventId: z.string().isDBIndexed(),
|
|
5836
|
+
eventId: z.string().isDBIndexed().isUnique(),
|
|
3561
5837
|
// Note: .optional() must come AFTER decorators to preserve optionality in TypeScript type inference
|
|
3562
5838
|
userId: z.string().isSummaryField().optional(),
|
|
3563
5839
|
/**
|
|
@@ -3641,6 +5917,59 @@ export const AuditableEvent_BaseSchema = z.object({
|
|
|
3641
5917
|
// observation of what they did.
|
|
3642
5918
|
clientInstanceId: z.string().isDBIndexed().isSummaryField().optional()
|
|
3643
5919
|
.dataCategories(PersonalDataCategory.IDENTITY),
|
|
5920
|
+
/**
|
|
5921
|
+
* The KIND of principal whose authority was used ({@link AuditActorKind}) — `userId` names the
|
|
5922
|
+
* principal, this says what kind it is. Filled by `_createAuditLog` on every row it writes, and by
|
|
5923
|
+
* nothing else. It resolves from the principal the emitter NAMES when there is one (a sign-in is
|
|
5924
|
+
* audited under a pre-auth context, which is true of the request and wrong about who acted), else
|
|
5925
|
+
* from the request `ExecutionContext`, else — last resort — from the actor id the emitter wrote.
|
|
5926
|
+
* Optional in the schema only because rows written before it existed carry none.
|
|
5927
|
+
*
|
|
5928
|
+
* It is the PRINCIPAL's kind and never the agent's: whether an agent acted is `agentActor`'s presence.
|
|
5929
|
+
*/
|
|
5930
|
+
actorKind: z.enum(AuditActorKind).systemEnum('AuditActorKind').isDBIndexed().isSummaryField().optional(),
|
|
5931
|
+
/**
|
|
5932
|
+
* Which AI agent performed the action, and in which execution — present ONLY when an agent acted
|
|
5933
|
+
* ({@link AuditAgentActorSchema}). Taken from the request `ExecutionContext`, else from the ambient
|
|
5934
|
+
* agent frame the framework opens around every tool call, so a tool that builds its own context or
|
|
5935
|
+
* writes as the system is attributed without doing anything. Identifiers only: never argument
|
|
5936
|
+
* values, never digests of them.
|
|
5937
|
+
*
|
|
5938
|
+
* USAGE — its `agentExecutionId` is a pseudonymous key into a transcript the user owns; erasing the
|
|
5939
|
+
* transcript leaves the key resolving to nothing, which is what keeps an unscrubbable ledger
|
|
5940
|
+
* compatible with erasure.
|
|
5941
|
+
*/
|
|
5942
|
+
agentActor: AuditAgentActorSchema.optional().dataCategories(PersonalDataCategory.USAGE),
|
|
5943
|
+
/**
|
|
5944
|
+
* The external OAuth client a person delegated to (`actorKind = DELEGATED_CLIENT`) — the verified
|
|
5945
|
+
* token's `azp`, captured after the audience check and never from a header. An opaque string: a
|
|
5946
|
+
* client identified by an HTTPS URL has no row to join to. Evidence only.
|
|
5947
|
+
*/
|
|
5948
|
+
delegatingClientId: z.string().isSummaryField().optional(),
|
|
5949
|
+
/**
|
|
5950
|
+
* The machine credential a MACHINE principal authenticated with (`actorKind = MACHINE`): an API key's
|
|
5951
|
+
* or OAuth client's id, or — for a shared platform secret that has no credential record — its stable
|
|
5952
|
+
* name, never its value. Recorded here and never in a `*By` field, whose contract is "a user id or a
|
|
5953
|
+
* sentinel".
|
|
5954
|
+
*/
|
|
5955
|
+
principalCredentialId: z.string().isSummaryField().optional(),
|
|
5956
|
+
/**
|
|
5957
|
+
* The service-provider relationship the principal acted THROUGH (#1597) — present only on a row written
|
|
5958
|
+
* in a CLIENT organization by an expert or firm machine client that a live relationship admitted there.
|
|
5959
|
+
* Derived by `_createAuditLog` from the role entry for the row's organization, never supplied by an
|
|
5960
|
+
* emitter. Indexed because the client filters its own trail by relationship ("what did firm X do here?").
|
|
5961
|
+
*/
|
|
5962
|
+
actingViaServiceProviderRelationshipId: z.string().isDBIndexed().isSummaryField().optional(),
|
|
5963
|
+
/** The firm behind {@link actingViaServiceProviderRelationshipId}; present exactly when it is. Evidence only. */
|
|
5964
|
+
providerOrganizationId: z.string().isSummaryField().optional(),
|
|
5965
|
+
/**
|
|
5966
|
+
* Where the second factor that satisfied the CLIENT organization's authentication policy came from, on a row a
|
|
5967
|
+
* firm's expert caused in that client (#1633) — present only when the client's policy required one and the
|
|
5968
|
+
* session satisfied it for that client. Derived by `_createAuditLog` from the request's context for the row's own
|
|
5969
|
+
* organization, never supplied by an emitter. The client's answer to "was this action MFA-protected, and by whom?".
|
|
5970
|
+
*/
|
|
5971
|
+
serviceProviderFactorSource: z.enum(FactorSatisfactionSource).systemEnum('FactorSatisfactionSource').isSummaryField().optional()
|
|
5972
|
+
.describe('On an action a service firm\'s expert took inside a client organization whose policy requires a second factor: where the factor that satisfied that policy came from, a step-up to this application or the firm\'s own identity provider the client trusts. Absent when the client\'s policy required none.'),
|
|
3644
5973
|
riskLevel: z.enum(ResourceOperationRiskLevel).isSummaryField(),
|
|
3645
5974
|
// USAGE — an audit row is a record of what a principal DID. The event type and its data together
|
|
3646
5975
|
// are the observation, so both carry the category; `riskLevel`, `eventCategory` and `severity` are
|
|
@@ -3651,7 +5980,11 @@ export const AuditableEvent_BaseSchema = z.object({
|
|
|
3651
5980
|
// immutable ledger cannot be scrubbed. This declaration is about the audit row's OWN fields, which
|
|
3652
5981
|
// hold personal data whether or not anyone wanted them to — and a notice must say so precisely
|
|
3653
5982
|
// BECAUSE they are unerasable.
|
|
3654
|
-
|
|
5983
|
+
//
|
|
5984
|
+
// `.systemEnum(CORE_AUDITABLE_EVENT_TYPE)` names the OPEN vocabulary the value belongs to (#1791): the field stays a
|
|
5985
|
+
// string (whoever emits an event writes its type), and every trail shows the type's word
|
|
5986
|
+
// (`system_enums.CoreAuditableEventType.<value>`) instead of its wire value, the missing word showing the value.
|
|
5987
|
+
eventType: z.string().systemEnum(EngineOpenVocabulary.CORE_AUDITABLE_EVENT_TYPE).isSummaryField().dataCategories(PersonalDataCategory.USAGE),
|
|
3655
5988
|
eventData: AuditableEvent_DataSchema.dataCategories(PersonalDataCategory.USAGE),
|
|
3656
5989
|
/** Populated by service layer via getAuditEventClassification(). Required for CREATE (audit logs are REPOSITORY_ONLY, no API). */
|
|
3657
5990
|
eventCategory: z.enum(AuditEventCategory).isSummaryField(),
|
|
@@ -3661,6 +5994,34 @@ export const AuditableEvent_BaseSchema = z.object({
|
|
|
3661
5994
|
updatedAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate()
|
|
3662
5995
|
});
|
|
3663
5996
|
// Type-safe discriminated union for TypeScript validation (used in service layer)
|
|
5997
|
+
/**
|
|
5998
|
+
* One retention-class sweep run, summarised per class (#1636). Counts only — no row id, no field value, no
|
|
5999
|
+
* person: the per-resource detail is in the `retentionEnforcementRecords` row the same run wrote.
|
|
6000
|
+
*/
|
|
6001
|
+
export const AuditableEvent_RetentionEnforcementRecorded_EventDataSchema = z.object({
|
|
6002
|
+
eventType: z.literal(CoreAuditableEventType.RETENTION_ENFORCEMENT_RECORDED),
|
|
6003
|
+
/** The run's `runRef`, shared with every enforcement record it wrote. */
|
|
6004
|
+
runRef: z.string(),
|
|
6005
|
+
/** The instant the run computed its cutoffs from, ISO. */
|
|
6006
|
+
sweptAt: z.string(),
|
|
6007
|
+
/** FAILED when any resource failed; else DEFERRED_BY_CEILING when any stopped at the ceiling; else COMPLETED. */
|
|
6008
|
+
outcome: z.enum(RetentionEnforcementOutcome),
|
|
6009
|
+
boundResourceCount: z.number().int().min(0),
|
|
6010
|
+
deletedCount: z.number().int().min(0),
|
|
6011
|
+
/** Enforcement records this run could not write. Non-zero fails the run: its enforcement is unevidenced. */
|
|
6012
|
+
recordWriteFailureCount: z.number().int().min(0),
|
|
6013
|
+
classes: z.array(z.object({
|
|
6014
|
+
retentionClass: z.enum(DataRetentionClass),
|
|
6015
|
+
resourceCount: z.number().int().min(0),
|
|
6016
|
+
deletedCount: z.number().int().min(0),
|
|
6017
|
+
completedCount: z.number().int().min(0),
|
|
6018
|
+
deferredByCeilingCount: z.number().int().min(0),
|
|
6019
|
+
failedCount: z.number().int().min(0),
|
|
6020
|
+
skippedCount: z.number().int().min(0),
|
|
6021
|
+
/** Absent when no hold check ran for any resource of the class (#1634). */
|
|
6022
|
+
heldSkippedCount: z.number().int().min(0).optional(),
|
|
6023
|
+
})),
|
|
6024
|
+
});
|
|
3664
6025
|
export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType', [
|
|
3665
6026
|
AuditableEvent_User_LoginEventDataSchema,
|
|
3666
6027
|
AuditableEvent_User_LogoutEventDataSchema,
|
|
@@ -3673,6 +6034,7 @@ export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType',
|
|
|
3673
6034
|
AuditableEvent_User_AppRolesChangedEventDataSchema,
|
|
3674
6035
|
AuditableEvent_Application_SuperAdminFloorBreachedEventDataSchema,
|
|
3675
6036
|
AuditableEvent_Organization_OwnerFloorBreachedEventDataSchema,
|
|
6037
|
+
AuditableEvent_Organization_TypeAssignedEventDataSchema,
|
|
3676
6038
|
AuditableEvent_OrganizationMember_InvitedEventDataSchema,
|
|
3677
6039
|
AuditableEvent_OrganizationMember_JoinedEventDataSchema,
|
|
3678
6040
|
AuditableEvent_OrganizationMember_UpdatedEventDataSchema,
|
|
@@ -3700,12 +6062,40 @@ export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType',
|
|
|
3700
6062
|
AuditableEvent_User_TokenRefreshedEventDataSchema,
|
|
3701
6063
|
AuditableEvent_Organization_SSOConfigurationChangedEventDataSchema,
|
|
3702
6064
|
AuditableEvent_Organization_SIEMExportConfiguredEventDataSchema,
|
|
6065
|
+
AuditableEvent_Organization_SIEMExportDisabledEventDataSchema,
|
|
6066
|
+
AuditableEvent_Organization_SIEMExportDestinationChangedEventDataSchema,
|
|
3703
6067
|
AuditableEvent_OrganizationProviderCredential_SetEventDataSchema,
|
|
3704
6068
|
AuditableEvent_OrganizationProviderCredential_RotatedEventDataSchema,
|
|
3705
6069
|
AuditableEvent_OrganizationProviderCredential_UsedEventDataSchema,
|
|
3706
6070
|
AuditableEvent_OrganizationProviderCredential_DeletedEventDataSchema,
|
|
3707
6071
|
AuditableEvent_ApplicationAuthPolicyChanged_EventDataSchema,
|
|
6072
|
+
AuditableEvent_RetentionEnforcementRecorded_EventDataSchema,
|
|
3708
6073
|
AuditableEvent_Webhook_EndpointTestDispatchedEventDataSchema,
|
|
6074
|
+
AuditableEvent_InboundDelivery_RejectedEventDataSchema,
|
|
6075
|
+
AuditableEvent_InboundDelivery_AcceptedEventDataSchema,
|
|
6076
|
+
AuditableEvent_InboundDelivery_UnroutableEventDataSchema,
|
|
6077
|
+
AuditableEvent_InboundDelivery_ProcessedEventDataSchema,
|
|
6078
|
+
AuditableEvent_InboundDelivery_FailedEventDataSchema,
|
|
6079
|
+
AuditableEvent_InboundDelivery_DeadEventDataSchema,
|
|
6080
|
+
AuditableEvent_InboundDelivery_ReplayedEventDataSchema,
|
|
6081
|
+
AuditableEvent_InboundDelivery_BelowAssuranceEventDataSchema,
|
|
6082
|
+
AuditableEvent_InboundReply_SentEventDataSchema,
|
|
6083
|
+
AuditableEvent_InboundReply_FailedEventDataSchema,
|
|
6084
|
+
AuditableEvent_InboundReplyToken_RevokedEventDataSchema,
|
|
6085
|
+
AuditableEvent_InboundReplyToken_DowngradedEventDataSchema,
|
|
6086
|
+
AuditableEvent_OrganizationEmailDomain_ClaimedEventDataSchema,
|
|
6087
|
+
AuditableEvent_OrganizationEmailDomain_OwnershipVerifiedEventDataSchema,
|
|
6088
|
+
AuditableEvent_OrganizationEmailDomain_VerifiedEventDataSchema,
|
|
6089
|
+
AuditableEvent_OrganizationEmailDomain_SuspendedEventDataSchema,
|
|
6090
|
+
AuditableEvent_OrganizationEmailDomain_RemovedEventDataSchema,
|
|
6091
|
+
AuditableEvent_ClientMailbox_CreatedEventDataSchema,
|
|
6092
|
+
AuditableEvent_ClientMailbox_RemovedEventDataSchema,
|
|
6093
|
+
AuditableEvent_InboundEmail_AttachmentWithheldEventDataSchema,
|
|
6094
|
+
AuditableEvent_InboundEmail_RejectedLimitEventDataSchema,
|
|
6095
|
+
AuditableEvent_AutonomousAgent_BoundEventDataSchema,
|
|
6096
|
+
AuditableEvent_AutonomousAgent_UnboundEventDataSchema,
|
|
6097
|
+
AuditableEvent_AutonomousAgent_TurnStartedEventDataSchema,
|
|
6098
|
+
AuditableEvent_AutonomousAgent_TurnRefusedEventDataSchema,
|
|
3709
6099
|
AuditableEvent_SCIM_TokenCreatedEventDataSchema,
|
|
3710
6100
|
AuditableEvent_SCIM_TokenRevokedEventDataSchema,
|
|
3711
6101
|
AuditableEvent_SCIM_UserProvisionedEventDataSchema,
|
|
@@ -3742,14 +6132,45 @@ export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType',
|
|
|
3742
6132
|
AuditableEvent_CrossTenantAdministrativeAccess_EventDataSchema,
|
|
3743
6133
|
AuditableEvent_PlatformDirectoryAccess_EventDataSchema,
|
|
3744
6134
|
AuditableEvent_PlatformAccessGrantLifecycle_EventDataSchema,
|
|
6135
|
+
AuditableEvent_LegalHoldPlaced_EventDataSchema,
|
|
6136
|
+
AuditableEvent_LegalHoldReleased_EventDataSchema,
|
|
6137
|
+
AuditableEvent_ModelCostAggregateInvoiceLinked_EventDataSchema,
|
|
6138
|
+
AuditableEvent_CorrectionCaptureSettingChanged_EventDataSchema,
|
|
6139
|
+
AuditableEvent_EvaluationExportAuthorizationChanged_EventDataSchema,
|
|
6140
|
+
AuditableEvent_EvaluationDatasetExported_EventDataSchema,
|
|
6141
|
+
AuditableEvent_EvaluationDatasetExportRefused_EventDataSchema,
|
|
6142
|
+
AuditableEvent_ServiceProviderRelationshipLifecycle_EventDataSchema,
|
|
6143
|
+
AuditableEvent_ServiceProviderMachineClientAdmissionChanged_EventDataSchema,
|
|
6144
|
+
AuditableEvent_ServiceProviderExpertAssigned_EventDataSchema,
|
|
6145
|
+
AuditableEvent_ServiceProviderExpertUnassigned_EventDataSchema,
|
|
6146
|
+
AuditableEvent_ServiceProviderExpertApprovalRequested_EventDataSchema,
|
|
6147
|
+
AuditableEvent_ServiceProviderExpertApprovalGranted_EventDataSchema,
|
|
6148
|
+
AuditableEvent_ServiceProviderExpertApprovalDenied_EventDataSchema,
|
|
6149
|
+
AuditableEvent_ServiceProviderExpertApprovalLapsed_EventDataSchema,
|
|
6150
|
+
AuditableEvent_ServiceProviderCapabilityGranted_EventDataSchema,
|
|
6151
|
+
AuditableEvent_ServiceProviderCapabilityRevoked_EventDataSchema,
|
|
6152
|
+
AuditableEvent_ServiceProviderMfaTrustChanged_EventDataSchema,
|
|
6153
|
+
AuditableEvent_ServiceProviderClientAuthenticationSatisfied_EventDataSchema,
|
|
6154
|
+
AuditableEvent_ServiceProviderActivityFeedDecided_EventDataSchema,
|
|
6155
|
+
AuditableEvent_ServiceProviderActivityFeedDisclosureChanged_EventDataSchema,
|
|
6156
|
+
AuditableEvent_SystemOfRecordPartitionAssignmentLifecycle_EventDataSchema,
|
|
3745
6157
|
AuditableEvent_RetainedDataAccess_EventDataSchema,
|
|
6158
|
+
AuditableEvent_GovernedDocument_InteractionRecordedEventDataSchema,
|
|
3746
6159
|
AuditableEvent_SubjectDataExport_EventDataSchema,
|
|
3747
6160
|
AuditableEvent_CollectionDataExport_EventDataSchema,
|
|
3748
6161
|
AuditableEvent_User_SessionEvictedEventDataSchema,
|
|
3749
6162
|
AuditableEvent_HttpApiReadThroughAccess_EventDataSchema,
|
|
6163
|
+
AuditableEvent_HttpApiWriteThrough_EventDataSchema,
|
|
6164
|
+
AuditableEvent_SystemOfRecordActionExecuted_EventDataSchema,
|
|
6165
|
+
AuditableEvent_SystemOfRecordActionRefused_EventDataSchema,
|
|
6166
|
+
AuditableEvent_ExternalDataPipelineReset_EventDataSchema,
|
|
6167
|
+
AuditableEvent_ExternalDataOutboundUnknownResolved_EventDataSchema,
|
|
6168
|
+
AuditableEvent_ExternalDataConflictResolved_EventDataSchema,
|
|
3750
6169
|
AuditableEvent_ProviderOperationCall_EventDataSchema,
|
|
6170
|
+
AuditableEvent_ProviderOperationDenied_EventDataSchema,
|
|
3751
6171
|
AuditableEvent_HttpApiExternalErasure_EventDataSchema,
|
|
3752
6172
|
AuditableEvent_HttpApiNonErasureAcknowledged_EventDataSchema,
|
|
6173
|
+
AuditableEvent_SubjectErasureRecipientOutcome_EventDataSchema,
|
|
3753
6174
|
AuditableEvent_User_CrossFrontendHandoffIssuedEventDataSchema,
|
|
3754
6175
|
AuditableEvent_OAuth_DelegatedTokenIssuedEventDataSchema,
|
|
3755
6176
|
AuditableEvent_OAuth_ConsentGrantedEventDataSchema,
|