diff --git a/.project b/.project
new file mode 100644
index 00000000..cf127aba
--- /dev/null
+++ b/.project
@@ -0,0 +1,28 @@
+
+
+ proton
+ Project proton created by Buildship.
+
+
+
+
+ org.eclipse.buildship.core.gradleprojectbuilder
+
+
+
+
+
+ org.eclipse.buildship.core.gradleprojectnature
+
+
+
+ 1625977453235
+
+ 30
+
+ org.eclipse.core.resources.regexFilterMatcher
+ node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
+
+
+
+
diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 00000000..abac91ec
--- /dev/null
+++ b/.settings/org.eclipse.buildship.core.prefs
@@ -0,0 +1,13 @@
+arguments=
+auto.sync=false
+build.scans.enabled=false
+connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
+connection.project.dir=
+eclipse.preferences.version=1
+gradle.user.home=
+java.home=/usr/local/Cellar/openjdk/16.0.1/libexec/openjdk.jdk/Contents/Home
+jvm.arguments=
+offline.mode=false
+override.workspace.settings=true
+show.console.view=true
+show.executions.view=true
diff --git a/odpf/entities/common/event.proto b/odpf/entities/common/event.proto
new file mode 100644
index 00000000..b2bf5371
--- /dev/null
+++ b/odpf/entities/common/event.proto
@@ -0,0 +1,25 @@
+syntax = "proto3";
+
+package odpf.entities.common;
+
+option java_package = "io.odpf.entities.common";
+option java_outer_classname = "Event";
+option go_package = "github.com/odpf/proton/entities/common";
+
+import "google/protobuf/timestamp.proto";
+
+// Event represents an event in the system.
+// Event is majorly used to represent the state of the system in the form of events.
+// It can be used in any schema which intend to produce events to message bus.
+message Event {
+ // Required. The timestamp of the event.
+ // For example "2018-01-01T00:00:00Z".
+ google.protobuf.Timestamp timestamp = 1;
+ // Optional. The activity that created the event.
+ // For example "create", "update".
+ string action = 2;
+ // Optional. The description of the event.
+ // For example "user is created from signup form".
+ string description = 3;
+
+}
diff --git a/odpf/entities/common/resource.proto b/odpf/entities/common/resource.proto
new file mode 100644
index 00000000..bb84055f
--- /dev/null
+++ b/odpf/entities/common/resource.proto
@@ -0,0 +1,25 @@
+syntax = "proto3";
+
+package odpf.entities.common;
+
+option java_package = "io.odpf.entities.common";
+option java_outer_classname = "Resource";
+option go_package = "github.com/odpf/proton/entities/common";
+
+
+// Resource is a generic resource that represents a file or other resource.
+// It can be a data asset, job, user or group.
+message Resource {
+ // Required. The unique identifier of the resource.
+ // For example. "user:jdoe" or "group:accounting".
+ string urn = 1;
+ // Required. The name of the resource.
+ // For example. "John Doe" or "Accounting".
+ string name = 2;
+ // Required. The source of the resource.
+ // For example. "github" or "bigquery".
+ string source = 3;
+ // Required. The type of the resource.
+ // For example. "user" or "group".
+ string type = 4;
+}
diff --git a/odpf/entities/common/timestamp.proto b/odpf/entities/common/timestamp.proto
new file mode 100644
index 00000000..1679891c
--- /dev/null
+++ b/odpf/entities/common/timestamp.proto
@@ -0,0 +1,17 @@
+syntax = "proto3";
+
+package odpf.entities.common;
+
+option java_package = "io.odpf.entities.common";
+option java_outer_classname = "Timestamp";
+option go_package = "github.com/odpf/proton/entities/common";
+
+import "google/protobuf/timestamp.proto";
+
+// Timestamp represents created and modified timestamps.
+message Timestamp {
+ // Created is the timestamp when the object was created.
+ google.protobuf.Timestamp created_at = 1;
+ // Updated is the timestamp when the object was last modified.
+ google.protobuf.Timestamp updated_at = 2;
+}
diff --git a/odpf/entities/facets/columns.proto b/odpf/entities/facets/columns.proto
new file mode 100644
index 00000000..e9c397d4
--- /dev/null
+++ b/odpf/entities/facets/columns.proto
@@ -0,0 +1,34 @@
+syntax = "proto3";
+
+package odpf.entities.facets;
+
+option java_package = "io.odpf.entities.facets";
+option java_outer_classname = "Columns";
+option go_package = "github.com/odpf/proton/entities/facets";
+
+
+// Columns represents a list of columns.
+// It is facet used to specify the schema of a table or a file.
+message Columns {
+ // The list of columns.
+ repeated Column columns = 1;
+}
+
+// Column represents a column in a table or a file.
+message Column {
+ // Required. The name of the column.
+ // For example, "customer_id".
+ string name = 1;
+ // Optional. The description of the column.
+ // For example, "The unique id of the customer"
+ string description = 2;
+ // Required. The data type of the column.
+ // For example, "INT64".
+ string data_type = 3;
+ // Optional. The format of the column.
+ // For example, "true".
+ bool is_nullable = 4;
+ // Optional. The length of the column.
+ // For example, "10".
+ int64 length = 5;
+}
diff --git a/odpf/entities/facets/lineage.proto b/odpf/entities/facets/lineage.proto
new file mode 100644
index 00000000..d41f1c40
--- /dev/null
+++ b/odpf/entities/facets/lineage.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+
+package odpf.entities.facets;
+
+option java_package = "io.odpf.entities.facets";
+option java_outer_classname = "Lineage";
+option go_package = "github.com/odpf/proton/entities/facets";
+
+import "odpf/entities/common/resource.proto";
+
+// Linage reprsents the relationship of resource to other resources.
+// Relation is way of describing the relationship between two resources.
+message Lineage {
+ // The resource that is the source of the relationship.
+ // For example, a resource that is the parent of another resource.
+ repeated odpf.entity.common.Resource upstreams = 1;
+ // The resource that is the destination of the relationship.
+ // For example, a resource that is the child of another resource.
+ repeated odpf.entity.common.Resource downstreams = 2;
+}
diff --git a/odpf/entities/facets/ownership.proto b/odpf/entities/facets/ownership.proto
new file mode 100644
index 00000000..f54031c2
--- /dev/null
+++ b/odpf/entities/facets/ownership.proto
@@ -0,0 +1,29 @@
+syntax = "proto3";
+
+package odpf.entities.facets;
+
+option java_package = "io.odpf.entities.facets";
+option java_outer_classname = "Ownership";
+option go_package = "github.com/odpf/proton/entities/facets";
+
+import "odpf/entities/common/resource.proto";
+
+// Ownership is a facet that describes the ownership of a resource.
+message Ownership {
+ // Requird: The list of owners of the resource.
+ // For an example check the owner schema.
+ repeated Owner owners = 7;
+}
+
+// Owner is a facet that describes the owner of a resource.
+message Owner {
+ // Required: The name of the owner.
+ // For example: "user:johndoe".
+ string urn = 1;
+ // Optional: The name of the owner.
+ // For example: "John Doe".
+ string name = 2;
+ // Optional: The role of the owner.
+ // For example: "admin", "steward".
+ string role = 3;
+}
\ No newline at end of file
diff --git a/odpf/entities/facets/properties.proto b/odpf/entities/facets/properties.proto
new file mode 100644
index 00000000..d3fb09c9
--- /dev/null
+++ b/odpf/entities/facets/properties.proto
@@ -0,0 +1,22 @@
+syntax = "proto3";
+
+package odpf.entities.facets;
+
+option java_package = "io.odpf.entities.facets";
+option java_outer_classname = "Properties";
+option go_package = "github.com/odpf/proton/entities/facets";
+
+import "odpf/entities/common/resource.proto";
+
+message Properties {
+
+ // Optional: List of tags the user has.
+ repeated string tags = 1;
+
+ //Optional. List of labels the user has.
+ map labels = 2;
+
+ // Optional: List of properties the user has.
+ map fields = 3;
+
+}
\ No newline at end of file
diff --git a/odpf/entities/facets/schema.proto b/odpf/entities/facets/schema.proto
new file mode 100644
index 00000000..dcea24a6
--- /dev/null
+++ b/odpf/entities/facets/schema.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+
+package odpf.entities.facets;
+
+option java_package = "io.odpf.entities.facets";
+option java_outer_classname = "Schema";
+option go_package = "github.com/odpf/proton/entities/facets";
+
+
+message TopicSchema {
+ string schema_url = 1;
+ string format = 2;
+}
diff --git a/odpf/entities/resources/dashboard.proto b/odpf/entities/resources/dashboard.proto
new file mode 100644
index 00000000..8f2d4fe7
--- /dev/null
+++ b/odpf/entities/resources/dashboard.proto
@@ -0,0 +1,95 @@
+syntax = "proto3";
+
+package odpf.entities.resources;
+
+option java_package = "io.odpf.entities.resources";
+option java_outer_classname = "Dashboard";
+option go_package = "github.com/odpf/proton/entities/resources";
+
+import "odpf/entities/facets/schema.proto";
+import "odpf/entities/facets/ownership.proto";
+import "odpf/entities/facets/lineage.proto";
+import "odpf/entities/facets/properties.proto";
+
+import "odpf/entities/common/timestamp.proto";
+import "odpf/entities/common/event.proto";
+
+
+message Dashboard {
+ // Required. The unique identifier for the dashboard.
+ // For example, "dashboard-1".
+ string urn = 1;
+ // Optional. The name of the dashboard.
+ // For example, "Dashboard 1".
+ string name = 2;
+ // Required. The source of the dashboard.
+ // For example, "metabase".
+ string source = 3;
+ // Optional. The description of the dashboard.
+ // For example, "This dashboard was created by the Metabase team."
+ string description = 4;
+ // Required. The url of the dashboard.
+ // For example, "https://metabase.com/dashboard/dashboard-1".
+ string url = 5;
+ // Optional. The list of the charts in the dashboard.
+ // For an example, check the schema of the chart.
+ Chart charts = 21;
+ // Optional. The ownership of the topic.
+ // For an example check out ownership.
+ odpf.entities.facets.Ownership ownership = 31;
+ odpf.entities.facets.Properties properties = 32;
+ // Optional. The timestamp of the user's creation.
+ // Timstamp facet can be used to set the creation and updation timestamp of a user.
+ // Timestamps are defined in the timestamp schema.
+ odpf.entities.common.Timestamp timestamps = 33;
+ // Optional. The timestamp of the generated event.
+ // Event schemas is defined in the common event schema.
+ odpf.entities.common.Event event = 100;
+}
+
+message Chart {
+ // Required. The URN of the chart.
+ // For example, chart:1.
+ string urn = 1;
+ // Required. The name of the chart.
+ // For example, "My Chart".
+ string name = 2;
+ // Optional. The type of the chart.
+ // For example, "line".
+ string type = 3;
+ // Optional. The source of the chart.
+ // For example, "metabase".
+ string source = 4;
+ // Optional. The description of the chart.
+ // For example, "This is a chart for my dashboard."
+ string description = 5;
+ // Optional. The url of the chart.
+ // For example, "http://metabase.com/charts/mychart".
+ string url = 6;
+ // Optional. The raw query of the chart.
+ // For example, "SELECT * FROM my_table".
+ string raw_query = 7;
+ // Optional. The dashboard ur of the chart.
+ // For example, "dashboard:1".
+ string dashboard_urn = 8;
+ // Optional. The source of the dashboard of the chart.
+ // For example, "metabase".
+ string dashboard_source = 9;
+ // Optional. The ownership of the topic.
+ // For an example check out ownership.
+ odpf.entities.facets.Ownership ownership = 31;
+ // Optional. The lineage of the topic.
+ // For an example check out lineage schema.
+ odpf.entities.facets.Lineage lineage = 32;
+ // Optional. List of the user's custom properties.
+ // Properties facet can be used to set custom properties, tags and labels for a user.
+ // Properties are defined in the properties schema.
+ odpf.entities.facets.Properties properties = 33;
+ // Optional. The timestamp of the user's creation.
+ // Timstamp facet can be used to set the creation and updation timestamp of a user.
+ // Timestamps are defined in the timestamp schema.
+ odpf.entities.common.Timestamp timestamps = 34;
+ // Optional. The timestamp of the generated event.
+ // Event schemas is defined in the common event schema.
+ odpf.entities.common.Event event = 100;
+}
diff --git a/odpf/entities/resources/group.proto b/odpf/entities/resources/group.proto
new file mode 100644
index 00000000..1e600506
--- /dev/null
+++ b/odpf/entities/resources/group.proto
@@ -0,0 +1,53 @@
+syntax = "proto3";
+
+package odpf.entities.resources;
+
+option java_package = "io.odpf.entities.resources";
+option java_outer_classname = "Group";
+option go_package = "github.com/odpf/proton/entities/resources";
+
+
+import "odpf/entities/common/timestamp.proto";
+import "odpf/entities/common/event.proto";
+
+import "odpf/entities/facets/properties.proto";
+
+// Group represents a group of users and resources.
+message Group {
+ // Required. The unique identifier for the group.
+ // For example, "group:example".
+ string urn = 1;
+ // Optional. The name of the group.
+ // For example, "Example Group".
+ string name = 2;
+ // Optional. The email of the group.
+ // For example, "xyz@xyz.com"
+ string email = 3;
+ // Optional. Source of the group.
+ // For example, "example.com".
+ string source = 4;
+ // Required. The members of the group.
+ // For example look at schema of the member.
+ repeated Member members = 21;
+ // Optional. List of the user's custom properties.
+ // Properties facet can be used to set custom properties, tags and labels for a user.
+ // Properties are defined in the properties schema.
+ odpf.entities.facets.Properties properties = 31;
+ // Optional. The timestamp of the user's creation.
+ // Timstamp facet can be used to set the creation and updation timestamp of a user.
+ // Timestamps are defined in the timestamp schema.
+ odpf.entities.common.Timestamp timestamps = 32;
+ // Optional. The timestamp of the generated event.
+ // Event schemas is defined in the common event schema.
+ odpf.entities.common.Event event = 100;
+}
+
+// Member represents a user.
+message Member {
+ // Required. The unique identifier for the user.
+ // For example, "user:example".
+ string urn = 1;
+ // Optional. The role of the user.
+ // For example, "owner".
+ string role = 2;
+}
\ No newline at end of file
diff --git a/odpf/entities/resources/job.proto b/odpf/entities/resources/job.proto
new file mode 100644
index 00000000..56efb598
--- /dev/null
+++ b/odpf/entities/resources/job.proto
@@ -0,0 +1,51 @@
+syntax = "proto3";
+
+package odpf.entities.resources;
+
+option java_package = "io.odpf.entities.resources";
+option java_outer_classname = "Job";
+option go_package = "github.com/odpf/proton/entities/resources";
+
+import "odpf/entities/facets/columns.proto";
+import "odpf/entities/facets/ownership.proto";
+import "odpf/entities/facets/lineage.proto";
+import "odpf/entities/facets/properties.proto";
+
+import "odpf/entities/common/timestamp.proto";
+import "odpf/entities/common/event.proto";
+
+// Job is a resource that represents a job.
+message Job {
+ // Required. The unique identifier of the job.
+ // For example, "job_1".
+ string urn = 1;
+ // Optional. The name of the job.
+ // For example, "Job 1".
+ string name = 2;
+ // Optional. The source of the job.
+ // For example, "airflow".
+ string source = 3;
+ // Optional. The type of the job.
+ // For example, "firehose", "stream".
+ string type = 4;
+ // Optional. The description of the job.
+ // For example, "This job is used to process data from a stream."
+ string description = 5;
+ // Optional. The ownership of the topic.
+ // For an example check out ownership.
+ odpf.meta.facets.Ownership ownership = 31;
+ // Optional. The lineage of the topic.
+ // For an example check out lineage schema.
+ odpf.meta.facets.Lineage lineage = 32;
+ // Optional. List of the user's custom properties.
+ // Properties facet can be used to set custom properties, tags and labels for a user.
+ // Properties are defined in the properties schema.
+ odpf.meta.facets.Properties properties = 33;
+ // Optional. The timestamp of the user's creation.
+ // Timstamp facet can be used to set the creation and updation timestamp of a user.
+ // Timestamps are defined in the timestamp schema.
+ odpf.entities.common.Timestamp timestamps = 34;
+ // Optional. The timestamp of the generated event.
+ // Event schemas is defined in the common event schema.
+ odpf.entities.common.Event event = 100;
+}
\ No newline at end of file
diff --git a/odpf/entities/resources/table.proto b/odpf/entities/resources/table.proto
new file mode 100644
index 00000000..82d725c6
--- /dev/null
+++ b/odpf/entities/resources/table.proto
@@ -0,0 +1,66 @@
+syntax = "proto3";
+
+package odpf.entities.resources;
+
+option java_package = "io.odpf.entities.resources";
+option java_outer_classname = "Table";
+option go_package = "github.com/odpf/proton/entities/resources";
+
+import "odpf/entities/facets/columns.proto";
+import "odpf/entities/facets/ownership.proto";
+import "odpf/entities/facets/lineage.proto";
+import "odpf/entities/facets/properties.proto";
+
+import "odpf/entities/common/timestamp.proto";
+import "odpf/entities/common/event.proto";
+
+// Table is a table in a database.
+// It can be a file, a table, a view, a materialized view, a temporary table, or a virtual table.
+message Table {
+ // Required. The URN of the table.
+ // For example, "my-database.my-schema.my-table".
+ string urn = 1;
+ // Required. The name of the table.
+ // For example, "my-table".
+ string name = 2;
+ // Optional. The source of the table.
+ // For example, "bigquery".
+ string source = 3;
+ // Optional. The description of the table.
+ // For example, "My User table".
+ string description = 4;
+ // Optional. The metrics about the table.
+ // For example check the profile schem.
+ TableProfile profile = 21;
+ // Optional. The columns of the table.
+ // For example, "id, name, age".
+ odpf.meta.facets.Columns schema = 22;
+ // Optional. The ownership of the topic.
+ // For an example check out ownership.
+ odpf.meta.facets.Ownership ownership = 31;
+ // Optional. The lineage of the topic.
+ // For an example check out lineage schema.
+ odpf.meta.facets.Lineage lineage = 32;
+ // Optional. List of the user's custom properties.
+ // Properties facet can be used to set custom properties, tags and labels for a user.
+ // Properties are defined in the properties schema.
+ odpf.meta.facets.Properties properties = 33;
+ // Optional. The timestamp of the user's creation.
+ // Timstamp facet can be used to set the creation and updation timestamp of a user.
+ // Timestamps are defined in the timestamp schema.
+ odpf.entities.common.Timestamp timestamps = 34;
+ // Optional. The timestamp of the generated event.
+ // Event schemas is defined in the common event schema.
+ odpf.entities.common.Event event = 100;
+}
+
+// TableProfile is the metrics about the table.
+message TableProfile {
+ // Optional. The number of rows in the table.
+ // For example, "100".
+ int64 total_rows = 1;
+ // Optional. The number of rows in the table that are not deleted.
+ // For example, "event_timestamp".
+ string partition_key = 2;
+ string partition_value = 3;
+}
diff --git a/odpf/entities/resources/topic.proto b/odpf/entities/resources/topic.proto
new file mode 100644
index 00000000..8049bf2e
--- /dev/null
+++ b/odpf/entities/resources/topic.proto
@@ -0,0 +1,64 @@
+syntax = "proto3";
+
+package odpf.entities.resources;
+
+option java_package = "io.odpf.entities.resources";
+option java_outer_classname = "Topic";
+option go_package = "github.com/odpf/proton/entities/resources";
+
+import "odpf/entities/facets/schema.proto";
+import "odpf/entities/facets/ownership.proto";
+import "odpf/entities/facets/lineage.proto";
+import "odpf/entities/facets/properties.proto";
+
+import "odpf/entities/common/timestamp.proto";
+import "odpf/entities/common/event.proto";
+
+// Topic is resource that represents a logical group of messages.
+message Topic {
+ // Required. The URN of the topic.
+ // For example, "urn:odpf:topic:my-topic".
+ string urn = 1;
+ // Required. The name of the topic.
+ // For example, "My Topic".
+ string name = 2;
+ // Optional. The source of the topic.
+ // For example, "kafka", "pubsub".
+ string source = 3;
+ // Optional. The description of the topic.
+ // For example, "This is a topic for my application."
+ string description = 4;
+ // Optional. The metrics of the topic.
+ // For an example check out topic profile schema.
+ TopicProfile profile = 21;
+ // Optional. The schama of the topic.
+ // For an example check out topic schema.
+ odpf.entities.facets.TopicSchema schema = 31;
+ // Optional. The ownership of the topic.
+ // For an example check out ownership.
+ odpf.entities.facets.Ownership ownership = 32;
+ // Optional. The lineage of the topic.
+ // For an example check out lineage schema.
+ odpf.entities.facets.Lineage lineage = 33;
+ // Optional. List of the user's custom properties.
+ // Properties facet can be used to set custom properties, tags and labels for a user.
+ // Properties are defined in the properties schema.
+ odpf.entities.facets.Properties properties = 34;
+ // Optional. The timestamp of the user's creation.
+ // Timstamp facet can be used to set the creation and updation timestamp of a user.
+ // Timestamps are defined in the timestamp schema.
+ odpf.entities.common.Timestamp timestamps = 35;
+ // Optional. The timestamp of the generated event.
+ // Event schemas is defined in the common event schema.
+ odpf.entities.common.Event event = 100;
+}
+
+// TopicProfile is the profile of the topic.
+message TopicProfile {
+ // Optional. The thrroughput of the topic.
+ // For example: "1m/minute".
+ string throughput = 1;
+ // Optional. The number of partitions in the topic.
+ // For example: 12.
+ int64 number_of_partitions = 2;
+}
diff --git a/odpf/entities/resources/user.proto b/odpf/entities/resources/user.proto
new file mode 100644
index 00000000..c46949ad
--- /dev/null
+++ b/odpf/entities/resources/user.proto
@@ -0,0 +1,93 @@
+syntax = "proto3";
+
+package odpf.entities.resources;
+
+option java_package = "io.odpf.entities.resources";
+option java_outer_classname = "User";
+option go_package = "github.com/odpf/proton/entities/resources";
+
+
+import "odpf/entities/common/timestamp.proto";
+import "odpf/entities/common/event.proto";
+
+import "odpf/entities/facets/properties.proto";
+
+// User is a person who uses or operates something.
+// It can be a user of the system, or a user of a device.
+// User is a resource that represents a user.
+message User {
+ // Required. The unique identifier of the user
+ // For example "user:jdoe"
+ string urn = 1;
+ // Optional. The source of the user account.
+ // For example "github"
+ string source = 2;
+ // Required. The emai address of the user.
+ // For example "job.deo@gmail.com"
+ string email = 3;
+ // Required. The username of the user.
+ // For example "johndoe"
+ string username = 4;
+ // Optional. The first name of the user.
+ // For example "john"
+ string first_name = 5;
+ // Optional. The last name of the user.
+ // For example "doe"
+ string last_name = 6;
+ // Optional. The full name of the user.
+ // For example "john mayer doe"
+ string full_name = 7;
+ // Optional. The display name of the user.
+ // For example "John M. Doe"
+ string display_name = 8;
+ // Optional. The job title of the user,
+ // For example "data engineer"
+ string title = 9;
+ // Required. The status of the user.
+ // For example "true"
+ bool is_active = 10;
+ // Optional. The email of the manger of the user.
+ // For example "rambo.ryan@gmail.com"
+ string manager_email = 11;
+ // Optional. List of the user social media accounts.
+ // For an example check out the profile schema.
+ repeated Profile profiles = 21;
+ // Optional. List of the groups user belongs to.
+ // A user can be part of multiple groups and have a different role in every group.
+ // For an example check out the membership schema.
+ repeated Membership memberships = 22;
+ // Optional. List of the user's custom properties.
+ // Properties facet can be used to set custom properties, tags and labels for a user.
+ // Properties are defined in the properties schema.
+ odpf.entities.facets.Properties properties = 31;
+ // Optional. The timestamp of the user's creation.
+ // Timstamp facet can be used to set the creation and updation timestamp of a user.
+ // Timestamps are defined in the timestamp schema.
+ odpf.entities.common.Timestamp timestamps = 32;
+ // Optional. The timestamp of the generated event.
+ // Event schemas is defined in the common event schema.
+ odpf.entities.common.Event event = 100;
+}
+
+// Membership is a relationship between a user and a group.
+message Membership {
+ // Required. The unique identifier of the group.
+ // For example "group:mygroup"
+ string group_urn = 1;
+ // Required. The role user has in the group.
+ // For example "owner"
+ repeated string role = 2;
+}
+
+// Profile is a social media account of the user.
+message Profile {
+ // Required. The unique identifier of the profile.
+ // For example "profile:jdoe"
+ string id = 1;
+ // Required. The type of the profile.
+ // For example "github"
+ string platform = 2;
+ // Required. The url of the profile.
+ // For example "http://github.com/jdoe"
+ string url = 3;
+}
diff --git a/odpf/meta/Chart.proto b/odpf/meta/Chart.proto
deleted file mode 100644
index 27c4d2c4..00000000
--- a/odpf/meta/Chart.proto
+++ /dev/null
@@ -1,36 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta;
-
-option java_package = "io.odpf.proton.meta";
-option java_outer_classname = "Chart";
-option go_package = "github.com/odpf/proton/meta";
-
-import "odpf/meta/facets/Ownership.proto";
-import "odpf/meta/facets/Lineage.proto";
-import "odpf/meta/facets/Tags.proto";
-import "odpf/meta/facets/Custom.proto";
-import "odpf/meta/common/Timestamp.proto";
-import "odpf/meta/common/Event.proto";
-
-message ChartKey {
- string urn = 1;
-}
-
-message Chart {
- string urn = 1;
- string name = 2;
- string type = 3;
- string source = 4;
- string description = 5;
- string url = 6;
- string raw_query = 7;
- string dashboard_urn = 8;
- string dashboard_source = 9;
- odpf.meta.facets.Ownership ownership = 21;
- odpf.meta.facets.Lineage lineage = 22;
- odpf.meta.facets.Tags tags = 23;
- odpf.meta.facets.Custom custom = 24;
- odpf.meta.common.Timestamp timestamps = 25;
- odpf.meta.common.Event event = 100;
-}
diff --git a/odpf/meta/Dashboard.proto b/odpf/meta/Dashboard.proto
deleted file mode 100644
index a6dc539e..00000000
--- a/odpf/meta/Dashboard.proto
+++ /dev/null
@@ -1,32 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta;
-
-option java_package = "io.odpf.proton.meta";
-option java_outer_classname = "Dashboard";
-option go_package = "github.com/odpf/proton/meta";
-
-import "odpf/meta/Chart.proto";
-import "odpf/meta/facets/Ownership.proto";
-import "odpf/meta/facets/Tags.proto";
-import "odpf/meta/facets/Custom.proto";
-import "odpf/meta/common/Timestamp.proto";
-import "odpf/meta/common/Event.proto";
-
-message DashboardKey {
- string urn = 1;
-}
-
-message Dashboard {
- string urn = 1;
- string name = 2;
- string source = 3;
- string description = 4;
- string url = 5;
- repeated odpf.meta.Chart charts = 6;
- odpf.meta.facets.Ownership ownership = 21;
- odpf.meta.facets.Tags tags = 22;
- odpf.meta.facets.Custom custom = 23;
- odpf.meta.common.Timestamp timestamps = 24;
- odpf.meta.common.Event event = 100;
-}
diff --git a/odpf/meta/Group.proto b/odpf/meta/Group.proto
deleted file mode 100644
index 4dd24ba1..00000000
--- a/odpf/meta/Group.proto
+++ /dev/null
@@ -1,33 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta;
-
-option java_package = "io.odpf.proton.meta";
-option java_outer_classname = "Group";
-option go_package = "github.com/odpf/proton/meta";
-
-import "odpf/meta/facets/Tags.proto";
-import "odpf/meta/facets/Custom.proto";
-import "odpf/meta/common/Timestamp.proto";
-import "odpf/meta/common/Event.proto";
-
-message GroupKey {
- string urn = 1;
-}
-
-message Group {
- string urn = 1;
- string name = 2;
- string email = 3;
- string source = 4;
- repeated Member members = 5;
- odpf.meta.facets.Tags tags = 21;
- odpf.meta.facets.Custom custom = 22;
- odpf.meta.common.Timestamp timestamps = 23;
- odpf.meta.common.Event event = 100;
-}
-
-message Member {
- string urn = 1;
- string role = 2;
-}
\ No newline at end of file
diff --git a/odpf/meta/Job.proto b/odpf/meta/Job.proto
deleted file mode 100644
index 137f2081..00000000
--- a/odpf/meta/Job.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta;
-
-option java_package = "io.odpf.proton.meta";
-option java_outer_classname = "Job";
-option go_package = "github.com/odpf/proton/meta";
-
-import "odpf/meta/facets/Lineage.proto";
-import "odpf/meta/facets/Tags.proto";
-import "odpf/meta/facets/Custom.proto";
-import "odpf/meta/common/Timestamp.proto";
-import "odpf/meta/common/Event.proto";
-
-message JobKey {
- string urn = 1;
-}
-
-message Job {
- string urn = 1;
- string name = 2;
- string source = 3;
- string type = 4;
- string description = 5;
- repeated odpf.meta.facets.Lineage lineage = 6;
- odpf.meta.facets.Tags tags = 21;
- odpf.meta.facets.Custom custom = 22;
- odpf.meta.common.Timestamp timestamps = 23;
- odpf.meta.common.Event event = 100;
-}
diff --git a/odpf/meta/Table.proto b/odpf/meta/Table.proto
deleted file mode 100644
index 2418b51a..00000000
--- a/odpf/meta/Table.proto
+++ /dev/null
@@ -1,40 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta;
-
-option java_package = "io.odpf.proton.meta";
-option java_outer_classname = "Table";
-option go_package = "github.com/odpf/proton/meta";
-
-import "odpf/meta/facets/Columns.proto";
-import "odpf/meta/facets/Ownership.proto";
-import "odpf/meta/facets/Lineage.proto";
-import "odpf/meta/facets/Tags.proto";
-import "odpf/meta/facets/Custom.proto";
-import "odpf/meta/common/Timestamp.proto";
-import "odpf/meta/common/Event.proto";
-
-message TableKey {
- string urn = 1;
-}
-
-message Table {
- string urn = 1;
- string name = 2;
- string source = 3;
- string description = 4;
- TableProfile profile = 5;
- odpf.meta.facets.Columns schema = 6;
- odpf.meta.facets.Ownership ownership = 7;
- odpf.meta.facets.Lineage lineage = 8;
- odpf.meta.facets.Tags tags = 21;
- odpf.meta.facets.Custom custom = 22;
- odpf.meta.common.Timestamp timestamps = 23;
- odpf.meta.common.Event event = 100;
-}
-
-message TableProfile {
- int64 total_rows = 1;
- string partition_key = 2;
- string partition_value = 3;
-}
diff --git a/odpf/meta/Topic.proto b/odpf/meta/Topic.proto
deleted file mode 100644
index 97a892c4..00000000
--- a/odpf/meta/Topic.proto
+++ /dev/null
@@ -1,39 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta;
-
-option java_package = "io.odpf.proton.meta";
-option java_outer_classname = "Topic";
-option go_package = "github.com/odpf/proton/meta";
-
-import "odpf/meta/facets/TopicSchema.proto";
-import "odpf/meta/facets/Ownership.proto";
-import "odpf/meta/facets/Lineage.proto";
-import "odpf/meta/facets/Tags.proto";
-import "odpf/meta/facets/Custom.proto";
-import "odpf/meta/common/Timestamp.proto";
-import "odpf/meta/common/Event.proto";
-
-message TopicKey {
- string urn = 1;
-}
-
-message Topic {
- string urn = 1;
- string name = 2;
- string source = 3;
- string description = 4;
- TopicProfile profile = 5;
- odpf.meta.facets.TopicSchema schema = 6;
- odpf.meta.facets.Ownership ownership = 7;
- odpf.meta.facets.Lineage lineage = 8;
- odpf.meta.facets.Tags tags = 21;
- odpf.meta.facets.Custom custom = 22;
- odpf.meta.common.Timestamp timestamps = 23;
- odpf.meta.common.Event event = 100;
-}
-
-message TopicProfile {
- int64 throughput = 1;
- int64 number_of_partitions = 2;
-}
diff --git a/odpf/meta/User.proto b/odpf/meta/User.proto
deleted file mode 100644
index e8d20e0b..00000000
--- a/odpf/meta/User.proto
+++ /dev/null
@@ -1,48 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta;
-
-option java_package = "io.odpf.proton.meta";
-option java_outer_classname = "User";
-option go_package = "github.com/odpf/proton/meta";
-
-import "odpf/meta/facets/Tags.proto";
-import "odpf/meta/facets/Custom.proto";
-import "odpf/meta/common/Timestamp.proto";
-import "odpf/meta/common/Event.proto";
-
-message UserKey {
- string urn = 1;
-}
-
-message User {
- string urn = 1;
- string source = 2;
- string email = 3;
- string username = 4;
- string first_name = 5;
- string last_name = 6;
- string full_name = 7;
- string display_name = 8;
- string title = 9;
- bool is_active = 10;
- string manager_email = 11;
- repeated Profile profiles = 12;
- repeated Membership memberships = 20;
- odpf.meta.facets.Tags tags = 21;
- odpf.meta.facets.Custom custom = 22;
- odpf.meta.common.Timestamp timestamps = 23;
- odpf.meta.common.Event event = 100;
-}
-
-message Membership {
- string group_urn = 1;
- repeated string role = 2;
-}
-
-message Profile {
- string id = 1;
- string platform = 2;
- string url = 3;
-}
-
diff --git a/odpf/meta/common/Event.proto b/odpf/meta/common/Event.proto
deleted file mode 100644
index 3cd37af6..00000000
--- a/odpf/meta/common/Event.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.common;
-
-option java_package = "io.odpf.proton.meta.common";
-option java_outer_classname = "Event";
-option go_package = "github.com/odpf/proton/meta/common";
-
-import "google/protobuf/timestamp.proto";
-
-message Event {
- string action = 1;
- string description = 2;
- google.protobuf.Timestamp timestamp = 100;
-}
diff --git a/odpf/meta/common/Resource.proto b/odpf/meta/common/Resource.proto
deleted file mode 100644
index fbdde09b..00000000
--- a/odpf/meta/common/Resource.proto
+++ /dev/null
@@ -1,14 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.common;
-
-option java_package = "io.odpf.proton.meta.common";
-option java_outer_classname = "Resource";
-option go_package = "github.com/odpf/proton/meta/common";
-
-message Resource {
- string urn = 1;
- string name = 2;
- string source = 3;
- string type = 4;
-}
diff --git a/odpf/meta/common/Timestamp.proto b/odpf/meta/common/Timestamp.proto
deleted file mode 100644
index eec94f97..00000000
--- a/odpf/meta/common/Timestamp.proto
+++ /dev/null
@@ -1,14 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.common;
-
-option java_package = "io.odpf.proton.meta.common";
-option java_outer_classname = "Timestamp";
-option go_package = "github.com/odpf/proton/meta/common";
-
-import "google/protobuf/timestamp.proto";
-
-message Timestamp {
- google.protobuf.Timestamp created_at = 1;
- google.protobuf.Timestamp updated_at = 2;
-}
diff --git a/odpf/meta/facets/Columns.proto b/odpf/meta/facets/Columns.proto
deleted file mode 100644
index c3756554..00000000
--- a/odpf/meta/facets/Columns.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.facets;
-
-option java_package = "io.odpf.proton.meta.facets";
-option java_outer_classname = "Columns";
-option go_package = "github.com/odpf/proton/meta/facets";
-
-message Columns {
- repeated Column columns = 1;
-}
-
-message Column {
- string name = 1;
- string description = 2;
- string data_type = 3;
- bool is_nullable = 4;
- int64 length = 5;
-}
diff --git a/odpf/meta/facets/Custom.proto b/odpf/meta/facets/Custom.proto
deleted file mode 100644
index 5997697c..00000000
--- a/odpf/meta/facets/Custom.proto
+++ /dev/null
@@ -1,11 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.facets;
-
-option java_package = "io.odpf.proton.meta.facets";
-option java_outer_classname = "Custom";
-option go_package = "github.com/odpf/proton/meta/facets";
-
-message Custom {
- map custom_properties = 1;
-}
diff --git a/odpf/meta/facets/Lineage.proto b/odpf/meta/facets/Lineage.proto
deleted file mode 100644
index 0b54206b..00000000
--- a/odpf/meta/facets/Lineage.proto
+++ /dev/null
@@ -1,14 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.facets;
-
-option java_package = "io.odpf.proton.meta.facets";
-option java_outer_classname = "Lineage";
-option go_package = "github.com/odpf/proton/meta/facets";
-
-import "odpf/meta/common/Resource.proto";
-
-message Lineage {
- repeated odpf.meta.common.Resource upstreams = 1;
- repeated odpf.meta.common.Resource downstreams = 2;
-}
diff --git a/odpf/meta/facets/Ownership.proto b/odpf/meta/facets/Ownership.proto
deleted file mode 100644
index da58c7f7..00000000
--- a/odpf/meta/facets/Ownership.proto
+++ /dev/null
@@ -1,17 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.facets;
-
-option java_package = "io.odpf.proton.meta.facets";
-option java_outer_classname = "Ownership";
-option go_package = "github.com/odpf/proton/meta/facets";
-
-message Ownership {
- repeated Owner owners = 7;
-}
-
-message Owner {
- string urn = 1;
- string name = 2;
- string role = 3;
-}
\ No newline at end of file
diff --git a/odpf/meta/facets/Tags.proto b/odpf/meta/facets/Tags.proto
deleted file mode 100644
index 22a6611a..00000000
--- a/odpf/meta/facets/Tags.proto
+++ /dev/null
@@ -1,11 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.facets;
-
-option java_package = "io.odpf.proton.meta.facets";
-option java_outer_classname = "Tags";
-option go_package = "github.com/odpf/proton/meta/facets";
-
-message Tags {
- map tags = 1;
-}
diff --git a/odpf/meta/facets/TopicSchema.proto b/odpf/meta/facets/TopicSchema.proto
deleted file mode 100644
index 4f7f9a55..00000000
--- a/odpf/meta/facets/TopicSchema.proto
+++ /dev/null
@@ -1,12 +0,0 @@
-syntax = "proto3";
-
-package odpf.meta.facets;
-
-option java_package = "io.odpf.proton.meta.facets";
-option java_outer_classname = "TopicSchema";
-option go_package = "github.com/odpf/proton/meta/facets";
-
-message TopicSchema {
- string schema_url = 1;
- string format = 2;
-}
diff --git a/odpf/metadata/dataset.proto b/odpf/metadata/dataset.proto
new file mode 100644
index 00000000..9cb3617b
--- /dev/null
+++ b/odpf/metadata/dataset.proto
@@ -0,0 +1,5 @@
+syntax = "proto3";
+
+message Dataset {
+
+}
\ No newline at end of file