syntax = "proto3"; package model; import "google/protobuf/timestamp.proto"; message EditMetadata { string created_by = 1; string updated_by = 2; google.protobuf.Timestamp created = 3; google.protobuf.Timestamp updated = 4; } message Version { string tag = 1; bool active = 2; google.protobuf.Timestamp expired = 3; } message Domain { string id = 1; string name = 2; repeated Catalog catalogs = 3; } message Catalog { string id = 1; string name = 2; Domain domain = 3; repeated Datum datums = 5; EditMetadata metadata = 6; } message Datum { string id = 1; string name = 2; Version version = 3; Catalog catalog = 4; repeated Snapshot snapshots = 5; EditMetadata metadata = 6; } message Snapshot { string id = 1; uint32 sequence = 2; Datum datum = 3; Location location = 4; Schema schema = 5; Flow flow = 6; } message Location { string id = 1; string vendor = 2; string host = 3; uint32 port = 4; string username = 5; string password = 6; } message Schema { string name = 1; string json = 2; } message Flow { Location source = 1; Location target = 2; Workflow workflow = 3; Transform transform = 4; } message Workflow { string code = 1; } message Transform { string code = 1; }