option app_label = "simpleexampleservice";
option name = "simpleexampleservice";

message SimpleExampleService (Service){
    option verbose_name = "Simple Example Service";
    required string service_message = 1 [help_text = "Service Message to Display", max_length = 254, null = False, db_index = False, blank = False];
    optional string service_secret = 2 [help_text = "Service Secret to place in a file", null = False, db_index = False, blank = True];
}

message ColorNew (XOSBase){
     option verbose_name = "Color";
     required string name = 1 [help_text = "Name for this color", db_index = False, max_length = 256, null = False, blank = False];
     required string html_code = 2 [help_text = "Code for this color", db_index = False, max_length = 256, null = False, blank = False];
}

message ServiceInstanceWithCompute (ServiceInstance) {
    optional manytoone compute_instance->ComputeServiceInstance:service_instance_with_computes = 1 [db_index=True, null=True, blank=True];
}

message SimpleExampleServiceInstance (ServiceInstanceWithCompute){
     option verbose_name = "Example Service Instance";
     required string tenant_message = 1 [help_text = "Tenant Message to Display", max_length = 254, null = False, db_index = False, blank = False];
     optional manytoone foreground_color->ColorNew:serviceinstance_foreground_colors = 2 [db_index = True, null = True, blank = True];
     optional manytoone background_color->ColorNew:serviceinstance_background_colors = 3 [db_index = True, null = True, blank = True];
     optional string tenant_secret = 4 [help_text = "Tenant Secret to place in a file", null = False, db_index = False, blank = True];
}

message EmbeddedImageNew (XOSBase){
     option verbose_name = "Embedded Image";
     required string name = 1 [help_text = "Name for this image", db_index = False, max_length = 256, null = False, blank = False];
     required string url = 2 [help_text = "URL for this image", db_index = False, max_length = 256, null = False, blank = False];
     optional manytoone serviceinstance->SimpleExampleServiceInstance:embedded_images = 3 [db_index = True, null = True, blank = True];
}
