RedHatInsights/notifications-backendGitHubLast refreshed Oct 3, 2026
This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works
**MessageHandler** -- Override handle(IncomingCloudEventMetadata<JsonObject>) to perform the external call. Return HandledMessageDetails (or HandledHttpMessageDetails for HTTP connectors). Mark as @ApplicationScoped.
MessageHandler is annotated with ApplicationScoped
Holds
Read Oct 2
EventConsumer reads from the ingress channel with @Incoming and @Blocking.
EventConsumer is annotated with Incoming, and EventConsumer is annotated with Blocking
HoldsPR #4157 · Oct 2
Read Oct 2
Connector configs extend the inheritance chain: ConnectorConfig -> HttpConnectorConfig -> specific connector config (e.g., EmailConnectorConfig).
HttpConnectorConfig extends ConnectorConfig
Holds
Read Oct 2
Connector configs extend the inheritance chain: ConnectorConfig -> HttpConnectorConfig -> specific connector config (e.g., EmailConnectorConfig).
EmailConnectorConfig extends HttpConnectorConfig
Holds
Read Oct 2
For org-scoped toggles, build context via UnleashContextBuilder.buildUnleashContextWithOrgId(orgId).
UnleashContextBuilder has a buildUnleashContextWithOrgId method
Holds
Read Oct 2
Use @JsonIgnoreProperties(ignoreUnknown = true) on request models that may receive extra fields from clients (e.g., CreateBehaviorGroupRequest, UpdateBehaviorGroupRequest, SettingsValuesByEventType).
CreateBehaviorGroupRequest is annotated with JsonIgnoreProperties
Holds
Read Oct 2
Use @JsonIgnoreProperties(ignoreUnknown = true) on request models that may receive extra fields from clients (e.g., CreateBehaviorGroupRequest, UpdateBehaviorGroupRequest, SettingsValuesByEventType).
UpdateBehaviorGroupRequest is annotated with JsonIgnoreProperties
Holds
Read Oct 2
Use @JsonIgnoreProperties(ignoreUnknown = true) on request models that may receive extra fields from clients (e.g., CreateBehaviorGroupRequest, UpdateBehaviorGroupRequest, SettingsValuesByEventType).
SettingsValuesByEventType is annotated with JsonIgnoreProperties
Holds
Read Oct 2
Override additionalPrePersist() for entity-specific initialization (e.g., generating UUIDs in Endpoint).
Endpoint has an additionalPrePersist method
Holds
Read Oct 2
For large result sets, fetch IDs first, then load full entities by ID list (see EventRepository.getEvents two-query pattern).
EventRepository has getEvents
Holds
Read Oct 2
MessageConsumer reads from incomingmessages channel, filters by x-rh-notifications-connector header, and delegates to MessageHandler.handle().
MessageConsumer depends on MessageHandler
HoldsPR #4157 · Oct 2
Read Oct 2
RbacClientResponseFilter and LogLevelManager use java.util.logging.Logger because they interact with JUL-level APIs directly.
The RbacServiceToService interface has two implementations following the dual-client pattern: **OIDC** (RbacServiceToServiceOidc): annotated with @OidcClientFilter, config key rbac-s2s-oidc.
RbacServiceToServiceOidc is annotated with OidcClientFilter
HoldsPR #4157 · Oct 2
Read Oct 2
Both follow the same OIDC/PSK dual-client pattern: **OIDC** (SourcesOidcClient): config key sources-oidc, uses @OidcClientFilter.
SourcesOidcClient is annotated with OidcClientFilter
Holds
Read Oct 2
**PSK** (RbacServiceToServicePsk): uses AuthRequestFilter to inject x-rh-rbac-psk and x-rh-rbac-client-id headers, config key rbac-s2s.
RbacServiceToServicePsk depends on AuthRequestFilter
RbacWorkspacesOidcClient is annotated with OidcClientFilter
HoldsPR #4157 · Oct 2
Read Oct 2
Templates are registered in static Map<TemplateDefinition, String> fields inside mapping classes under com.redhat.cloud.notifications.qute.templates.mapping. Each mapping class corresponds to a product bundle: Mapping class Rhel, Bundle rhel
Rhel is in com.redhat.cloud.notifications.qute.templates.mapping
Holds
Read Oct 2
Mapping class OpenShift, Bundle openshift
OpenShift is in com.redhat.cloud.notifications.qute.templates.mapping
Holds
Read Oct 2
Mapping class Console, Bundle console
Console is in com.redhat.cloud.notifications.qute.templates.mapping
Holds
Read Oct 2
Mapping class SubscriptionServices, Bundle subscription-services
SubscriptionServices is in com.redhat.cloud.notifications.qute.templates.mapping
Holds
Read Oct 2
Extension class ActionExtension, Methods available in templates context.propertyName (dynamic property access on Context ), payload.propertyName (on Payload ), action.toPrettyJson()
ActionExtension is in com.redhat.cloud.notifications.qute.templates.extensions
Holds
Read Oct 2
Extension class ActionExtension, Methods available in templates context.propertyName (dynamic property access on Context ), payload.propertyName (on Payload ), action.toPrettyJson()
ActionExtension has a toPrettyJson method
Holds
Read Oct 2
Extension class LocalDateTimeExtension, Methods available in templates date.toUtcFormat() , date.toStringFormat() , date.toTimeAgo() , string.toUtcFormat() , string.toStringFormat() , string.toTimeAgo()
LocalDateTimeExtension is in com.redhat.cloud.notifications.qute.templates.extensions
Holds
Read Oct 2
Extension class LocalDateTimeExtension, Methods available in templates date.toUtcFormat() , date.toStringFormat() , date.toTimeAgo() , string.toUtcFormat() , string.toStringFormat() , string.toTimeAgo()
LocalDateTimeExtension has a toUtcFormat method
Holds
Read Oct 2
Extension class LocalDateTimeExtension, Methods available in templates date.toUtcFormat() , date.toStringFormat() , date.toTimeAgo() , string.toUtcFormat() , string.toStringFormat() , string.toTimeAgo()
LocalDateTimeExtension has a toStringFormat method
Holds
Read Oct 2
Extension class LocalDateTimeExtension, Methods available in templates date.toUtcFormat() , date.toStringFormat() , date.toTimeAgo() , string.toUtcFormat() , string.toStringFormat() , string.toTimeAgo()
LocalDateTimeExtension has a toTimeAgo method
Holds
Read Oct 2
Extension class SeverityExtension, Methods available in templates string.severityAsEmailTitle() , string.toTitleCase() , string.asSeverityEmoji() , string.asPatternFlySeverity()
SeverityExtension is in com.redhat.cloud.notifications.qute.templates.extensions
Holds
Read Oct 2
Extension class SeverityExtension, Methods available in templates string.severityAsEmailTitle() , string.toTitleCase() , string.asSeverityEmoji() , string.asPatternFlySeverity()
SeverityExtension has a severityAsEmailTitle method
Holds
Read Oct 2
Extension class SeverityExtension, Methods available in templates string.severityAsEmailTitle() , string.toTitleCase() , string.asSeverityEmoji() , string.asPatternFlySeverity()
SeverityExtension has a toTitleCase method
Holds
Read Oct 2
Extension class SeverityExtension, Methods available in templates string.severityAsEmailTitle() , string.toTitleCase() , string.asSeverityEmoji() , string.asPatternFlySeverity()
SeverityExtension has an asSeverityEmoji method
Holds
Read Oct 2
Extension class SeverityExtension, Methods available in templates string.severityAsEmailTitle() , string.toTitleCase() , string.asSeverityEmoji() , string.asPatternFlySeverity()
SeverityExtension has an asPatternFlySeverity method
Holds
Read Oct 2
Extension class UrlEncodingExtension, Methods available in templates string.urlEncode()
UrlEncodingExtension is in com.redhat.cloud.notifications.qute.templates.extensions
Holds
Read Oct 2
Extension class UrlEncodingExtension, Methods available in templates string.urlEncode()
UrlEncodingExtension has an urlEncode method
Holds
Read Oct 2
Extension class ErrataSortExtension, Methods available in templates list.sortErrataSecurityArray() , list.sortErrataArray()
ErrataSortExtension is in com.redhat.cloud.notifications.qute.templates.extensions
Holds
Read Oct 2
Extension class ErrataSortExtension, Methods available in templates list.sortErrataSecurityArray() , list.sortErrataArray()
ErrataSortExtension has a sortErrataSecurityArray method
Holds
Read Oct 2
Extension class ErrataSortExtension, Methods available in templates list.sortErrataSecurityArray() , list.sortErrataArray()
ErrataSortExtension has a sortErrataArray method
Holds
Read Oct 2
Extension class ApplicationServicesSortExtension, Methods available in templates map.sortByProductDescription() , list.sortByEventTypeDisplayName()
ApplicationServicesSortExtension has a sortByProductDescription method
Holds
Read Oct 2
Extension class ApplicationServicesSortExtension, Methods available in templates map.sortByProductDescription() , list.sortByEventTypeDisplayName()
ApplicationServicesSortExtension has a sortByEventTypeDisplayName method
Holds
Read Oct 2
TemplateService is an @ApplicationScoped CDI bean initialized at @Startup.
TemplateService is annotated with ApplicationScoped, and TemplateService is annotated with Startup
Holds
Read Oct 2
Method renderTemplate(TemplateDefinition, Map<String, Object>), Use case Drawer/Slack/Teams/Chat data map is passed under "data" key
TemplateService has a renderTemplate method
Holds
Read Oct 2
Method renderTemplateWithCustomDataMap(TemplateDefinition, Map<String, Object>), Use case Email full context map with keys like action , environment , pendo_message , ignore_user_preferences
TemplateService has a renderTemplateWithCustomDataMap method
Holds
Read Oct 2
Method isValidTemplateDefinition(TemplateDefinition), Use case Checks if a template exists without throwing
TemplateService has an isValidTemplateDefinition method
Holds
Read Oct 2
Method convertActionToContextMap(Action), Use case Converts Action.context to Map for aggregation templates
TemplateService has a convertActionToContextMap method
Health (/q/health) and metrics (/q/metrics) paths are exempt — see McpAuthMechanism.ANONYMOUS_PATHS.
McpAuthMechanism has ANONYMOUS_PATHS
Holds
Read Oct 2
parseUuid(paramName, value) - Parse and validate UUID parameters
McpToolUtils has a parseUuid method
Holds
Read Oct 2
parseDate(paramName, value) - Parse yyyy-MM-dd date strings to LocalDate
McpToolUtils has a parseDate method
Holds
Read Oct 2
executeRestCall(toolName, principal, restCall, registry) - Execute REST calls with error handling and metrics
McpToolUtils has an executeRestCall method
Holds
Read Oct 2
httpErrorMessage(status) - User-friendly error messages for HTTP status codes
McpToolUtils has a httpErrorMessage method
Holds
75 rules from 12 docs
See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.