syntax = "proto3"; package charybdis.core; import "core/common.proto"; // ServiceMetadata represents identifying information for a service entity // Compatible with Backstage Component metadata structure message ServiceMetadata { // Required: The name of the service string name = 1; // Optional: Namespace for organizational grouping (e.g., "production", "staging") string namespace = 2; // Optional: Human-readable description of what this service does string description = 3; // Optional: Labels for categorization and filtering repeated string labels = 4; // Optional: Tags for additional classification repeated string tags = 5; // Optional: Links to external resources repeated Link links = 6; } // ServiceSpec represents configuration and behavior for a service entity // Compatible with Backstage Component spec structure message ServiceSpec { // Type of service (e.g., "backend-service", "frontend", "api", "website") string type = 1; // Lifecycle stage (e.g., "production", "experimental", "deprecated") string lifecycle = 2; // Owner team or individual (e.g., "team-platform", "john.doe@company.com") string owner = 3; // Optional: Parent system this service belongs to string system = 4; // Optional: Sub-component of another service string subcomponent_of = 5; // Optional: Services this service depends on repeated string depends_on = 6; // Optional: Services that provide APIs this service consumes repeated string consumes_apis = 7; // Optional: APIs that this service provides repeated string provides_apis = 8; }