Summary
MeshCore infrastructure listing should not return every observed MC node. Add an explicit operator-controlled flag on ObservedNode and tighten the infrastructure endpoint.
UI tracking: meshflow-ui#307
Background
GET /api/nodes/observed-nodes/infrastructure/?protocol=meshcore currently returns all protocol=MESHCORE rows in the time window. Meshtastic infra correctly uses meshtastic_role ∈ INFRASTRUCTURE_ROLES. MeshCore has no equivalent role model; filtering by repeater/type alone is too loose.
Design
ObservedNode.mc_is_infrastructure
BooleanField, default=False
- Meaningful only for
protocol=MESHCORE; ignore or reject writes on Meshtastic rows
- Does not replace MT infrastructure semantics
Infrastructure list
protocol=meshtastic (default): unchanged (protocol=MESHTASTIC + infrastructure roles)
protocol=meshcore: protocol=MESHCORE and mc_is_infrastructure=True
Write API
- Expose on observed-node PATCH and/or dedicated action (e.g.
POST …/observed-nodes/{id}/set-mc-infrastructure/)
- Permissions: Django
feeder group or is_staff only; deny for plain authenticated users
- Document in
docs/permissions/README.md and openapi.yaml
Tasks
Acceptance criteria
- Only flagged MC nodes appear in meshcore infrastructure API results.
- Non-feeder non-admin users receive 403 on flag writes.
- MT infrastructure list unchanged.
Summary
MeshCore infrastructure listing should not return every observed MC node. Add an explicit operator-controlled flag on
ObservedNodeand tighten the infrastructure endpoint.UI tracking: meshflow-ui#307
Background
GET /api/nodes/observed-nodes/infrastructure/?protocol=meshcorecurrently returns allprotocol=MESHCORErows in the time window. Meshtastic infra correctly usesmeshtastic_role∈INFRASTRUCTURE_ROLES. MeshCore has no equivalent role model; filtering by repeater/type alone is too loose.Design
ObservedNode.mc_is_infrastructureBooleanField,default=Falseprotocol=MESHCORE; ignore or reject writes on Meshtastic rowsInfrastructure list
protocol=meshtastic(default): unchanged (protocol=MESHTASTIC+ infrastructure roles)protocol=meshcore:protocol=MESHCOREandmc_is_infrastructure=TrueWrite API
POST …/observed-nodes/{id}/set-mc-infrastructure/)feedergroup oris_staffonly; deny for plain authenticated usersdocs/permissions/README.mdandopenapi.yamlTasks
infrastructureaction filter for meshcoreAcceptance criteria