| `partner_op_id` | UUID | NOT NULL, FK → partner_ops(id) | |
| `permitted_api_types` | JSONB | NOT NULL | API types allowed under this agreement |
| `permitted_zone_ids` | JSONB | DEFAULT '[]' | Edge zone UUIDs (`zone.id`, ADR-0017) the partner may access |
| `service_spec_mappings` | JSONB | NOT NULL, DEFAULT '{}' | Partner `appId` / API family → local `service_specification_id` (ADR-0018) |
| `permitted_zone_ids` | JSONB | DEFAULT '[]' | OPG.04 `ZoneIdentifier` strings permitted in this directed federation. Local zones map explicitly to SRM `zone.id` UUIDs; partner-issued values remain opaque strings |
| `service_spec_mappings` | JSONB | NOT NULL, DEFAULT '{}' | `(appId, appVersion, flavourId)` → local service specification + deployable artifact/resource profile; Service API family → local `service_specification_id` (ADR-0018) |
| `usage_limits` | JSONB | DEFAULT '{}' | Rate/volume limits per API type |
| `resource_data` | JSONB | NOT NULL | Zone details, capability metadata, availability |
| `resource_data` | JSONB | NOT NULL | OPG.04 zone details/capability metadata, including the opaque external `zoneId` and the explicit local `zone.id` mapping where we own the zone |
@@ -261,7 +264,7 @@ status remains `federation_transactions` in PostgreSQL.
| Stream | Subjects | Role |
|---|---|---|
| `OOP_TASKS` | `command.srm.service.{deploy,scale,terminate}`, `command.srm.network.capability.{activate,update,deactivate}` | FM publishes; SRM consumes. Every command carries `CommandEnvelopeV1` with `source=federation`, `federation_partner_ref`, `app_provider_id=partner.id` (ADR-0001, ADR-0018) |
| `OOP_TASKS` | `command.srm.service.{deploy,terminate}`, `command.srm.network.capability.{activate,deactivate}` | FM publishes; SRM consumes. Every command carries `CommandEnvelopeV1` with `source=federation`, `federation_partner_ref`, `app_provider_id=partner.id` (ADR-0001, ADR-0018); network-capability payloads carry `source_spec``family=gsma_opg` (RD §K.2). FM does not publish `service.scale` (no OPG.04 v1.4.0 operation maps to it) or `network.capability.update` (needs an explicit OPG.04 profile/extension first; REQ-FED-16) |
| `OOP_EVENTS` | `event.srm.operation.status`, `event.srm.operation.completed`, `event.srm.catalog.updated` | FM consumes via durable `fm-event-worker` (explicit ack, max-deliver 3) |
OEG-proxied federation establishment is a separate FM command input under