syntax = "proto3"; package appversion; import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; import "google/protobuf/timestamp.proto"; import "google/api/annotations.proto"; option csharp_namespace = "CMSMicroservice.Protobuf.Protos.AppVersion"; // Service for tracking app versions and cache invalidation service AppVersionContract { // Get current version for an app - called by frontends to check if cache clear is needed rpc GetAppVersion(GetAppVersionRequest) returns (GetAppVersionResponse){ option (google.api.http) = { get: "/AppVersion/Get" }; }; // Update/Create app version - called by admin when deploying new version rpc UpdateAppVersion(UpdateAppVersionRequest) returns (google.protobuf.Empty){ option (google.api.http) = { post: "/AppVersion/Update" body: "*" }; }; // Get all app versions rpc GetAllAppVersions(GetAllAppVersionsRequest) returns (GetAllAppVersionsResponse){ option (google.api.http) = { get: "/AppVersion/GetAll" }; }; } // Request to get current version for specific app message GetAppVersionRequest { string app_name = 1; // e.g., "FrontOffice", "BackOffice", "Mobile" google.protobuf.StringValue current_client_version = 2; // Current version on client for comparison } // Response with version info message GetAppVersionResponse { bool found = 1; // Whether the app was found string app_name = 2; string current_version = 3; string min_required_version = 4; bool requires_full_cache_clear = 5; bool requires_update = 6; // True if client version < min_required_version google.protobuf.StringValue update_message = 7; google.protobuf.StringValue release_notes = 8; google.protobuf.Timestamp last_updated = 9; } // Request to update/create app version message UpdateAppVersionRequest { string app_name = 1; string current_version = 2; google.protobuf.StringValue min_required_version = 3; bool requires_full_cache_clear = 4; google.protobuf.StringValue update_message = 5; google.protobuf.StringValue release_notes = 6; google.protobuf.StringValue update_reason = 7; // For admin logs } // Request to get all app versions message GetAllAppVersionsRequest { bool include_inactive = 1; } // Response with all app versions message GetAllAppVersionsResponse { repeated AppVersionItem items = 1; } message AppVersionItem { int64 id = 1; string app_name = 2; string current_version = 3; string min_required_version = 4; bool requires_full_cache_clear = 5; string update_message = 6; string release_notes = 7; bool is_active = 8; google.protobuf.Timestamp created = 9; google.protobuf.Timestamp last_modified = 10; }