feat(connectors): govern RSS and Atom publication
Module Package Release / publish-packages (push) Successful in 11s

This commit is contained in:
2026-08-21 17:36:19 +02:00
parent de8e74b866
commit e6ab8291ec
9 changed files with 182 additions and 18 deletions
+27 -5
View File
@@ -67,7 +67,11 @@ from govoplan_connectors.backend.tabular_sources import (
from govoplan_connectors.backend.datasource_origins import (
ConnectorDatasourceOriginProvider,
)
from govoplan_connectors.backend.feeds import ConnectorFeedProvider
from govoplan_connectors.backend.feeds import (
FEED_PRIVATE_PUBLISH_SCOPE,
FEED_PUBLISH_SCOPE,
ConnectorFeedProvider,
)
from govoplan_connectors.backend.provider_state import (
SANCTIONS_PROVIDER_ID,
TABULAR_PROVIDER_ID,
@@ -77,11 +81,11 @@ from govoplan_connectors.backend.provider_state import (
MODULE_ID = "connectors"
MODULE_VERSION = "0.1.18"
MODULE_VERSION = "0.1.19"
TABULAR_SOURCE_INTERFACE_VERSION = "0.1.0"
DATASOURCE_ORIGIN_INTERFACE_VERSION = "0.1.0"
SANCTIONS_SNAPSHOT_INTERFACE_VERSION = "1.0.0"
FEED_INTERFACE_VERSION = "0.1.0"
FEED_INTERFACE_VERSION = "0.2.0"
CONNECTOR_RUNTIME_INTERFACE_VERSION = "1.0.0"
ARCHITECTURE = ModuleArchitectureDeclaration(
@@ -278,6 +282,16 @@ PERMISSIONS = (
"Administer connector sources",
"Manage tenant connector sources, versioned definitions, protected overrides, and review policies.",
),
_permission(
FEED_PUBLISH_SCOPE,
"Publish public feeds",
"Render provenance-bearing public RSS or Atom output from selected GovOPlaN objects.",
),
_permission(
FEED_PRIVATE_PUBLISH_SCOPE,
"Publish restricted feeds",
"Render tenant or private RSS or Atom output after the owning product surface has authorized every selected object.",
),
_permission(
SANCTIONS_READ_SCOPE,
"View sanctions source evidence",
@@ -299,6 +313,8 @@ ROLE_TEMPLATES = (
READ_SCOPE,
WRITE_SCOPE,
ADMIN_SCOPE,
FEED_PUBLISH_SCOPE,
FEED_PRIVATE_PUBLISH_SCOPE,
SANCTIONS_READ_SCOPE,
SANCTIONS_REFRESH_SCOPE,
),
@@ -310,6 +326,7 @@ ROLE_TEMPLATES = (
permissions=(
READ_SCOPE,
WRITE_SCOPE,
FEED_PUBLISH_SCOPE,
SANCTIONS_READ_SCOPE,
SANCTIONS_REFRESH_SCOPE,
),
@@ -649,8 +666,13 @@ manifest = ModuleManifest(
"Connectors owns bounded, SSRF-protected RSS/Atom transport and XML "
"parsing. Imported entries become immutable tabular snapshots exposed "
"through Datasources, including acquisition, freshness, ETag, content "
"digest, and source provenance. Portal or Reporting owns publication "
"routes and must pass the allowed visibility set when rendering output. "
"digest, and source provenance. Emission accepts only provenance-bearing "
"event, publication, case, or report selections from an owning surface. "
"The requested audience determines the visibility ceiling: public output "
"contains only public entries, while tenant or private output requires a "
"separate restricted-feed permission. Callers cannot supply their own "
"visibility allow-list. Portal or Reporting owns durable publication "
"routes and must re-authorize access on every restricted feed request. "
"A separate RSS module is only warranted if GovOPlaN later needs a "
"dedicated feed-reader product surface."
),