api/edge_lifecycle.proto
Rama main · réplica de lectura del repositorio original.
syntax = "proto3";
package liaison.edge_lifecycle;
option go_package = "github.com/liaisonio/liaison/api/edge_lifecycle;edge_lifecycle";
// Additive Edge RPC contract: edge_installation_status, empty JSON object input.
// Existing Manager/Edge versions do not need to implement this RPC.
// This is a read-only preflight; verified ownership is NOT uninstall authority.
// Console: GET /api/v1/edges/{id}/installation requires connectors.uninstall
// plus visibility of the specified connector. Offline/old Edges return a safe
// unsupported status. Execution additionally requires local Edge opt-in.
message InstallationStatus {
uint32 version = 1;
string platform = 2;
string instance_id = 3;
string service = 4;
string installation_kind = 5;
bool legacy = 6;
bool ownership_verified = 7;
bool can_uninstall = 8;
// Stable, safe reason code. Never contains credentials or raw native errors.
string reason = 9;
string runtime_id = 10; // Random per-process binding; rejects commands after restart.
}
// POST /api/v1/edges/{id}/uninstall: authenticated, scoped management
// permission plus exact connector name and freshly obtained instance binding.
message CreateUninstallTask { string confirm_name = 1; string instance_id = 2; }
// GET /api/v1/edges/{id}/uninstall/{task_id}: same authorization as create.
// The reserved task ID "active" retrieves the outstanding task, or null.
message UninstallTask {
string id = 1; uint64 edge_id = 2; string instance_id = 3;
string status = 4; string reason = 5; string expires_at = 6; // RFC3339 in HTTP JSON
}
// Edge RPC edge_uninstall: the URL is constrained to the configured Manager
// hostname. Token is short-lived and permits only reporting this task's result.
message UninstallCommand {
string task_id = 1; string instance_id = 2; int64 expires_at = 3;
string callback_url = 4; string callback_token = 5;
string runtime_id = 6;
}
// POST /api/v1/edge-uninstall-results/{task_id}, authenticated by the task-only
// bearer token, never a user token or an Edge long-lived credential.
message UninstallResult { string status = 1; string reason = 2; }