@wildo-ai/saas-models 1.1.5 → 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/applications/application-versions.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/application-versions.shared.resources-config.schemas.js +2 -1
- package/dist/esm/applications/application-versions.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/applications/applications-context.schemas.d.ts +176 -2
- package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.js +3 -2
- package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/applications/applications.shared.schemas.d.ts +7 -5
- package/dist/esm/applications/applications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.schemas.js +6 -4
- package/dist/esm/applications/applications.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts +10 -1
- 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 +49 -15
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.js.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 +27 -5
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.js +30 -4
- package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.d.ts +37 -11
- package/dist/esm/billing/billing-types.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.js +31 -19
- 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.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.js +1 -1
- package/dist/esm/billing/invoice-ref.shared.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.schemas.d.ts +7 -3
- package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product.shared.schemas.js +22 -7
- package/dist/esm/billing/product.shared.schemas.js.map +1 -1
- package/dist/esm/billing/promotions.shared.resources-config.schemas.js +8 -8
- package/dist/esm/billing/promotions.shared.resources-config.schemas.js.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 +56 -2
- package/dist/esm/billing/referral.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/referral.shared.schemas.d.ts +22 -37
- package/dist/esm/billing/referral.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/referral.shared.schemas.js +24 -44
- package/dist/esm/billing/referral.shared.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +9 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js +55 -22
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.schemas.d.ts +80 -5
- package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.schemas.js +85 -25
- package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.js +5 -5
- package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +143 -2
- 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/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +14 -1
- 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 +4 -0
- 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 +34 -0
- package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js +137 -3
- package/dist/esm/compliance/audit-trails/audit-export-projection.shared.schemas.js.map +1 -1
- 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 +28 -2
- 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 +29 -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 +38 -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 +1822 -146
- 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 +1777 -87
- 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 +148 -7
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
- package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts +2 -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 +2 -0
- package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.js.map +1 -1
- 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 +17 -8
- package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js +43 -20
- package/dist/esm/compliance/privacy/data-subject-rights.shared.schemas.js.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/operator-compliance-identity.shared.schemas.d.ts +37 -3
- 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 +33 -4
- package/dist/esm/compliance/privacy/operator-compliance-identity.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/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.shared.schemas.d.ts +178 -39
- package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.js +145 -35
- 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/config/app-configuration-shared.shared.schemas.d.ts +109 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.js +57 -0
- package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +69 -0
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.js +93 -0
- package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
- package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +16 -16
- package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +160 -61
- package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/frontend/navigation.shared.schemas.js +297 -65
- package/dist/esm/config/frontend/navigation.shared.schemas.js.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 +76 -3
- 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 +76 -2
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
- package/dist/esm/errors/errors.shared.schemas.d.ts +20 -1
- package/dist/esm/errors/errors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/errors/errors.shared.schemas.js +16 -9
- package/dist/esm/errors/errors.shared.schemas.js.map +1 -1
- package/dist/esm/errors/errors.shared.utils.d.ts +0 -24
- package/dist/esm/errors/errors.shared.utils.d.ts.map +1 -1
- package/dist/esm/errors/errors.shared.utils.js +0 -39
- package/dist/esm/errors/errors.shared.utils.js.map +1 -1
- package/dist/esm/errors/thrown-value-description.shared.utils.d.ts +6 -7
- package/dist/esm/errors/thrown-value-description.shared.utils.d.ts.map +1 -1
- package/dist/esm/errors/thrown-value-description.shared.utils.js +6 -7
- package/dist/esm/errors/thrown-value-description.shared.utils.js.map +1 -1
- 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 +1071 -23
- 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 +1065 -17
- 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 +5 -0
- package/dist/esm/external-data.exports.d.ts.map +1 -1
- package/dist/esm/external-data.exports.js +11 -0
- package/dist/esm/external-data.exports.js.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +17 -2
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +22 -4
- 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.map +1 -1
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +3 -0
- 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.map +1 -1
- package/dist/esm/external-providers/engine-capability-surface.shared.js +2 -0
- package/dist/esm/external-providers/engine-capability-surface.shared.js.map +1 -1
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +152 -1
- 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 +4 -3
- 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 +4 -3
- 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 +188 -4
- 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 +76 -9
- 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 +175 -33
- 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 +247 -42
- 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-browser-operations.shared.schemas.d.ts +53 -0
- package/dist/esm/external-providers/provider-browser-operations.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js +56 -0
- package/dist/esm/external-providers/provider-browser-operations.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +34 -0
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.js +34 -0
- 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 +174 -1
- 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 +125 -0
- 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 +3 -3
- 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-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 +5 -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 +13 -5
- package/dist/esm/features/application-features.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/features/connected-feature.example.d.ts.map +1 -1
- package/dist/esm/features/connected-feature.example.js +2 -1
- package/dist/esm/features/connected-feature.example.js.map +1 -1
- 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/scope-features.shared.schemas.d.ts +31 -17
- package/dist/esm/features/scope-features.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/scope-features.shared.schemas.js +27 -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 +5 -5
- package/dist/esm/flows-actors/actors.shared.schemas.d.ts +127 -11
- package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.js +32 -1
- package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts +16 -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/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/flows-actors-execution.shared.schemas.d.ts +142 -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 +209 -11
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +37 -2
- 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 +30 -2
- 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 -11
- 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 +12 -5
- 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 -6
- 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 -5
- package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.js.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.schemas.d.ts +15 -7
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.d.ts +15 -0
- package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts +506 -0
- package/dist/esm/flows-actors/human-decision.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/human-decision.shared.schemas.js +502 -0
- package/dist/esm/flows-actors/human-decision.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/provider-call-records.shared.resources-config.schemas.d.ts +5 -1
- package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js +19 -4
- package/dist/esm/flows-actors/provider-call-records.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts +13 -15
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.js +30 -17
- package/dist/esm/flows-actors/provider-call-records.shared.schemas.js.map +1 -1
- 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 +30 -0
- package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts.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 +61 -0
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts.map +1 -1
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js +61 -0
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js.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/lifecycle-state.shared.schemas.js +6 -6
- package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.js +8 -7
- package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.js +1 -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 +550 -30
- 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 +498 -34
- 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 +37 -6
- package/dist/esm/http-api-binding/http-api-transport-dialect.shared.d.ts.map +1 -1
- package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js +37 -6
- package/dist/esm/http-api-binding/http-api-transport-dialect.shared.js.map +1 -1
- 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/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 +58 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +67 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts +28 -0
- package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.js +29 -0
- package/dist/esm/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts +95 -1
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js +121 -0
- package/dist/esm/meta-workflows/orchestration.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/meta-workflows.exports.d.ts +0 -1
- package/dist/esm/meta-workflows.exports.d.ts.map +1 -1
- package/dist/esm/meta-workflows.exports.js +0 -1
- package/dist/esm/meta-workflows.exports.js.map +1 -1
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +7 -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 +35 -0
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.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-log.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.js +4 -3
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.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 +46 -16
- 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.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/notifications.shared.schemas.d.ts +66 -399
- package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.js +111 -58
- package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts +5 -5
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js +6 -6
- 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 +3 -0
- 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 +60 -14
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-members.shared.schemas.d.ts +3 -0
- package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-members.shared.schemas.js +30 -0
- package/dist/esm/organizations/organization-members.shared.schemas.js.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.schemas.js +4 -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 +5 -5
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.js +15 -10
- package/dist/esm/organizations/organization-profile.shared.schemas.js.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.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.js +9 -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.map +1 -1
- package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js +7 -2
- package/dist/esm/organizations/organization-units.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts +3 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +12 -8
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organizations.shared.schemas.d.ts +7 -2
- package/dist/esm/organizations/organizations.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organizations.shared.schemas.js +51 -1
- 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 +0 -1
- package/dist/esm/provider-registration-runtime.exports.d.ts.map +1 -1
- package/dist/esm/provider-registration-runtime.exports.js +0 -1
- package/dist/esm/provider-registration-runtime.exports.js.map +1 -1
- package/dist/esm/public-runtime/index.d.ts +30 -11
- package/dist/esm/public-runtime/index.d.ts.map +1 -1
- package/dist/esm/public-runtime/index.js +30 -11
- package/dist/esm/public-runtime/index.js.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.d.ts +36 -8
- package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.js +12 -0
- package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
- package/dist/esm/requests/header-keys.shared.d.ts +6 -0
- package/dist/esm/requests/header-keys.shared.d.ts.map +1 -1
- package/dist/esm/requests/header-keys.shared.js +7 -0
- package/dist/esm/requests/header-keys.shared.js.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-documentation.js +147 -8
- package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts +51 -23
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.js +64 -0
- package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.d.ts +78 -13
- package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.js +91 -18
- package/dist/esm/requests/websocket.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/resources-config.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.js +812 -32
- package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.d.ts +244 -48
- package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.js +151 -17
- 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 +353 -12
- package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.d.ts +45 -0
- package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.js +92 -0
- package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.d.ts +2 -17
- package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.js +24 -20
- package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
- package/dist/esm/resources/resources.shared.utils.d.ts +16 -8
- package/dist/esm/resources/resources.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.utils.js +16 -8
- 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/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/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/populated-file-fields.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/populated-file-fields.shared.utils.js +30 -19
- package/dist/esm/resources/utils/populated-file-fields.shared.utils.js.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/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.schemas.js +30 -4
- package/dist/esm/resources/utils/resource-polymorphism.schemas.js.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts +46 -0
- 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 +205 -22
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.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/shared-persistence-collection.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js +15 -9
- package/dist/esm/resources/utils/shared-persistence-collection.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/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 +37 -20
- 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 +61 -48
- 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/authentication.shared.dto.schemas.d.ts +5 -3
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +6 -0
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.js +2 -2
- 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 +19 -8
- 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 +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +5 -5
- 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.js +11 -11
- 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 +10 -8
- package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.js +8 -8
- 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.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +17 -16
- 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.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +28 -25
- 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 +17 -6
- 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 +90 -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 +0 -24
- 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 +79 -68
- 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 +8 -1
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js +7 -0
- 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.js +1 -1
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js.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/roles.shared.defaults.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.defaults.js +56 -0
- package/dist/esm/security/authorizations/roles.shared.defaults.js.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +77 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.js +90 -0
- package/dist/esm/security/authorizations/roles.shared.schemas.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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +46 -14
- 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 +81 -21
- 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.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +28 -8
- 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 +3 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +89 -14
- 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/outbound-target-control.shared.schemas.d.ts +7 -1
- package/dist/esm/security/outbound-target-control.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/outbound-target-control.shared.schemas.js +6 -0
- package/dist/esm/security/outbound-target-control.shared.schemas.js.map +1 -1
- 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-declaration.shared.schemas.d.ts +121 -8
- package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.d.ts.map +1 -1
- package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js +83 -4
- package/dist/esm/systems-of-record/system-of-record-declaration.shared.schemas.js.map +1 -1
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts +266 -8
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.d.ts.map +1 -1
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js +291 -7
- package/dist/esm/systems-of-record/system-of-record-error-codes.shared.js.map +1 -1
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts +313 -3
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.d.ts.map +1 -1
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js +369 -3
- package/dist/esm/systems-of-record/system-of-record-facet.shared.schemas.js.map +1 -1
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js +2 -1
- package/dist/esm/systems-of-record/system-of-record-partition-assignments.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts +5 -3
- 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 +19 -10
- package/dist/esm/users/anonymous-users.shared.resources-config.schemas.js.map +1 -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 +6 -0
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-preferences-reset.shared.utils.js +2 -2
- 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 +0 -3
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +0 -3
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self.shared.resources-config.schemas.js +1 -1
- 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.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.js +82 -20
- package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.schemas.d.ts +12 -9
- package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.schemas.js +49 -18
- package/dist/esm/users/users.shared.schemas.js.map +1 -1
- package/package.json +4 -4
- package/dist/esm/compliance/privacy/data-retention.shared.schemas.js +0 -7
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legal holds — a recorded decision that suspends DELETION of a defined scope until it is released (#1634).
|
|
3
|
+
*
|
|
4
|
+
* ## Why it exists
|
|
5
|
+
*
|
|
6
|
+
* Once data is deleted on a schedule (#1613's retention-class sweep), a firm under litigation, a
|
|
7
|
+
* regulator's investigation or a client dispute must be able to stop that for a defined scope, and
|
|
8
|
+
* keep proof that it did. A hold is that stop. It is a decision about a CASE, which is why it is not a
|
|
9
|
+
* retention class: a statutory period is a property of a class of data (#1635); a hold names a scope
|
|
10
|
+
* and a ground, and ends only when somebody releases it.
|
|
11
|
+
*
|
|
12
|
+
* ## What a hold suspends
|
|
13
|
+
*
|
|
14
|
+
* Every door that destroys data consults ONE predicate before destroying anything
|
|
15
|
+
* ({@link matchLegalHoldsToRows}, evaluated over the active holds the backend reads in one query):
|
|
16
|
+
*
|
|
17
|
+
* | door | what a held row gets |
|
|
18
|
+
* |---|---|
|
|
19
|
+
* | the retention-class sweep | skipped and counted, never thrown |
|
|
20
|
+
* | a subject erasure | left exactly as it is (neither deleted nor scrubbed), reported per row |
|
|
21
|
+
* | the tenant purge | the whole tenant is skipped while ANY hold on it is active |
|
|
22
|
+
* | a DELETE / DELETE_MANY, and an `onParentDelete` cascade | refused, 409 {@link LegalHoldErrorCode.LEGAL_HOLD_ACTIVE} |
|
|
23
|
+
* | file bytes in object storage | not hard-deleted while the owning row is held |
|
|
24
|
+
* | RAG chunk removal | chunks of a held row are kept |
|
|
25
|
+
*
|
|
26
|
+
* Impersonalization counts as destruction: a scrub removes exactly what a hold exists to preserve.
|
|
27
|
+
*
|
|
28
|
+
* ## What it does NOT do
|
|
29
|
+
*
|
|
30
|
+
* It does not restrict PROCESSING (reads, updates). A hold is a preservation duty, and a row that must
|
|
31
|
+
* be preserved may still be corrected; restricting processing of kept data is #1635's statutory
|
|
32
|
+
* restriction, a different obligation with a different trigger.
|
|
33
|
+
*
|
|
34
|
+
* assurance-control: WILDO.PRIVACY.STORAGE_LIMITATION — deletion suspended under a recorded legal hold.
|
|
35
|
+
*/
|
|
36
|
+
import { z } from 'zod';
|
|
37
|
+
import { PersonalDataCategory } from './personal-data-category.shared.schemas.js';
|
|
38
|
+
/** @wildo_source:part:start saas.models.privacy.legal-holds facet:layer:shared facet:audience:app-developer */
|
|
39
|
+
/**
|
|
40
|
+
* WHAT a hold covers.
|
|
41
|
+
*
|
|
42
|
+
* - `ORGANIZATION` — every row the tenant owns, and the tenant itself (it is not purged).
|
|
43
|
+
* - `RESOURCE_ROWS` — the rows of ONE resource type in the tenant: the listed `rowIds`, or every row of
|
|
44
|
+
* that type when none are listed. An explicit id list, not a query: a hold is evidence, and "which rows
|
|
45
|
+
* were held" must be answerable from the hold alone, without re-running a filter against data that
|
|
46
|
+
* has since changed.
|
|
47
|
+
* - `DATA_SUBJECT` — every row the subject-export graph attributes to one user. What a claim concerning
|
|
48
|
+
* ONE person needs. See {@link LegalHoldSubjectAttributionKind} for how a row is attributed.
|
|
49
|
+
*/
|
|
50
|
+
export var LegalHoldScopeKind;
|
|
51
|
+
(function (LegalHoldScopeKind) {
|
|
52
|
+
LegalHoldScopeKind["ORGANIZATION"] = "organization";
|
|
53
|
+
LegalHoldScopeKind["RESOURCE_ROWS"] = "resource_rows";
|
|
54
|
+
LegalHoldScopeKind["DATA_SUBJECT"] = "data_subject";
|
|
55
|
+
})(LegalHoldScopeKind || (LegalHoldScopeKind = {}));
|
|
56
|
+
/**
|
|
57
|
+
* WHY the data is held. Travels into every refusal and erasure report, because the ground is what a
|
|
58
|
+
* data subject is owed when their erasure is not completed.
|
|
59
|
+
*
|
|
60
|
+
* GDPR Art. 17(3)(e) (establishment, exercise or defence of legal claims) and Art. 17(3)(b) (compliance
|
|
61
|
+
* with a legal obligation) are the grounds under which a hold may also block an erasure.
|
|
62
|
+
* spec-cite: Regulation (EU) 2016/679, Art. 17(3)(b) and (e). Not legal advice.
|
|
63
|
+
*/
|
|
64
|
+
export var LegalHoldGround;
|
|
65
|
+
(function (LegalHoldGround) {
|
|
66
|
+
/** Litigation, a dispute or a claim that is reasonably anticipated — Art. 17(3)(e). */
|
|
67
|
+
LegalHoldGround["LEGAL_CLAIMS"] = "legal_claims";
|
|
68
|
+
/** A regulator's or authority's investigation that requires the data to be preserved. */
|
|
69
|
+
LegalHoldGround["REGULATORY_INVESTIGATION"] = "regulatory_investigation";
|
|
70
|
+
/** A legal obligation to keep the data, other than a statutory retention period of a class — Art. 17(3)(b). */
|
|
71
|
+
LegalHoldGround["LEGAL_OBLIGATION"] = "legal_obligation";
|
|
72
|
+
})(LegalHoldGround || (LegalHoldGround = {}));
|
|
73
|
+
/**
|
|
74
|
+
* A hold's lifecycle. Two states and one direction: a released hold is kept as evidence and never
|
|
75
|
+
* reactivated — a new hold is a new row. There is no expiry state, deliberately: litigation ends by
|
|
76
|
+
* decision, not by clock, and a hold that lapses on its own is exactly the failure it exists to prevent.
|
|
77
|
+
*/
|
|
78
|
+
export var LegalHoldStatus;
|
|
79
|
+
(function (LegalHoldStatus) {
|
|
80
|
+
LegalHoldStatus["ACTIVE"] = "active";
|
|
81
|
+
LegalHoldStatus["RELEASED"] = "released";
|
|
82
|
+
})(LegalHoldStatus || (LegalHoldStatus = {}));
|
|
83
|
+
/**
|
|
84
|
+
* WHO placed the hold, and therefore who may release it.
|
|
85
|
+
*
|
|
86
|
+
* A hold is released by the tier that placed it, and only by that tier. A tenant must not be able to
|
|
87
|
+
* lift a preservation duty the operator placed on it (an investigation OF the tenant), and the operator
|
|
88
|
+
* must not lift a tenant's own litigation hold on the tenant's behalf. Both tiers SEE every hold on the
|
|
89
|
+
* tenant: the tenant is owed knowing why its data is not being deleted.
|
|
90
|
+
*/
|
|
91
|
+
export var LegalHoldPlacementTier;
|
|
92
|
+
(function (LegalHoldPlacementTier) {
|
|
93
|
+
/** Placed by the tenant's own owner, for its own data. */
|
|
94
|
+
LegalHoldPlacementTier["ORGANIZATION"] = "organization";
|
|
95
|
+
/** Placed by an application super-administrator, crossing into the tenant through the declared door. */
|
|
96
|
+
LegalHoldPlacementTier["PLATFORM"] = "platform";
|
|
97
|
+
})(LegalHoldPlacementTier || (LegalHoldPlacementTier = {}));
|
|
98
|
+
/**
|
|
99
|
+
* Client-branchable codes carried as `context.code` on a refusal (allow-listed by the error sanitizer).
|
|
100
|
+
*/
|
|
101
|
+
export var LegalHoldErrorCode;
|
|
102
|
+
(function (LegalHoldErrorCode) {
|
|
103
|
+
/** A row the delete addresses is under an active legal hold. The caller is authorized; the state forbids it. */
|
|
104
|
+
LegalHoldErrorCode["LEGAL_HOLD_ACTIVE"] = "legal_hold_active";
|
|
105
|
+
/** The active holds could not be read, so whether the rows are held is unknown. Deletion is refused (fail closed). */
|
|
106
|
+
LegalHoldErrorCode["LEGAL_HOLD_STATE_UNVERIFIABLE"] = "legal_hold_state_unverifiable";
|
|
107
|
+
})(LegalHoldErrorCode || (LegalHoldErrorCode = {}));
|
|
108
|
+
/** The custom verbs. No generic CREATE / UPDATE / DELETE is exposed to any client. */
|
|
109
|
+
export var LegalHolds_Operations;
|
|
110
|
+
(function (LegalHolds_Operations) {
|
|
111
|
+
LegalHolds_Operations["PLACE"] = "place";
|
|
112
|
+
LegalHolds_Operations["RELEASE"] = "release";
|
|
113
|
+
})(LegalHolds_Operations || (LegalHolds_Operations = {}));
|
|
114
|
+
/** The largest explicit row list one `RESOURCE_ROWS` hold may name. A larger set is several holds, or the whole resource type. */
|
|
115
|
+
export const LEGAL_HOLD_MAXIMUM_ROW_IDS = 1000;
|
|
116
|
+
export const LegalHoldSchema = z.object({
|
|
117
|
+
_id: z.string().min(1).isPrimaryKey().isSummaryField(),
|
|
118
|
+
/** The held tenant. The primary scope anchor: the tenant sees every hold on its data. */
|
|
119
|
+
organizationId: z.string().min(1).isDBIndexed().isForeignKey().isSummaryField().excludeFromUpdate().isAuditEvidence(),
|
|
120
|
+
scopeKind: z.enum(LegalHoldScopeKind)
|
|
121
|
+
.systemEnum('LegalHoldScopeKind')
|
|
122
|
+
.isDBIndexed()
|
|
123
|
+
.isSummaryField()
|
|
124
|
+
.excludeFromUpdate()
|
|
125
|
+
.isAuditEvidence(),
|
|
126
|
+
/** `RESOURCE_ROWS` only: the held resource type. */
|
|
127
|
+
resourceType: z.string().min(1).max(200).optional().excludeFromUpdate().isAuditEvidence(),
|
|
128
|
+
/** `RESOURCE_ROWS` only: the held rows. Absent means every row of {@link resourceType} in the tenant. */
|
|
129
|
+
rowIds: z.array(z.string().min(1)).max(LEGAL_HOLD_MAXIMUM_ROW_IDS).optional().excludeFromUpdate().isAuditEvidence(),
|
|
130
|
+
/** `DATA_SUBJECT` only: the person whose attributed rows are held. */
|
|
131
|
+
subjectUserId: z.string().min(1).optional().isDBIndexed().isForeignKey().excludeFromUpdate().isAuditEvidence(),
|
|
132
|
+
legalGround: z.enum(LegalHoldGround)
|
|
133
|
+
.systemEnum('LegalHoldGround')
|
|
134
|
+
.isSummaryField()
|
|
135
|
+
.excludeFromUpdate()
|
|
136
|
+
.isAuditEvidence(),
|
|
137
|
+
/**
|
|
138
|
+
* Why, in the placer's words: the matter, the case reference. REQUIRED.
|
|
139
|
+
*
|
|
140
|
+
* Not scrubbed on erasure, and that is a decision: a hold is the operator's defence evidence
|
|
141
|
+
* (Art. 17(3)(e)), and the matter it names is what the hold preserves. Not exported to SIEM by default
|
|
142
|
+
* either — free text is the surface most likely to name a third party.
|
|
143
|
+
*/
|
|
144
|
+
justification: z.string().min(1).max(2000).excludeFromUpdate().dataCategories(PersonalDataCategory.USER_CONTENT),
|
|
145
|
+
placementTier: z.enum(LegalHoldPlacementTier)
|
|
146
|
+
.systemEnum('LegalHoldPlacementTier')
|
|
147
|
+
.isSummaryField()
|
|
148
|
+
.excludeFromCreate()
|
|
149
|
+
.excludeFromUpdate()
|
|
150
|
+
.isAuditEvidence(),
|
|
151
|
+
status: z.enum(LegalHoldStatus)
|
|
152
|
+
.systemEnum('LegalHoldStatus')
|
|
153
|
+
.default(LegalHoldStatus.ACTIVE)
|
|
154
|
+
.isDBIndexed()
|
|
155
|
+
.isSummaryField()
|
|
156
|
+
.excludeFromCreate()
|
|
157
|
+
.excludeFromUpdate()
|
|
158
|
+
.isAuditEvidence(),
|
|
159
|
+
placedByUserId: z.string().min(1).isForeignKey().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),
|
|
160
|
+
placedAt: z.date().isSummaryField().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),
|
|
161
|
+
releasedByUserId: z.string().min(1).optional().isForeignKey().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),
|
|
162
|
+
/**
|
|
163
|
+
* The retention clock's closure field: a released hold is kept as `AUDIT_LOGS`-class evidence from this
|
|
164
|
+
* instant. Null while ACTIVE, so an active hold never expires. Server-owned — a caller-writable clock
|
|
165
|
+
* would be a caller-ordered delete of the evidence.
|
|
166
|
+
*/
|
|
167
|
+
releasedAt: z.date().optional().isDBIndexed().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),
|
|
168
|
+
releaseReason: z.string().max(2000).optional().excludeFromCreate().excludeFromUpdate().dataCategories(PersonalDataCategory.USER_CONTENT),
|
|
169
|
+
createdAt: z.date().optional(),
|
|
170
|
+
updatedAt: z.date().optional(),
|
|
171
|
+
});
|
|
172
|
+
/** The `place` request. Coherence between `scopeKind` and the three optional selectors is checked server-side. */
|
|
173
|
+
export const LegalHoldPlaceRequestSchema = z.object({
|
|
174
|
+
scopeKind: z.enum(LegalHoldScopeKind).describe('What the hold covers: the whole organization, rows of one resource, or one person\'s data.'),
|
|
175
|
+
resourceType: z.string().min(1).max(200).optional().describe('For a resource-rows hold: the resource type whose rows are held.'),
|
|
176
|
+
rowIds: z.array(z.string().min(1)).min(1).max(LEGAL_HOLD_MAXIMUM_ROW_IDS).optional()
|
|
177
|
+
.describe('For a resource-rows hold: the rows held. Omit to hold every row of the resource type in the organization.'),
|
|
178
|
+
subjectUserId: z.string().min(1).optional().describe('For a data-subject hold: the user whose data is held.'),
|
|
179
|
+
legalGround: z.enum(LegalHoldGround).describe('Why the data must be preserved.'),
|
|
180
|
+
justification: z.string().min(1).max(2000).describe('The matter or case the hold preserves data for.'),
|
|
181
|
+
});
|
|
182
|
+
/** @wildo_source:part:end saas.models.privacy.legal-holds */
|
|
183
|
+
export const LegalHoldReleaseRequestSchema = z.object({
|
|
184
|
+
releaseReason: z.string().min(1).max(2000).describe('Why the preservation duty has ended.'),
|
|
185
|
+
});
|
|
186
|
+
/**
|
|
187
|
+
* The scope-coherence rule for a `place` request, as one pure function the server and any client share.
|
|
188
|
+
* Returns the problems; empty means coherent.
|
|
189
|
+
*/
|
|
190
|
+
export function validateLegalHoldPlaceRequest(request) {
|
|
191
|
+
const problems = [];
|
|
192
|
+
switch (request.scopeKind) {
|
|
193
|
+
case LegalHoldScopeKind.ORGANIZATION:
|
|
194
|
+
if (request.resourceType !== undefined || request.rowIds !== undefined || request.subjectUserId !== undefined) {
|
|
195
|
+
problems.push('An organization hold covers the whole organization and takes no resourceType, rowIds or subjectUserId.');
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
case LegalHoldScopeKind.RESOURCE_ROWS:
|
|
199
|
+
if (!request.resourceType)
|
|
200
|
+
problems.push('A resource-rows hold names the resourceType it holds.');
|
|
201
|
+
if (request.subjectUserId !== undefined)
|
|
202
|
+
problems.push('A resource-rows hold takes no subjectUserId.');
|
|
203
|
+
break;
|
|
204
|
+
case LegalHoldScopeKind.DATA_SUBJECT:
|
|
205
|
+
if (!request.subjectUserId)
|
|
206
|
+
problems.push('A data-subject hold names the subjectUserId whose data it holds.');
|
|
207
|
+
if (request.resourceType !== undefined || request.rowIds !== undefined)
|
|
208
|
+
problems.push('A data-subject hold takes no resourceType or rowIds.');
|
|
209
|
+
break;
|
|
210
|
+
default: {
|
|
211
|
+
const unknownKind = request.scopeKind;
|
|
212
|
+
problems.push(`Unknown legal hold scope kind '${String(unknownKind)}'.`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return problems;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* How ONE resource type's rows are attributed to a data subject, for `DATA_SUBJECT` holds.
|
|
219
|
+
*
|
|
220
|
+
* Derived from the subject-export graph of `USERS` (Art. 15 access purpose), so "the rows a hold on a
|
|
221
|
+
* person covers" and "the rows an access request about that person discloses" are the same set by
|
|
222
|
+
* construction. Where a row cannot be attributed from its own fields, the answer is UNRESOLVABLE and the
|
|
223
|
+
* row is HELD: over-preserving delays a deletion until release, under-preserving destroys evidence.
|
|
224
|
+
*/
|
|
225
|
+
export var LegalHoldSubjectAttributionKind;
|
|
226
|
+
(function (LegalHoldSubjectAttributionKind) {
|
|
227
|
+
/** The row IS the person (`USERS`): attributed when its id is the subject. */
|
|
228
|
+
LegalHoldSubjectAttributionKind["SUBJECT_ROW"] = "subject_row";
|
|
229
|
+
/** The row carries a foreign key to `USERS` on an export edge: attributed when any of those fields names the subject. */
|
|
230
|
+
LegalHoldSubjectAttributionKind["FOREIGN_KEY"] = "foreign_key";
|
|
231
|
+
/**
|
|
232
|
+
* The resource is in the subject's export graph, but a row's attribution needs other rows (an owned
|
|
233
|
+
* descendant, or a key held on the `USERS` side). Any foreign-key field it carries still attributes it; beyond
|
|
234
|
+
* that, a row in the held tenant is held (conservative), a row outside any tenant is the person's only when its
|
|
235
|
+
* `userId` names them, and inside ANOTHER person's erasure it is that person's, not the held subject's.
|
|
236
|
+
*/
|
|
237
|
+
LegalHoldSubjectAttributionKind["UNRESOLVABLE"] = "unresolvable";
|
|
238
|
+
/** Not in the subject's export graph (unrelated, or declared `exportSubject: FORBIDDEN`). A data-subject hold never covers it. */
|
|
239
|
+
LegalHoldSubjectAttributionKind["NOT_ATTRIBUTED"] = "not_attributed";
|
|
240
|
+
})(LegalHoldSubjectAttributionKind || (LegalHoldSubjectAttributionKind = {}));
|
|
241
|
+
/**
|
|
242
|
+
* THE hold predicate — which of `rows` are under which of `holds`. Pure; the backend reads the active
|
|
243
|
+
* holds once per call and hands them in.
|
|
244
|
+
*
|
|
245
|
+
* `erasureSubjectUserIds` is set only by a subject erasure: every row that erasure reaches in a resource
|
|
246
|
+
* of the subject's export graph IS attributed to the person being erased, so a `DATA_SUBJECT` hold on that
|
|
247
|
+
* person covers it whatever its own fields say.
|
|
248
|
+
*
|
|
249
|
+
* The ORGANIZATIONS row's tenant is its own id, so an `ORGANIZATION` hold also holds the tenant row.
|
|
250
|
+
*/
|
|
251
|
+
export function matchLegalHoldsToRows(input) {
|
|
252
|
+
const held = new Map();
|
|
253
|
+
if (input.holds.length === 0)
|
|
254
|
+
return held;
|
|
255
|
+
for (const candidate of input.rows) {
|
|
256
|
+
const rowOrganizationId = input.resourceType === input.organizationsResourceType
|
|
257
|
+
? candidate.id
|
|
258
|
+
: candidate.organizationId;
|
|
259
|
+
for (const hold of input.holds) {
|
|
260
|
+
if (!legalHoldCoversRow(hold, candidate, rowOrganizationId, input))
|
|
261
|
+
continue;
|
|
262
|
+
const matches = held.get(candidate.id) ?? [];
|
|
263
|
+
matches.push({ holdId: hold._id, scopeKind: hold.scopeKind, legalGround: hold.legalGround });
|
|
264
|
+
held.set(candidate.id, matches);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return held;
|
|
268
|
+
}
|
|
269
|
+
function legalHoldCoversRow(hold, candidate, rowOrganizationId, input) {
|
|
270
|
+
switch (hold.scopeKind) {
|
|
271
|
+
case LegalHoldScopeKind.ORGANIZATION:
|
|
272
|
+
return rowOrganizationId === hold.organizationId;
|
|
273
|
+
case LegalHoldScopeKind.RESOURCE_ROWS:
|
|
274
|
+
return rowOrganizationId === hold.organizationId
|
|
275
|
+
&& hold.resourceType === input.resourceType
|
|
276
|
+
&& (hold.rowIds === undefined || hold.rowIds.includes(candidate.id));
|
|
277
|
+
case LegalHoldScopeKind.DATA_SUBJECT: {
|
|
278
|
+
// A person's rows outside any tenant (their user-scoped profile, preferences) are theirs wherever the
|
|
279
|
+
// claim arises, so a hold placed in one tenant covers them too. Rows of ANOTHER tenant are not this one's.
|
|
280
|
+
if (rowOrganizationId !== undefined && rowOrganizationId !== hold.organizationId)
|
|
281
|
+
return false;
|
|
282
|
+
const subject = hold.subjectUserId;
|
|
283
|
+
if (!subject)
|
|
284
|
+
return true; // incoherent hold: fail closed
|
|
285
|
+
const attribution = input.subjectAttribution;
|
|
286
|
+
if (attribution.kind === LegalHoldSubjectAttributionKind.NOT_ATTRIBUTED)
|
|
287
|
+
return false;
|
|
288
|
+
if (input.erasureSubjectUserIds?.includes(subject))
|
|
289
|
+
return true;
|
|
290
|
+
switch (attribution.kind) {
|
|
291
|
+
case LegalHoldSubjectAttributionKind.SUBJECT_ROW:
|
|
292
|
+
return candidate.id === subject;
|
|
293
|
+
case LegalHoldSubjectAttributionKind.FOREIGN_KEY:
|
|
294
|
+
return (attribution.foreignKeyFields ?? []).some((field) => String(candidate.row?.[field] ?? '') === subject);
|
|
295
|
+
case LegalHoldSubjectAttributionKind.UNRESOLVABLE: {
|
|
296
|
+
// A foreign key on the row itself still names the person, when there is one.
|
|
297
|
+
if ((attribution.foreignKeyFields ?? []).some((field) => String(candidate.row?.[field] ?? '') === subject))
|
|
298
|
+
return true;
|
|
299
|
+
// Inside the erasure of SOMEONE ELSE, the walk has already attributed the row: it is the erased person's,
|
|
300
|
+
// not this subject's. Holding it would refuse their erasure on a ground belonging to another matter.
|
|
301
|
+
if (input.erasureSubjectUserIds !== undefined)
|
|
302
|
+
return false;
|
|
303
|
+
// Outside any tenant, a row's owner is its `userId` (a USER_SELF row's primary scope), so a hold on one person
|
|
304
|
+
// never reaches every other person's rows across the application.
|
|
305
|
+
if (rowOrganizationId === undefined)
|
|
306
|
+
return String(candidate.row?.userId ?? '') === subject;
|
|
307
|
+
// Inside the held tenant, the row's owner cannot be read from its own fields: held, the conservative direction.
|
|
308
|
+
return true;
|
|
309
|
+
}
|
|
310
|
+
default: {
|
|
311
|
+
const unknownKind = attribution.kind;
|
|
312
|
+
throw new Error(`Unknown legal hold subject attribution '${String(unknownKind)}'`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
default: {
|
|
317
|
+
// An unknown scope is not a reason to delete: fail closed.
|
|
318
|
+
const unknownKind = hold.scopeKind;
|
|
319
|
+
void unknownKind;
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* The grounds of a set of matches, de-duplicated in vocabulary order — what a refusal or a report shows.
|
|
326
|
+
*/
|
|
327
|
+
export function legalHoldGroundsOf(matches) {
|
|
328
|
+
const present = new Set(matches.map((match) => match.legalGround));
|
|
329
|
+
return Object.values(LegalHoldGround).filter((ground) => present.has(ground));
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=legal-holds.shared.schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legal-holds.shared.schemas.js","sourceRoot":"","sources":["../../../../../src/compliance/privacy/legal-holds.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Legal holds — a recorded decision that suspends DELETION of a defined scope until it is released (#1634).\n *\n * ## Why it exists\n *\n * Once data is deleted on a schedule (#1613's retention-class sweep), a firm under litigation, a\n * regulator's investigation or a client dispute must be able to stop that for a defined scope, and\n * keep proof that it did. A hold is that stop. It is a decision about a CASE, which is why it is not a\n * retention class: a statutory period is a property of a class of data (#1635); a hold names a scope\n * and a ground, and ends only when somebody releases it.\n *\n * ## What a hold suspends\n *\n * Every door that destroys data consults ONE predicate before destroying anything\n * ({@link matchLegalHoldsToRows}, evaluated over the active holds the backend reads in one query):\n *\n * | door | what a held row gets |\n * |---|---|\n * | the retention-class sweep | skipped and counted, never thrown |\n * | a subject erasure | left exactly as it is (neither deleted nor scrubbed), reported per row |\n * | the tenant purge | the whole tenant is skipped while ANY hold on it is active |\n * | a DELETE / DELETE_MANY, and an `onParentDelete` cascade | refused, 409 {@link LegalHoldErrorCode.LEGAL_HOLD_ACTIVE} |\n * | file bytes in object storage | not hard-deleted while the owning row is held |\n * | RAG chunk removal | chunks of a held row are kept |\n *\n * Impersonalization counts as destruction: a scrub removes exactly what a hold exists to preserve.\n *\n * ## What it does NOT do\n *\n * It does not restrict PROCESSING (reads, updates). A hold is a preservation duty, and a row that must\n * be preserved may still be corrected; restricting processing of kept data is #1635's statutory\n * restriction, a different obligation with a different trigger.\n *\n * assurance-control: WILDO.PRIVACY.STORAGE_LIMITATION — deletion suspended under a recorded legal hold.\n */\n\nimport { z } from 'zod';\nimport { PersonalDataCategory } from './personal-data-category.shared.schemas';\n\n/** @wildo_source:part:start saas.models.privacy.legal-holds facet:layer:shared facet:audience:app-developer */\n/**\n * WHAT a hold covers.\n *\n * - `ORGANIZATION` — every row the tenant owns, and the tenant itself (it is not purged).\n * - `RESOURCE_ROWS` — the rows of ONE resource type in the tenant: the listed `rowIds`, or every row of\n * that type when none are listed. An explicit id list, not a query: a hold is evidence, and \"which rows\n * were held\" must be answerable from the hold alone, without re-running a filter against data that\n * has since changed.\n * - `DATA_SUBJECT` — every row the subject-export graph attributes to one user. What a claim concerning\n * ONE person needs. See {@link LegalHoldSubjectAttributionKind} for how a row is attributed.\n */\nexport enum LegalHoldScopeKind {\n ORGANIZATION = 'organization',\n RESOURCE_ROWS = 'resource_rows',\n DATA_SUBJECT = 'data_subject',\n}\n\n/**\n * WHY the data is held. Travels into every refusal and erasure report, because the ground is what a\n * data subject is owed when their erasure is not completed.\n *\n * GDPR Art. 17(3)(e) (establishment, exercise or defence of legal claims) and Art. 17(3)(b) (compliance\n * with a legal obligation) are the grounds under which a hold may also block an erasure.\n * spec-cite: Regulation (EU) 2016/679, Art. 17(3)(b) and (e). Not legal advice.\n */\nexport enum LegalHoldGround {\n /** Litigation, a dispute or a claim that is reasonably anticipated — Art. 17(3)(e). */\n LEGAL_CLAIMS = 'legal_claims',\n /** A regulator's or authority's investigation that requires the data to be preserved. */\n REGULATORY_INVESTIGATION = 'regulatory_investigation',\n /** A legal obligation to keep the data, other than a statutory retention period of a class — Art. 17(3)(b). */\n LEGAL_OBLIGATION = 'legal_obligation',\n}\n\n/**\n * A hold's lifecycle. Two states and one direction: a released hold is kept as evidence and never\n * reactivated — a new hold is a new row. There is no expiry state, deliberately: litigation ends by\n * decision, not by clock, and a hold that lapses on its own is exactly the failure it exists to prevent.\n */\nexport enum LegalHoldStatus {\n ACTIVE = 'active',\n RELEASED = 'released',\n}\n\n/**\n * WHO placed the hold, and therefore who may release it.\n *\n * A hold is released by the tier that placed it, and only by that tier. A tenant must not be able to\n * lift a preservation duty the operator placed on it (an investigation OF the tenant), and the operator\n * must not lift a tenant's own litigation hold on the tenant's behalf. Both tiers SEE every hold on the\n * tenant: the tenant is owed knowing why its data is not being deleted.\n */\nexport enum LegalHoldPlacementTier {\n /** Placed by the tenant's own owner, for its own data. */\n ORGANIZATION = 'organization',\n /** Placed by an application super-administrator, crossing into the tenant through the declared door. */\n PLATFORM = 'platform',\n}\n\n/**\n * Client-branchable codes carried as `context.code` on a refusal (allow-listed by the error sanitizer).\n */\nexport enum LegalHoldErrorCode {\n /** A row the delete addresses is under an active legal hold. The caller is authorized; the state forbids it. */\n LEGAL_HOLD_ACTIVE = 'legal_hold_active',\n /** The active holds could not be read, so whether the rows are held is unknown. Deletion is refused (fail closed). */\n LEGAL_HOLD_STATE_UNVERIFIABLE = 'legal_hold_state_unverifiable',\n}\n\n/** The custom verbs. No generic CREATE / UPDATE / DELETE is exposed to any client. */\nexport enum LegalHolds_Operations {\n PLACE = 'place',\n RELEASE = 'release',\n}\n\n/** The largest explicit row list one `RESOURCE_ROWS` hold may name. A larger set is several holds, or the whole resource type. */\nexport const LEGAL_HOLD_MAXIMUM_ROW_IDS = 1000;\n\nexport const LegalHoldSchema = z.object({\n _id: z.string().min(1).isPrimaryKey().isSummaryField(),\n\n /** The held tenant. The primary scope anchor: the tenant sees every hold on its data. */\n organizationId: z.string().min(1).isDBIndexed().isForeignKey().isSummaryField().excludeFromUpdate().isAuditEvidence(),\n\n scopeKind: z.enum(LegalHoldScopeKind)\n .systemEnum('LegalHoldScopeKind')\n .isDBIndexed()\n .isSummaryField()\n .excludeFromUpdate()\n .isAuditEvidence(),\n\n /** `RESOURCE_ROWS` only: the held resource type. */\n resourceType: z.string().min(1).max(200).optional().excludeFromUpdate().isAuditEvidence(),\n\n /** `RESOURCE_ROWS` only: the held rows. Absent means every row of {@link resourceType} in the tenant. */\n rowIds: z.array(z.string().min(1)).max(LEGAL_HOLD_MAXIMUM_ROW_IDS).optional().excludeFromUpdate().isAuditEvidence(),\n\n /** `DATA_SUBJECT` only: the person whose attributed rows are held. */\n subjectUserId: z.string().min(1).optional().isDBIndexed().isForeignKey().excludeFromUpdate().isAuditEvidence(),\n\n legalGround: z.enum(LegalHoldGround)\n .systemEnum('LegalHoldGround')\n .isSummaryField()\n .excludeFromUpdate()\n .isAuditEvidence(),\n\n /**\n * Why, in the placer's words: the matter, the case reference. REQUIRED.\n *\n * Not scrubbed on erasure, and that is a decision: a hold is the operator's defence evidence\n * (Art. 17(3)(e)), and the matter it names is what the hold preserves. Not exported to SIEM by default\n * either — free text is the surface most likely to name a third party.\n */\n justification: z.string().min(1).max(2000).excludeFromUpdate().dataCategories(PersonalDataCategory.USER_CONTENT),\n\n placementTier: z.enum(LegalHoldPlacementTier)\n .systemEnum('LegalHoldPlacementTier')\n .isSummaryField()\n .excludeFromCreate()\n .excludeFromUpdate()\n .isAuditEvidence(),\n\n status: z.enum(LegalHoldStatus)\n .systemEnum('LegalHoldStatus')\n .default(LegalHoldStatus.ACTIVE)\n .isDBIndexed()\n .isSummaryField()\n .excludeFromCreate()\n .excludeFromUpdate()\n .isAuditEvidence(),\n\n placedByUserId: z.string().min(1).isForeignKey().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),\n placedAt: z.date().isSummaryField().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),\n\n releasedByUserId: z.string().min(1).optional().isForeignKey().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),\n /**\n * The retention clock's closure field: a released hold is kept as `AUDIT_LOGS`-class evidence from this\n * instant. Null while ACTIVE, so an active hold never expires. Server-owned — a caller-writable clock\n * would be a caller-ordered delete of the evidence.\n */\n releasedAt: z.date().optional().isDBIndexed().excludeFromCreate().excludeFromUpdate().isAuditEvidence(),\n releaseReason: z.string().max(2000).optional().excludeFromCreate().excludeFromUpdate().dataCategories(PersonalDataCategory.USER_CONTENT),\n\n createdAt: z.date().optional(),\n updatedAt: z.date().optional(),\n});\n\nexport type LegalHold = z.infer<typeof LegalHoldSchema>;\n\n/** The `place` request. Coherence between `scopeKind` and the three optional selectors is checked server-side. */\nexport const LegalHoldPlaceRequestSchema = z.object({\n scopeKind: z.enum(LegalHoldScopeKind).describe('What the hold covers: the whole organization, rows of one resource, or one person\\'s data.'),\n resourceType: z.string().min(1).max(200).optional().describe('For a resource-rows hold: the resource type whose rows are held.'),\n rowIds: z.array(z.string().min(1)).min(1).max(LEGAL_HOLD_MAXIMUM_ROW_IDS).optional()\n .describe('For a resource-rows hold: the rows held. Omit to hold every row of the resource type in the organization.'),\n subjectUserId: z.string().min(1).optional().describe('For a data-subject hold: the user whose data is held.'),\n legalGround: z.enum(LegalHoldGround).describe('Why the data must be preserved.'),\n justification: z.string().min(1).max(2000).describe('The matter or case the hold preserves data for.'),\n});\nexport type LegalHoldPlaceRequest = z.infer<typeof LegalHoldPlaceRequestSchema>;\n/** @wildo_source:part:end saas.models.privacy.legal-holds */\n\nexport const LegalHoldReleaseRequestSchema = z.object({\n releaseReason: z.string().min(1).max(2000).describe('Why the preservation duty has ended.'),\n});\n\n/**\n * The scope-coherence rule for a `place` request, as one pure function the server and any client share.\n * Returns the problems; empty means coherent.\n */\nexport function validateLegalHoldPlaceRequest(request: LegalHoldPlaceRequest): string[] {\n const problems: string[] = [];\n switch (request.scopeKind) {\n case LegalHoldScopeKind.ORGANIZATION:\n if (request.resourceType !== undefined || request.rowIds !== undefined || request.subjectUserId !== undefined) {\n problems.push('An organization hold covers the whole organization and takes no resourceType, rowIds or subjectUserId.');\n }\n break;\n case LegalHoldScopeKind.RESOURCE_ROWS:\n if (!request.resourceType) problems.push('A resource-rows hold names the resourceType it holds.');\n if (request.subjectUserId !== undefined) problems.push('A resource-rows hold takes no subjectUserId.');\n break;\n case LegalHoldScopeKind.DATA_SUBJECT:\n if (!request.subjectUserId) problems.push('A data-subject hold names the subjectUserId whose data it holds.');\n if (request.resourceType !== undefined || request.rowIds !== undefined) problems.push('A data-subject hold takes no resourceType or rowIds.');\n break;\n default: {\n const unknownKind: never = request.scopeKind;\n problems.push(`Unknown legal hold scope kind '${String(unknownKind)}'.`);\n }\n }\n return problems;\n}\n\n/**\n * How ONE resource type's rows are attributed to a data subject, for `DATA_SUBJECT` holds.\n *\n * Derived from the subject-export graph of `USERS` (Art. 15 access purpose), so \"the rows a hold on a\n * person covers\" and \"the rows an access request about that person discloses\" are the same set by\n * construction. Where a row cannot be attributed from its own fields, the answer is UNRESOLVABLE and the\n * row is HELD: over-preserving delays a deletion until release, under-preserving destroys evidence.\n */\nexport enum LegalHoldSubjectAttributionKind {\n /** The row IS the person (`USERS`): attributed when its id is the subject. */\n SUBJECT_ROW = 'subject_row',\n /** The row carries a foreign key to `USERS` on an export edge: attributed when any of those fields names the subject. */\n FOREIGN_KEY = 'foreign_key',\n /**\n * The resource is in the subject's export graph, but a row's attribution needs other rows (an owned\n * descendant, or a key held on the `USERS` side). Any foreign-key field it carries still attributes it; beyond\n * that, a row in the held tenant is held (conservative), a row outside any tenant is the person's only when its\n * `userId` names them, and inside ANOTHER person's erasure it is that person's, not the held subject's.\n */\n UNRESOLVABLE = 'unresolvable',\n /** Not in the subject's export graph (unrelated, or declared `exportSubject: FORBIDDEN`). A data-subject hold never covers it. */\n NOT_ATTRIBUTED = 'not_attributed',\n}\n\nexport interface LegalHoldSubjectAttribution {\n readonly kind: LegalHoldSubjectAttributionKind;\n /** The row fields naming a user — the whole answer for FOREIGN_KEY, a first answer for UNRESOLVABLE. */\n readonly foreignKeyFields?: readonly string[];\n}\n\n/** An active hold, as the predicate needs it. */\nexport type ActiveLegalHold = Pick<LegalHold, '_id' | 'organizationId' | 'scopeKind' | 'resourceType' | 'rowIds' | 'subjectUserId' | 'legalGround'>;\n\n/** One row a deletion path is about to destroy. */\nexport interface LegalHoldCandidateRow {\n readonly id: string;\n /** The tenant the row belongs to; absent for a row with no organization scope. */\n readonly organizationId?: string;\n /** The row's fields, for foreign-key attribution. */\n readonly row?: Record<string, unknown>;\n}\n\n/** Why a row is held: the hold and its ground. */\nexport interface LegalHoldMatch {\n readonly holdId: string;\n readonly scopeKind: LegalHoldScopeKind;\n readonly legalGround: LegalHoldGround;\n}\n\n/**\n * THE hold predicate — which of `rows` are under which of `holds`. Pure; the backend reads the active\n * holds once per call and hands them in.\n *\n * `erasureSubjectUserIds` is set only by a subject erasure: every row that erasure reaches in a resource\n * of the subject's export graph IS attributed to the person being erased, so a `DATA_SUBJECT` hold on that\n * person covers it whatever its own fields say.\n *\n * The ORGANIZATIONS row's tenant is its own id, so an `ORGANIZATION` hold also holds the tenant row.\n */\nexport function matchLegalHoldsToRows(input: {\n readonly holds: readonly ActiveLegalHold[];\n readonly resourceType: string;\n readonly rows: readonly LegalHoldCandidateRow[];\n readonly organizationsResourceType: string;\n readonly subjectAttribution: LegalHoldSubjectAttribution;\n readonly erasureSubjectUserIds?: readonly string[];\n}): Map<string, LegalHoldMatch[]> {\n const held = new Map<string, LegalHoldMatch[]>();\n if (input.holds.length === 0) return held;\n for (const candidate of input.rows) {\n const rowOrganizationId = input.resourceType === input.organizationsResourceType\n ? candidate.id\n : candidate.organizationId;\n for (const hold of input.holds) {\n if (!legalHoldCoversRow(hold, candidate, rowOrganizationId, input)) continue;\n const matches = held.get(candidate.id) ?? [];\n matches.push({ holdId: hold._id, scopeKind: hold.scopeKind, legalGround: hold.legalGround });\n held.set(candidate.id, matches);\n }\n }\n return held;\n}\n\nfunction legalHoldCoversRow(\n hold: ActiveLegalHold,\n candidate: LegalHoldCandidateRow,\n rowOrganizationId: string | undefined,\n input: Parameters<typeof matchLegalHoldsToRows>[0],\n): boolean {\n switch (hold.scopeKind) {\n case LegalHoldScopeKind.ORGANIZATION:\n return rowOrganizationId === hold.organizationId;\n case LegalHoldScopeKind.RESOURCE_ROWS:\n return rowOrganizationId === hold.organizationId\n && hold.resourceType === input.resourceType\n && (hold.rowIds === undefined || hold.rowIds.includes(candidate.id));\n case LegalHoldScopeKind.DATA_SUBJECT: {\n // A person's rows outside any tenant (their user-scoped profile, preferences) are theirs wherever the\n // claim arises, so a hold placed in one tenant covers them too. Rows of ANOTHER tenant are not this one's.\n if (rowOrganizationId !== undefined && rowOrganizationId !== hold.organizationId) return false;\n const subject = hold.subjectUserId;\n if (!subject) return true; // incoherent hold: fail closed\n const attribution = input.subjectAttribution;\n if (attribution.kind === LegalHoldSubjectAttributionKind.NOT_ATTRIBUTED) return false;\n if (input.erasureSubjectUserIds?.includes(subject)) return true;\n switch (attribution.kind) {\n case LegalHoldSubjectAttributionKind.SUBJECT_ROW:\n return candidate.id === subject;\n case LegalHoldSubjectAttributionKind.FOREIGN_KEY:\n return (attribution.foreignKeyFields ?? []).some((field) => String(candidate.row?.[field] ?? '') === subject);\n case LegalHoldSubjectAttributionKind.UNRESOLVABLE: {\n // A foreign key on the row itself still names the person, when there is one.\n if ((attribution.foreignKeyFields ?? []).some((field) => String(candidate.row?.[field] ?? '') === subject)) return true;\n // Inside the erasure of SOMEONE ELSE, the walk has already attributed the row: it is the erased person's,\n // not this subject's. Holding it would refuse their erasure on a ground belonging to another matter.\n if (input.erasureSubjectUserIds !== undefined) return false;\n // Outside any tenant, a row's owner is its `userId` (a USER_SELF row's primary scope), so a hold on one person\n // never reaches every other person's rows across the application.\n if (rowOrganizationId === undefined) return String(candidate.row?.userId ?? '') === subject;\n // Inside the held tenant, the row's owner cannot be read from its own fields: held, the conservative direction.\n return true;\n }\n default: {\n const unknownKind: never = attribution.kind;\n throw new Error(`Unknown legal hold subject attribution '${String(unknownKind)}'`);\n }\n }\n }\n default: {\n // An unknown scope is not a reason to delete: fail closed.\n const unknownKind: never = hold.scopeKind;\n void unknownKind;\n return true;\n }\n }\n}\n\n/** One row a subject erasure left untouched because a legal hold covers it (#1634). */\nexport interface SubjectErasureLegalHoldRetention {\n resourceType: string;\n rowId: string;\n /** The grounds of every hold covering the row — what the data subject is told. */\n legalGrounds: LegalHoldGround[];\n holdIds: string[];\n}\n\n/**\n * The grounds of a set of matches, de-duplicated in vocabulary order — what a refusal or a report shows.\n */\nexport function legalHoldGroundsOf(matches: readonly LegalHoldMatch[]): LegalHoldGround[] {\n const present = new Set(matches.map((match) => match.legalGround));\n return Object.values(LegalHoldGround).filter((ground) => present.has(ground));\n}\n"]}
|
|
@@ -46,14 +46,21 @@ export declare enum OperatorProcessingRole {
|
|
|
46
46
|
* A B2B SaaS is typically a PROCESSOR for the records its customers put in, and a CONTROLLER for the
|
|
47
47
|
* account and billing data of the people who administer them — simultaneously, in one product.
|
|
48
48
|
*
|
|
49
|
-
* `dataScope` is prose the operator writes, deliberately
|
|
50
|
-
*
|
|
51
|
-
*
|
|
49
|
+
* `dataScope` is prose the operator writes, deliberately: it names a POPULATION of data ("customer records in a
|
|
50
|
+
* workspace"), not a processing purpose, so a lawful basis's `purposeRef` (#1709) is not what it would key to. No
|
|
51
|
+
* structured population vocabulary exists yet, and a ref to nothing would be worse than prose.
|
|
52
52
|
*/
|
|
53
53
|
export declare const OperatorRoleAllocationSchema: z.ZodObject<{
|
|
54
54
|
/** Which data this role covers, in the operator's own words — "customer records in a workspace". */
|
|
55
55
|
dataScope: z.ZodString;
|
|
56
56
|
role: z.ZodEnum<typeof OperatorProcessingRole>;
|
|
57
|
+
/**
|
|
58
|
+
* The resource types this role covers — the TYPED half of `dataScope` (#1710), so a running erasure or export can
|
|
59
|
+
* say who owes the Art. 19 communication for the subject in front of it. Optional: an allocation in prose only is
|
|
60
|
+
* still a valid statement for a notice, and a subject whose resource type no allocation names is reported as
|
|
61
|
+
* ROLE UNDECLARED, never guessed. `dataScope` stays the words a notice uses.
|
|
62
|
+
*/
|
|
63
|
+
resourceTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
57
64
|
}, z.core.$strict>;
|
|
58
65
|
export type OperatorRoleAllocation = z.infer<typeof OperatorRoleAllocationSchema>;
|
|
59
66
|
/**
|
|
@@ -64,6 +71,16 @@ export type OperatorRoleAllocation = z.infer<typeof OperatorRoleAllocationSchema
|
|
|
64
71
|
export declare const OperatorLawfulBasisSchema: z.ZodObject<{
|
|
65
72
|
/** The purpose, in the operator's own words. Matches how the notice states purposes: prose, not a ref. */
|
|
66
73
|
purpose: z.ZodString;
|
|
74
|
+
/**
|
|
75
|
+
* A STABLE id for this purpose, which a provider's or a system of record's compliance choice names
|
|
76
|
+
* (`providerComplianceChoices.<ref>.purposeRefs`) to say which purpose sending it data serves (#1709).
|
|
77
|
+
*
|
|
78
|
+
* Separate from `purpose` because the prose is the notice's wording and changes when the operator rewords it, while
|
|
79
|
+
* a link to it must survive the rewording. OPTIONAL, like every other part of this identity (#225): a basis with no
|
|
80
|
+
* ref is still a basis, and a recipient cannot link to it — which the recipients report names as a purpose not
|
|
81
|
+
* linked, never as a recipient with no purpose.
|
|
82
|
+
*/
|
|
83
|
+
purposeRef: z.ZodOptional<z.ZodString>;
|
|
67
84
|
basis: z.ZodEnum<typeof LawfulBasis>;
|
|
68
85
|
/**
|
|
69
86
|
* The assessment behind the basis. REQUIRED for `LEGITIMATE_INTERESTS`, which is the only basis
|
|
@@ -220,6 +237,13 @@ export declare const ApplicationOperatorComplianceIdentitySchema: z.ZodObject<{
|
|
|
220
237
|
/** Which data this role covers, in the operator's own words — "customer records in a workspace". */
|
|
221
238
|
dataScope: z.ZodString;
|
|
222
239
|
role: z.ZodEnum<typeof OperatorProcessingRole>;
|
|
240
|
+
/**
|
|
241
|
+
* The resource types this role covers — the TYPED half of `dataScope` (#1710), so a running erasure or export can
|
|
242
|
+
* say who owes the Art. 19 communication for the subject in front of it. Optional: an allocation in prose only is
|
|
243
|
+
* still a valid statement for a notice, and a subject whose resource type no allocation names is reported as
|
|
244
|
+
* ROLE UNDECLARED, never guessed. `dataScope` stays the words a notice uses.
|
|
245
|
+
*/
|
|
246
|
+
resourceTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
223
247
|
}, z.core.$strict>>>;
|
|
224
248
|
/**
|
|
225
249
|
* The lawful basis relied on, per processing purpose. At least one.
|
|
@@ -231,6 +255,16 @@ export declare const ApplicationOperatorComplianceIdentitySchema: z.ZodObject<{
|
|
|
231
255
|
lawfulBases: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
232
256
|
/** The purpose, in the operator's own words. Matches how the notice states purposes: prose, not a ref. */
|
|
233
257
|
purpose: z.ZodString;
|
|
258
|
+
/**
|
|
259
|
+
* A STABLE id for this purpose, which a provider's or a system of record's compliance choice names
|
|
260
|
+
* (`providerComplianceChoices.<ref>.purposeRefs`) to say which purpose sending it data serves (#1709).
|
|
261
|
+
*
|
|
262
|
+
* Separate from `purpose` because the prose is the notice's wording and changes when the operator rewords it, while
|
|
263
|
+
* a link to it must survive the rewording. OPTIONAL, like every other part of this identity (#225): a basis with no
|
|
264
|
+
* ref is still a basis, and a recipient cannot link to it — which the recipients report names as a purpose not
|
|
265
|
+
* linked, never as a recipient with no purpose.
|
|
266
|
+
*/
|
|
267
|
+
purposeRef: z.ZodOptional<z.ZodString>;
|
|
234
268
|
basis: z.ZodEnum<typeof LawfulBasis>;
|
|
235
269
|
/**
|
|
236
270
|
* The assessment behind the basis. REQUIRED for `LEGITIMATE_INTERESTS`, which is the only basis
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-compliance-identity.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/compliance/privacy/operator-compliance-identity.shared.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"operator-compliance-identity.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/compliance/privacy/operator-compliance-identity.shared.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D;;;;;;;;;;GAUG;AACH,oBAAY,WAAW;IACrB,gGAAgG;IAChG,OAAO,YAAY;IACnB,iGAAiG;IACjG,QAAQ,aAAa;IACrB,+FAA+F;IAC/F,gBAAgB,qBAAqB;IACrC,4FAA4F;IAC5F,eAAe,oBAAoB;IACnC,wFAAwF;IACxF,WAAW,gBAAgB;IAC3B;;;;OAIG;IACH,oBAAoB,yBAAyB;CAC9C;AAED,6GAA6G;AAC7G,oBAAY,sBAAsB;IAChC,sDAAsD;IACtD,UAAU,eAAe;IACzB,mHAAmH;IACnH,SAAS,cAAc;IACvB,oHAAoH;IACpH,gBAAgB,qBAAqB;CACtC;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B;IACvC,oGAAoG;;;IAGpG;;;;;OAKG;;kBAEH,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;IACpC,0GAA0G;;IAE1G;;;;;;;;OAQG;;;IAGH;;;OAGG;;kBAgBH,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,+BAA+B;IAC1C;;;;;;;;;OASG;;IAEH;;;;;;OAMG;;kBA2BH,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,2CAA2C;IACtD,2HAA2H;;IAE3H,qGAAqG;;IAErG;;;;;OAKG;;IAEH;;;;;;OAMG;;;;;IAKH;;;;OAIG;;QA/NH,oGAAoG;;;QAGpG;;;;;WAKG;;;IAyNH;;;;;;OAMG;;QApNH,0GAA0G;;QAE1G;;;;;;;;WAQG;;;QAGH;;;WAGG;;;IAgNH;;;;;;OAMG;;QAjJH;;;;;;;;;WASG;;QAEH;;;;;;WAMG;;;IAkIH;;;;;;;;;OASG;;kBAsBH,CAAC;AACH,MAAM,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2CAA2C,CAAC,CAAC;AAGhH;;;;;;;;;;;;GAYG;AACH,oBAAY,8BAA8B;IACxC,iBAAiB,oBAAoB;IACrC,kBAAkB,sBAAsB;IACxC,eAAe,mBAAmB;IAClC,gBAAgB,oBAAoB;IACpC,YAAY,gBAAgB;IAC5B,qCAAqC,uCAAuC;CAC7E;AAED;;;;;;;GAOG;AACH,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,qCAAqC,GAAG,SAAS,GAC1D,SAAS,8BAA8B,EAAE,CAS3C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,qCAAqC,GAAG,SAAS,WAAW,EAAE,GAAG,SAAS,CAKvH;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,qCAAqC,GAAG,OAAO,GAAG,SAAS,CAGxH"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { ConsentPurpose } from './consent-purposes.shared.js';
|
|
3
|
+
import { LawfulBasisPurposeRefSchema } from './purpose-ref.shared.schemas.js';
|
|
3
4
|
/**
|
|
4
5
|
* GDPR Art. 6(1) — the six lawful bases, closed by the article.
|
|
5
6
|
*
|
|
@@ -48,14 +49,21 @@ export var OperatorProcessingRole;
|
|
|
48
49
|
* A B2B SaaS is typically a PROCESSOR for the records its customers put in, and a CONTROLLER for the
|
|
49
50
|
* account and billing data of the people who administer them — simultaneously, in one product.
|
|
50
51
|
*
|
|
51
|
-
* `dataScope` is prose the operator writes, deliberately
|
|
52
|
-
*
|
|
53
|
-
*
|
|
52
|
+
* `dataScope` is prose the operator writes, deliberately: it names a POPULATION of data ("customer records in a
|
|
53
|
+
* workspace"), not a processing purpose, so a lawful basis's `purposeRef` (#1709) is not what it would key to. No
|
|
54
|
+
* structured population vocabulary exists yet, and a ref to nothing would be worse than prose.
|
|
54
55
|
*/
|
|
55
56
|
export const OperatorRoleAllocationSchema = z.strictObject({
|
|
56
57
|
/** Which data this role covers, in the operator's own words — "customer records in a workspace". */
|
|
57
58
|
dataScope: z.string().trim().min(1),
|
|
58
59
|
role: z.enum(OperatorProcessingRole),
|
|
60
|
+
/**
|
|
61
|
+
* The resource types this role covers — the TYPED half of `dataScope` (#1710), so a running erasure or export can
|
|
62
|
+
* say who owes the Art. 19 communication for the subject in front of it. Optional: an allocation in prose only is
|
|
63
|
+
* still a valid statement for a notice, and a subject whose resource type no allocation names is reported as
|
|
64
|
+
* ROLE UNDECLARED, never guessed. `dataScope` stays the words a notice uses.
|
|
65
|
+
*/
|
|
66
|
+
resourceTypes: z.array(z.string().trim().min(1)).min(1).optional(),
|
|
59
67
|
});
|
|
60
68
|
/**
|
|
61
69
|
* One processing purpose and the basis the operator relies on for it.
|
|
@@ -65,6 +73,16 @@ export const OperatorRoleAllocationSchema = z.strictObject({
|
|
|
65
73
|
export const OperatorLawfulBasisSchema = z.strictObject({
|
|
66
74
|
/** The purpose, in the operator's own words. Matches how the notice states purposes: prose, not a ref. */
|
|
67
75
|
purpose: z.string().trim().min(1),
|
|
76
|
+
/**
|
|
77
|
+
* A STABLE id for this purpose, which a provider's or a system of record's compliance choice names
|
|
78
|
+
* (`providerComplianceChoices.<ref>.purposeRefs`) to say which purpose sending it data serves (#1709).
|
|
79
|
+
*
|
|
80
|
+
* Separate from `purpose` because the prose is the notice's wording and changes when the operator rewords it, while
|
|
81
|
+
* a link to it must survive the rewording. OPTIONAL, like every other part of this identity (#225): a basis with no
|
|
82
|
+
* ref is still a basis, and a recipient cannot link to it — which the recipients report names as a purpose not
|
|
83
|
+
* linked, never as a recipient with no purpose.
|
|
84
|
+
*/
|
|
85
|
+
purposeRef: LawfulBasisPurposeRefSchema.optional(),
|
|
68
86
|
basis: z.enum(LawfulBasis),
|
|
69
87
|
/**
|
|
70
88
|
* The assessment behind the basis. REQUIRED for `LEGITIMATE_INTERESTS`, which is the only basis
|
|
@@ -262,7 +280,18 @@ export const ApplicationOperatorComplianceIdentitySchema = z.strictObject({
|
|
|
262
280
|
* declaring no basis at all is a refusal wearing a declaration's clothes, and it would land as a
|
|
263
281
|
* complete answer.
|
|
264
282
|
*/
|
|
265
|
-
lawfulBases: z.array(OperatorLawfulBasisSchema).min(1).
|
|
283
|
+
lawfulBases: z.array(OperatorLawfulBasisSchema).min(1).superRefine((bases, context) => {
|
|
284
|
+
// A purpose ref names ONE purpose, or a recipient linking to it would be linked to two (#1709).
|
|
285
|
+
const seen = new Set();
|
|
286
|
+
bases.forEach((entry, index) => {
|
|
287
|
+
if (entry.purposeRef === undefined)
|
|
288
|
+
return;
|
|
289
|
+
if (seen.has(entry.purposeRef)) {
|
|
290
|
+
context.addIssue({ code: 'custom', path: [index, 'purposeRef'], message: `purpose ref "${entry.purposeRef}" names more than one purpose` });
|
|
291
|
+
}
|
|
292
|
+
seen.add(entry.purposeRef);
|
|
293
|
+
});
|
|
294
|
+
}).optional(),
|
|
266
295
|
/**
|
|
267
296
|
* What a person must consent to in order to use the service at all (issue #139).
|
|
268
297
|
*
|