@wildo-ai/saas-models 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/applications/applications-context.schemas.d.ts +16 -10
- package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.js +4 -3
- package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts +1 -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 +36 -0
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/billing-account.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-account.shared.schemas.js +8 -1
- package/dist/esm/billing/billing-account.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts +0 -4
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.js +59 -17
- package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts +77 -21
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.js +85 -23
- package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.d.ts +5 -5
- package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts +1 -1
- 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 +39 -0
- package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/credit-pool.shared.schemas.d.ts +6 -6
- package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/credit-pool.shared.schemas.js +8 -4
- package/dist/esm/billing/credit-pool.shared.schemas.js.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js +35 -0
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.schemas.js +8 -3
- 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 +7 -1
- package/dist/esm/billing/price.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product-behavior-policy.shared.schemas.js +52 -11
- package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-definition.shared.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product.shared.schemas.js +7 -3
- package/dist/esm/billing/product.shared.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +2 -2
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js +54 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.schemas.d.ts +4 -4
- package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.schemas.js +6 -2
- package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
- package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/usage-record.shared.resources-config.schemas.js +39 -0
- package/dist/esm/billing/usage-record.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.d.ts +11 -7
- package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.js +29 -6
- package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +69 -2
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js +20 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +85 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +157 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js +35 -2
- 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 +23 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js +56 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +541 -20
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +605 -23
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +96 -3
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts +49 -0
- package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js +124 -1
- package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts +11 -3
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js +11 -3
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +94 -0
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +211 -0
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -0
- package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts +67 -12
- 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 +95 -8
- package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +17 -0
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js +27 -4
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +89 -16
- package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/redaction.shared.schemas.js +101 -15
- package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.js +12 -5
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +21 -0
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/analytics-value-moments.shared.schemas.js +20 -0
- package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +9 -5
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.js +29 -0
- package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +8 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.js +29 -0
- package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +95 -17
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.js +86 -8
- package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
- package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +12 -12
- package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +33 -0
- package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/frontend/navigation.shared.schemas.js +32 -0
- package/dist/esm/config/frontend/navigation.shared.schemas.js.map +1 -1
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +40 -1
- 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 +40 -1
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +57 -11
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +109 -64
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +200 -19
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts +15 -3
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +32 -7
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +84 -7
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts +59 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +61 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts +97 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js +41 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -0
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +148 -2
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js +56 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +9 -31
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.js +8 -5
- package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts +18 -8
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js +9 -4
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +338 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +332 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +178 -9
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js +181 -9
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts +7 -5
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js +7 -5
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts +40 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.js +80 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -0
- package/dist/esm/features/core-feature-definitions.shared.d.ts.map +1 -1
- package/dist/esm/features/core-feature-definitions.shared.js +7 -1
- package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
- package/dist/esm/features/feature-builders.shared.d.ts +32 -0
- package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
- package/dist/esm/features/feature-builders.shared.js +32 -0
- package/dist/esm/features/feature-builders.shared.js.map +1 -1
- package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/features/user-features.shared.resources-config.schemas.js +48 -0
- package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +156 -0
- package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -0
- package/dist/esm/files/file-upload-grant.shared.schemas.js +175 -0
- package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -0
- package/dist/esm/files/files.shared.schemas.d.ts +52 -4
- package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/files.shared.schemas.js +55 -4
- package/dist/esm/files/files.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js +33 -0
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js +6 -2
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js +53 -0
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts +54 -5
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts +6 -6
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +0 -3
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/deliberation.shared.schemas.js +0 -5
- package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js +43 -0
- package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +14 -0
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +48 -6
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js +41 -0
- package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts +0 -7
- package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js +23 -13
- package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +19 -0
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js +33 -0
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts +14 -9
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js +14 -9
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts +128 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +142 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -3
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +1 -4
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts +0 -16
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js +1 -17
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts +3 -3
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js +3 -3
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +2 -8
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +4 -15
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.js +51 -0
- package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.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 +8 -2
- package/dist/esm/guidance/guidance-state.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.utils.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.utils.js +1 -0
- package/dist/esm/guidance/guidance-state.shared.utils.js.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js +51 -0
- package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.schemas.js +28 -3
- package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +9 -1
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js +51 -0
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts +46 -0
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.js +67 -4
- package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +356 -52
- 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 +166 -39
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +11 -2
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/email/email-template.shared.enums.d.ts +15 -0
- package/dist/esm/notifications/email/email-template.shared.enums.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-template.shared.enums.js +15 -0
- package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts +70 -0
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -0
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js +71 -0
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js.map +1 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js +19 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts +30 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js +65 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.d.ts +6 -4
- package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.js +6 -4
- package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.d.ts +167 -5
- package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.js +191 -6
- package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js +36 -0
- package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.d.ts +107 -0
- package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.js +149 -1
- package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js +44 -0
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-members.shared.schemas.js +15 -4
- package/dist/esm/organizations/organization-members.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.js +22 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +26 -0
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.js +25 -0
- package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +25 -0
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.js +42 -17
- package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +3 -2
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.js +9 -2
- package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +35 -12
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/public-runtime/index.d.ts +49 -2
- package/dist/esm/public-runtime/index.d.ts.map +1 -1
- package/dist/esm/public-runtime/index.js +48 -1
- package/dist/esm/public-runtime/index.js.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +6 -5
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js +23 -5
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.d.ts +16 -3
- package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.js +16 -3
- package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts +137 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.js +1201 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts +67 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.js +78 -0
- package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.d.ts +11 -1
- package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.js +11 -1
- package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.d.ts +86 -4
- package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.js +138 -0
- package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
- package/dist/esm/resources/collection-query-parameters.shared.d.ts +22 -0
- package/dist/esm/resources/collection-query-parameters.shared.d.ts.map +1 -0
- package/dist/esm/resources/collection-query-parameters.shared.js +22 -0
- package/dist/esm/resources/collection-query-parameters.shared.js.map +1 -0
- package/dist/esm/resources/resources-config.shared.factory.d.ts +1 -0
- package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.js +189 -31
- package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.d.ts +395 -92
- package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.js +109 -20
- package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
- package/dist/esm/resources/resources-registry.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources-registry.shared.core.definitions.js +97 -5
- package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources-relationships.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-relationships.shared.factory.js +15 -0
- package/dist/esm/resources/resources-relationships.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.d.ts +37 -0
- package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.js +51 -0
- package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.d.ts +11 -2
- package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.js +34 -3
- package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
- package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts +51 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.js +53 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -0
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js +21 -6
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.map +1 -1
- package/dist/esm/resources/utils/resources-summary.utils.d.ts +16 -2
- package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-summary.utils.js +19 -5
- package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js +11 -0
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
- package/dist/esm/runtime/domain-module.shared.definitions.d.ts +25 -0
- package/dist/esm/runtime/domain-module.shared.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.shared.definitions.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js +38 -0
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js +38 -0
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +4 -11
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +0 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +141 -5
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.js +147 -3
- package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts +17 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.js +16 -0
- package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts +28 -0
- package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts.map +1 -0
- package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js +28 -0
- package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js.map +1 -0
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js +11 -0
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +15 -0
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +21 -4
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts +21 -0
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -0
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js +21 -0
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -0
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +61 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +208 -6
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts +37 -27
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +134 -12
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +0 -6
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js +17 -8
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +70 -0
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +45 -8
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +56 -10
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +16 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.js +16 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.utils.d.ts +54 -0
- package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.utils.js +59 -0
- package/dist/esm/security/authorizations/roles.shared.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +31 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js +198 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +31 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +191 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +250 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +486 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -0
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +4 -1
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +29 -0
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts +4 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +29 -0
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +67 -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 +44 -1
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js +35 -0
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts +13 -0
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +31 -4
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts +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 +34 -0
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.schemas.js +7 -4
- package/dist/esm/users/inbound-contacts.shared.schemas.js.map +1 -1
- package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-credentials.shared.resources-config.schemas.js +37 -0
- package/dist/esm/users/user-credentials.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-credentials.shared.schemas.js +17 -2
- package/dist/esm/users/user-credentials.shared.schemas.js.map +1 -1
- package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js +36 -0
- package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-identity-links.shared.schemas.js +15 -5
- package/dist/esm/users/user-identity-links.shared.schemas.js.map +1 -1
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +5 -5
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.js +53 -0
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.js +62 -0
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +5 -5
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js +53 -0
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js +62 -0
- package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self.shared.resources-config.schemas.js +33 -3
- package/dist/esm/users/user-self.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.d.ts +17 -1
- package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.js +136 -5
- package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.schemas.d.ts +62 -12
- package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.schemas.js +79 -23
- package/dist/esm/users/users.shared.schemas.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -6
- package/dist/esm/.builder.pid +0 -9
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { WildoHeaderKeys } from '../../requests/header-keys.shared.js';
|
|
2
|
+
import { APPLICATION_JWT_ISSUER } from '../../security/authentications/authentication.shared.schemas.js';
|
|
3
|
+
/**
|
|
4
|
+
* The outbound-webhook wire contract a RECEIVER can rely on.
|
|
5
|
+
*
|
|
6
|
+
* This is the single source for every number and name an integrator sees in the
|
|
7
|
+
* application's customer documentation: the retry ladder, the per-attempt
|
|
8
|
+
* timeout, the signature header, the JWT claim names and the body-hash
|
|
9
|
+
* algorithm. The delivery worker (`m2m-webhook-delivery.batch.utils.ts` in the
|
|
10
|
+
* backend library) derives its tunables from here, and the consumer-fact
|
|
11
|
+
* catalog projects the same object into the technical documentation, so a
|
|
12
|
+
* change to the worker's behaviour cannot leave the published contract behind.
|
|
13
|
+
*
|
|
14
|
+
* Nothing here is a runtime knob. A generated application does not configure
|
|
15
|
+
* these values; they describe what every application delivers.
|
|
16
|
+
*/
|
|
17
|
+
export const M2M_WEBHOOK_DELIVERY_CONTRACT = {
|
|
18
|
+
/** Total POST attempts per delivery before it is marked terminally failed. */
|
|
19
|
+
maxAttempts: 5,
|
|
20
|
+
/**
|
|
21
|
+
* Delay before each RETRY, indexed by retry number (the first retry waits
|
|
22
|
+
* `backoffScheduleSeconds[0]`). With `maxAttempts` = 5 there are four retries,
|
|
23
|
+
* so the ladder is 1 minute, 5 minutes, 30 minutes and 2 hours.
|
|
24
|
+
*/
|
|
25
|
+
backoffScheduleSeconds: [60, 300, 1800, 7200],
|
|
26
|
+
/** Hard timeout applied to every outbound POST attempt. */
|
|
27
|
+
requestTimeoutMs: 30_000,
|
|
28
|
+
/** The receiver's response body is recorded on the delivery row up to this many bytes. */
|
|
29
|
+
responseBodyTruncationBytes: 4 * 1024,
|
|
30
|
+
/** `User-Agent` sent on every outbound webhook POST. */
|
|
31
|
+
userAgent: 'Wildo-Webhook/1',
|
|
32
|
+
/** Request header carrying the signature JWT. */
|
|
33
|
+
signatureHeader: WildoHeaderKeys.X_WEBHOOK_SIGNATURE,
|
|
34
|
+
/** JWS algorithm the signature JWT is signed with. Receivers must pin it. */
|
|
35
|
+
signatureAlgorithm: 'ES256',
|
|
36
|
+
/**
|
|
37
|
+
* Registered-claim values every signature JWT carries. The backend's signing options for the
|
|
38
|
+
* webhook key are derived from this block, so a receiver that pins these values pins what the
|
|
39
|
+
* worker actually signs. `expiresIn` outlives the longest scheduled retry (2 hours) by a wide
|
|
40
|
+
* margin while keeping the replay window short.
|
|
41
|
+
*
|
|
42
|
+
* The JWT header's `kid` is deliberately NOT here: the signer sets it to the RFC 7638 thumbprint
|
|
43
|
+
* of the signing public key, which differs per deployment and changes on rotation. A receiver
|
|
44
|
+
* must not pin a fixed `kid`; it verifies against `applicationPublicKeyPem` from the webhook
|
|
45
|
+
* configuration and may use `kid` only to notice that the key changed.
|
|
46
|
+
*/
|
|
47
|
+
signature: {
|
|
48
|
+
issuer: APPLICATION_JWT_ISSUER,
|
|
49
|
+
audience: 'WEBHOOK',
|
|
50
|
+
expiresIn: '6h',
|
|
51
|
+
},
|
|
52
|
+
/** Algorithm of the `bodyHash` claim: a hex digest of the exact raw request bytes. */
|
|
53
|
+
bodyHashAlgorithm: 'sha256',
|
|
54
|
+
/** Status codes (besides 5xx and transport failures) that schedule another attempt. */
|
|
55
|
+
retryableHttpStatuses: [408, 429],
|
|
56
|
+
/**
|
|
57
|
+
* Names of the claims a receiver reads from the signature JWT. `jti` is the
|
|
58
|
+
* deduplication key and stays identical across every retry of one delivery;
|
|
59
|
+
* the registered claims (`iss`, `aud`, `iat`, `exp`) and the header `kid` are refreshed
|
|
60
|
+
* per attempt.
|
|
61
|
+
*/
|
|
62
|
+
signatureClaims: {
|
|
63
|
+
deliveryId: 'jti',
|
|
64
|
+
bodyHash: 'bodyHash',
|
|
65
|
+
bodyHashAlgorithm: 'bodyHashAlg',
|
|
66
|
+
eventChannel: 'eventChannel',
|
|
67
|
+
resourceIdentifier: 'resourceIdentifier',
|
|
68
|
+
operationIdentifier: 'operationIdentifier',
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=m2m-webhook-delivery-contract.shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"m2m-webhook-delivery-contract.shared.js","sourceRoot":"","sources":["../../../../../src/notifications/m2m/m2m-webhook-delivery-contract.shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AAEtG;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,8EAA8E;IAC9E,WAAW,EAAE,CAAC;IACd;;;;OAIG;IACH,sBAAsB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IAC7C,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM;IACxB,0FAA0F;IAC1F,2BAA2B,EAAE,CAAC,GAAG,IAAI;IACrC,wDAAwD;IACxD,SAAS,EAAE,iBAAiB;IAC5B,iDAAiD;IACjD,eAAe,EAAE,eAAe,CAAC,mBAAmB;IACpD,6EAA6E;IAC7E,kBAAkB,EAAE,OAAO;IAC3B;;;;;;;;;;OAUG;IACH,SAAS,EAAE;QACT,MAAM,EAAE,sBAAsB;QAC9B,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,IAAI;KAChB;IACD,sFAAsF;IACtF,iBAAiB,EAAE,QAAQ;IAC3B,uFAAuF;IACvF,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACjC;;;;;OAKG;IACH,eAAe,EAAE;QACf,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,UAAU;QACpB,iBAAiB,EAAE,aAAa;QAChC,YAAY,EAAE,cAAc;QAC5B,kBAAkB,EAAE,oBAAoB;QACxC,mBAAmB,EAAE,qBAAqB;KAC3C;CACO,CAAC","sourcesContent":["import { WildoHeaderKeys } from '../../requests/header-keys.shared';\nimport { APPLICATION_JWT_ISSUER } from '../../security/authentications/authentication.shared.schemas';\n\n/**\n * The outbound-webhook wire contract a RECEIVER can rely on.\n *\n * This is the single source for every number and name an integrator sees in the\n * application's customer documentation: the retry ladder, the per-attempt\n * timeout, the signature header, the JWT claim names and the body-hash\n * algorithm. The delivery worker (`m2m-webhook-delivery.batch.utils.ts` in the\n * backend library) derives its tunables from here, and the consumer-fact\n * catalog projects the same object into the technical documentation, so a\n * change to the worker's behaviour cannot leave the published contract behind.\n *\n * Nothing here is a runtime knob. A generated application does not configure\n * these values; they describe what every application delivers.\n */\nexport const M2M_WEBHOOK_DELIVERY_CONTRACT = {\n /** Total POST attempts per delivery before it is marked terminally failed. */\n maxAttempts: 5,\n /**\n * Delay before each RETRY, indexed by retry number (the first retry waits\n * `backoffScheduleSeconds[0]`). With `maxAttempts` = 5 there are four retries,\n * so the ladder is 1 minute, 5 minutes, 30 minutes and 2 hours.\n */\n backoffScheduleSeconds: [60, 300, 1800, 7200],\n /** Hard timeout applied to every outbound POST attempt. */\n requestTimeoutMs: 30_000,\n /** The receiver's response body is recorded on the delivery row up to this many bytes. */\n responseBodyTruncationBytes: 4 * 1024,\n /** `User-Agent` sent on every outbound webhook POST. */\n userAgent: 'Wildo-Webhook/1',\n /** Request header carrying the signature JWT. */\n signatureHeader: WildoHeaderKeys.X_WEBHOOK_SIGNATURE,\n /** JWS algorithm the signature JWT is signed with. Receivers must pin it. */\n signatureAlgorithm: 'ES256',\n /**\n * Registered-claim values every signature JWT carries. The backend's signing options for the\n * webhook key are derived from this block, so a receiver that pins these values pins what the\n * worker actually signs. `expiresIn` outlives the longest scheduled retry (2 hours) by a wide\n * margin while keeping the replay window short.\n *\n * The JWT header's `kid` is deliberately NOT here: the signer sets it to the RFC 7638 thumbprint\n * of the signing public key, which differs per deployment and changes on rotation. A receiver\n * must not pin a fixed `kid`; it verifies against `applicationPublicKeyPem` from the webhook\n * configuration and may use `kid` only to notice that the key changed.\n */\n signature: {\n issuer: APPLICATION_JWT_ISSUER,\n audience: 'WEBHOOK',\n expiresIn: '6h',\n },\n /** Algorithm of the `bodyHash` claim: a hex digest of the exact raw request bytes. */\n bodyHashAlgorithm: 'sha256',\n /** Status codes (besides 5xx and transport failures) that schedule another attempt. */\n retryableHttpStatuses: [408, 429],\n /**\n * Names of the claims a receiver reads from the signature JWT. `jti` is the\n * deduplication key and stays identical across every retry of one delivery;\n * the registered claims (`iss`, `aud`, `iat`, `exp`) and the header `kid` are refreshed\n * per attempt.\n */\n signatureClaims: {\n deliveryId: 'jti',\n bodyHash: 'bodyHash',\n bodyHashAlgorithm: 'bodyHashAlg',\n eventChannel: 'eventChannel',\n resourceIdentifier: 'resourceIdentifier',\n operationIdentifier: 'operationIdentifier',\n },\n} as const;\n\nexport type M2MWebhookDeliveryContract = typeof M2M_WEBHOOK_DELIVERY_CONTRACT;\n"]}
|
|
@@ -50,6 +50,7 @@ export declare const WebhookConfig_TestEndpointRequestDto: z.ZodObject<{
|
|
|
50
50
|
export declare const WebhookConfig_TestEndpointResponseDto: z.ZodObject<{
|
|
51
51
|
endpointId: z.ZodString;
|
|
52
52
|
url: z.ZodString;
|
|
53
|
+
transportIsPlaintext: z.ZodBoolean;
|
|
53
54
|
outcome: z.ZodEnum<typeof WebhookEndpointProbeOutcome>;
|
|
54
55
|
responseStatus: z.ZodOptional<z.ZodNumber>;
|
|
55
56
|
responseBodyTruncated: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-config.shared.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EAEtB,MAAM,mDAAmD,CAAC;AAQ3D,OAAO,EAAuC,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAMnH,oBAAY,wBAAwB;IAClC;;;;;;;;;;;;;;;OAeG;IACH,aAAa,iBAAiB;CAC/B;AAMD,eAAO,MAAM,oCAAoC;;iBAE/C,CAAC;AAMH;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC
|
|
1
|
+
{"version":3,"file":"webhook-config.shared.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EAEtB,MAAM,mDAAmD,CAAC;AAQ3D,OAAO,EAAuC,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAMnH,oBAAY,wBAAwB;IAClC;;;;;;;;;;;;;;;OAeG;IACH,aAAa,iBAAiB;CAC/B;AAMD,eAAO,MAAM,oCAAoC;;iBAE/C,CAAC;AAMH;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;iBAsChD,CAAC;AAMH,eAAO,MAAM,iCAAiC,4OAkG7C,CAAC"}
|
|
@@ -65,6 +65,25 @@ export const WebhookConfig_TestEndpointResponseDto = z.object({
|
|
|
65
65
|
endpointId: z.string(),
|
|
66
66
|
/** Destination actually contacted, echoed so the admin can confirm the stored URL. */
|
|
67
67
|
url: z.string(),
|
|
68
|
+
/**
|
|
69
|
+
* True when that destination is plaintext `http://`, so the signature JWT travelled in the clear.
|
|
70
|
+
*
|
|
71
|
+
* ## Why the exposure is reported HERE (#492)
|
|
72
|
+
*
|
|
73
|
+
* Plaintext endpoints are admitted, deliberately, and the reasoning is recorded on
|
|
74
|
+
* `WebhookEndpointSchema.url`. The cost of admitting them is that the decision becomes invisible:
|
|
75
|
+
* a documented exposure nobody encounters is the same as an undocumented one, and the JSDoc
|
|
76
|
+
* reaches only someone reading the schema.
|
|
77
|
+
*
|
|
78
|
+
* This probe is the one place an admin acts on a SINGLE endpoint and reads a per-endpoint answer,
|
|
79
|
+
* so it is where the exposure can actually be met. It rides beside `outcome` rather than replacing
|
|
80
|
+
* it, because the two say different things: `ACCEPTED` over `http://` is a working endpoint AND a
|
|
81
|
+
* credential on the wire, and collapsing that into a failure would be false.
|
|
82
|
+
*
|
|
83
|
+
* Reported for every outcome, including `NOT_SENT` — the scheme is a property of the stored
|
|
84
|
+
* destination, not of the attempt, and an admin fixing a signing fault should still be told.
|
|
85
|
+
*/
|
|
86
|
+
transportIsPlaintext: z.boolean(),
|
|
68
87
|
outcome: z.enum(WebhookEndpointProbeOutcome),
|
|
69
88
|
/** HTTP status returned by the endpoint. Absent for `UNREACHABLE` / `NOT_SENT`. */
|
|
70
89
|
responseStatus: z.number().int().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-config.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * M2M Webhook Config Resource Configuration — Polymorphic dual-scope\n *\n * Produces 2 factory functions (ORG + APP) via the polymorphic factory.\n * Spread into the registry factory map:\n * ...webhookConfigPolymorphicFactories\n *\n * Operation set (mirrors SIEM Export Config singleton precedent):\n * - READ (API) : admin reads the config + derived public key\n * - CREATE (REPOSITORY_ONLY) : seeded once per scope; not externally callable\n * - UPDATE (REPOSITORY_ONLY) : admin edits via dedicated endpoint flow (not a public REST PUT)\n * - TEST_ENDPOINT (custom) : fires a synthetic delivery to verify URL reachability\n *\n * @see m2m-webhook-organization-delivery.md — Phase 2 / Step 5\n * @see security/authentications/siem/siem-export-config.shared.resources-config.schemas.ts\n */\n\nimport { z } from 'zod';\nimport {\n CoreResourceOperation,\n CoreResourceType,\n} 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 '../../security/authorizations/roles.shared.schemas';\nimport { webhookConfigPolymorphicDeclaration, WebhookEndpointProbeOutcome } from './webhook-config.shared.schemas';\n\n// =============================================================================\n// CUSTOM OPERATIONS\n// =============================================================================\n\nexport enum WebhookConfig_Operations {\n /**\n * Synthetic delivery to verify URL reachability + signature\n * verification on the consumer side. Targets a single endpoint\n * (selected by `endpointId` in the request body); does not write to\n * `M2MWebhookDeliveryLog` (test deliveries are excluded from the user\n * event log to keep the log clean).\n *\n * The probe is `resourceOperationLike: UPDATE`, NOT `READ`. It performs no\n * database write, but it DOES have an external side effect — a live signed\n * POST leaves the platform and arrives at a customer-controlled URL. Borrowing\n * READ made this a `GET` whose OpenAPI entry had to declare `x-idempotent: false`,\n * a self-contradiction, and pushed `endpointId` into a query string. Borrowing\n * UPDATE yields a `PUT` on the same custom-op sub-path, matching the\n * `M2MWebhookDeliveryLog.retry` precedent (also a no-DB-write-of-its-own verb\n * that triggers a delivery).\n */\n TEST_ENDPOINT = 'testEndpoint',\n}\n\n// =============================================================================\n// REQUEST DTOs\n// =============================================================================\n\nexport const WebhookConfig_TestEndpointRequestDto = z.object({\n endpointId: z.string().min(1),\n});\n\n// =============================================================================\n// RESPONSE DTOs\n// =============================================================================\n\n/**\n * Diagnostic returned synchronously by `testEndpoint`.\n *\n * A transport-level failure at the customer endpoint is a successful PROBE and\n * therefore answers HTTP 200 carrying `outcome: UNREACHABLE` — it is not an API\n * error. API errors are reserved for faults in the request itself (unknown\n * `endpointId`, no config row, rate limit exceeded).\n */\nexport const WebhookConfig_TestEndpointResponseDto = z.object({\n endpointId: z.string(),\n /** Destination actually contacted, echoed so the admin can confirm the stored URL. */\n url: z.string(),\n outcome: z.enum(WebhookEndpointProbeOutcome),\n /** HTTP status returned by the endpoint. Absent for `UNREACHABLE` / `NOT_SENT`. */\n responseStatus: z.number().int().optional(),\n /** Truncated response body, to let an admin read the consumer's own error text. */\n responseBodyTruncated: z.string().optional(),\n /** Network / timeout / signing failure detail. Absent when the endpoint answered. */\n failureReason: z.string().optional(),\n durationMs: z.number().int().nonnegative(),\n /**\n * `jti` of the signed probe. Stated so an admin can correlate this attempt with\n * the entry in their own consumer's logs — the same dedup key a real delivery\n * carries.\n */\n signatureJti: z.string(),\n attemptedAt: z.date(),\n});\n\n// =============================================================================\n// POLYMORPHIC FACTORY\n// =============================================================================\n\nexport const webhookConfigPolymorphicFactories = createPolymorphicResourceConfigurations(\n webhookConfigPolymorphicDeclaration,\n {\n isSystemResource: true,\n // Server-internal webhook delivery loads the (org/app) endpoint config via\n // `readAsSystem`, independent of the triggering user's roles — the config\n // governs runtime delivery behaviour, not user-facing data. READ-only.\n systemAccessPolicy: { read: ResourceSystemAccessMode.ALLOWED },\n customOperation: WebhookConfig_Operations,\n coreOperations: [\n CoreResourceOperation.READ,\n CoreResourceOperation.CREATE,\n CoreResourceOperation.UPDATE,\n CoreResourceOperation.DELETE,\n ],\n operationsConfiguration: {\n [CoreResourceOperation.READ]: {\n variants: [\n {\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 },\n [CoreResourceOperation.CREATE]: {\n variants: [\n {\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.MEDIUM,\n },\n ],\n },\n [CoreResourceOperation.UPDATE]: {\n variants: [\n {\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.MEDIUM,\n },\n ],\n },\n // Internal-only (REPOSITORY_ONLY, no HTTP route): powers the composition\n // onParentDelete cascade so this one-per-scope webhook-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. Admin tier (ORG_ADMIN / APP super-admin) / HIGH.\n [CoreResourceOperation.DELETE]: {\n variants: [\n {\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 [WebhookConfig_Operations.TEST_ENDPOINT]: {\n variants: [\n {\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.MEDIUM,\n // UPDATE-like, not READ-like — see the JSDoc on `TEST_ENDPOINT`. The\n // operation writes nothing, but it emits a live outbound request.\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: WebhookConfig_TestEndpointRequestDto,\n // Implemented by `createWebhookConfigTestEndpointFactories()` in\n // saas-backend-lib (REPLACE_CORE_OPERATIONS): the core write is\n // replaced by the synthetic delivery, and this diagnostic — NOT the\n // config row — is what the caller receives. Keep this contract in\n // lockstep with that implementation.\n customResponseDto: WebhookConfig_TestEndpointResponseDto,\n },\n ],\n },\n },\n },\n);\n"]}
|
|
1
|
+
{"version":3,"file":"webhook-config.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.resources-config.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * M2M Webhook Config Resource Configuration — Polymorphic dual-scope\n *\n * Produces 2 factory functions (ORG + APP) via the polymorphic factory.\n * Spread into the registry factory map:\n * ...webhookConfigPolymorphicFactories\n *\n * Operation set (mirrors SIEM Export Config singleton precedent):\n * - READ (API) : admin reads the config + derived public key\n * - CREATE (REPOSITORY_ONLY) : seeded once per scope; not externally callable\n * - UPDATE (REPOSITORY_ONLY) : admin edits via dedicated endpoint flow (not a public REST PUT)\n * - TEST_ENDPOINT (custom) : fires a synthetic delivery to verify URL reachability\n *\n * @see m2m-webhook-organization-delivery.md — Phase 2 / Step 5\n * @see security/authentications/siem/siem-export-config.shared.resources-config.schemas.ts\n */\n\nimport { z } from 'zod';\nimport {\n CoreResourceOperation,\n CoreResourceType,\n} 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 '../../security/authorizations/roles.shared.schemas';\nimport { webhookConfigPolymorphicDeclaration, WebhookEndpointProbeOutcome } from './webhook-config.shared.schemas';\n\n// =============================================================================\n// CUSTOM OPERATIONS\n// =============================================================================\n\nexport enum WebhookConfig_Operations {\n /**\n * Synthetic delivery to verify URL reachability + signature\n * verification on the consumer side. Targets a single endpoint\n * (selected by `endpointId` in the request body); does not write to\n * `M2MWebhookDeliveryLog` (test deliveries are excluded from the user\n * event log to keep the log clean).\n *\n * The probe is `resourceOperationLike: UPDATE`, NOT `READ`. It performs no\n * database write, but it DOES have an external side effect — a live signed\n * POST leaves the platform and arrives at a customer-controlled URL. Borrowing\n * READ made this a `GET` whose OpenAPI entry had to declare `x-idempotent: false`,\n * a self-contradiction, and pushed `endpointId` into a query string. Borrowing\n * UPDATE yields a `PUT` on the same custom-op sub-path, matching the\n * `M2MWebhookDeliveryLog.retry` precedent (also a no-DB-write-of-its-own verb\n * that triggers a delivery).\n */\n TEST_ENDPOINT = 'testEndpoint',\n}\n\n// =============================================================================\n// REQUEST DTOs\n// =============================================================================\n\nexport const WebhookConfig_TestEndpointRequestDto = z.object({\n endpointId: z.string().min(1),\n});\n\n// =============================================================================\n// RESPONSE DTOs\n// =============================================================================\n\n/**\n * Diagnostic returned synchronously by `testEndpoint`.\n *\n * A transport-level failure at the customer endpoint is a successful PROBE and\n * therefore answers HTTP 200 carrying `outcome: UNREACHABLE` — it is not an API\n * error. API errors are reserved for faults in the request itself (unknown\n * `endpointId`, no config row, rate limit exceeded).\n */\nexport const WebhookConfig_TestEndpointResponseDto = z.object({\n endpointId: z.string(),\n /** Destination actually contacted, echoed so the admin can confirm the stored URL. */\n url: z.string(),\n /**\n * True when that destination is plaintext `http://`, so the signature JWT travelled in the clear.\n *\n * ## Why the exposure is reported HERE (#492)\n *\n * Plaintext endpoints are admitted, deliberately, and the reasoning is recorded on\n * `WebhookEndpointSchema.url`. The cost of admitting them is that the decision becomes invisible:\n * a documented exposure nobody encounters is the same as an undocumented one, and the JSDoc\n * reaches only someone reading the schema.\n *\n * This probe is the one place an admin acts on a SINGLE endpoint and reads a per-endpoint answer,\n * so it is where the exposure can actually be met. It rides beside `outcome` rather than replacing\n * it, because the two say different things: `ACCEPTED` over `http://` is a working endpoint AND a\n * credential on the wire, and collapsing that into a failure would be false.\n *\n * Reported for every outcome, including `NOT_SENT` — the scheme is a property of the stored\n * destination, not of the attempt, and an admin fixing a signing fault should still be told.\n */\n transportIsPlaintext: z.boolean(),\n outcome: z.enum(WebhookEndpointProbeOutcome),\n /** HTTP status returned by the endpoint. Absent for `UNREACHABLE` / `NOT_SENT`. */\n responseStatus: z.number().int().optional(),\n /** Truncated response body, to let an admin read the consumer's own error text. */\n responseBodyTruncated: z.string().optional(),\n /** Network / timeout / signing failure detail. Absent when the endpoint answered. */\n failureReason: z.string().optional(),\n durationMs: z.number().int().nonnegative(),\n /**\n * `jti` of the signed probe. Stated so an admin can correlate this attempt with\n * the entry in their own consumer's logs — the same dedup key a real delivery\n * carries.\n */\n signatureJti: z.string(),\n attemptedAt: z.date(),\n});\n\n// =============================================================================\n// POLYMORPHIC FACTORY\n// =============================================================================\n\nexport const webhookConfigPolymorphicFactories = createPolymorphicResourceConfigurations(\n webhookConfigPolymorphicDeclaration,\n {\n isSystemResource: true,\n // Server-internal webhook delivery loads the (org/app) endpoint config via\n // `readAsSystem`, independent of the triggering user's roles — the config\n // governs runtime delivery behaviour, not user-facing data. READ-only.\n systemAccessPolicy: { read: ResourceSystemAccessMode.ALLOWED },\n customOperation: WebhookConfig_Operations,\n coreOperations: [\n CoreResourceOperation.READ,\n CoreResourceOperation.CREATE,\n CoreResourceOperation.UPDATE,\n CoreResourceOperation.DELETE,\n ],\n operationsConfiguration: {\n [CoreResourceOperation.READ]: {\n variants: [\n {\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 },\n [CoreResourceOperation.CREATE]: {\n variants: [\n {\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.MEDIUM,\n },\n ],\n },\n [CoreResourceOperation.UPDATE]: {\n variants: [\n {\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.MEDIUM,\n },\n ],\n },\n // Internal-only (REPOSITORY_ONLY, no HTTP route): powers the composition\n // onParentDelete cascade so this one-per-scope webhook-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. Admin tier (ORG_ADMIN / APP super-admin) / HIGH.\n [CoreResourceOperation.DELETE]: {\n variants: [\n {\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 [WebhookConfig_Operations.TEST_ENDPOINT]: {\n variants: [\n {\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.MEDIUM,\n // UPDATE-like, not READ-like — see the JSDoc on `TEST_ENDPOINT`. The\n // operation writes nothing, but it emits a live outbound request.\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: WebhookConfig_TestEndpointRequestDto,\n // Implemented by `createWebhookConfigTestEndpointFactories()` in\n // saas-backend-lib (REPLACE_CORE_OPERATIONS): the core write is\n // replaced by the synthetic delivery, and this diagnostic — NOT the\n // config row — is what the caller receives. Keep this contract in\n // lockstep with that implementation.\n customResponseDto: WebhookConfig_TestEndpointResponseDto,\n },\n ],\n },\n },\n },\n);\n"]}
|
|
@@ -91,6 +91,36 @@ export declare const WebhookEndpointSchema: z.ZodObject<{
|
|
|
91
91
|
updatedAt: z.ZodDefault<z.ZodDate>;
|
|
92
92
|
}, z.core.$strip>;
|
|
93
93
|
export type WebhookEndpoint = z.infer<typeof WebhookEndpointSchema>;
|
|
94
|
+
/**
|
|
95
|
+
* Whether a destination is reached over PLAINTEXT HTTP, so the signature JWT travels in the clear.
|
|
96
|
+
*
|
|
97
|
+
* ## One definition, because two would eventually disagree (#492)
|
|
98
|
+
*
|
|
99
|
+
* Plaintext is ADMITTED here — a deliberate commercial accommodation recorded on
|
|
100
|
+
* {@link WebhookEndpointSchema.url} — which is exactly why the condition needs a single named home
|
|
101
|
+
* rather than an inline `startsWith('http://')` at each surface that wants to say something about
|
|
102
|
+
* it. A refusal can live in one place because it stops the request; a TOLERATED condition is
|
|
103
|
+
* observed by several, and those several must agree.
|
|
104
|
+
*
|
|
105
|
+
* Read by the write path (which warns and audits) and by the endpoint probe (which reports it to
|
|
106
|
+
* the admin who pressed "test"). Both are listed here so the next reader can tell whether adding a
|
|
107
|
+
* third is joining a mechanism or starting a second one.
|
|
108
|
+
*
|
|
109
|
+
* Scheme comparison, not a `startsWith`: `WHATWG` lowercases the scheme during parsing, so
|
|
110
|
+
* `HTTP://example.test` and `http://example.test` are the same destination and a prefix test would
|
|
111
|
+
* disagree with the URL the delivery actually opens. An unparseable value answers `false` — it is
|
|
112
|
+
* not a plaintext destination, it is not a destination at all, and `z.url()` refuses it upstream.
|
|
113
|
+
*/
|
|
114
|
+
export declare function webhookEndpointTransportIsPlaintext(url: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* The host of a webhook destination, for an audit row or a log line — never the full URL.
|
|
117
|
+
*
|
|
118
|
+
* Mirrors `AuditableEvent_Webhook_EndpointTestDispatchedEventDataSchema.destinationHost` and the
|
|
119
|
+
* reasoning recorded there: paths and query strings on customer endpoints routinely embed
|
|
120
|
+
* per-tenant tokens, and these rows are replicated to the organisation's SIEM and to the immutable
|
|
121
|
+
* store. The host answers "which of my endpoints" without carrying a credential into a log.
|
|
122
|
+
*/
|
|
123
|
+
export declare function webhookEndpointDestinationHost(url: string): string;
|
|
94
124
|
export declare const WebhookConfigBaseSchema: z.ZodObject<{
|
|
95
125
|
_id: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
|
|
96
126
|
enabled: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDefault<z.ZodBoolean>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-config.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,qDAAqD,CAAC;AAM7D;;;;;;;;;;;;GAYG;AACH,oBAAY,2BAA2B;IACrC;;;;;OAKG;IACH,QAAQ,aAAa;IACrB,iFAAiF;IACjF,QAAQ,aAAa;IACrB,sFAAsF;IACtF,WAAW,gBAAgB;IAC3B;;;;;OAKG;IACH,QAAQ,aAAa;CACtB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,0BAA0B,EAAE,4BAA4B,EAWpE,CAAC;AAMF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB;;;;;;;
|
|
1
|
+
{"version":3,"file":"webhook-config.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,qDAAqD,CAAC;AAM7D;;;;;;;;;;;;GAYG;AACH,oBAAY,2BAA2B;IACrC;;;;;OAKG;IACH,QAAQ,aAAa;IACrB,iFAAiF;IACjF,QAAQ,aAAa;IACrB,sFAAsF;IACtF,WAAW,gBAAgB;IAC3B;;;;;OAKG;IACH,QAAQ,aAAa;CACtB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,0BAA0B,EAAE,4BAA4B,EAWpE,CAAC;AAMF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB;;;;;;;iBA+BhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMxE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMlE;AAMD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;iBAqBlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMxE;;;;;;;;GAQG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;kBAM9C,CAAC"}
|
|
@@ -107,7 +107,27 @@ export const M2M_WEBHOOK_SCOPE_VARIANTS = [
|
|
|
107
107
|
export const WebhookEndpointSchema = z.object({
|
|
108
108
|
/** Stable per-endpoint identifier (ULID). Used as the `endpointId` FK on every delivery log row. */
|
|
109
109
|
id: z.string().min(1),
|
|
110
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* Destination URL receiving POST deliveries.
|
|
112
|
+
*
|
|
113
|
+
* ## `http://` IS ACCEPTED, AND WHAT THAT COSTS YOU (#492, decided 2026-09-08)
|
|
114
|
+
*
|
|
115
|
+
* Every delivery carries a **signature JWT in the request**. That JWT is a credential: it is what
|
|
116
|
+
* proves to your endpoint that the delivery came from this application. Over plaintext it is
|
|
117
|
+
* readable by anyone on the network path between us and you, and replayable against your endpoint
|
|
118
|
+
* until it expires — so an observer of one delivery can forge the next one.
|
|
119
|
+
*
|
|
120
|
+
* **Use `https://`.** Plaintext is admitted because refusing it would break endpoints already
|
|
121
|
+
* configured under a framework that accepted them, not because it is safe. That is a commercial
|
|
122
|
+
* accommodation, deliberately taken, and it is not an assessment that `http://` is fine here.
|
|
123
|
+
*
|
|
124
|
+
* The sibling agent push-notification caller requires HTTPS unconditionally, and the same argument
|
|
125
|
+
* applies to this field; the two differ only in whether anyone has already authored against them.
|
|
126
|
+
*
|
|
127
|
+
* Note the URL is also SSRF-guarded at delivery time — a destination resolving to a private or
|
|
128
|
+
* link-local address is refused regardless of scheme, because a signed POST to an instance-metadata
|
|
129
|
+
* service is a read primitive rather than a delivery.
|
|
130
|
+
*/
|
|
111
131
|
url: z.url(),
|
|
112
132
|
/** Free-form admin label (visible in the management UI). */
|
|
113
133
|
description: z.string().max(500).default(''),
|
|
@@ -116,6 +136,50 @@ export const WebhookEndpointSchema = z.object({
|
|
|
116
136
|
createdAt: z.date().default(() => new Date()),
|
|
117
137
|
updatedAt: z.date().default(() => new Date()),
|
|
118
138
|
});
|
|
139
|
+
/**
|
|
140
|
+
* Whether a destination is reached over PLAINTEXT HTTP, so the signature JWT travels in the clear.
|
|
141
|
+
*
|
|
142
|
+
* ## One definition, because two would eventually disagree (#492)
|
|
143
|
+
*
|
|
144
|
+
* Plaintext is ADMITTED here — a deliberate commercial accommodation recorded on
|
|
145
|
+
* {@link WebhookEndpointSchema.url} — which is exactly why the condition needs a single named home
|
|
146
|
+
* rather than an inline `startsWith('http://')` at each surface that wants to say something about
|
|
147
|
+
* it. A refusal can live in one place because it stops the request; a TOLERATED condition is
|
|
148
|
+
* observed by several, and those several must agree.
|
|
149
|
+
*
|
|
150
|
+
* Read by the write path (which warns and audits) and by the endpoint probe (which reports it to
|
|
151
|
+
* the admin who pressed "test"). Both are listed here so the next reader can tell whether adding a
|
|
152
|
+
* third is joining a mechanism or starting a second one.
|
|
153
|
+
*
|
|
154
|
+
* Scheme comparison, not a `startsWith`: `WHATWG` lowercases the scheme during parsing, so
|
|
155
|
+
* `HTTP://example.test` and `http://example.test` are the same destination and a prefix test would
|
|
156
|
+
* disagree with the URL the delivery actually opens. An unparseable value answers `false` — it is
|
|
157
|
+
* not a plaintext destination, it is not a destination at all, and `z.url()` refuses it upstream.
|
|
158
|
+
*/
|
|
159
|
+
export function webhookEndpointTransportIsPlaintext(url) {
|
|
160
|
+
try {
|
|
161
|
+
return new URL(url).protocol === 'http:';
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The host of a webhook destination, for an audit row or a log line — never the full URL.
|
|
169
|
+
*
|
|
170
|
+
* Mirrors `AuditableEvent_Webhook_EndpointTestDispatchedEventDataSchema.destinationHost` and the
|
|
171
|
+
* reasoning recorded there: paths and query strings on customer endpoints routinely embed
|
|
172
|
+
* per-tenant tokens, and these rows are replicated to the organisation's SIEM and to the immutable
|
|
173
|
+
* store. The host answers "which of my endpoints" without carrying a credential into a log.
|
|
174
|
+
*/
|
|
175
|
+
export function webhookEndpointDestinationHost(url) {
|
|
176
|
+
try {
|
|
177
|
+
return new URL(url).host;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return 'unparseable';
|
|
181
|
+
}
|
|
182
|
+
}
|
|
119
183
|
// =============================================================================
|
|
120
184
|
// BASE CONFIG SCHEMA (polymorphism injects the scope FK at variant time)
|
|
121
185
|
// =============================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-config.shared.schemas.js","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * M2M Webhook Config Schema (Shared) — Polymorphic dual-scope\n *\n * Configures outbound webhook delivery for M2M notifications fired by\n * resource operations carrying a `WEBHOOK_ORGANIZATION` or\n * `WEBHOOK_APPLICATION` channel in their spec. Holds:\n * - a master `enabled` switch\n * - an array of admin-managed endpoints (URL + description + per-endpoint enabled flag)\n * - a derived `applicationPublicKeyPem` (READ-only, populated by a\n * postfix hook from `JwtPrivateKeys.APPLICATION_WEBHOOK` so external\n * consumers can verify our JWT-signed deliveries)\n *\n * Scope FK (`organizationId` / `applicationId`) is injected by the\n * polymorphism engine — NOT declared on the base schema.\n *\n * @see m2m-webhook-organization-delivery.md — Phase 2 / Step 3\n * @see security/authentications/siem/siem-export-config.shared.schemas.ts\n * for the dual-scope polymorphic precedent this mirrors.\n */\n\nimport { z } from 'zod';\nimport {\n CoreResourceType,\n coreResourceShared_FieldIdentifier,\n} from '../../resources/resources.shared.core.definitions';\nimport {\n declarePolymorphicSchemas,\n type PolymorphicVariantDefinition,\n} from '../../resources/utils/resource-polymorphism.schemas';\n\n// =============================================================================\n// ENDPOINT PROBE VOCABULARY\n// =============================================================================\n\n/**\n * Verdict of a single synthetic delivery fired by `webhookConfig.testEndpoint`.\n * A probe that cannot fail is worse than no probe, so every terminal state an\n * outbound attempt can reach is named here rather than collapsed into a boolean.\n *\n * The transport verdict and the HTTP status are deliberately SEPARATE axes:\n * `REJECTED` still carries a response status, because \"the endpoint answered 403\"\n * and \"the endpoint never answered\" are different problems with different fixes.\n *\n * Declared in this light schema module (not alongside the operation DTO) so the\n * audit-event vocabulary can name the same enum without pulling the resource-config\n * factory graph into `auditable-events.shared.schema.ts`.\n */\nexport enum WebhookEndpointProbeOutcome {\n /**\n * The endpoint answered with 2xx. This is the only outcome that evidences\n * consumer-side signature verification: the platform cannot observe the\n * consumer's verification step directly, so a 2xx from an endpoint that\n * verifies before responding is the available proof.\n */\n ACCEPTED = 'accepted',\n /** The endpoint answered, but not with 2xx. Reachable; it refused or errored. */\n REJECTED = 'rejected',\n /** No HTTP response at all — DNS/TLS/connection failure, or the attempt timed out. */\n UNREACHABLE = 'unreachable',\n /**\n * Nothing left the platform. The payload could not be signed, which is an\n * operator-side key/configuration fault, not a statement about the endpoint.\n * Reported distinctly so an admin never reads a local misconfiguration as a\n * broken customer endpoint.\n */\n NOT_SENT = 'not_sent',\n}\n\n// =============================================================================\n// SHARED VARIANT DEFINITIONS\n// =============================================================================\n\n/**\n * The 2 M2M webhook scope variants — shared by `WebhookConfig` and\n * `M2MWebhookDeliveryLog`. Centralised here so both polymorphic\n * declarations stay in lock-step.\n *\n * Notes:\n * - We deliberately define a domain-local constant (mirroring\n * `BILLING_SCOPE_VARIANTS` in the billing domain) instead of reusing\n * `AUTH_SCOPE_VARIANTS` from `authentications/`. The variant *shape*\n * is identical — `(ORGANIZATIONS, APPLICATION)` with `isPrimaryScope:\n * true` — but the auth constant is documented as \"shared across all\n * AUTH polymorphic resources\" and webhooks are notification resources,\n * not auth resources. Keeping a domain-local constant prevents the\n * semantic drift the framework-mindset rule warns about.\n * - Both variants are primary scopes: there is no \"child of an\n * organization unit\" or \"child of a user\" variant — webhooks are a\n * tenant-level concern, not an entity-attached one.\n */\nexport const M2M_WEBHOOK_SCOPE_VARIANTS: PolymorphicVariantDefinition[] = [\n {\n parentResourceType: CoreResourceType.ORGANIZATIONS,\n parentFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.ORGANIZATIONS],\n isPrimaryScope: true,\n },\n {\n parentResourceType: CoreResourceType.APPLICATION,\n parentFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.APPLICATION],\n isPrimaryScope: true,\n },\n];\n\n// =============================================================================\n// ENDPOINT SUB-SCHEMA\n// =============================================================================\n\n/**\n * A single admin-configured webhook destination.\n *\n * v1 deliberately keeps endpoint config minimal (URL + description +\n * enabled flag) — per user direction: \"as a first implementation, we\n * need just an url and a description, not more.\" Per-endpoint secrets\n * are NOT used: signing happens with a single per-application JWT\n * private key (`JwtPrivateKeys.APPLICATION_WEBHOOK`) and consumers\n * verify with the matching public key surfaced via the parent config's\n * derived `applicationPublicKeyPem` field.\n */\nexport const WebhookEndpointSchema = z.object({\n /** Stable per-endpoint identifier (ULID). Used as the `endpointId` FK on every delivery log row. */\n id: z.string().min(1),\n /** Destination URL receiving POST deliveries. */\n url: z.url(),\n /** Free-form admin label (visible in the management UI). */\n description: z.string().max(500).default(''),\n /** Per-endpoint master switch — disabled endpoints are skipped by the dispatcher. */\n enabled: z.boolean().default(true),\n createdAt: z.date().default(() => new Date()),\n updatedAt: z.date().default(() => new Date()),\n});\n\nexport type WebhookEndpoint = z.infer<typeof WebhookEndpointSchema>;\n\n// =============================================================================\n// BASE CONFIG SCHEMA (polymorphism injects the scope FK at variant time)\n// =============================================================================\n\nexport const WebhookConfigBaseSchema = z.object({\n _id: z.string().min(1).isPrimaryKey().isSummaryField(),\n\n /** Master kill-switch — when `false`, the dispatcher short-circuits with no deliveries. */\n enabled: z.boolean().default(false).isSummaryField(),\n\n /** Admin-managed list of destinations. Empty array = no deliveries even when `enabled: true`. */\n endpoints: z.array(WebhookEndpointSchema).default([]),\n\n /**\n * Derived field — populated by `postfixCoreOperations[READ]` from\n * `appConfig.jwtConfig.config.publicKey[JwtPrivateKeys.APPLICATION_WEBHOOK]`.\n * Excluded from CREATE/UPDATE so clients cannot set it; the value is\n * regenerated on every read from the canonical app config so key\n * rotation is reflected immediately. Phase 3 wires the postfix hook\n * (Step 9 of the plan).\n */\n applicationPublicKeyPem: z.string().optional().excludeFromCreate().excludeFromUpdate(),\n\n createdAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n updatedAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n});\n\nexport type WebhookConfigBase = z.infer<typeof WebhookConfigBaseSchema>;\n\n// =============================================================================\n// POLYMORPHIC DECLARATION\n// =============================================================================\n\n/**\n * Yields two `CoreResourceType` variants:\n * - `organizationWebhookConfig` (FK: `organizationId`)\n * - `applicationWebhookConfig` (FK: `applicationId`)\n *\n * Both are singletons per scope (cardinality ONE) — wired in\n * `resources-registry.shared.core.definitions.ts` via\n * `createPolymorphicScopeRelationships(...)`.\n */\nexport const webhookConfigPolymorphicDeclaration = declarePolymorphicSchemas({\n baseResourceType: 'webhookConfig',\n baseFieldIdentifier: 'webhookConfigId',\n baseEnumKey: 'WEBHOOK_CONFIG',\n baseSchema: WebhookConfigBaseSchema,\n variants: M2M_WEBHOOK_SCOPE_VARIANTS,\n});\n"]}
|
|
1
|
+
{"version":3,"file":"webhook-config.shared.schemas.js","sourceRoot":"","sources":["../../../../../src/notifications/m2m/webhook-config.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * M2M Webhook Config Schema (Shared) — Polymorphic dual-scope\n *\n * Configures outbound webhook delivery for M2M notifications fired by\n * resource operations carrying a `WEBHOOK_ORGANIZATION` or\n * `WEBHOOK_APPLICATION` channel in their spec. Holds:\n * - a master `enabled` switch\n * - an array of admin-managed endpoints (URL + description + per-endpoint enabled flag)\n * - a derived `applicationPublicKeyPem` (READ-only, populated by a\n * postfix hook from `JwtPrivateKeys.APPLICATION_WEBHOOK` so external\n * consumers can verify our JWT-signed deliveries)\n *\n * Scope FK (`organizationId` / `applicationId`) is injected by the\n * polymorphism engine — NOT declared on the base schema.\n *\n * @see m2m-webhook-organization-delivery.md — Phase 2 / Step 3\n * @see security/authentications/siem/siem-export-config.shared.schemas.ts\n * for the dual-scope polymorphic precedent this mirrors.\n */\n\nimport { z } from 'zod';\nimport {\n CoreResourceType,\n coreResourceShared_FieldIdentifier,\n} from '../../resources/resources.shared.core.definitions';\nimport {\n declarePolymorphicSchemas,\n type PolymorphicVariantDefinition,\n} from '../../resources/utils/resource-polymorphism.schemas';\n\n// =============================================================================\n// ENDPOINT PROBE VOCABULARY\n// =============================================================================\n\n/**\n * Verdict of a single synthetic delivery fired by `webhookConfig.testEndpoint`.\n * A probe that cannot fail is worse than no probe, so every terminal state an\n * outbound attempt can reach is named here rather than collapsed into a boolean.\n *\n * The transport verdict and the HTTP status are deliberately SEPARATE axes:\n * `REJECTED` still carries a response status, because \"the endpoint answered 403\"\n * and \"the endpoint never answered\" are different problems with different fixes.\n *\n * Declared in this light schema module (not alongside the operation DTO) so the\n * audit-event vocabulary can name the same enum without pulling the resource-config\n * factory graph into `auditable-events.shared.schema.ts`.\n */\nexport enum WebhookEndpointProbeOutcome {\n /**\n * The endpoint answered with 2xx. This is the only outcome that evidences\n * consumer-side signature verification: the platform cannot observe the\n * consumer's verification step directly, so a 2xx from an endpoint that\n * verifies before responding is the available proof.\n */\n ACCEPTED = 'accepted',\n /** The endpoint answered, but not with 2xx. Reachable; it refused or errored. */\n REJECTED = 'rejected',\n /** No HTTP response at all — DNS/TLS/connection failure, or the attempt timed out. */\n UNREACHABLE = 'unreachable',\n /**\n * Nothing left the platform. The payload could not be signed, which is an\n * operator-side key/configuration fault, not a statement about the endpoint.\n * Reported distinctly so an admin never reads a local misconfiguration as a\n * broken customer endpoint.\n */\n NOT_SENT = 'not_sent',\n}\n\n// =============================================================================\n// SHARED VARIANT DEFINITIONS\n// =============================================================================\n\n/**\n * The 2 M2M webhook scope variants — shared by `WebhookConfig` and\n * `M2MWebhookDeliveryLog`. Centralised here so both polymorphic\n * declarations stay in lock-step.\n *\n * Notes:\n * - We deliberately define a domain-local constant (mirroring\n * `BILLING_SCOPE_VARIANTS` in the billing domain) instead of reusing\n * `AUTH_SCOPE_VARIANTS` from `authentications/`. The variant *shape*\n * is identical — `(ORGANIZATIONS, APPLICATION)` with `isPrimaryScope:\n * true` — but the auth constant is documented as \"shared across all\n * AUTH polymorphic resources\" and webhooks are notification resources,\n * not auth resources. Keeping a domain-local constant prevents the\n * semantic drift the framework-mindset rule warns about.\n * - Both variants are primary scopes: there is no \"child of an\n * organization unit\" or \"child of a user\" variant — webhooks are a\n * tenant-level concern, not an entity-attached one.\n */\nexport const M2M_WEBHOOK_SCOPE_VARIANTS: PolymorphicVariantDefinition[] = [\n {\n parentResourceType: CoreResourceType.ORGANIZATIONS,\n parentFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.ORGANIZATIONS],\n isPrimaryScope: true,\n },\n {\n parentResourceType: CoreResourceType.APPLICATION,\n parentFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.APPLICATION],\n isPrimaryScope: true,\n },\n];\n\n// =============================================================================\n// ENDPOINT SUB-SCHEMA\n// =============================================================================\n\n/**\n * A single admin-configured webhook destination.\n *\n * v1 deliberately keeps endpoint config minimal (URL + description +\n * enabled flag) — per user direction: \"as a first implementation, we\n * need just an url and a description, not more.\" Per-endpoint secrets\n * are NOT used: signing happens with a single per-application JWT\n * private key (`JwtPrivateKeys.APPLICATION_WEBHOOK`) and consumers\n * verify with the matching public key surfaced via the parent config's\n * derived `applicationPublicKeyPem` field.\n */\nexport const WebhookEndpointSchema = z.object({\n /** Stable per-endpoint identifier (ULID). Used as the `endpointId` FK on every delivery log row. */\n id: z.string().min(1),\n /**\n * Destination URL receiving POST deliveries.\n *\n * ## `http://` IS ACCEPTED, AND WHAT THAT COSTS YOU (#492, decided 2026-09-08)\n *\n * Every delivery carries a **signature JWT in the request**. That JWT is a credential: it is what\n * proves to your endpoint that the delivery came from this application. Over plaintext it is\n * readable by anyone on the network path between us and you, and replayable against your endpoint\n * until it expires — so an observer of one delivery can forge the next one.\n *\n * **Use `https://`.** Plaintext is admitted because refusing it would break endpoints already\n * configured under a framework that accepted them, not because it is safe. That is a commercial\n * accommodation, deliberately taken, and it is not an assessment that `http://` is fine here.\n *\n * The sibling agent push-notification caller requires HTTPS unconditionally, and the same argument\n * applies to this field; the two differ only in whether anyone has already authored against them.\n *\n * Note the URL is also SSRF-guarded at delivery time — a destination resolving to a private or\n * link-local address is refused regardless of scheme, because a signed POST to an instance-metadata\n * service is a read primitive rather than a delivery.\n */\n url: z.url(),\n /** Free-form admin label (visible in the management UI). */\n description: z.string().max(500).default(''),\n /** Per-endpoint master switch — disabled endpoints are skipped by the dispatcher. */\n enabled: z.boolean().default(true),\n createdAt: z.date().default(() => new Date()),\n updatedAt: z.date().default(() => new Date()),\n});\n\nexport type WebhookEndpoint = z.infer<typeof WebhookEndpointSchema>;\n\n/**\n * Whether a destination is reached over PLAINTEXT HTTP, so the signature JWT travels in the clear.\n *\n * ## One definition, because two would eventually disagree (#492)\n *\n * Plaintext is ADMITTED here — a deliberate commercial accommodation recorded on\n * {@link WebhookEndpointSchema.url} — which is exactly why the condition needs a single named home\n * rather than an inline `startsWith('http://')` at each surface that wants to say something about\n * it. A refusal can live in one place because it stops the request; a TOLERATED condition is\n * observed by several, and those several must agree.\n *\n * Read by the write path (which warns and audits) and by the endpoint probe (which reports it to\n * the admin who pressed \"test\"). Both are listed here so the next reader can tell whether adding a\n * third is joining a mechanism or starting a second one.\n *\n * Scheme comparison, not a `startsWith`: `WHATWG` lowercases the scheme during parsing, so\n * `HTTP://example.test` and `http://example.test` are the same destination and a prefix test would\n * disagree with the URL the delivery actually opens. An unparseable value answers `false` — it is\n * not a plaintext destination, it is not a destination at all, and `z.url()` refuses it upstream.\n */\nexport function webhookEndpointTransportIsPlaintext(url: string): boolean {\n try {\n return new URL(url).protocol === 'http:';\n } catch {\n return false;\n }\n}\n\n/**\n * The host of a webhook destination, for an audit row or a log line — never the full URL.\n *\n * Mirrors `AuditableEvent_Webhook_EndpointTestDispatchedEventDataSchema.destinationHost` and the\n * reasoning recorded there: paths and query strings on customer endpoints routinely embed\n * per-tenant tokens, and these rows are replicated to the organisation's SIEM and to the immutable\n * store. The host answers \"which of my endpoints\" without carrying a credential into a log.\n */\nexport function webhookEndpointDestinationHost(url: string): string {\n try {\n return new URL(url).host;\n } catch {\n return 'unparseable';\n }\n}\n\n// =============================================================================\n// BASE CONFIG SCHEMA (polymorphism injects the scope FK at variant time)\n// =============================================================================\n\nexport const WebhookConfigBaseSchema = z.object({\n _id: z.string().min(1).isPrimaryKey().isSummaryField(),\n\n /** Master kill-switch — when `false`, the dispatcher short-circuits with no deliveries. */\n enabled: z.boolean().default(false).isSummaryField(),\n\n /** Admin-managed list of destinations. Empty array = no deliveries even when `enabled: true`. */\n endpoints: z.array(WebhookEndpointSchema).default([]),\n\n /**\n * Derived field — populated by `postfixCoreOperations[READ]` from\n * `appConfig.jwtConfig.config.publicKey[JwtPrivateKeys.APPLICATION_WEBHOOK]`.\n * Excluded from CREATE/UPDATE so clients cannot set it; the value is\n * regenerated on every read from the canonical app config so key\n * rotation is reflected immediately. Phase 3 wires the postfix hook\n * (Step 9 of the plan).\n */\n applicationPublicKeyPem: z.string().optional().excludeFromCreate().excludeFromUpdate(),\n\n createdAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n updatedAt: z.date().default(() => new Date()).excludeFromCreate().excludeFromUpdate(),\n});\n\nexport type WebhookConfigBase = z.infer<typeof WebhookConfigBaseSchema>;\n\n// =============================================================================\n// POLYMORPHIC DECLARATION\n// =============================================================================\n\n/**\n * Yields two `CoreResourceType` variants:\n * - `organizationWebhookConfig` (FK: `organizationId`)\n * - `applicationWebhookConfig` (FK: `applicationId`)\n *\n * Both are singletons per scope (cardinality ONE) — wired in\n * `resources-registry.shared.core.definitions.ts` via\n * `createPolymorphicScopeRelationships(...)`.\n */\nexport const webhookConfigPolymorphicDeclaration = declarePolymorphicSchemas({\n baseResourceType: 'webhookConfig',\n baseFieldIdentifier: 'webhookConfigId',\n baseEnumKey: 'WEBHOOK_CONFIG',\n baseSchema: WebhookConfigBaseSchema,\n variants: M2M_WEBHOOK_SCOPE_VARIANTS,\n});\n"]}
|
|
@@ -3,10 +3,12 @@ import { NotificationBadgeDefinition } from "./notification-badges.schemas";
|
|
|
3
3
|
* Canonical (framework-shipped) notification badge definitions.
|
|
4
4
|
*
|
|
5
5
|
* Intentionally empty: the two aspirational placeholders (`new messages` /
|
|
6
|
-
* `unpaid invoices`) were removed because nothing produced them
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* `unpaid invoices`) were removed because nothing produced them.
|
|
7
|
+
*
|
|
8
|
+
* This is a statement about FRAMEWORK-shipped definitions only. Badge surfacing itself works: a
|
|
9
|
+
* navigation item carries `notificationBadgeRef` and the sidebar renders the badge, and applications
|
|
10
|
+
* declare their own definitions. A framework definition returns here only once the framework also
|
|
11
|
+
* ships its producer, carrying a typed `source` (EVENT_COUNTER | DERIVED_QUERY) + `display`.
|
|
10
12
|
*/
|
|
11
13
|
export declare const coreNotificationBadgeDefinitions: NotificationBadgeDefinition[];
|
|
12
14
|
//# sourceMappingURL=notification-badges.core.definitions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-badges.core.definitions.d.ts","sourceRoot":"","sources":["../../../../src/notifications/notification-badges.core.definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E
|
|
1
|
+
{"version":3,"file":"notification-badges.core.definitions.d.ts","sourceRoot":"","sources":["../../../../src/notifications/notification-badges.core.definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gCAAgC,EAAE,2BAA2B,EAAO,CAAC"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Canonical (framework-shipped) notification badge definitions.
|
|
3
3
|
*
|
|
4
4
|
* Intentionally empty: the two aspirational placeholders (`new messages` /
|
|
5
|
-
* `unpaid invoices`) were removed because nothing produced them
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* `unpaid invoices`) were removed because nothing produced them.
|
|
6
|
+
*
|
|
7
|
+
* This is a statement about FRAMEWORK-shipped definitions only. Badge surfacing itself works: a
|
|
8
|
+
* navigation item carries `notificationBadgeRef` and the sidebar renders the badge, and applications
|
|
9
|
+
* declare their own definitions. A framework definition returns here only once the framework also
|
|
10
|
+
* ships its producer, carrying a typed `source` (EVENT_COUNTER | DERIVED_QUERY) + `display`.
|
|
9
11
|
*/
|
|
10
12
|
export const coreNotificationBadgeDefinitions = [];
|
|
11
13
|
//# sourceMappingURL=notification-badges.core.definitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-badges.core.definitions.js","sourceRoot":"","sources":["../../../../src/notifications/notification-badges.core.definitions.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"notification-badges.core.definitions.js","sourceRoot":"","sources":["../../../../src/notifications/notification-badges.core.definitions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAkC,EAAE,CAAC","sourcesContent":["import { NotificationBadgeDefinition } from \"./notification-badges.schemas\";\n\n/**\n * Canonical (framework-shipped) notification badge definitions.\n *\n * Intentionally empty: the two aspirational placeholders (`new messages` /\n * `unpaid invoices`) were removed because nothing produced them.\n *\n * This is a statement about FRAMEWORK-shipped definitions only. Badge surfacing itself works: a\n * navigation item carries `notificationBadgeRef` and the sidebar renders the badge, and applications\n * declare their own definitions. A framework definition returns here only once the framework also\n * ships its producer, carrying a typed `source` (EVENT_COUNTER | DERIVED_QUERY) + `display`.\n */\nexport const coreNotificationBadgeDefinitions: NotificationBadgeDefinition[] = [];\n"]}
|