@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siem-export-config.shared.schemas.js","sourceRoot":"","sources":["../../../../../../src/security/authentications/siem/siem-export-config.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SIEM Export Config Schema (Shared) — Polymorphic\n *\n * Webhook configuration for exporting security audit events to external SIEM.\n * Nested sub-objects: eventFilter{}, delivery{}.\n * Scope FK (organizationId / applicationId) is injected by the polymorphism engine.\n *\n * ── ORG variant is live; the APPLICATION variant is settable but INERT ─────────────\n * The polymorphism below emits both an ORGANIZATION and an APPLICATION variant. Only the\n * ORGANIZATION variant drives delivery today: the sole SIEM producer\n * (`AuditEventDispatcherBackendService`) fans out per authenticated tenant (org) and reads\n * this config via `loadSiemExportConfig(ec, ORGANIZATION, orgId)`. An app super-admin CAN\n * create/enable `APPLICATION_SIEM_EXPORT_CONFIG` (it has its own custom-impl +\n * APP_ADMIN_SUPER_ADMIN roles), but NO producer emits app-scoped deliveries, so an enabled\n * app config silently delivers nothing. The APP variant is RESERVED / DORMANT until an\n * app-scoped producer is built — see `AuditEventDispatcherBackendService.\n * dispatchToOrganizationAuditSinks` for the rationale + the wiring it would need. (When\n * that producer lands, or if this trap is hardened sooner, the app config surface should\n * be gated/hidden until delivery actually works.)\n *\n * @see auth-data-model-audit.md §2D\n */\n\nimport { z } from 'zod';\nimport { SiemExportProjectionDeclarationSchema } from '../../../compliance/audit-trails/audit-export-projection.shared.schemas';\nimport { WildoHeaderKeys } from '../../../requests/header-keys.shared';\nimport { AUTH_SCOPE_VARIANTS } from '../authentication.shared.schemas';\nimport { declarePolymorphicSchemas } from '../../../resources/utils/resource-polymorphism.schemas';\n\nexport const SIEMAuthMethod = {\n BEARER_TOKEN: 'bearer_token',\n API_KEY_HEADER: 'api_key_header',\n HMAC_SHA256: 'hmac_sha256',\n NONE: 'none',\n} as const;\n\n/**\n * The wire formats a tenant's SIEM export can request.\n *\n * `OCSF` is the JSON-native security schema the category has standardised on (ITU ratification track\n * to June 2026), and it is a PEER of the two text formats rather than a replacement: CEF and LEEF stay\n * for tenants whose SIEM wants them. The difference that matters is representational — a\n * security-audit envelope maps onto an OCSF CLASS natively, where CEF can only force it into a\n * `csN` custom-string slot.\n */\nexport const SIEMEventFormat = {\n JSON_STRUCTURED: 'json_structured',\n CEF: 'cef',\n LEEF: 'leef',\n OCSF: 'ocsf',\n} as const;\n\nexport const SIEMEventCategory = {\n AUTHENTICATION: 'authentication',\n AUTHORIZATION: 'authorization',\n USER_LIFECYCLE: 'user_lifecycle',\n ORG_MANAGEMENT: 'org_management',\n DATA_ACCESS: 'data_access',\n} as const;\n\nexport const SIEMFilterSeverity = {\n INFO: 'info',\n WARNING: 'warning',\n CRITICAL: 'critical',\n} as const;\n\nexport const SiemExportConfigBaseSchema = z.object({\n _id: z.string().min(1).isPrimaryKey().isSummaryField(),\n\n enabled: z.boolean().default(false).isSummaryField(),\n\n // Destination for exported audit events. The empty string is the DISABLED /\n // not-yet-configured state (paired with `enabled: false`) and is the default\n // for a freshly-seeded config — so the union MUST admit `''`. A bare\n // `z.url().default('')` is self-contradictory: `z.url()` rejects `''`, so the\n // default value fails output re-validation and every unconfigured row 500s on\n // READ (`transformOutput`). Accept a real URL OR the empty sentinel.\n webhookUrl: z.url().or(z.literal('')).default(''),\n\n authMethod: z.enum(SIEMAuthMethod).default(SIEMAuthMethod.NONE),\n /**\n * User-provided secret used to authenticate outbound webhook deliveries to the\n * customer's SIEM endpoint (bearer token, API-key value, etc.).\n *\n * `.isWriteOnlySecret()` gives this the framework's write-then-masked-secret\n * contract: it stays in the CREATE/UPDATE request DTO (the operator supplies\n * and rotates it) and in the response DTO (so the UI renders a masked\n * placeholder), but the framework redacts it to `••••••••` at the client\n * boundary and treats a round-tripped `••••••••` on write as \"keep the existing\n * secret\". The real value is retained for backend internal reads only — the\n * webhook dispatcher reads it via `readAsSystem` to sign deliveries. Do NOT use\n * `.isBackendOnly()` here: that strips the field from every client DTO, dropping\n * the operator's typed value before it is stored and leaving the presets a field\n * they cannot resolve.\n */\n authCredential: z.string().optional().isWriteOnlySecret(),\n authHeaderName: z.string().default(WildoHeaderKeys.API_KEY),\n\n eventFormat: z.enum(SIEMEventFormat).default(SIEMEventFormat.JSON_STRUCTURED),\n\n eventFilter: z.object({\n categories: z.array(z.enum(SIEMEventCategory)).default([\n SIEMEventCategory.AUTHENTICATION,\n SIEMEventCategory.AUTHORIZATION,\n SIEMEventCategory.USER_LIFECYCLE,\n SIEMEventCategory.ORG_MANAGEMENT,\n SIEMEventCategory.DATA_ACCESS,\n ]),\n severityMinimum: z.enum(SIEMFilterSeverity).default(SIEMFilterSeverity.INFO),\n specificEventTypes: z.array(z.string()).optional(),\n }),\n\n /*\n * Three knobs, and the two that were removed are the reason to read this.\n *\n * `retryAttempts`, `retryBackoffSeconds` and `timeoutSeconds` are honoured — the delivery worker\n * reads all three (`siem-webhook-delivery.backend.service`, at the retry ceiling, the exponential\n * backoff and the request deadline).\n *\n * `batchSize` and `batchWindowSeconds` are honoured TOO, as of #1379 — but they were not always,\n * and the history is the reason to read this rather than trivia. They spent months appearing in\n * the delivery service only as fields of its parameter TYPE: declared, passed, never consulted.\n * That is the shape which makes an inert knob hardest to see, because it has a \"reader\" that\n * decides nothing. The worker posted ONE event per HTTP request whatever they said, and the\n * customer documentation warned an operator not to size a receiver or a billing estimate on\n * either — a warning being what you write when the control is missing.\n *\n * They were deleted in `be001548` rather than kept as a disclosed \"reserved\" knob, on the\n * principle that a receiver sized on `batchSize: 100` is sized wrong and a documented warning is\n * not a control. They are back now because the control exists: a durable collector groups pending\n * events per destination and sends them as one request, so the two numbers decide how many events\n * a request may carry and how long a partly-filled one waits.\n *\n * The pairing that matters: `batchSize: 1` — the DEFAULT — means no batching at all, the window is\n * never consulted, and the wire is byte-for-byte what it was before any of this existed.\n */\n delivery: z.object({\n /**\n * The MOST events one HTTP request may carry. `1` — the default — is one request per event,\n * which is what this destination gets until its operator asks for anything else.\n *\n * The number means what it says: the collector claims at most this many pending events for one\n * request and sends no more, so a receiver sized on `batchSize: 50` receives at most fifty. A\n * burst larger than this becomes several requests of this size rather than one oversized body.\n *\n * Capped at 100 because the body is the sum of its events and collector endpoints commonly\n * refuse a payload around a megabyte: a hundred CEF lines sits comfortably under that, where a\n * thousand would not. Raising the cap is a decision about the receiver, not about this engine.\n *\n * At `1` the delivery path is byte-for-byte what it was before batching existed — the event is\n * sent alone, framed as itself, and {@link batchWindowSeconds} is never consulted.\n */\n batchSize: z.number().int().min(1).max(100).default(1),\n /**\n * How long a partly-filled batch waits for company before it is sent anyway.\n *\n * ONLY consulted when {@link batchSize} is greater than 1 — at the default of 1 there is no\n * batch to fill, so a lone event is never held. That is the pairing to know: this field cannot\n * delay anything on a destination that has not opted into batching.\n *\n * It bounds how stale an exported security event may be, which is why the ceiling is a minute\n * rather than the five that the retry backoff allows. A SOC's detection latency is the thing\n * being spent here.\n */\n batchWindowSeconds: z.preprocess(\n /*\n * A stored value BELOW the floor is LEGACY, and is normalised to the default rather than\n * refused. Measured 2026-09-21 on the dogfood application: 17 of 17 rows carry\n * `batchWindowSeconds: 0`, and so do wonder-crm's and the platform's.\n *\n * They were written by the seed's `delivery: {}` under the PRE-`be001548` schema, whose\n * default for this field was 0 — back when nothing read it. Re-adding the field in #1379 with\n * a floor of 1 made every one of those rows unreadable: `transformOutput` re-validates stored\n * data against the CURRENT schema, so every read of every organization's SIEM export config\n * threw, which is `loadSiemExportConfig` — the per-organization audit routing lookup.\n *\n * **The floor cannot simply be widened to 0, and the reason is in the collector**: \"A window\n * of 0 would make the flush job race the append's own transaction; the window is floored at 1\n * second by the schema\". `.min(1)` is load-bearing, so 0 is not a value this contract may\n * hold — which is exactly why coercing it is honest rather than lax. It cannot be WRITTEN\n * either: a create or update carrying 0 still fails the inner schema, because preprocess only\n * substitutes the value that reaches it and the floor below still judges everything else.\n *\n * Neither of the framework's two repair mechanisms can reach these rows, which is why the\n * normalisation lives here. A seed version bump does not: `AFTER_CREATE` \"fires once and\n * cannot reach backwards\", and the lazy backfill is \"first access creates the row, never\n * re-applied\". A SQL data migration would cover the three PostgreSQL surfaces and leave every\n * Mongo-backed application broken.\n *\n * Matched on EXACTLY 0, never `< 1`. The first version of this coercion took anything below\n * the floor, and a probe immediately showed it accepting `-3` as 5 — a coercion that had\n * quietly become permission, which is the shape this repository forbids under \"never present\n * suppression as repair\". A negative, a fraction and anything above the ceiling are still\n * refused outright; 0 alone is the value the old schema actually wrote.\n *\n * The residual, stated rather than hidden: read and write share this schema, so an operator\n * who TYPES 0 gets 5 instead of a validation error. That is the cost of the trade, and it is\n * the right way round against every read of every organization's export config throwing.\n *\n * Mapped to `undefined` rather than to a literal so `.default(5)` stays the single source of\n * the value. Removable once no deployment can hold a pre-#1379 row.\n */\n (value) => (value === 0 ? undefined : value),\n z.number().int().min(1).max(60).default(5),\n ),\n retryAttempts: z.number().min(0).max(5).default(3),\n retryBackoffSeconds: z.number().min(1).max(300).default(30),\n timeoutSeconds: z.number().min(1).max(60).default(10),\n }),\n\n customHeaders: z.record(z.string(), z.string()).optional(),\n\n /**\n * What this destination may RECEIVE — the per-destination half of the audit-export projection\n * (#1380). The vocabulary, the floor and the resolution live in\n * `compliance/audit-trails/audit-export-projection.shared.schemas`; this field is only where a\n * tenant declares its own narrowing.\n *\n * **`.optional()` on purpose, and the absent case is FULL disclosure.** Two destinations on one\n * tenant can hold different agreements, so the declaration belongs here rather than on the\n * application — but every row that exists today has none, and reading an absent declaration as\n * \"disclose nothing\" would silently strip live feeds down to the floor. An operator narrows\n * deliberately; the framework does not narrow on their behalf. See `FULL_AUDIT_EXPORT_PROJECTION`\n * for why that fail-OPEN is right in this one place.\n *\n * This is NOT the revival of `includeRawEventData` / `includeDeviceContext` below. Those were two\n * booleans beside the retry policy that nothing read; this resolves against a contract that is\n * total over the envelope AND total over the event vocabulary, is applied once at the ENQUEUE\n * SEAM — before the event is signed and queued, so all four wire formats carry it identically and\n * no producer can reach the queue around it — and cannot trim the floor.\n */\n exportProjection: SiemExportProjectionDeclarationSchema.optional(),\n\n /*\n * `includeRawEventData` and `includeDeviceContext` were REMOVED here, and neither was ever read.\n *\n * Both defaulted `true`, both rendered as switches on the SIEM pane with a description underneath,\n * and the complete set of mentions was: this declaration, the display and edit templates, the\n * specification, the customer documentation, the i18n labels — and FOUR test files, where each\n * appears as a field of a config FIXTURE rather than as a behaviour under assertion. The envelope\n * builders in `compliance/audit-trails` contain no `includeRaw`, no `rawEvent` and no\n * `deviceContext` at all: what an exported event carries is decided by the projection contract,\n * the same shape for every sink.\n *\n * They are worth naming apart from the other dead switches on these panes, because these two had\n * `booleanUI({ showDescription: true })` — so an operator got a switch, a label AND a sentence\n * explaining what it did, for a flag that did nothing. Being the best-presented control on the\n * page is not evidence of being one.\n *\n * Removing them is not a loss of the capability they named. Choosing what an export carries is a\n * real feature with a design — a projection the application declares — and it would be built on\n * the envelope contract, not on two booleans beside the retry policy.\n *\n * Absence is pinned in `authentication-knobs-have-readers.test.ts`.\n */\n\n createdAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n updatedAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n});\n\nexport type SiemExportConfigBase = z.infer<typeof SiemExportConfigBaseSchema>;\n\nexport const siemExportConfigPolymorphicDeclaration = declarePolymorphicSchemas({\n baseResourceType: 'siemExportConfig',\n baseFieldIdentifier: 'siemExportConfigId',\n baseEnumKey: 'SIEM_EXPORT_CONFIG',\n baseSchema: SiemExportConfigBaseSchema,\n variants: AUTH_SCOPE_VARIANTS,\n});\n"]}
|
|
1
|
+
{"version":3,"file":"siem-export-config.shared.schemas.js","sourceRoot":"","sources":["../../../../../../src/security/authentications/siem/siem-export-config.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SIEM Export Config Schema (Shared) — Polymorphic\n *\n * Webhook configuration for exporting security audit events to external SIEM.\n * Nested sub-objects: eventFilter{}, delivery{}.\n * Scope FK (organizationId / applicationId) is injected by the polymorphism engine.\n *\n * ── ORG variant is live; the APPLICATION variant is settable but INERT ─────────────\n * The polymorphism below emits both an ORGANIZATION and an APPLICATION variant. Only the\n * ORGANIZATION variant drives delivery today: the sole SIEM producer\n * (`AuditEventDispatcherBackendService`) fans out per authenticated tenant (org) and reads\n * this config via `loadSiemExportConfig(ec, ORGANIZATION, orgId)`. An app super-admin CAN\n * create/enable `APPLICATION_SIEM_EXPORT_CONFIG` (it has its own custom-impl +\n * APP_ADMIN_SUPER_ADMIN roles), but NO producer emits app-scoped deliveries, so an enabled\n * app config silently delivers nothing. The APP variant is RESERVED / DORMANT until an\n * app-scoped producer is built — see `AuditEventDispatcherBackendService.\n * dispatchToOrganizationAuditSinks` for the rationale + the wiring it would need. (When\n * that producer lands, or if this trap is hardened sooner, the app config surface should\n * be gated/hidden until delivery actually works.)\n *\n * @see auth-data-model-audit.md §2D\n */\n\nimport { z } from 'zod';\nimport { SiemExportProjectionDeclarationSchema } from '../../../compliance/audit-trails/audit-export-projection.shared.schemas';\nimport { WildoHeaderKeys } from '../../../requests/header-keys.shared';\nimport { AUTH_SCOPE_VARIANTS } from '../authentication.shared.schemas';\nimport { declarePolymorphicSchemas } from '../../../resources/utils/resource-polymorphism.schemas';\n\nexport const SIEMAuthMethod = {\n BEARER_TOKEN: 'bearer_token',\n API_KEY_HEADER: 'api_key_header',\n HMAC_SHA256: 'hmac_sha256',\n NONE: 'none',\n} as const;\n\n/**\n * The wire formats a tenant's SIEM export can request.\n *\n * `OCSF` is the JSON-native security schema the category has standardised on (ITU ratification track\n * to June 2026), and it is a PEER of the two text formats rather than a replacement: CEF and LEEF stay\n * for tenants whose SIEM wants them. The difference that matters is representational — a\n * security-audit envelope maps onto an OCSF CLASS natively, where CEF can only force it into a\n * `csN` custom-string slot.\n */\nexport const SIEMEventFormat = {\n JSON_STRUCTURED: 'json_structured',\n CEF: 'cef',\n LEEF: 'leef',\n OCSF: 'ocsf',\n} as const;\n\nexport const SIEMEventCategory = {\n AUTHENTICATION: 'authentication',\n AUTHORIZATION: 'authorization',\n USER_LIFECYCLE: 'user_lifecycle',\n ORG_MANAGEMENT: 'org_management',\n DATA_ACCESS: 'data_access',\n} as const;\n\nexport const SIEMFilterSeverity = {\n INFO: 'info',\n WARNING: 'warning',\n CRITICAL: 'critical',\n} as const;\n\nexport const SiemExportConfigBaseSchema = z.object({\n _id: z.string().min(1).isPrimaryKey().isSummaryField(),\n\n enabled: z.boolean().default(false).isSummaryField(),\n\n // Destination for exported audit events. The empty string is the DISABLED /\n // not-yet-configured state (paired with `enabled: false`) and is the default\n // for a freshly-seeded config — so the union MUST admit `''`. A bare\n // `z.url().default('')` is self-contradictory: `z.url()` rejects `''`, so the\n // default value fails output re-validation and every unconfigured row 500s on\n // READ (`transformOutput`). Accept a real URL OR the empty sentinel.\n webhookUrl: z.url().or(z.literal('')).default(''),\n\n authMethod: z.enum(SIEMAuthMethod).default(SIEMAuthMethod.NONE),\n /**\n * User-provided secret used to authenticate outbound webhook deliveries to the\n * customer's SIEM endpoint (bearer token, API-key value, etc.).\n *\n * `.isWriteOnlySecret()` gives this the framework's write-then-masked-secret\n * contract: it stays in the CREATE/UPDATE request DTO (the operator supplies\n * and rotates it) and in the response DTO (so the UI renders a masked\n * placeholder), but the framework redacts it to `••••••••` at the client\n * boundary and treats a round-tripped `••••••••` on write as \"keep the existing\n * secret\". The real value is retained for backend internal reads only — the\n * webhook dispatcher reads it via `readAsSystem` to sign deliveries. Do NOT use\n * `.isBackendOnly()` here: that strips the field from every client DTO, dropping\n * the operator's typed value before it is stored and leaving the presets a field\n * they cannot resolve.\n */\n authCredential: z.string().optional().isWriteOnlySecret(),\n authHeaderName: z.string().default(WildoHeaderKeys.API_KEY),\n\n eventFormat: z.enum(SIEMEventFormat).default(SIEMEventFormat.JSON_STRUCTURED),\n\n eventFilter: z.object({\n categories: z.array(z.enum(SIEMEventCategory)).default([\n SIEMEventCategory.AUTHENTICATION,\n SIEMEventCategory.AUTHORIZATION,\n SIEMEventCategory.USER_LIFECYCLE,\n SIEMEventCategory.ORG_MANAGEMENT,\n SIEMEventCategory.DATA_ACCESS,\n ]).describe(\"The event categories exported to this destination.\"),\n severityMinimum: z.enum(SIEMFilterSeverity).default(SIEMFilterSeverity.INFO).describe(\"The least severe event exported. Less severe events are not sent.\"),\n specificEventTypes: z.array(z.string()).optional().describe(\"An optional allow-list of event types, matched exactly: no substring or wildcard matching.\"),\n }),\n\n /*\n * Three knobs, and the two that were removed are the reason to read this.\n *\n * `retryAttempts`, `retryBackoffSeconds` and `timeoutSeconds` are honoured — the delivery worker\n * reads all three (`siem-webhook-delivery.backend.service`, at the retry ceiling, the exponential\n * backoff and the request deadline).\n *\n * `batchSize` and `batchWindowSeconds` are honoured TOO, as of #1379 — but they were not always,\n * and the history is the reason to read this rather than trivia. They spent months appearing in\n * the delivery service only as fields of its parameter TYPE: declared, passed, never consulted.\n * That is the shape which makes an inert knob hardest to see, because it has a \"reader\" that\n * decides nothing. The worker posted ONE event per HTTP request whatever they said, and the\n * customer documentation warned an operator not to size a receiver or a billing estimate on\n * either — a warning being what you write when the control is missing.\n *\n * They were deleted in `be001548` rather than kept as a disclosed \"reserved\" knob, on the\n * principle that a receiver sized on `batchSize: 100` is sized wrong and a documented warning is\n * not a control. They are back now because the control exists: a durable collector groups pending\n * events per destination and sends them as one request, so the two numbers decide how many events\n * a request may carry and how long a partly-filled one waits.\n *\n * The pairing that matters: `batchSize: 1` — the DEFAULT — means no batching at all, the window is\n * never consulted, and the wire is byte-for-byte what it was before any of this existed.\n */\n delivery: z.object({\n /**\n * The MOST events one HTTP request may carry. `1` — the default — is one request per event,\n * which is what this destination gets until its operator asks for anything else.\n *\n * The number means what it says: the collector claims at most this many pending events for one\n * request and sends no more, so a receiver sized on `batchSize: 50` receives at most fifty. A\n * burst larger than this becomes several requests of this size rather than one oversized body.\n *\n * Capped at 100 because the body is the sum of its events and collector endpoints commonly\n * refuse a payload around a megabyte: a hundred CEF lines sits comfortably under that, where a\n * thousand would not. Raising the cap is a decision about the receiver, not about this engine.\n *\n * At `1` the delivery path is byte-for-byte what it was before batching existed — the event is\n * sent alone, framed as itself, and {@link batchWindowSeconds} is never consulted.\n */\n batchSize: z.number().int().min(1).max(100).default(1).describe(\"The most events one request may carry, up to 100. `1`, the default, sends one request per event.\"),\n /**\n * How long a partly-filled batch waits for company before it is sent anyway.\n *\n * ONLY consulted when {@link batchSize} is greater than 1 — at the default of 1 there is no\n * batch to fill, so a lone event is never held. That is the pairing to know: this field cannot\n * delay anything on a destination that has not opted into batching.\n *\n * It bounds how stale an exported security event may be, which is why the ceiling is a minute\n * rather than the five that the retry backoff allows. A SOC's detection latency is the thing\n * being spent here.\n */\n batchWindowSeconds: z.preprocess(\n /*\n * A stored value BELOW the floor is LEGACY, and is normalised to the default rather than\n * refused. Measured 2026-09-21 on the dogfood application: 17 of 17 rows carry\n * `batchWindowSeconds: 0`, and so do wonder-crm's and the platform's.\n *\n * They were written by the seed's `delivery: {}` under the PRE-`be001548` schema, whose\n * default for this field was 0 — back when nothing read it. Re-adding the field in #1379 with\n * a floor of 1 made every one of those rows unreadable: `transformOutput` re-validates stored\n * data against the CURRENT schema, so every read of every organization's SIEM export config\n * threw, which is `loadSiemExportConfig` — the per-organization audit routing lookup.\n *\n * **The floor cannot simply be widened to 0, and the reason is in the collector**: \"A window\n * of 0 would make the flush job race the append's own transaction; the window is floored at 1\n * second by the schema\". `.min(1)` is load-bearing, so 0 is not a value this contract may\n * hold — which is exactly why coercing it is honest rather than lax. It cannot be WRITTEN\n * either: a create or update carrying 0 still fails the inner schema, because preprocess only\n * substitutes the value that reaches it and the floor below still judges everything else.\n *\n * Neither of the framework's two repair mechanisms can reach these rows, which is why the\n * normalisation lives here. A seed version bump does not: `AFTER_CREATE` \"fires once and\n * cannot reach backwards\", and the lazy backfill is \"first access creates the row, never\n * re-applied\". A SQL data migration would cover the three PostgreSQL surfaces and leave every\n * Mongo-backed application broken.\n *\n * Matched on EXACTLY 0, never `< 1`. The first version of this coercion took anything below\n * the floor, and a probe immediately showed it accepting `-3` as 5 — a coercion that had\n * quietly become permission, which is the shape this repository forbids under \"never present\n * suppression as repair\". A negative, a fraction and anything above the ceiling are still\n * refused outright; 0 alone is the value the old schema actually wrote.\n *\n * The residual, stated rather than hidden: read and write share this schema, so an operator\n * who TYPES 0 gets 5 instead of a validation error. That is the cost of the trade, and it is\n * the right way round against every read of every organization's export config throwing.\n *\n * Mapped to `undefined` rather than to a literal so `.default(5)` stays the single source of\n * the value. Removable once no deployment can hold a pre-#1379 row.\n */\n (value) => (value === 0 ? undefined : value),\n z.number().int().min(1).max(60).default(5),\n ).describe(\"How long, in seconds, a partly filled batch waits before it is sent anyway. Used only when `batchSize` is above 1.\"),\n retryAttempts: z.number().min(0).max(5).default(3).describe(\"How many times a failed delivery is retried.\"),\n retryBackoffSeconds: z.number().min(1).max(300).default(30).describe(\"The base delay before a retry, in seconds. Retries back off exponentially from it.\"),\n timeoutSeconds: z.number().min(1).max(60).default(10).describe(\"How long one delivery request may take, in seconds.\"),\n }),\n\n customHeaders: z.record(z.string(), z.string()).optional(),\n\n /**\n * What this destination may RECEIVE — the per-destination half of the audit-export projection\n * (#1380). The vocabulary, the floor and the resolution live in\n * `compliance/audit-trails/audit-export-projection.shared.schemas`; this field is only where a\n * tenant declares its own narrowing.\n *\n * **`.optional()` on purpose, and the absent case is FULL disclosure.** Two destinations on one\n * tenant can hold different agreements, so the declaration belongs here rather than on the\n * application — but every row that exists today has none, and reading an absent declaration as\n * \"disclose nothing\" would silently strip live feeds down to the floor. An operator narrows\n * deliberately; the framework does not narrow on their behalf. See `FULL_AUDIT_EXPORT_PROJECTION`\n * for why that fail-OPEN is right in this one place.\n *\n * This is NOT the revival of `includeRawEventData` / `includeDeviceContext` below. Those were two\n * booleans beside the retry policy that nothing read; this resolves against a contract that is\n * total over the envelope AND total over the event vocabulary, is applied once at the ENQUEUE\n * SEAM — before the event is signed and queued, so all four wire formats carry it identically and\n * no producer can reach the queue around it — and cannot trim the floor.\n */\n exportProjection: SiemExportProjectionDeclarationSchema.optional(),\n\n /*\n * `includeRawEventData` and `includeDeviceContext` were REMOVED here, and neither was ever read.\n *\n * Both defaulted `true`, both rendered as switches on the SIEM pane with a description underneath,\n * and the complete set of mentions was: this declaration, the display and edit templates, the\n * specification, the customer documentation, the i18n labels — and FOUR test files, where each\n * appears as a field of a config FIXTURE rather than as a behaviour under assertion. The envelope\n * builders in `compliance/audit-trails` contain no `includeRaw`, no `rawEvent` and no\n * `deviceContext` at all: what an exported event carries is decided by the projection contract,\n * the same shape for every sink.\n *\n * They are worth naming apart from the other dead switches on these panes, because these two had\n * `booleanUI({ showDescription: true })` — so an operator got a switch, a label AND a sentence\n * explaining what it did, for a flag that did nothing. Being the best-presented control on the\n * page is not evidence of being one.\n *\n * Removing them is not a loss of the capability they named. Choosing what an export carries is a\n * real feature with a design — a projection the application declares — and it would be built on\n * the envelope contract, not on two booleans beside the retry policy.\n *\n * Absence is pinned in `authentication-knobs-have-readers.test.ts`.\n */\n\n createdAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n updatedAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n});\n\nexport type SiemExportConfigBase = z.infer<typeof SiemExportConfigBaseSchema>;\n\nexport const siemExportConfigPolymorphicDeclaration = declarePolymorphicSchemas({\n baseResourceType: 'siemExportConfig',\n baseFieldIdentifier: 'siemExportConfigId',\n baseEnumKey: 'SIEM_EXPORT_CONFIG',\n baseSchema: SiemExportConfigBaseSchema,\n variants: AUTH_SCOPE_VARIANTS,\n});\n"]}
|
package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-config.shared.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/sso/sso-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAoB,MAAM,sDAAsD,CAAC;AAC/G,OAAO,EAEL,4BAA4B,EAC7B,MAAM,6CAA6C,CAAC;AAkBrD,oBAAY,oBAAoB;IAC9B,YAAY,gBAAgB;IAC5B,aAAa,iBAAiB;IAC9B,aAAa,iBAAiB;CAC/B;
|
|
1
|
+
{"version":3,"file":"sso-config.shared.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/sso/sso-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAoB,MAAM,sDAAsD,CAAC;AAC/G,OAAO,EAEL,4BAA4B,EAC7B,MAAM,6CAA6C,CAAC;AAkBrD,oBAAY,oBAAoB;IAC9B,YAAY,gBAAgB;IAC5B,aAAa,iBAAiB;IAC9B,aAAa,iBAAiB;CAC/B;AAmCD,eAAO,MAAM,+BAA+B;;iBAE1C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;iBAE3C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;iBAE3C,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;IAG3C,2EAA2E;;IAE3E,qDAAqD;;kBAErD,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;IAI5C;;;;OAIG;;kBAEH,CAAC;AAEH,eAAO,MAAM,iCAAiC;;IAE5C,iFAAiF;;kBAEjF,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC7F,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAC/F,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC;IAGnD,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC,QAAQ,CAAC;CACvE,CAEA,CAAC;AAIF,eAAO,MAAM,6BAA6B,wQA0PzC,CAAC"}
|
|
@@ -41,7 +41,8 @@ const SSO_DOMAIN_PATTERN = /^(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\.(?!-)[A-Za-z0-9-]{1
|
|
|
41
41
|
const SsoConfig_DomainSelector = z.string()
|
|
42
42
|
.min(4)
|
|
43
43
|
.max(253)
|
|
44
|
-
.regex(SSO_DOMAIN_PATTERN, 'Provide a DNS hostname with at least two labels, e.g. "customer.com".')
|
|
44
|
+
.regex(SSO_DOMAIN_PATTERN, 'Provide a DNS hostname with at least two labels, e.g. "customer.com".')
|
|
45
|
+
.describe("The email domain, as a DNS hostname with at least two labels, such as `customer.com`.");
|
|
45
46
|
/*
|
|
46
47
|
* ── `z.object`, NOT `z.strictObject` — and that is a CONTRACT, not a relaxation ────────────────
|
|
47
48
|
*
|
|
@@ -77,28 +78,28 @@ export const SsoConfig_RevokeDomainRequestDto = z.object({
|
|
|
77
78
|
* SCIM token mint uses for its one-time plaintext.
|
|
78
79
|
*/
|
|
79
80
|
export const SsoConfig_ClaimDomainResponseDto = z.strictObject({
|
|
80
|
-
domain: z.string(),
|
|
81
|
-
status: z.enum(DomainVerificationStatus),
|
|
81
|
+
domain: z.string().describe("The domain that was claimed."),
|
|
82
|
+
status: z.enum(DomainVerificationStatus).describe("The domain's verification status after the claim: `pending` until the DNS record is checked."),
|
|
82
83
|
/** The DNS name the TXT record goes on: `_wildo-verification.<domain>`. */
|
|
83
|
-
dnsName: z.string(),
|
|
84
|
+
dnsName: z.string().describe("Where to publish the TXT record: `_wildo-verification.<domain>`."),
|
|
84
85
|
/** The exact TXT value to publish. Revealed once. */
|
|
85
|
-
dnsRecordValue: z.string().isEphemeral(),
|
|
86
|
+
dnsRecordValue: z.string().isEphemeral().describe("The exact TXT value to publish, returned only in this response. Claiming the domain again issues a new value and invalidates this one."),
|
|
86
87
|
});
|
|
87
88
|
export const SsoConfig_VerifyDomainResponseDto = z.strictObject({
|
|
88
|
-
domain: z.string(),
|
|
89
|
-
status: z.enum(DomainVerificationStatus),
|
|
90
|
-
dnsName: z.string(),
|
|
89
|
+
domain: z.string().describe("The domain that was checked."),
|
|
90
|
+
status: z.enum(DomainVerificationStatus).describe("The result of this check: `verified` when a TXT record at `dnsName` matched the claim's value, otherwise `failed`."),
|
|
91
|
+
dnsName: z.string().describe("The DNS name that was queried for the TXT record."),
|
|
91
92
|
/**
|
|
92
93
|
* Every TXT record found at `dnsName`, so a failed check is diagnosable without a second tool.
|
|
93
94
|
* These are public DNS records of a domain the caller is claiming to own — echoing them discloses
|
|
94
95
|
* nothing the caller could not resolve themselves.
|
|
95
96
|
*/
|
|
96
|
-
dnsRecordsFound: z.array(z.string()),
|
|
97
|
+
dnsRecordsFound: z.array(z.string()).describe("Every TXT record found at `dnsName`, so a failed check can be diagnosed."),
|
|
97
98
|
});
|
|
98
99
|
export const SsoConfig_RevokeDomainResponseDto = z.strictObject({
|
|
99
|
-
domain: z.string(),
|
|
100
|
+
domain: z.string().describe("The domain whose claim was removed."),
|
|
100
101
|
/** True once the domain holds no claim, no status and no nonce in this scope. */
|
|
101
|
-
revoked: z.boolean(),
|
|
102
|
+
revoked: z.boolean().describe("`true` once the domain holds no claim, verification status or pending value in this scope."),
|
|
102
103
|
});
|
|
103
104
|
/**
|
|
104
105
|
* The variant type the SSO-config UPDATE runs on — the one named source read by this configuration and
|
|
@@ -161,7 +162,7 @@ export const ssoConfigPolymorphicFactories = createPolymorphicResourceConfigurat
|
|
|
161
162
|
variantType: ResourceOperationVariantType.API_CALL,
|
|
162
163
|
isDefault: true,
|
|
163
164
|
polymorphicRole: {
|
|
164
|
-
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],
|
|
165
|
+
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],
|
|
165
166
|
[CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],
|
|
166
167
|
},
|
|
167
168
|
riskLevel: ResourceOperationRiskLevel.LOW,
|
|
@@ -253,7 +254,7 @@ export const ssoConfigPolymorphicFactories = createPolymorphicResourceConfigurat
|
|
|
253
254
|
variantType: SSO_CONFIG_WRITE_VARIANT_TYPE[CoreResourceOperation.UPDATE],
|
|
254
255
|
isDefault: true,
|
|
255
256
|
polymorphicRole: {
|
|
256
|
-
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],
|
|
257
|
+
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],
|
|
257
258
|
[CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],
|
|
258
259
|
},
|
|
259
260
|
riskLevel: ResourceOperationRiskLevel.HIGH,
|
|
@@ -325,7 +326,7 @@ export const ssoConfigPolymorphicFactories = createPolymorphicResourceConfigurat
|
|
|
325
326
|
variantType: ResourceOperationVariantType.API_CALL,
|
|
326
327
|
isDefault: true,
|
|
327
328
|
polymorphicRole: {
|
|
328
|
-
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],
|
|
329
|
+
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],
|
|
329
330
|
[CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],
|
|
330
331
|
},
|
|
331
332
|
// HIGH, not CRITICAL: a claim grants NOTHING. It records `pending` and mints a nonce, and
|
|
@@ -341,7 +342,7 @@ export const ssoConfigPolymorphicFactories = createPolymorphicResourceConfigurat
|
|
|
341
342
|
variantType: ResourceOperationVariantType.API_CALL,
|
|
342
343
|
isDefault: true,
|
|
343
344
|
polymorphicRole: {
|
|
344
|
-
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],
|
|
345
|
+
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],
|
|
345
346
|
[CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],
|
|
346
347
|
},
|
|
347
348
|
// CRITICAL: this is the transition that hands a tenant SSO routing control over EVERY
|
|
@@ -358,7 +359,7 @@ export const ssoConfigPolymorphicFactories = createPolymorphicResourceConfigurat
|
|
|
358
359
|
variantType: ResourceOperationVariantType.API_CALL,
|
|
359
360
|
isDefault: true,
|
|
360
361
|
polymorphicRole: {
|
|
361
|
-
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],
|
|
362
|
+
[CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],
|
|
362
363
|
[CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],
|
|
363
364
|
},
|
|
364
365
|
// CRITICAL for the same reason as VERIFY, from the other side: revocation is what makes a
|
package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-config.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../../../src/security/authentications/sso/sso-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SSO Config Resource Configuration — Polymorphic\n *\n * Produces 2 factory functions (ORG + APP) via the polymorphic factory.\n * Spread into the registry factory map:\n * ...ssoConfigPolymorphicFactories\n */\n\nimport { z } from 'zod';\nimport { CoreResourceOperation, CoreResourceType } from '../../../resources/resources.shared.core.definitions';\nimport {\n ResourceOperationRiskLevel,\n ResourceOperationVariantType,\n} from '../../../resources/resources.shared.schemas';\nimport { createPolymorphicResourceConfigurations } from '../../../resources/utils/resource-polymorphism.factory';\nimport { ResourceSystemAccessMode } from '../../../resources/resources-config.shared.schemas';\nimport { CORE_ORG_ROLES, CORE_APP_ROLES } from '../../authorizations/roles.shared.schemas';\nimport { DomainVerificationStatus, ssoConfigPolymorphicDeclaration } from './sso-config.shared.schemas';\n\n// ── Domain-ownership operations ──────────────────────────────────────\n//\n// Enterprise domain routing sends every `@customer.com` sign-in to that customer's identity\n// provider. Reaching the VERIFIED state used to require an out-of-band database write, which made\n// enterprise onboarding a support ticket forever (#424). These three operations are the door.\n//\n// They are entity-level operations on a resource that is a ONE-to-ONE COMPOSITION under its scope,\n// so the URL builder omits the id segment and the scope in the path selects the row:\n// PUT /organizations/{organizationId}/sso-configs/claim-domain\n// PUT /organizations/{organizationId}/sso-configs/verify-domain\n// PUT /organizations/{organizationId}/sso-configs/revoke-domain\n\nexport enum SsoConfig_Operations {\n CLAIM_DOMAIN = 'claimDomain',\n VERIFY_DOMAIN = 'verifyDomain',\n REVOKE_DOMAIN = 'revokeDomain',\n}\n\n/**\n * A DNS hostname, syntactically. Two labels minimum — a single label is not a domain anyone can\n * publish a TXT record under, and accepting one would mint a challenge that can never be answered.\n *\n * Case is NOT normalised here. The backend lowercases before every read and every write, because\n * that is where the stored map keys are decided; doing it in two places would make the request\n * contract look like the authority when it is not.\n */\nconst SSO_DOMAIN_PATTERN = /^(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\\.(?!-)[A-Za-z0-9-]{1,63}(?<!-))+$/;\n\nconst SsoConfig_DomainSelector = z.string()\n .min(4)\n .max(253)\n .regex(SSO_DOMAIN_PATTERN, 'Provide a DNS hostname with at least two labels, e.g. \"customer.com\".');\n\n/*\n * ── `z.object`, NOT `z.strictObject` — and that is a CONTRACT, not a relaxation ────────────────\n *\n * These three shipped as `strictObject` and every claim answered **400 `unrecognized_keys:\n * [\"domains\"]`**, measured over HTTP on 2026-09-09. The framework MERGES a PREFIX hook's returned\n * patch into the request payload and re-parses the result against THIS schema — so the `domains`\n * block the planner just computed arrived at a schema that knows only `domain`, and a strict schema\n * refuses what it does not recognise. A prefix that contributes a persisted field is therefore\n * structurally incompatible with a strict request DTO; every sibling lifecycle verb in the engine\n * (`organizations.requestDeletion`, `activate`, `restore`) uses `z.object` for exactly this reason.\n *\n * `z.object` STRIPS the unrecognised key instead of refusing it, which on its own would turn the\n * 400 into the quieter defect — 200 having persisted nothing. What closes that half is\n * `authoritativeFields: ['domains']` on each custom-implementation registration, which re-attaches\n * the hook's value after the strip and makes a caller-supplied `domains` be overwritten rather than\n * honoured. The two halves are one decision; neither works alone.\n */\nexport const SsoConfig_ClaimDomainRequestDto = z.object({\n domain: SsoConfig_DomainSelector,\n});\n\nexport const SsoConfig_VerifyDomainRequestDto = z.object({\n domain: SsoConfig_DomainSelector,\n});\n\nexport const SsoConfig_RevokeDomainRequestDto = z.object({\n domain: SsoConfig_DomainSelector,\n});\n\n/**\n * The claim response is the ONLY disclosure of the challenge nonce.\n *\n * `domainVerificationTokens` is `.isBackendOnly()`, so no READ of the config ever returns it — an\n * operator who loses this response claims again, which mints a new nonce and invalidates the old\n * one. `.isEphemeral()` marks `dnsRecordValue` as a revealed-once secret, the same contract the\n * SCIM token mint uses for its one-time plaintext.\n */\nexport const SsoConfig_ClaimDomainResponseDto = z.strictObject({\n domain: z.string(),\n status: z.enum(DomainVerificationStatus),\n /** The DNS name the TXT record goes on: `_wildo-verification.<domain>`. */\n dnsName: z.string(),\n /** The exact TXT value to publish. Revealed once. */\n dnsRecordValue: z.string().isEphemeral(),\n});\n\nexport const SsoConfig_VerifyDomainResponseDto = z.strictObject({\n domain: z.string(),\n status: z.enum(DomainVerificationStatus),\n dnsName: z.string(),\n /**\n * Every TXT record found at `dnsName`, so a failed check is diagnosable without a second tool.\n * These are public DNS records of a domain the caller is claiming to own — echoing them discloses\n * nothing the caller could not resolve themselves.\n */\n dnsRecordsFound: z.array(z.string()),\n});\n\nexport const SsoConfig_RevokeDomainResponseDto = z.strictObject({\n domain: z.string(),\n /** True once the domain holds no claim, no status and no nonce in this scope. */\n revoked: z.boolean(),\n});\n\nexport type SsoConfig_ClaimDomainResponse = z.infer<typeof SsoConfig_ClaimDomainResponseDto>;\nexport type SsoConfig_VerifyDomainResponse = z.infer<typeof SsoConfig_VerifyDomainResponseDto>;\nexport type SsoConfig_RevokeDomainResponse = z.infer<typeof SsoConfig_RevokeDomainResponseDto>;\n\n/**\n * The variant type the SSO-config UPDATE runs on — the one named source read by this configuration and\n * by the `socialCredentialOverrides` secret-preservation custom-impl registered on that write.\n *\n * A custom implementation is keyed by `(resource, operation, variantType)`, so the two restating the\n * value by hand is the drift this removes: the dispatch silently stops finding the PREFIX, and every\n * save wipes the per-override `clientSecret` and signedJwt ids. Same shape, and the same reason, as\n * `SIEM_EXPORT_CONFIG_WRITE_VARIANT_TYPE` (#953).\n *\n * `UPDATE` is `API_CALL`: the administrator's edit door. It was `INTERNAL_CALL` — route-less — which\n * made an SSO policy something only a backend service could change, and the comment there said only\n * that no public surface had been BUILT, never that one would be wrong. Three public PUTs already\n * mutate this row (`claimDomain` / `verifyDomain` / `revokeDomain`, #424) under the same roles, and\n * SIEM export config — a scope-level security record holding sealed credentials — has carried this\n * door since #953. Field-level protection is variant-agnostic: `.isWriteOnlySecret()` and\n * `.isBackendOnly()` hold identically on either path.\n *\n * The route-less state was not merely a missing feature. `pickInlineFieldWriteOperation`'s pins record\n * what it cost: with no addressable literal `update`, the frontend's update resolution fell through to\n * whatever custom verb borrowed UPDATE semantics, so every writable field on the SSO settings pane\n * rendered as a live control bound to `claimDomain`.\n */\nexport const SSO_CONFIG_WRITE_VARIANT_TYPE: Readonly<{\n // Exact members, not the enum: a variant is a union DISCRIMINATED by `variantType`, so a value typed\n // as the whole enum matches no member of it.\n [CoreResourceOperation.UPDATE]: ResourceOperationVariantType.API_CALL;\n}> = {\n [CoreResourceOperation.UPDATE]: ResourceOperationVariantType.API_CALL,\n};\n\n// ── Polymorphic Factory ──────────────────────────────────────────────\n\nexport const ssoConfigPolymorphicFactories = createPolymorphicResourceConfigurations(\n ssoConfigPolymorphicDeclaration,\n {\n isSystemResource: true,\n customOperation: SsoConfig_Operations,\n // The auth runtime loads the org SSO config via `readAsSystem` during login,\n // before the user's roles/membership are established (READ). When the row is\n // absent — a provisioned / migrated / pre-seed org that bypassed the\n // `afterCreate` default-seed — that same userless login path lazily\n // materialises the disabled-default row via `createAsSystem` (CREATE); see\n // `AuthOrganizationConfigurationService.loadSSOConfig`. Both are system-context\n // (the logging-in user is not the config's admin owner), so the resource opts\n // BOTH verbs in.\n //\n // `list` is the DOMAIN-EXCLUSIVITY probe and nothing else (#424). At most one scope may hold a\n // domain VERIFIED, or a `@customer.com` sign-in routes non-deterministically to whichever\n // config the lookup happens to reach first. Answering \"does another scope already hold this\n // domain\" is unavoidably a cross-scope read, and the two candidates that avoid this grant are\n // both worse:\n // - `AuthOrganizationConfigurationService.getAllOrganizationIds()` enumerates an IN-MEMORY\n // CACHE of scopes whose config has been loaded, so it under-reports on a cold process. An\n // exclusivity check built on it answers \"nobody else holds it\" from an incomplete\n // population — the negative-result failure that produces a confident wrong answer;\n // - reaching the repository directly bypasses the `systemAccessPolicy` opt-in AND the\n // `SYSTEM_CONTEXT_*` audit event, which is a bigger grant wearing a smaller name.\n systemAccessPolicy: {\n read: ResourceSystemAccessMode.ALLOWED,\n create: ResourceSystemAccessMode.ALLOWED,\n list: ResourceSystemAccessMode.ALLOWED,\n },\n coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST, CoreResourceOperation.CREATE, CoreResourceOperation.UPDATE, CoreResourceOperation.DELETE],\n operationsConfiguration: {\n [CoreResourceOperation.READ]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.LOW,\n }],\n },\n // Internal-only (INTERNAL_CALL, NO HTTP route): the per-scope config row is\n // materialised by the framework default-seed (repository tier) OR — when that\n // was bypassed (provisioned / migrated / pre-seed org) — lazily by the\n // userless login path via `createAsSystem` (`systemAccessPolicy.create` opts\n // it in). Must NOT be REPOSITORY_ONLY: `createAsSystem` resolves CREATE via\n // `getServiceOperationPathDefault`, which honours INTERNAL_CALL / API_CALL but\n // NOT REPOSITORY_ONLY — a repository-only CREATE throws\n // `RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND` (INTERNAL / critical, and\n // self-alerting on mere construction) on every login for a config-less org.\n // No public HTTP create surface (config is seeded/bootstrapped, never\n // self-serve). Same fix as the SCIM-tokens READ/UPDATE. Admin tier / HIGH.\n [CoreResourceOperation.CREATE]: {\n variants: [{\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.HIGH,\n }],\n },\n // Internal-only (INTERNAL_CALL, NO HTTP route): the ONE caller is the domain-exclusivity\n // probe described on `systemAccessPolicy.list` above, reached through\n // `SystemAccessService.listAsSystem`. It must NOT be REPOSITORY_ONLY for the same reason the\n // CREATE and UPDATE below are not: `listAsSystem` resolves the verb through\n // `getServiceOperationPathDefault`, which honours INTERNAL_CALL / API_CALL and rejects\n // REPOSITORY_ONLY. There is deliberately no API_CALL variant — one tenant enumerating every\n // other tenant's SSO policy is the opposite of what this resource is for, and the probe that\n // needs the enumeration answers a single yes/no question and returns no row to a caller.\n //\n // Admin tier / MEDIUM — and MEDIUM rather than HIGH is a correction, not a downgrade. This\n // shipped at HIGH and was the FIRST read-shaped HIGH operation in the catalogue, which broke\n // the measurement `resource-operation-audit-emission.backend.test.ts` calls \"the one the whole\n // design rests on\": `RESOURCE_OPERATION_PERFORMED` is deliberately not emitted for a read, and\n // `FIELD_ACCESS` fires only on a disclosed marked field — so a read declared inside\n // `AUTOMATIC_AUDIT_RISK_FLOOR` promises evidence that CANNOT exist on either axis, and the\n // most dangerous read in the catalogue would be the one leaving no trace.\n //\n // The crossing is nonetheless recorded, on the axis that can carry it: the probe reaches this\n // verb through `SystemAccessService.listAsSystem`, which emits its own `SYSTEM_CONTEXT_*`\n // event — that is precisely why the comment on `systemAccessPolicy.list` above refuses the\n // repository shortcut. So the declaration moves to where the evidence actually is instead of\n // claiming a row nothing writes.\n [CoreResourceOperation.LIST]: {\n variants: [{\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n }],\n },\n // The administrator's edit door, and the only write path for this policy row. Two kinds of\n // caller reach it and both resolve the SAME default: an admin editing the settings pane, over\n // the HTTP route this variant now carries; and a backend caller holding no operation —\n // `AuthOrganizationConfigurationService.saveSSOConfig`, `initiateDomainVerification`,\n // `verifyDomainOwnership` — dispatching via `ServicesRegistryHandler.update` with the ADMIN's\n // EC, preserving admin audit attribution. `getServiceOperationPathDefault` honours API_CALL\n // exactly as it honoured INTERNAL_CALL, so nothing on the service path changes.\n //\n // It WAS `INTERNAL_CALL` — route-less — and the comment here recorded only that no public\n // surface had been built, never an argument that one would be wrong. See\n // `SSO_CONFIG_WRITE_VARIANT_TYPE` for why it moved, and for what the missing route cost the\n // settings pane. An earlier note warned against \"simplifying\" the variant on the theory that\n // nothing called it; that warning was right and is moot — the domain workflow it was holding\n // the door open for exists (`claimDomain` / `verifyDomain` / `revokeDomain` below).\n // Must NOT be REPOSITORY_ONLY: `.update()` resolves the op via\n // `getServiceOperationPathDefault`, which honours INTERNAL_CALL / API_CALL but NOT\n // REPOSITORY_ONLY — a repository-only UPDATE throws\n // `RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND` (INTERNAL / critical) on any admin\n // domain edit (and, post lazy-create fix, `loadSSOConfig` always materialises a row,\n // so `saveSSOConfig` reliably hits THIS update branch). The variant type is read from\n // `SSO_CONFIG_WRITE_VARIANT_TYPE`, which the `socialCredentialOverrides`\n // write-only-secret-preservation custom-impl (`createSsoConfigUpdateFactories`) reads too, so\n // they move together — the custom-impl dispatch key encodes variantType, and a drift on either\n // side silently drops the PREFIX and wipes per-override secrets on every save. Hard-code a\n // variant type here instead and that lockstep is a comment again.\n // Same fix as the CREATE above + the SCIM-tokens READ/UPDATE. Admin tier / HIGH.\n [CoreResourceOperation.UPDATE]: {\n variants: [{\n variantType: SSO_CONFIG_WRITE_VARIANT_TYPE[CoreResourceOperation.UPDATE],\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.HIGH,\n }],\n },\n // Internal-only (REPOSITORY_ONLY, no HTTP route): powers the composition\n // onParentDelete cascade so this one-per-scope SSO-config row is physically\n // removed when its owning org/app is deleted. Without a DELETE op the cascade\n // (deleteChildrenImmediate) throws ErrorType.CONFIGURATION on any scope with a\n // config row. This deletes the whole row; domain mutation is not currently a\n // public operation. Admin tier (ORG_ADMIN / APP super-admin) / HIGH.\n [CoreResourceOperation.DELETE]: {\n variants: [{\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.HIGH,\n }],\n },\n\n /*\n * ─── The three domain-ownership doors (#424) ────────────────────────────────────────────\n *\n * ## Why the tenant's own admin, and NOT a platform operator\n *\n * None of the three declares `admitsCrossTenantPlatformAdministration`, and that is a\n * decision rather than an omission. A platform operator crossing into a tenant is justified\n * when the tenant CANNOT act for itself — `organizationMembers.grantOwnership` repairs a\n * tenant with no owner. Domain ownership is the opposite shape: the party who must prove it\n * is the party who controls the DNS, and the operator controls neither the DNS nor the\n * business relationship. A crossing here would let a platform administrator hand one tenant\n * routing control over every sign-in at a domain, with the tenant's own admins unable to see\n * why. The ambient reach `.claude/rules/administrative-continuity-floors.md` forbids is\n * exactly this.\n *\n * ## Why each is UPDATE-like\n *\n * All three mutate `domains` on the scope's single config row, so they borrow UPDATE and get\n * a PUT that carries a body. The domain travels in the BODY, never in the URL: a domain name\n * is a customer identity, and a GET would write it into every access log between the operator\n * and the server.\n *\n * ## Where the work happens\n *\n * Each is implemented as a PREFIX that returns the new `domains` object, which the core\n * UPDATE persists — the organization-units MOVE/ARCHIVE shape. Deliberately NOT `OVERRIDE_ALL`:\n * that mode returns before the framework's post-operation lane and would therefore emit NO\n * `RESOURCE_OPERATION_PERFORMED` audit event, which is the one control that makes a\n * privileged configuration change with cross-tenant reach accountable. See\n * `sso-config-domain-verification.custom-impl.backend.service.ts`.\n *\n * ## What the trail carries\n *\n * All three sit at or above `AUTOMATIC_AUDIT_RISK_FLOOR`, so no `auditableEvent` declaration\n * is needed. `domains.verifiedDomains`, `domains.ssoEnabledDomains` and\n * `domains.domainVerificationStatus` are `.isAuditEvidence()`, so the row carries the\n * before/after of the claimed set and the status map — i.e. WHICH domain moved, and to what.\n * `domains.domainVerificationTokens` is not marked and must never be: it is the challenge\n * nonce, and the ledger it would land in cannot be scrubbed.\n *\n * assurance-control: WILDO.IDENTITY.SESSION_ASSURANCE — a verified domain decides which\n * identity provider authenticates every principal at that domain.\n * assurance-control: WILDO.AUDIT.EVIDENCE_INTEGRITY — the domain-ownership trail.\n */\n [SsoConfig_Operations.CLAIM_DOMAIN]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n // HIGH, not CRITICAL: a claim grants NOTHING. It records `pending` and mints a nonce, and\n // every routing reader gates on `verified`. The step that confers authority is VERIFY.\n riskLevel: ResourceOperationRiskLevel.HIGH,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: SsoConfig_ClaimDomainRequestDto,\n customResponseDto: SsoConfig_ClaimDomainResponseDto,\n }],\n },\n\n [SsoConfig_Operations.VERIFY_DOMAIN]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n // CRITICAL: this is the transition that hands a tenant SSO routing control over EVERY\n // person who signs in with an address at the domain — including people who are not that\n // tenant's members.\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: SsoConfig_VerifyDomainRequestDto,\n customResponseDto: SsoConfig_VerifyDomainResponseDto,\n }],\n },\n\n [SsoConfig_Operations.REVOKE_DOMAIN]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n // CRITICAL for the same reason as VERIFY, from the other side: revocation is what makes a\n // domain claimable by a different scope, so it is the hinge of every hand-over.\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: SsoConfig_RevokeDomainRequestDto,\n customResponseDto: SsoConfig_RevokeDomainResponseDto,\n }],\n },\n },\n },\n);\n"]}
|
|
1
|
+
{"version":3,"file":"sso-config.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../../../src/security/authentications/sso/sso-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SSO Config Resource Configuration — Polymorphic\n *\n * Produces 2 factory functions (ORG + APP) via the polymorphic factory.\n * Spread into the registry factory map:\n * ...ssoConfigPolymorphicFactories\n */\n\nimport { z } from 'zod';\nimport { CoreResourceOperation, CoreResourceType } from '../../../resources/resources.shared.core.definitions';\nimport {\n ResourceOperationRiskLevel,\n ResourceOperationVariantType,\n} from '../../../resources/resources.shared.schemas';\nimport { createPolymorphicResourceConfigurations } from '../../../resources/utils/resource-polymorphism.factory';\nimport { ResourceSystemAccessMode } from '../../../resources/resources-config.shared.schemas';\nimport { CORE_ORG_ROLES, CORE_APP_ROLES } from '../../authorizations/roles.shared.schemas';\nimport { DomainVerificationStatus, ssoConfigPolymorphicDeclaration } from './sso-config.shared.schemas';\n\n// ── Domain-ownership operations ──────────────────────────────────────\n//\n// Enterprise domain routing sends every `@customer.com` sign-in to that customer's identity\n// provider. Reaching the VERIFIED state used to require an out-of-band database write, which made\n// enterprise onboarding a support ticket forever (#424). These three operations are the door.\n//\n// They are entity-level operations on a resource that is a ONE-to-ONE COMPOSITION under its scope,\n// so the URL builder omits the id segment and the scope in the path selects the row:\n// PUT /organizations/{organizationId}/sso-configs/claim-domain\n// PUT /organizations/{organizationId}/sso-configs/verify-domain\n// PUT /organizations/{organizationId}/sso-configs/revoke-domain\n\nexport enum SsoConfig_Operations {\n CLAIM_DOMAIN = 'claimDomain',\n VERIFY_DOMAIN = 'verifyDomain',\n REVOKE_DOMAIN = 'revokeDomain',\n}\n\n/**\n * A DNS hostname, syntactically. Two labels minimum — a single label is not a domain anyone can\n * publish a TXT record under, and accepting one would mint a challenge that can never be answered.\n *\n * Case is NOT normalised here. The backend lowercases before every read and every write, because\n * that is where the stored map keys are decided; doing it in two places would make the request\n * contract look like the authority when it is not.\n */\nconst SSO_DOMAIN_PATTERN = /^(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\\.(?!-)[A-Za-z0-9-]{1,63}(?<!-))+$/;\n\nconst SsoConfig_DomainSelector = z.string()\n .min(4)\n .max(253)\n .regex(SSO_DOMAIN_PATTERN, 'Provide a DNS hostname with at least two labels, e.g. \"customer.com\".')\n .describe(\"The email domain, as a DNS hostname with at least two labels, such as `customer.com`.\");\n\n/*\n * ── `z.object`, NOT `z.strictObject` — and that is a CONTRACT, not a relaxation ────────────────\n *\n * These three shipped as `strictObject` and every claim answered **400 `unrecognized_keys:\n * [\"domains\"]`**, measured over HTTP on 2026-09-09. The framework MERGES a PREFIX hook's returned\n * patch into the request payload and re-parses the result against THIS schema — so the `domains`\n * block the planner just computed arrived at a schema that knows only `domain`, and a strict schema\n * refuses what it does not recognise. A prefix that contributes a persisted field is therefore\n * structurally incompatible with a strict request DTO; every sibling lifecycle verb in the engine\n * (`organizations.requestDeletion`, `activate`, `restore`) uses `z.object` for exactly this reason.\n *\n * `z.object` STRIPS the unrecognised key instead of refusing it, which on its own would turn the\n * 400 into the quieter defect — 200 having persisted nothing. What closes that half is\n * `authoritativeFields: ['domains']` on each custom-implementation registration, which re-attaches\n * the hook's value after the strip and makes a caller-supplied `domains` be overwritten rather than\n * honoured. The two halves are one decision; neither works alone.\n */\nexport const SsoConfig_ClaimDomainRequestDto = z.object({\n domain: SsoConfig_DomainSelector,\n});\n\nexport const SsoConfig_VerifyDomainRequestDto = z.object({\n domain: SsoConfig_DomainSelector,\n});\n\nexport const SsoConfig_RevokeDomainRequestDto = z.object({\n domain: SsoConfig_DomainSelector,\n});\n\n/**\n * The claim response is the ONLY disclosure of the challenge nonce.\n *\n * `domainVerificationTokens` is `.isBackendOnly()`, so no READ of the config ever returns it — an\n * operator who loses this response claims again, which mints a new nonce and invalidates the old\n * one. `.isEphemeral()` marks `dnsRecordValue` as a revealed-once secret, the same contract the\n * SCIM token mint uses for its one-time plaintext.\n */\nexport const SsoConfig_ClaimDomainResponseDto = z.strictObject({\n domain: z.string().describe(\"The domain that was claimed.\"),\n status: z.enum(DomainVerificationStatus).describe(\"The domain's verification status after the claim: `pending` until the DNS record is checked.\"),\n /** The DNS name the TXT record goes on: `_wildo-verification.<domain>`. */\n dnsName: z.string().describe(\"Where to publish the TXT record: `_wildo-verification.<domain>`.\"),\n /** The exact TXT value to publish. Revealed once. */\n dnsRecordValue: z.string().isEphemeral().describe(\"The exact TXT value to publish, returned only in this response. Claiming the domain again issues a new value and invalidates this one.\"),\n});\n\nexport const SsoConfig_VerifyDomainResponseDto = z.strictObject({\n domain: z.string().describe(\"The domain that was checked.\"),\n status: z.enum(DomainVerificationStatus).describe(\"The result of this check: `verified` when a TXT record at `dnsName` matched the claim's value, otherwise `failed`.\"),\n dnsName: z.string().describe(\"The DNS name that was queried for the TXT record.\"),\n /**\n * Every TXT record found at `dnsName`, so a failed check is diagnosable without a second tool.\n * These are public DNS records of a domain the caller is claiming to own — echoing them discloses\n * nothing the caller could not resolve themselves.\n */\n dnsRecordsFound: z.array(z.string()).describe(\"Every TXT record found at `dnsName`, so a failed check can be diagnosed.\"),\n});\n\nexport const SsoConfig_RevokeDomainResponseDto = z.strictObject({\n domain: z.string().describe(\"The domain whose claim was removed.\"),\n /** True once the domain holds no claim, no status and no nonce in this scope. */\n revoked: z.boolean().describe(\"`true` once the domain holds no claim, verification status or pending value in this scope.\"),\n});\n\nexport type SsoConfig_ClaimDomainResponse = z.infer<typeof SsoConfig_ClaimDomainResponseDto>;\nexport type SsoConfig_VerifyDomainResponse = z.infer<typeof SsoConfig_VerifyDomainResponseDto>;\nexport type SsoConfig_RevokeDomainResponse = z.infer<typeof SsoConfig_RevokeDomainResponseDto>;\n\n/**\n * The variant type the SSO-config UPDATE runs on — the one named source read by this configuration and\n * by the `socialCredentialOverrides` secret-preservation custom-impl registered on that write.\n *\n * A custom implementation is keyed by `(resource, operation, variantType)`, so the two restating the\n * value by hand is the drift this removes: the dispatch silently stops finding the PREFIX, and every\n * save wipes the per-override `clientSecret` and signedJwt ids. Same shape, and the same reason, as\n * `SIEM_EXPORT_CONFIG_WRITE_VARIANT_TYPE` (#953).\n *\n * `UPDATE` is `API_CALL`: the administrator's edit door. It was `INTERNAL_CALL` — route-less — which\n * made an SSO policy something only a backend service could change, and the comment there said only\n * that no public surface had been BUILT, never that one would be wrong. Three public PUTs already\n * mutate this row (`claimDomain` / `verifyDomain` / `revokeDomain`, #424) under the same roles, and\n * SIEM export config — a scope-level security record holding sealed credentials — has carried this\n * door since #953. Field-level protection is variant-agnostic: `.isWriteOnlySecret()` and\n * `.isBackendOnly()` hold identically on either path.\n *\n * The route-less state was not merely a missing feature. `pickInlineFieldWriteOperation`'s pins record\n * what it cost: with no addressable literal `update`, the frontend's update resolution fell through to\n * whatever custom verb borrowed UPDATE semantics, so every writable field on the SSO settings pane\n * rendered as a live control bound to `claimDomain`.\n */\nexport const SSO_CONFIG_WRITE_VARIANT_TYPE: Readonly<{\n // Exact members, not the enum: a variant is a union DISCRIMINATED by `variantType`, so a value typed\n // as the whole enum matches no member of it.\n [CoreResourceOperation.UPDATE]: ResourceOperationVariantType.API_CALL;\n}> = {\n [CoreResourceOperation.UPDATE]: ResourceOperationVariantType.API_CALL,\n};\n\n// ── Polymorphic Factory ──────────────────────────────────────────────\n\nexport const ssoConfigPolymorphicFactories = createPolymorphicResourceConfigurations(\n ssoConfigPolymorphicDeclaration,\n {\n isSystemResource: true,\n customOperation: SsoConfig_Operations,\n // The auth runtime loads the org SSO config via `readAsSystem` during login,\n // before the user's roles/membership are established (READ). When the row is\n // absent — a provisioned / migrated / pre-seed org that bypassed the\n // `afterCreate` default-seed — that same userless login path lazily\n // materialises the disabled-default row via `createAsSystem` (CREATE); see\n // `AuthOrganizationConfigurationService.loadSSOConfig`. Both are system-context\n // (the logging-in user is not the config's admin owner), so the resource opts\n // BOTH verbs in.\n //\n // `list` is the DOMAIN-EXCLUSIVITY probe and nothing else (#424). At most one scope may hold a\n // domain VERIFIED, or a `@customer.com` sign-in routes non-deterministically to whichever\n // config the lookup happens to reach first. Answering \"does another scope already hold this\n // domain\" is unavoidably a cross-scope read, and the two candidates that avoid this grant are\n // both worse:\n // - `AuthOrganizationConfigurationService.getAllOrganizationIds()` enumerates an IN-MEMORY\n // CACHE of scopes whose config has been loaded, so it under-reports on a cold process. An\n // exclusivity check built on it answers \"nobody else holds it\" from an incomplete\n // population — the negative-result failure that produces a confident wrong answer;\n // - reaching the repository directly bypasses the `systemAccessPolicy` opt-in AND the\n // `SYSTEM_CONTEXT_*` audit event, which is a bigger grant wearing a smaller name.\n systemAccessPolicy: {\n read: ResourceSystemAccessMode.ALLOWED,\n create: ResourceSystemAccessMode.ALLOWED,\n list: ResourceSystemAccessMode.ALLOWED,\n },\n coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST, CoreResourceOperation.CREATE, CoreResourceOperation.UPDATE, CoreResourceOperation.DELETE],\n operationsConfiguration: {\n [CoreResourceOperation.READ]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.LOW,\n }],\n },\n // Internal-only (INTERNAL_CALL, NO HTTP route): the per-scope config row is\n // materialised by the framework default-seed (repository tier) OR — when that\n // was bypassed (provisioned / migrated / pre-seed org) — lazily by the\n // userless login path via `createAsSystem` (`systemAccessPolicy.create` opts\n // it in). Must NOT be REPOSITORY_ONLY: `createAsSystem` resolves CREATE via\n // `getServiceOperationPathDefault`, which honours INTERNAL_CALL / API_CALL but\n // NOT REPOSITORY_ONLY — a repository-only CREATE throws\n // `RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND` (INTERNAL / critical, and\n // self-alerting on mere construction) on every login for a config-less org.\n // No public HTTP create surface (config is seeded/bootstrapped, never\n // self-serve). Same fix as the SCIM-tokens READ/UPDATE. Admin tier / HIGH.\n [CoreResourceOperation.CREATE]: {\n variants: [{\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.HIGH,\n }],\n },\n // Internal-only (INTERNAL_CALL, NO HTTP route): the ONE caller is the domain-exclusivity\n // probe described on `systemAccessPolicy.list` above, reached through\n // `SystemAccessService.listAsSystem`. It must NOT be REPOSITORY_ONLY for the same reason the\n // CREATE and UPDATE below are not: `listAsSystem` resolves the verb through\n // `getServiceOperationPathDefault`, which honours INTERNAL_CALL / API_CALL and rejects\n // REPOSITORY_ONLY. There is deliberately no API_CALL variant — one tenant enumerating every\n // other tenant's SSO policy is the opposite of what this resource is for, and the probe that\n // needs the enumeration answers a single yes/no question and returns no row to a caller.\n //\n // Admin tier / MEDIUM — and MEDIUM rather than HIGH is a correction, not a downgrade. This\n // shipped at HIGH and was the FIRST read-shaped HIGH operation in the catalogue, which broke\n // the measurement `resource-operation-audit-emission.backend.test.ts` calls \"the one the whole\n // design rests on\": `RESOURCE_OPERATION_PERFORMED` is deliberately not emitted for a read, and\n // `FIELD_ACCESS` fires only on a disclosed marked field — so a read declared inside\n // `AUTOMATIC_AUDIT_RISK_FLOOR` promises evidence that CANNOT exist on either axis, and the\n // most dangerous read in the catalogue would be the one leaving no trace.\n //\n // The crossing is nonetheless recorded, on the axis that can carry it: the probe reaches this\n // verb through `SystemAccessService.listAsSystem`, which emits its own `SYSTEM_CONTEXT_*`\n // event — that is precisely why the comment on `systemAccessPolicy.list` above refuses the\n // repository shortcut. So the declaration moves to where the evidence actually is instead of\n // claiming a row nothing writes.\n [CoreResourceOperation.LIST]: {\n variants: [{\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n }],\n },\n // The administrator's edit door, and the only write path for this policy row. Two kinds of\n // caller reach it and both resolve the SAME default: an admin editing the settings pane, over\n // the HTTP route this variant now carries; and a backend caller holding no operation —\n // `AuthOrganizationConfigurationService.saveSSOConfig`, `initiateDomainVerification`,\n // `verifyDomainOwnership` — dispatching via `ServicesRegistryHandler.update` with the ADMIN's\n // EC, preserving admin audit attribution. `getServiceOperationPathDefault` honours API_CALL\n // exactly as it honoured INTERNAL_CALL, so nothing on the service path changes.\n //\n // It WAS `INTERNAL_CALL` — route-less — and the comment here recorded only that no public\n // surface had been built, never an argument that one would be wrong. See\n // `SSO_CONFIG_WRITE_VARIANT_TYPE` for why it moved, and for what the missing route cost the\n // settings pane. An earlier note warned against \"simplifying\" the variant on the theory that\n // nothing called it; that warning was right and is moot — the domain workflow it was holding\n // the door open for exists (`claimDomain` / `verifyDomain` / `revokeDomain` below).\n // Must NOT be REPOSITORY_ONLY: `.update()` resolves the op via\n // `getServiceOperationPathDefault`, which honours INTERNAL_CALL / API_CALL but NOT\n // REPOSITORY_ONLY — a repository-only UPDATE throws\n // `RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND` (INTERNAL / critical) on any admin\n // domain edit (and, post lazy-create fix, `loadSSOConfig` always materialises a row,\n // so `saveSSOConfig` reliably hits THIS update branch). The variant type is read from\n // `SSO_CONFIG_WRITE_VARIANT_TYPE`, which the `socialCredentialOverrides`\n // write-only-secret-preservation custom-impl (`createSsoConfigUpdateFactories`) reads too, so\n // they move together — the custom-impl dispatch key encodes variantType, and a drift on either\n // side silently drops the PREFIX and wipes per-override secrets on every save. Hard-code a\n // variant type here instead and that lockstep is a comment again.\n // Same fix as the CREATE above + the SCIM-tokens READ/UPDATE. Admin tier / HIGH.\n [CoreResourceOperation.UPDATE]: {\n variants: [{\n variantType: SSO_CONFIG_WRITE_VARIANT_TYPE[CoreResourceOperation.UPDATE],\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.HIGH,\n }],\n },\n // Internal-only (REPOSITORY_ONLY, no HTTP route): powers the composition\n // onParentDelete cascade so this one-per-scope SSO-config row is physically\n // removed when its owning org/app is deleted. Without a DELETE op the cascade\n // (deleteChildrenImmediate) throws ErrorType.CONFIGURATION on any scope with a\n // config row. This deletes the whole row; domain mutation is not currently a\n // public operation. Admin tier (ORG_ADMIN / APP super-admin) / HIGH.\n [CoreResourceOperation.DELETE]: {\n variants: [{\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n riskLevel: ResourceOperationRiskLevel.HIGH,\n }],\n },\n\n /*\n * ─── The three domain-ownership doors (#424) ────────────────────────────────────────────\n *\n * ## Why the tenant's own admin, and NOT a platform operator\n *\n * None of the three declares `admitsCrossTenantPlatformAdministration`, and that is a\n * decision rather than an omission. A platform operator crossing into a tenant is justified\n * when the tenant CANNOT act for itself — `organizationMembers.grantOwnership` repairs a\n * tenant with no owner. Domain ownership is the opposite shape: the party who must prove it\n * is the party who controls the DNS, and the operator controls neither the DNS nor the\n * business relationship. A crossing here would let a platform administrator hand one tenant\n * routing control over every sign-in at a domain, with the tenant's own admins unable to see\n * why. The ambient reach `.claude/rules/administrative-continuity-floors.md` forbids is\n * exactly this.\n *\n * ## Why each is UPDATE-like\n *\n * All three mutate `domains` on the scope's single config row, so they borrow UPDATE and get\n * a PUT that carries a body. The domain travels in the BODY, never in the URL: a domain name\n * is a customer identity, and a GET would write it into every access log between the operator\n * and the server.\n *\n * ## Where the work happens\n *\n * Each is implemented as a PREFIX that returns the new `domains` object, which the core\n * UPDATE persists — the organization-units MOVE/ARCHIVE shape. Deliberately NOT `OVERRIDE_ALL`:\n * that mode returns before the framework's post-operation lane and would therefore emit NO\n * `RESOURCE_OPERATION_PERFORMED` audit event, which is the one control that makes a\n * privileged configuration change with cross-tenant reach accountable. See\n * `sso-config-domain-verification.custom-impl.backend.service.ts`.\n *\n * ## What the trail carries\n *\n * All three sit at or above `AUTOMATIC_AUDIT_RISK_FLOOR`, so no `auditableEvent` declaration\n * is needed. `domains.verifiedDomains`, `domains.ssoEnabledDomains` and\n * `domains.domainVerificationStatus` are `.isAuditEvidence()`, so the row carries the\n * before/after of the claimed set and the status map — i.e. WHICH domain moved, and to what.\n * `domains.domainVerificationTokens` is not marked and must never be: it is the challenge\n * nonce, and the ledger it would land in cannot be scrubbed.\n *\n * assurance-control: WILDO.IDENTITY.SESSION_ASSURANCE — a verified domain decides which\n * identity provider authenticates every principal at that domain.\n * assurance-control: WILDO.AUDIT.EVIDENCE_INTEGRITY — the domain-ownership trail.\n */\n [SsoConfig_Operations.CLAIM_DOMAIN]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n // HIGH, not CRITICAL: a claim grants NOTHING. It records `pending` and mints a nonce, and\n // every routing reader gates on `verified`. The step that confers authority is VERIFY.\n riskLevel: ResourceOperationRiskLevel.HIGH,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: SsoConfig_ClaimDomainRequestDto,\n customResponseDto: SsoConfig_ClaimDomainResponseDto,\n }],\n },\n\n [SsoConfig_Operations.VERIFY_DOMAIN]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n // CRITICAL: this is the transition that hands a tenant SSO routing control over EVERY\n // person who signs in with an address at the domain — including people who are not that\n // tenant's members.\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: SsoConfig_VerifyDomainRequestDto,\n customResponseDto: SsoConfig_VerifyDomainResponseDto,\n }],\n },\n\n [SsoConfig_Operations.REVOKE_DOMAIN]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n polymorphicRole: {\n [CoreResourceType.ORGANIZATIONS]: [CORE_ORG_ROLES.ORG_ADMIN, CORE_ORG_ROLES.ORG_DELEGATED_MANAGE_SSO_SCIM],\n [CoreResourceType.APPLICATION]: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n },\n // CRITICAL for the same reason as VERIFY, from the other side: revocation is what makes a\n // domain claimable by a different scope, so it is the hinge of every hand-over.\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: SsoConfig_RevokeDomainRequestDto,\n customResponseDto: SsoConfig_RevokeDomainResponseDto,\n }],\n },\n },\n },\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-config.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/sso/sso-config.shared.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB;;;;;CAK3B,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sso-config.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/sso/sso-config.shared.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB;;;;;CAK3B,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiT9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtE,GAAG,SAAS,GAAG,MAAM,EAAE,CAKvB;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IACP,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtE,GAAG,SAAS,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAGT;AAED,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAM1C,CAAC"}
|
|
@@ -53,10 +53,10 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
53
53
|
// accounts and exclude THAT from policies. The reading that a role is the wrong unit is this
|
|
54
54
|
// repository's, not a quotation.
|
|
55
55
|
enforcement: z.object({
|
|
56
|
-
requireSSO: z.boolean().default(false).isSummaryField(),
|
|
57
|
-
allowPasswordFallback: z.boolean().default(true),
|
|
58
|
-
graceLoginAttempts: z.number().min(0).max(10).default(3),
|
|
59
|
-
}).isSummaryField().isAuditEvidence(),
|
|
56
|
+
requireSSO: z.boolean().default(false).isSummaryField().describe("Whether members whose email domain is SSO-enabled must sign in through single sign-on."),
|
|
57
|
+
allowPasswordFallback: z.boolean().default(true).describe("While SSO is required, whether a password sign-in is still accepted within the grace allowance. `false` refuses every password sign-in except a break-glass account's."),
|
|
58
|
+
graceLoginAttempts: z.number().min(0).max(10).default(3).describe("How many password sign-ins each member may still make after SSO becomes required, from 0 to 10. 0 allows none."),
|
|
59
|
+
}).isSummaryField().isAuditEvidence().describe("Whether and how strictly single sign-on is required."),
|
|
60
60
|
// NOT marked, deliberately: this block carries `domainVerificationTokens`, which is
|
|
61
61
|
// `.isBackendOnly()` — a SECRET. `.isAuditEvidence()` on a parent object records the WHOLE object
|
|
62
62
|
// before/after, so marking `domains` would copy live verification tokens into audit rows that
|
|
@@ -84,8 +84,8 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
84
84
|
* is a schema change plus a data migration for a field whose every reader now goes through the
|
|
85
85
|
* helper. The name is no longer what a new reader reaches.
|
|
86
86
|
*/
|
|
87
|
-
verifiedDomains: z.array(z.string()).default([]).isAuditEvidence(),
|
|
88
|
-
ssoEnabledDomains: z.array(z.string()).default([]).isAuditEvidence(),
|
|
87
|
+
verifiedDomains: z.array(z.string()).default([]).isAuditEvidence().describe("Every domain this scope has claimed, verified or not. Whether a domain is verified is `domainVerificationStatus`, not membership of this list."),
|
|
88
|
+
ssoEnabledDomains: z.array(z.string()).default([]).isAuditEvidence().describe("The verified domains whose members are routed to this scope's identity provider at sign-in."),
|
|
89
89
|
/*
|
|
90
90
|
* `domainHinting` and `allowExternalDomains` were REMOVED here, and both were read by nothing.
|
|
91
91
|
*
|
|
@@ -113,7 +113,7 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
113
113
|
* distinguish "a tenant claimed a domain" from "a tenant gained SSO routing control over every
|
|
114
114
|
* address at it".
|
|
115
115
|
*/
|
|
116
|
-
domainVerificationStatus: z.record(z.string(), z.enum(DomainVerificationStatus)).default({}).isAuditEvidence(),
|
|
116
|
+
domainVerificationStatus: z.record(z.string(), z.enum(DomainVerificationStatus)).default({}).isAuditEvidence().describe("The verification status of each claimed domain, keyed by domain."),
|
|
117
117
|
/**
|
|
118
118
|
* The DNS-TXT challenge nonce per claimed domain. `.isBackendOnly()` — never leaves the backend
|
|
119
119
|
* through a resource READ, and never enters the audit trail (see the block comment above).
|
|
@@ -122,8 +122,9 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
122
122
|
* as an `.isEphemeral()` field, because the operator cannot publish a record they cannot see.
|
|
123
123
|
* A lost token is recovered by claiming again, which mints a new one — there is no re-read.
|
|
124
124
|
*/
|
|
125
|
-
domainVerificationTokens: z.record(z.string(), z.string()).default({}).isBackendOnly()
|
|
126
|
-
|
|
125
|
+
domainVerificationTokens: z.record(z.string(), z.string()).default({}).isBackendOnly()
|
|
126
|
+
.describe('The DNS TXT challenge value for each claimed domain, keyed by domain. Never returned by a read: the value is shown once, in the claim response, and claiming again issues a new one. An update keeps the stored values whatever it sends.'),
|
|
127
|
+
}).describe("The domains this scope has claimed and verified, and which of them use single sign-on. Changed only by the claim, verify and revoke domain operations: an update may repeat it unchanged, and any other change is refused."),
|
|
127
128
|
/*
|
|
128
129
|
* `provisioning` was REMOVED here, and the reason is that it decided NOTHING.
|
|
129
130
|
*
|
|
@@ -136,7 +137,7 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
136
137
|
* ## What actually decides, and why there are two of them rather than three
|
|
137
138
|
*
|
|
138
139
|
* Just-in-time provisioning on an INTERACTIVE sign-in reads the CONNECTION, not this row:
|
|
139
|
-
* `SsoConnectionSchema.{autoCreateUsers,
|
|
140
|
+
* `SsoConnectionSchema.{autoCreateUsers, defaultRole, roleMapping, groupMapping}`,
|
|
140
141
|
* assembled once per connection by `oauth2-connection-resolver` and `saml-authentication` and
|
|
141
142
|
* carried into `provisionEnterpriseUser`. Per connection is the right grain — two IdPs bound to
|
|
142
143
|
* one tenant may legitimately differ.
|
|
@@ -184,8 +185,8 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
184
185
|
* an operator could set two different limits and neither the lower nor the later would win.
|
|
185
186
|
*/
|
|
186
187
|
sessionSettings: z.object({
|
|
187
|
-
singleLogoutEnabled: z.boolean().default(true),
|
|
188
|
-
}).isAuditEvidence(),
|
|
188
|
+
singleLogoutEnabled: z.boolean().default(true).describe("Whether signing out through the identity provider also ends the session here, and the reverse. `false` withholds the logout endpoint from the service-provider metadata."),
|
|
189
|
+
}).isAuditEvidence().describe("Session behaviour for single sign-on."),
|
|
189
190
|
/*
|
|
190
191
|
* `auditConfig` was REMOVED here — all five fields, and the assurance marker that stood over them.
|
|
191
192
|
*
|
|
@@ -249,7 +250,7 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
249
250
|
*/
|
|
250
251
|
emergencyAccess: z.object({
|
|
251
252
|
/** Off switch. `true` with an empty list grants nothing — the list is what confers the bypass. */
|
|
252
|
-
enabled: z.boolean().default(true),
|
|
253
|
+
enabled: z.boolean().default(true).describe("Whether the break-glass accounts may use their bypass. Enabled with an empty list grants nothing."),
|
|
253
254
|
/**
|
|
254
255
|
* The email addresses that may bypass SSO enforcement. An authority LIST: adding an entry grants
|
|
255
256
|
* a standing password path into a tenant that has otherwise required SSO.
|
|
@@ -258,13 +259,13 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
258
259
|
* stored apart from any individual, and a validation drill every 90 days; none of that is
|
|
259
260
|
* enforceable from here, and all of it is what makes this list safe to have.
|
|
260
261
|
*/
|
|
261
|
-
breakGlassAccounts: z.array(z.email()).default([]),
|
|
262
|
-
}).isAuditEvidence(),
|
|
262
|
+
breakGlassAccounts: z.array(z.email()).default([]).describe("The email addresses that may still sign in with a password when SSO is required, for when the identity provider cannot be reached. Each one is a standing way in with a password alone, so keep the list short and review it; every use is audited at critical severity."),
|
|
263
|
+
}).isAuditEvidence().describe("Break-glass: named accounts exempt from the SSO requirement."),
|
|
263
264
|
oauth2ProviderRestrictions: z.object({
|
|
264
|
-
allowedProviders: z.array(z.string()).default([]),
|
|
265
|
-
blockedProviders: z.array(z.string()).default([]),
|
|
266
|
-
requireEnterpriseSSOOnly: z.boolean().default(false),
|
|
267
|
-
}).isAuditEvidence(),
|
|
265
|
+
allowedProviders: z.array(z.string()).default([]).describe("When not empty, the only social sign-in providers members may use."),
|
|
266
|
+
blockedProviders: z.array(z.string()).default([]).describe("Social sign-in providers members may not use. This wins over `allowedProviders`."),
|
|
267
|
+
requireEnterpriseSSOOnly: z.boolean().default(false).describe("Whether every social sign-in provider is refused, leaving only enterprise single sign-on."),
|
|
268
|
+
}).isAuditEvidence().describe("Which social sign-in providers (Google, GitHub and so on) this scope's members may use."),
|
|
268
269
|
/**
|
|
269
270
|
* Per-scope social provider credential overrides (P3).
|
|
270
271
|
*
|
|
@@ -299,12 +300,14 @@ export const SsoConfigBaseSchema = z.object({
|
|
|
299
300
|
* @see sso-config.custom-impl — prefixCoreOperations UPDATE handler
|
|
300
301
|
*/
|
|
301
302
|
socialCredentialOverrides: z.array(z.object({
|
|
302
|
-
providerRef: z.string().min(1),
|
|
303
|
-
clientId: z.string().min(1),
|
|
304
|
-
clientSecret: z.string().min(1).isWriteOnlySecret(),
|
|
305
|
-
signedJwtKeyId: z.string().optional().isBackendOnly()
|
|
306
|
-
|
|
307
|
-
|
|
303
|
+
providerRef: z.string().min(1).describe("The social provider these credentials are for. Each provider may appear once."),
|
|
304
|
+
clientId: z.string().min(1).describe("The client id of this scope's own app registered at the provider."),
|
|
305
|
+
clientSecret: z.string().min(1).isWriteOnlySecret().describe("The client secret of that app. Write-only: reads return a mask, and sending the mask back keeps the stored value."),
|
|
306
|
+
signedJwtKeyId: z.string().optional().isBackendOnly()
|
|
307
|
+
.describe('For a provider whose client secret is a signed JWT, such as Sign in with Apple: the id of the private key that signs it. Write-only: never returned by a read, and kept when an update omits it. Absent: the application\'s own value is used.'),
|
|
308
|
+
signedJwtTeamId: z.string().optional().isBackendOnly()
|
|
309
|
+
.describe('For a provider whose client secret is a signed JWT, such as Sign in with Apple: the developer team id that owns the signing key. Write-only: never returned by a read, and kept when an update omits it. Absent: the application\'s own value is used.'),
|
|
310
|
+
})).default([]).refine((arr) => new Set(arr.map(o => o.providerRef)).size === arr.length, { message: 'Duplicate providerRef in socialCredentialOverrides' }).describe("This scope's own OAuth app credentials for social providers, replacing the application's. Endpoints, scopes and profile mapping still come from the provider."),
|
|
308
311
|
createdAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),
|
|
309
312
|
updatedAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),
|
|
310
313
|
});
|