This is an automated email from the ASF dual-hosted git repository.

suvasude pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new 4dad872  [GOBBLIN-1261] Migrate .pdsc schemas to .pdl
4dad872 is described below

commit 4dad87236bcf6c904a5c2b6e3afc65d44cc42dc8
Author: Jack Moseley <[email protected]>
AuthorDate: Tue Sep 15 15:50:21 2020 -0700

    [GOBBLIN-1261] Migrate .pdsc schemas to .pdl
    
    Closes #3101 from jack-moseley/pdl-migration
---
 gobblin-rest-service/gobblin-rest-api/build.gradle |  3 +
 .../org/apache/gobblin/rest/JobExecutionInfo.pdl   | 84 ++++++++++++++++++
 .../org/apache/gobblin/rest/JobExecutionInfo.pdsc  | 99 ----------------------
 .../org/apache/gobblin/rest/JobExecutionQuery.pdl  | 69 +++++++++++++++
 .../org/apache/gobblin/rest/JobExecutionQuery.pdsc | 84 ------------------
 .../gobblin/rest/JobExecutionQueryResult.pdl       | 12 +++
 .../gobblin/rest/JobExecutionQueryResult.pdsc      | 16 ----
 .../pegasus/org/apache/gobblin/rest/Metric.pdl     | 31 +++++++
 .../pegasus/org/apache/gobblin/rest/Metric.pdsc    | 32 -------
 .../main/pegasus/org/apache/gobblin/rest/Table.pdl | 26 ++++++
 .../pegasus/org/apache/gobblin/rest/Table.pdsc     | 29 -------
 .../org/apache/gobblin/rest/TaskExecutionInfo.pdl  | 74 ++++++++++++++++
 .../org/apache/gobblin/rest/TaskExecutionInfo.pdsc | 87 -------------------
 .../pegasus/org/apache/gobblin/rest/TimeRange.pdl  | 22 +++++
 .../pegasus/org/apache/gobblin/rest/TimeRange.pdsc | 25 ------
 .../gobblin-rest-server/build.gradle               |  3 +
 .../org/apache/gobblin/service/ExecutionStatus.pdl | 47 ++++++++++
 .../apache/gobblin/service/ExecutionStatus.pdsc    | 17 ----
 .../org/apache/gobblin/service/FlowConfig.pdl      | 33 ++++++++
 .../org/apache/gobblin/service/FlowConfig.pdsc     | 37 --------
 .../org/apache/gobblin/service/FlowExecution.pdl   | 32 +++++++
 .../org/apache/gobblin/service/FlowExecution.pdsc  | 33 --------
 .../pegasus/org/apache/gobblin/service/FlowId.pdl  | 25 ++++++
 .../pegasus/org/apache/gobblin/service/FlowId.pdsc | 29 -------
 .../org/apache/gobblin/service/FlowStatistics.pdl  | 17 ++++
 .../org/apache/gobblin/service/FlowStatistics.pdsc | 18 ----
 .../org/apache/gobblin/service/FlowStatus.pdl      | 33 ++++++++
 .../org/apache/gobblin/service/FlowStatus.pdsc     | 34 --------
 .../org/apache/gobblin/service/FlowStatusId.pdl    | 22 +++++
 .../org/apache/gobblin/service/FlowStatusId.pdsc   | 23 -----
 .../pegasus/org/apache/gobblin/service/JobId.pdl   | 25 ++++++
 .../pegasus/org/apache/gobblin/service/JobId.pdsc  | 29 -------
 .../org/apache/gobblin/service/JobState.pdl        | 17 ++++
 .../org/apache/gobblin/service/JobState.pdsc       | 18 ----
 .../org/apache/gobblin/service/JobStatistics.pdl   | 22 +++++
 .../org/apache/gobblin/service/JobStatistics.pdsc  | 23 -----
 .../org/apache/gobblin/service/JobStatus.pdl       | 42 +++++++++
 .../org/apache/gobblin/service/JobStatus.pdsc      | 44 ----------
 .../org/apache/gobblin/service/Schedule.pdl        | 18 ++++
 .../org/apache/gobblin/service/Schedule.pdsc       | 22 -----
 .../gobblin/restli/throttling/PermitAllocation.pdl | 32 +++++++
 .../restli/throttling/PermitAllocation.pdsc        | 13 ---
 .../gobblin/restli/throttling/PermitRequest.pdl    | 32 +++++++
 .../gobblin/restli/throttling/PermitRequest.pdsc   | 13 ---
 .../apache/gobblin/restli/throttling/Policy.pdl    | 32 +++++++
 .../apache/gobblin/restli/throttling/Policy.pdsc   | 13 ---
 gradle/scripts/defaultBuildProperties.gradle       |  2 +-
 gradle/scripts/repositories.gradle                 |  3 +
 48 files changed, 757 insertions(+), 739 deletions(-)

diff --git a/gobblin-rest-service/gobblin-rest-api/build.gradle 
b/gobblin-rest-service/gobblin-rest-api/build.gradle
index e792a26..02f26a6 100644
--- a/gobblin-rest-service/gobblin-rest-api/build.gradle
+++ b/gobblin-rest-service/gobblin-rest-api/build.gradle
@@ -133,6 +133,9 @@ buildscript {
     repositories {
         mavenCentral()
         mavenLocal()
+        maven {
+            url "https://linkedin.bintray.com/maven";
+        }
     }
 
     dependencies {
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionInfo.pdl
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionInfo.pdl
new file mode 100644
index 0000000..3c4a8f6
--- /dev/null
+++ 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionInfo.pdl
@@ -0,0 +1,84 @@
+namespace org.apache.gobblin.rest
+
+/**
+ * Gobblin job execution information
+ */
+record JobExecutionInfo {
+
+  /**
+   * Job name
+   */
+  jobName: string
+
+  /**
+   * Job ID
+   */
+  jobId: string
+
+  /**
+   * Job start time (epoch time)
+   */
+  startTime: optional long
+
+  /**
+   * Job end time (epoch time)
+   */
+  endTime: optional long
+
+  /**
+   * Job duration in milliseconds
+   */
+  duration: optional long
+
+  /**
+   * Job state
+   */
+  state: optional enum JobStateEnum {
+    PENDING
+    RUNNING
+    SUCCESSFUL
+    COMMITTED
+    FAILED
+    CANCELLED
+  }
+
+  /**
+   * Number of launched tasks
+   */
+  launchedTasks: optional int
+
+  /**
+   * Number of completed tasks
+   */
+  completedTasks: optional int
+
+  /**
+   * Job launcher type
+   */
+  launcherType: optional enum LauncherTypeEnum {
+    LOCAL
+    MAPREDUCE
+    CLUSTER
+    YARN
+  }
+
+  /**
+   * Job execution tracking URL
+   */
+  trackingUrl: optional string
+
+  /**
+   * An array of task execution information records
+   */
+  taskExecutions: array[TaskExecutionInfo]
+
+  /**
+   * Job properties
+   */
+  jobProperties: optional map[string, string]
+
+  /**
+   * Job metrics
+   */
+  metrics: array[Metric]
+}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionInfo.pdsc
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionInfo.pdsc
deleted file mode 100644
index 24c34a8..0000000
--- 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionInfo.pdsc
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-  "type": "record",
-  "name": "JobExecutionInfo",
-  "namespace" : "org.apache.gobblin.rest",
-  "doc": "Gobblin job execution information",
-  "fields": [
-    {
-        "name": "jobName",
-        "type": "string",
-        "doc": "Job name"
-    },
-    {
-        "name": "jobId",
-        "type": "string",
-        "doc": "Job ID"
-    },
-    {
-        "name": "startTime",
-        "type": "long",
-        "optional": true,
-        "doc": "Job start time (epoch time)"
-    },
-    {
-        "name": "endTime",
-        "type": "long",
-        "optional": true,
-        "doc": "Job end time (epoch time)"
-    },
-    {
-        "name": "duration",
-        "type": "long",
-        "optional": true,
-        "doc": "Job duration in milliseconds"
-    },
-    {
-        "name": "state",
-        "type": {
-            "name": "JobStateEnum",
-            "type": "enum",
-            "symbols" : [ "PENDING", "RUNNING", "SUCCESSFUL", "COMMITTED", 
"FAILED", "CANCELLED" ]
-        },
-        "optional": true,
-        "doc": "Job state"
-    },
-    {
-        "name": "launchedTasks",
-        "type": "int",
-        "optional": true,
-        "doc": "Number of launched tasks"
-    },
-    {
-        "name": "completedTasks",
-        "type": "int",
-        "optional": true,
-        "doc": "Number of completed tasks"
-    },
-    {
-        "name": "launcherType",
-        "type": {
-            "name": "LauncherTypeEnum",
-            "type": "enum",
-            "symbols" : [ "LOCAL", "MAPREDUCE", "CLUSTER", "YARN" ]
-        },
-        "optional": true,
-        "doc": "Job launcher type"
-    },
-    {
-        "name": "trackingUrl",
-        "type": "string",
-        "optional": true,
-        "doc": "Job execution tracking URL"
-    },
-    {
-        "name": "taskExecutions",
-        "type": {
-            "type": "array",
-            "items": "TaskExecutionInfo"
-        },
-        "doc": "An array of task execution information records"
-    },
-    {
-        "name": "jobProperties",
-        "type": {
-            "type": "map",
-            "values": "string"
-        },
-        "optional": true,
-        "doc": "Job properties"
-    },
-    {
-        "name": "metrics",
-        "type": {
-            "type": "array",
-            "items": "Metric"
-        },
-        "doc": "Job metrics"
-    }
-  ]
-}
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQuery.pdl
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQuery.pdl
new file mode 100644
index 0000000..d4c0098
--- /dev/null
+++ 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQuery.pdl
@@ -0,0 +1,69 @@
+namespace org.apache.gobblin.rest
+
+/**
+ * Gobblin job execution query
+ */
+record JobExecutionQuery {
+
+  /**
+   * Query ID (a job ID, job name, table definition, or list type)
+   */
+  id: union[string, Table,
+    /**
+     * Listing distinct jobs fetches the most recent execution info for each 
job name in the database. Listing recent jobs fetches the most recent job 
executions, regardless of job name.
+     */
+    enum QueryListType {
+      DISTINCT
+      RECENT
+    }]
+
+  /**
+   * Query ID type
+   */
+  idType: enum QueryIdTypeEnum {
+    JOB_NAME
+    JOB_ID
+    TABLE
+    LIST_TYPE
+  }
+
+  /**
+   * Query time range
+   */
+  timeRange: optional TimeRange
+
+  /**
+   * Query limit
+   */
+  limit: optional int = 1
+
+  /**
+   * Comma-separated list of job properties to include in the query result
+   */
+  jobProperties: optional string
+
+  /**
+   * Comma-separated list of task properties to include in the query result
+   */
+  taskProperties: optional string
+
+  /**
+   * true/false if the response should include job metrics (default: true)
+   */
+  includeJobMetrics: optional boolean = true
+
+  /**
+   * true/false if the response should include task metrics (default: true)
+   */
+  includeTaskMetrics: optional boolean = true
+
+  /**
+   * true/false if the response should include task executions (default: true)
+   */
+  includeTaskExecutions: optional boolean = true
+
+  /**
+   * true/false if the response should include jobs that did not launch tasks 
(default: true)
+   */
+  includeJobsWithoutTasks: optional boolean = true
+}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQuery.pdsc
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQuery.pdsc
deleted file mode 100644
index baf7278..0000000
--- 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQuery.pdsc
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-    "type": "record",
-    "name": "JobExecutionQuery",
-    "namespace" : "org.apache.gobblin.rest",
-    "doc": "Gobblin job execution query",
-    "fields": [
-      {
-          "name": "id",
-          "type": [
-              "string",
-              "Table",
-              {
-                "name": "QueryListType",
-                "type": "enum",
-                "symbols" : [ "DISTINCT", "RECENT" ],
-                "doc": "Listing distinct jobs fetches the most recent 
execution info for each job name in the database. Listing recent jobs fetches 
the most recent job executions, regardless of job name."
-              }
-          ],
-          "doc": "Query ID (a job ID, job name, table definition, or list 
type)"
-      },
-      {
-          "name": "idType",
-          "type": {
-              "name": "QueryIdTypeEnum",
-              "type": "enum",
-              "symbols" : [ "JOB_NAME", "JOB_ID", "TABLE", "LIST_TYPE" ]
-          },
-          "doc": "Query ID type"
-      },
-      {
-          "name": "timeRange",
-          "type": "TimeRange",
-          "optional": true,
-          "doc": "Query time range"
-      },
-      {
-          "name": "limit",
-          "type": "int",
-          "optional": true,
-          "default": 1,
-          "doc": "Query limit"
-      },
-      {
-          "name": "jobProperties",
-          "type": "string",
-          "optional": true,
-          "doc": "Comma-separated list of job properties to include in the 
query result"
-      },
-      {
-          "name": "taskProperties",
-          "type": "string",
-          "optional": true,
-          "doc": "Comma-separated list of task properties to include in the 
query result"
-      },
-      {
-          "name": "includeJobMetrics",
-          "type": "boolean",
-          "optional": true,
-          "default": true,
-          "doc": "true/false if the response should include job metrics 
(default: true)"
-      },
-      {
-          "name": "includeTaskMetrics",
-          "type": "boolean",
-          "optional": true,
-          "default": true,
-          "doc": "true/false if the response should include task metrics 
(default: true)"
-      },
-      {
-          "name": "includeTaskExecutions",
-          "type": "boolean",
-          "optional": true,
-          "default": true,
-          "doc": "true/false if the response should include task executions 
(default: true)"
-      },
-      {
-          "name": "includeJobsWithoutTasks",
-          "type": "boolean",
-          "optional": true,
-          "default": true,
-          "doc": "true/false if the response should include jobs that did not 
launch tasks (default: true)"
-      }
-    ]
-}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQueryResult.pdl
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQueryResult.pdl
new file mode 100644
index 0000000..72a8d94
--- /dev/null
+++ 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQueryResult.pdl
@@ -0,0 +1,12 @@
+namespace org.apache.gobblin.rest
+
+/**
+ * Gobblin job execution query result
+ */
+record JobExecutionQueryResult {
+
+  /**
+   * An array of job execution information records
+   */
+  jobExecutions: array[JobExecutionInfo]
+}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQueryResult.pdsc
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQueryResult.pdsc
deleted file mode 100644
index b1921b9..0000000
--- 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/JobExecutionQueryResult.pdsc
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "type": "record",
-    "name": "JobExecutionQueryResult",
-    "namespace" : "org.apache.gobblin.rest",
-    "doc": "Gobblin job execution query result",
-    "fields": [
-        {
-            "name": "jobExecutions",
-            "type": {
-                "type": "array",
-                "items": "JobExecutionInfo"
-            },
-            "doc": "An array of job execution information records"
-        }
-    ]
-}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Metric.pdl
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Metric.pdl
new file mode 100644
index 0000000..58afc8f
--- /dev/null
+++ 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Metric.pdl
@@ -0,0 +1,31 @@
+namespace org.apache.gobblin.rest
+
+/**
+ * Gobblin metric
+ */
+record Metric {
+
+  /**
+   * Metric group
+   */
+  group: string
+
+  /**
+   * Metric name
+   */
+  name: string
+
+  /**
+   * Metric type
+   */
+  type: enum MetricTypeEnum {
+    COUNTER
+    METER
+    GAUGE
+  }
+
+  /**
+   * Metric value
+   */
+  value: string
+}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Metric.pdsc
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Metric.pdsc
deleted file mode 100644
index 6510f3d..0000000
--- 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Metric.pdsc
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-    "type": "record",
-    "name": "Metric",
-    "namespace" : "org.apache.gobblin.rest",
-    "doc": "Gobblin metric",
-    "fields": [
-      {
-          "name": "group",
-          "type": "string",
-          "doc": "Metric group"
-      },
-      {
-          "name": "name",
-          "type": "string",
-          "doc": "Metric name"
-      },
-      {
-          "name": "type",
-          "type": {
-              "name": "MetricTypeEnum",
-              "type": "enum",
-              "symbols" : [ "COUNTER", "METER", "GAUGE" ]
-          },
-          "doc": "Metric type"
-      },
-      {
-          "name": "value",
-          "type": "string",
-          "doc": "Metric value"
-      }
-    ]
-}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Table.pdl
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Table.pdl
new file mode 100644
index 0000000..567e0a0
--- /dev/null
+++ 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Table.pdl
@@ -0,0 +1,26 @@
+namespace org.apache.gobblin.rest
+
+/**
+ * Gobblin table definition
+ */
+record Table {
+
+  /**
+   * Table namespace
+   */
+  `namespace`: optional string
+
+  /**
+   * Table name
+   */
+  name: string
+
+  /**
+   * Table type
+   */
+  type: optional enum TableTypeEnum {
+    SNAPSHOT_ONLY
+    SNAPSHOT_APPEND
+    APPEND_ONLY
+  }
+}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Table.pdsc
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Table.pdsc
deleted file mode 100644
index 58f04ec..0000000
--- 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/Table.pdsc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "type": "record",
-    "name": "Table",
-    "namespace" : "org.apache.gobblin.rest",
-    "doc": "Gobblin table definition",
-    "fields": [
-      {
-          "name": "namespace",
-          "type": "string",
-          "optional": true,
-          "doc": "Table namespace"
-      },
-      {
-          "name": "name",
-          "type": "string",
-          "doc": "Table name"
-      },
-      {
-          "name": "type",
-          "type": {
-              "name": "TableTypeEnum",
-              "type": "enum",
-              "symbols" : [ "SNAPSHOT_ONLY", "SNAPSHOT_APPEND", "APPEND_ONLY" ]
-          },
-          "optional": true,
-          "doc": "Table type"
-      }
-    ]
-}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TaskExecutionInfo.pdl
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TaskExecutionInfo.pdl
new file mode 100644
index 0000000..adbd80b
--- /dev/null
+++ 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TaskExecutionInfo.pdl
@@ -0,0 +1,74 @@
+namespace org.apache.gobblin.rest
+
+/**
+ * Gobblin task execution information
+ */
+record TaskExecutionInfo {
+
+  /**
+   * Job ID
+   */
+  jobId: string
+
+  /**
+   * Task ID
+   */
+  taskId: string
+
+  /**
+   * Task start time (epoch time)
+   */
+  startTime: optional long
+
+  /**
+   * Task end time (epoch time)
+   */
+  endTime: optional long
+
+  /**
+   * Task duration in milliseconds
+   */
+  duration: optional long
+
+  /**
+   * Task state
+   */
+  state: optional enum TaskStateEnum {
+    PENDING
+    RUNNING
+    SUCCESSFUL
+    COMMITTED
+    FAILED
+    CANCELLED
+  }
+
+  /**
+   * Task failure exception message
+   */
+  failureException: optional string
+
+  /**
+   * Low watermark
+   */
+  lowWatermark: optional long
+
+  /**
+   * High watermark
+   */
+  highWatermark: optional long
+
+  /**
+   * Table definition
+   */
+  table: optional Table
+
+  /**
+   * Task properties
+   */
+  taskProperties: optional map[string, string]
+
+  /**
+   * Job metrics
+   */
+  metrics: array[Metric]
+}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TaskExecutionInfo.pdsc
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TaskExecutionInfo.pdsc
deleted file mode 100644
index afdd188..0000000
--- 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TaskExecutionInfo.pdsc
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "type": "record",
-  "name": "TaskExecutionInfo",
-  "namespace" : "org.apache.gobblin.rest",
-  "doc": "Gobblin task execution information",
-  "fields": [
-    {
-        "name": "jobId",
-        "type": "string",
-        "doc": "Job ID"
-    },
-    {
-        "name": "taskId",
-        "type": "string",
-        "doc": "Task ID"
-    },
-    {
-        "name": "startTime",
-        "type": "long",
-        "optional": true,
-        "doc": "Task start time (epoch time)"
-    },
-    {
-        "name": "endTime",
-        "type": "long",
-        "optional": true,
-        "doc": "Task end time (epoch time)"
-    },
-    {
-        "name": "duration",
-        "type": "long",
-        "optional": true,
-        "doc": "Task duration in milliseconds"
-    },
-    {
-        "name": "state",
-        "type": {
-            "name": "TaskStateEnum",
-            "type": "enum",
-            "symbols" : [ "PENDING", "RUNNING", "SUCCESSFUL", "COMMITTED", 
"FAILED", "CANCELLED" ]
-         },
-         "optional": true,
-         "doc": "Task state"
-    },
-    {
-        "name": "failureException",
-        "type": "string",
-        "optional": true,
-        "doc": "Task failure exception message"
-    },
-    {
-        "name": "lowWatermark",
-        "type": "long",
-        "optional": true,
-        "doc": "Low watermark"
-    },
-    {
-        "name": "highWatermark",
-        "type": "long",
-        "optional": true,
-        "doc": "High watermark"
-    },
-    {
-        "name": "table",
-        "type": "Table",
-        "optional": true,
-        "doc": "Table definition"
-    },
-    {
-        "name": "taskProperties",
-        "type": {
-            "type": "map",
-            "values": "string"
-        },
-        "optional": true,
-        "doc": "Task properties"
-    },
-    {
-        "name": "metrics",
-        "type": {
-            "type": "array",
-            "items": "Metric"
-        },
-        "doc": "Job metrics"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TimeRange.pdl
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TimeRange.pdl
new file mode 100644
index 0000000..c343701
--- /dev/null
+++ 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TimeRange.pdl
@@ -0,0 +1,22 @@
+namespace org.apache.gobblin.rest
+
+/**
+ * Query time range
+ */
+record TimeRange {
+
+  /**
+   * Start time of the query range
+   */
+  startTime: optional string
+
+  /**
+   * End time of the query range
+   */
+  endTime: optional string
+
+  /**
+   * Date/time format used to parse the start time and end time
+   */
+  timeFormat: string
+}
\ No newline at end of file
diff --git 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TimeRange.pdsc
 
b/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TimeRange.pdsc
deleted file mode 100644
index 86ad3e0..0000000
--- 
a/gobblin-rest-service/gobblin-rest-api/src/main/pegasus/org/apache/gobblin/rest/TimeRange.pdsc
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "type": "record",
-    "name": "TimeRange",
-    "namespace" : "org.apache.gobblin.rest",
-    "doc": "Query time range",
-    "fields": [
-      {
-          "name": "startTime",
-          "type": "string",
-          "optional": true,
-          "doc": "Start time of the query range"
-      },
-      {
-          "name": "endTime",
-          "type": "string",
-          "optional": true,
-          "doc": "End time of the query range"
-      },
-      {
-          "name": "timeFormat",
-          "type": "string",
-          "doc": "Date/time format used to parse the start time and end time"
-      }
-    ]
-}
\ No newline at end of file
diff --git a/gobblin-rest-service/gobblin-rest-server/build.gradle 
b/gobblin-rest-service/gobblin-rest-server/build.gradle
index 9b99d29..66899d4 100644
--- a/gobblin-rest-service/gobblin-rest-server/build.gradle
+++ b/gobblin-rest-service/gobblin-rest-server/build.gradle
@@ -55,6 +55,9 @@ buildscript {
     repositories {
         mavenCentral()
         mavenLocal()
+        maven {
+            url "https://linkedin.bintray.com/maven";
+        }
     }
 
     dependencies {
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/ExecutionStatus.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/ExecutionStatus.pdl
new file mode 100644
index 0000000..c0e63a9
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/ExecutionStatus.pdl
@@ -0,0 +1,47 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Execution status for a flow or job
+ */
+enum ExecutionStatus {
+
+  /**
+   * Flow compiled to jobs.
+   */
+  COMPILED
+
+  /**
+   * Flow or job is in pending state.
+   */
+  PENDING
+
+  /**
+   * Flow or job is pending retry.
+   */
+  PENDING_RETRY
+
+  /**
+   * Job(s) orchestrated to spec executors.
+   */
+  ORCHESTRATED
+
+  /**
+   * Flow or job is currently executing
+   */
+  RUNNING
+
+  /**
+   * Flow or job completed execution
+   */
+  COMPLETE
+
+  /**
+   * Flow or job failed
+   */
+  FAILED
+
+  /**
+   * Flow cancelled.
+   */
+  CANCELLED
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/ExecutionStatus.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/ExecutionStatus.pdsc
deleted file mode 100644
index 3040eab..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/ExecutionStatus.pdsc
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "type" : "enum",
-  "name" : "ExecutionStatus",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Execution status for a flow or job",
-  "symbols" : ["COMPILED", "PENDING", "PENDING_RETRY", "ORCHESTRATED", 
"RUNNING", "COMPLETE", "FAILED", "CANCELLED" ],
-  "symbolDocs" : {
-    "COMPILED":"Flow compiled to jobs.",
-    "PENDING":"Flow or job is in pending state.",
-    "PENDING_RETRY":"Flow or job is pending retry.",
-    "ORCHESTRATED":"Job(s) orchestrated to spec executors.",
-    "RUNNING": "Flow or job is currently executing",
-    "COMPLETE":"Flow or job completed execution",
-    "FAILED":"Flow or job failed",
-    "CANCELLED":"Flow cancelled."
-  }
-}
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowConfig.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowConfig.pdl
new file mode 100644
index 0000000..8459b32
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowConfig.pdl
@@ -0,0 +1,33 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Defines a flow configuration that can be compiled into Gobblin jobs
+ */
+record FlowConfig {
+
+  /**
+   * Identifier for the flow
+   */
+  id: FlowId
+
+  /**
+   * Optional schedule for when to execution the flow. If a schedule is not 
specified then the flow is executed immediately.
+   */
+  schedule: optional Schedule
+
+  /**
+   * Comma separated list of URIs for templates used in the flow. The template 
location is defined by the multiproduct that packages the template.
+   */
+  @validate.`org.apache.gobblin.service.validator.TemplateUriValidator` = { }
+  templateUris: string
+
+  /**
+   * Return the compiled flow as a string. If enabled, the flow is not added.
+   */
+  explain: boolean = false
+
+  /**
+   * Properties for the flow. These properties are passed to the compiled 
Gobblin jobs.
+   */
+  properties: map[string, string]
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowConfig.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowConfig.pdsc
deleted file mode 100644
index 09af4f1..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowConfig.pdsc
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "type" : "record",
-  "name" : "FlowConfig",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Defines a flow configuration that can be compiled into Gobblin 
jobs",
-  "fields" : [
-    {
-      "name" : "id",
-      "type" : "FlowId",
-      "doc" : "Identifier for the flow"
-    },
-    {
-      "name" : "schedule",
-      "type" : "Schedule",
-      "optional" : true,
-      "doc" : "Optional schedule for when to execution the flow. If a schedule 
is not specified then the flow is executed immediately."
-    },
-    {
-      "name" : "templateUris",
-      "type" : "string",
-      "doc" : "Comma separated list of URIs for templates used in the flow. 
The template location is defined by the multiproduct that packages the 
template.",
-      "validate": {
-        "org.apache.gobblin.service.validator.TemplateUriValidator": {}
-      }
-    },
-    {
-      "name" : "explain",
-      "type" : "boolean",
-      "default" : false,
-      "doc" : "Return the compiled flow as a string. If enabled, the flow is 
not added."
-    },
-    {
-      "name" : "properties",
-      "type" : { "type" : "map", "values" : "string" },
-      "doc" : "Properties for the flow. These properties are passed to the 
compiled Gobblin jobs."
-    } ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowExecution.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowExecution.pdl
new file mode 100644
index 0000000..791c6d4
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowExecution.pdl
@@ -0,0 +1,32 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Represents an execution of a flow
+ */
+record FlowExecution {
+
+  /**
+   * Flow status identifier
+   */
+  id: FlowStatusId
+
+  /**
+   * Statistics for this execution of the flow
+   */
+  executionStatistics: FlowStatistics
+
+  /**
+   * Flow execution status
+   */
+  executionStatus: ExecutionStatus
+
+  /**
+   * Error or status message
+   */
+  message: string
+
+  /**
+   * Status of jobs belonging to the flow
+   */
+  jobStatuses: array[JobStatus]
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowExecution.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowExecution.pdsc
deleted file mode 100644
index 2736366..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowExecution.pdsc
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-  "type" : "record",
-  "name" : "FlowExecution",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Represents an execution of a flow",
-  "fields" : [
-    {
-      "name" : "id",
-      "type" : "FlowStatusId",
-      "doc" : "Flow status identifier"
-    },
-    {
-      "name" : "executionStatistics",
-      "type" : "FlowStatistics",
-      "doc" : "Statistics for this execution of the flow"
-    },
-    {
-      "name" : "executionStatus",
-      "type" : "ExecutionStatus",
-      "doc" : "Flow execution status"
-    },
-    {
-      "name" : "message",
-      "type" : "string",
-      "doc" : "Error or status message"
-    },
-    {
-      "name" : "jobStatuses",
-      "type" : {"type" : "array", "items" : "JobStatus"},
-      "doc" : "Status of jobs belonging to the flow"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowId.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowId.pdl
new file mode 100644
index 0000000..414515a
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowId.pdl
@@ -0,0 +1,25 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Identifier for a Gobblin as a Service flow
+ */
+record FlowId {
+
+  /**
+   * Name of the flow
+   */
+  @validate.strlen = {
+    "max" : 128,
+    "min" : 1
+  }
+  flowName: string
+
+  /**
+   * Group of the flow. This defines the namespace for the flow.
+   */
+  @validate.strlen = {
+    "max" : 128,
+    "min" : 1
+  }
+  flowGroup: string
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowId.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowId.pdsc
deleted file mode 100644
index e079598..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowId.pdsc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "type" : "record",
-  "name" : "FlowId",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Identifier for a Gobblin as a Service flow",
-  "fields" : [
-    {
-      "name" : "flowName",
-      "type" : "string",
-      "doc" : "Name of the flow",
-      "validate": {
-        "strlen": {
-          "min": 1,
-          "max": 128
-        }
-      }
-    },
-    {
-      "name" : "flowGroup",
-      "type" : "string",
-      "doc" : "Group of the flow. This defines the namespace for the flow.",
-      "validate": {
-        "strlen": {
-          "min": 1,
-          "max": 128
-        }
-      }
-    } ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatistics.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatistics.pdl
new file mode 100644
index 0000000..c910c76
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatistics.pdl
@@ -0,0 +1,17 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Statistics from a flow execution
+ */
+record FlowStatistics {
+
+  /**
+   * Epoch time of when the execution began
+   */
+  executionStartTime: long
+
+  /**
+   * Epoch time of when the execution ended
+   */
+  executionEndTime: long
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatistics.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatistics.pdsc
deleted file mode 100644
index a900200..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatistics.pdsc
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "type" : "record",
-  "name" : "FlowStatistics",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Statistics from a flow execution",
-  "fields" : [
-    {
-      "name" : "executionStartTime",
-      "type" : "long",
-      "doc" : "Epoch time of when the execution began"
-    },
-    {
-      "name" : "executionEndTime",
-      "type" : "long",
-      "doc" : "Epoch time of when the execution ended"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatus.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatus.pdl
new file mode 100644
index 0000000..bf411f4
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatus.pdl
@@ -0,0 +1,33 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Status of a flow
+ */
+@deprecated = "Use FlowExecution instead"
+record FlowStatus {
+
+  /**
+   * Flow status identifier
+   */
+  id: FlowStatusId
+
+  /**
+   * Statistics for this execution of the flow
+   */
+  executionStatistics: FlowStatistics
+
+  /**
+   * Flow execution status
+   */
+  executionStatus: ExecutionStatus
+
+  /**
+   * Error or status message
+   */
+  message: string
+
+  /**
+   * Status of jobs belonging to the flow
+   */
+  jobStatuses: array[JobStatus]
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatus.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatus.pdsc
deleted file mode 100644
index 165100f..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatus.pdsc
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "type" : "record",
-  "name" : "FlowStatus",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Status of a flow",
-  "deprecated" : "Use FlowExecution instead",
-  "fields" : [
-    {
-      "name" : "id",
-      "type" : "FlowStatusId",
-      "doc" : "Flow status identifier"
-    },
-    {
-      "name" : "executionStatistics",
-      "type" : "FlowStatistics",
-      "doc" : "Statistics for this execution of the flow"
-    },
-    {
-      "name" : "executionStatus",
-      "type" : "ExecutionStatus",
-      "doc" : "Flow execution status"
-    },
-    {
-      "name" : "message",
-      "type" : "string",
-      "doc" : "Error or status message"
-    },
-    {
-      "name" : "jobStatuses",
-      "type" : {"type" : "array", "items" : "JobStatus"},
-      "doc" : "Status of jobs belonging to the flow"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatusId.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatusId.pdl
new file mode 100644
index 0000000..9f65de7
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatusId.pdl
@@ -0,0 +1,22 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Identifier for a specific execution of a flow
+ */
+record FlowStatusId {
+
+  /**
+   * Name of the flow
+   */
+  flowName: string
+
+  /**
+   * Group of the flow. This defines the namespace for the flow.
+   */
+  flowGroup: string
+
+  /**
+   * Execution id for the flow
+   */
+  flowExecutionId: long
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatusId.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatusId.pdsc
deleted file mode 100644
index f5a0344..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/FlowStatusId.pdsc
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "type" : "record",
-  "name" : "FlowStatusId",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Identifier for a specific execution of a flow",
-  "fields" : [
-    {
-      "name" : "flowName",
-      "type" : "string",
-      "doc" : "Name of the flow"
-    },
-    {
-      "name" : "flowGroup",
-      "type" : "string",
-      "doc" : "Group of the flow. This defines the namespace for the flow."
-    },
-    {
-      "name" : "flowExecutionId",
-      "type" : "long",
-      "doc" : "Execution id for the flow"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobId.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobId.pdl
new file mode 100644
index 0000000..1647f2a
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobId.pdl
@@ -0,0 +1,25 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Identifier for a Gobblin job
+ */
+record JobId {
+
+  /**
+   * Name of the job
+   */
+  @validate.strlen = {
+    "max" : 600,
+    "min" : 1
+  }
+  jobName: string
+
+  /**
+   * Group of the job. This defines the namespace for the job.
+   */
+  @validate.strlen = {
+    "max" : 128,
+    "min" : 1
+  }
+  jobGroup: string
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobId.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobId.pdsc
deleted file mode 100644
index b1aeedd..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobId.pdsc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "type" : "record",
-  "name" : "JobId",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Identifier for a Gobblin job",
-  "fields" : [
-    {
-      "name" : "jobName",
-      "type" : "string",
-      "doc" : "Name of the job",
-      "validate": {
-        "strlen": {
-          "min": 1,
-          "max": 600
-        }
-      }
-    },
-    {
-      "name" : "jobGroup",
-      "type" : "string",
-      "doc" : "Group of the job. This defines the namespace for the job.",
-      "validate": {
-        "strlen": {
-          "min": 1,
-          "max": 128
-        }
-      }
-    } ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobState.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobState.pdl
new file mode 100644
index 0000000..1606ab0
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobState.pdl
@@ -0,0 +1,17 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Job state that is updated at the end of an execution
+ */
+record JobState {
+
+  /**
+   * Low watermark after last execution
+   */
+  lowWatermark: string
+
+  /**
+   * High watermark after last execution
+   */
+  highWatermark: string
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobState.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobState.pdsc
deleted file mode 100644
index 6a225b1..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobState.pdsc
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "type" : "record",
-  "name" : "JobState",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Job state that is updated at the end of an execution",
-  "fields" : [
-    {
-      "name" : "lowWatermark",
-      "type" : "string",
-      "doc" : "Low watermark after last execution"
-    },
-    {
-      "name" : "highWatermark",
-      "type" : "string",
-      "doc" : "High watermark after last execution"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatistics.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatistics.pdl
new file mode 100644
index 0000000..4869f50
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatistics.pdl
@@ -0,0 +1,22 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Statistics from a job execution
+ */
+record JobStatistics {
+
+  /**
+   * Epoch time of when the execution began
+   */
+  executionStartTime: long
+
+  /**
+   * Epoch time of when the execution ended
+   */
+  executionEndTime: long
+
+  /**
+   * number of records processed in the last job execution
+   */
+  processedCount: long
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatistics.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatistics.pdsc
deleted file mode 100644
index e48c83c..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatistics.pdsc
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "type" : "record",
-  "name" : "JobStatistics",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Statistics from a job execution",
-  "fields" : [
-    {
-      "name" : "executionStartTime",
-      "type" : "long",
-      "doc" : "Epoch time of when the execution began"
-    },
-    {
-      "name" : "executionEndTime",
-      "type" : "long",
-      "doc" : "Epoch time of when the execution ended"
-    },
-    {
-      "name" : "processedCount",
-      "type" : "long",
-      "doc" : "number of records processed in the last job execution"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatus.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatus.pdl
new file mode 100644
index 0000000..f063dae
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatus.pdl
@@ -0,0 +1,42 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Execution status for a job
+ */
+record JobStatus {
+
+  /**
+   * Identifier of the flow the job belongs to
+   */
+  flowId: FlowId
+
+  /**
+   * Identifier of the job
+   */
+  jobId: JobId
+
+  /**
+   * Tag of the job
+   */
+  jobTag: optional string
+
+  /**
+   * Job execution status
+   */
+  executionStatus: ExecutionStatus
+
+  /**
+   * Error or status message
+   */
+  message: string
+
+  /**
+   * Statistics from the job execution. The values may be updated during the 
run of a job.
+   */
+  executionStatistics: JobStatistics
+
+  /**
+   * Job state that is updated only at the start and end of a job execution.
+   */
+  jobState: JobState
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatus.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatus.pdsc
deleted file mode 100644
index f13d366..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/JobStatus.pdsc
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "type" : "record",
-  "name" : "JobStatus",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Execution status for a job",
-  "fields" : [
-    {
-      "name" : "flowId",
-      "type" : "FlowId",
-      "doc" : "Identifier of the flow the job belongs to"
-    },
-    {
-      "name" : "jobId",
-      "type" : "JobId",
-      "doc" : "Identifier of the job"
-    },
-    {
-      "name" : "jobTag",
-      "type" : "string",
-      "optional" : true,
-      "doc" : "Tag of the job"
-    },
-    {
-      "name" : "executionStatus",
-      "type" : "ExecutionStatus",
-      "doc" : "Job execution status"
-    },
-    {
-      "name" : "message",
-      "type" : "string",
-      "doc" : "Error or status message"
-    },
-    {
-      "name" : "executionStatistics",
-      "type" : "JobStatistics",
-      "doc" : "Statistics from the job execution. The values may be updated 
during the run of a job."
-    },
-    {
-      "name" : "jobState",
-      "type" : "JobState",
-      "doc" : "Job state that is updated only at the start and end of a job 
execution."
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/Schedule.pdl
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/Schedule.pdl
new file mode 100644
index 0000000..e84d35e
--- /dev/null
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/Schedule.pdl
@@ -0,0 +1,18 @@
+namespace org.apache.gobblin.service
+
+/**
+ * Attributes for defining a job schedule
+ */
+record Schedule {
+
+  /**
+   * Schedule for flow in cron format
+   */
+  @validate.`org.apache.gobblin.service.validator.CronValidator` = { }
+  cronSchedule: string
+
+  /**
+   * Set to true to request that a job with a schedule be run immediately in 
addition to being scheduled
+   */
+  runImmediately: boolean = false
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/Schedule.pdsc
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/Schedule.pdsc
deleted file mode 100644
index 86f78b7..0000000
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-api/src/main/pegasus/org/apache/gobblin/service/Schedule.pdsc
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "type" : "record",
-  "name" : "Schedule",
-  "namespace" : "org.apache.gobblin.service",
-  "doc" : "Attributes for defining a job schedule",
-  "fields" : [
-    {
-      "name" : "cronSchedule",
-      "type" : "string",
-      "doc" : "Schedule for flow in cron format",
-      "validate": {
-        "org.apache.gobblin.service.validator.CronValidator": {}
-      }
-    },
-    {
-      "name" : "runImmediately",
-      "type" : "boolean",
-      "default" : false,
-      "doc" : "Set to true to request that a job with a schedule be run 
immediately in addition to being scheduled"
-    }
-  ]
-}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitAllocation.pdl
 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitAllocation.pdl
new file mode 100644
index 0000000..7af103c
--- /dev/null
+++ 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitAllocation.pdl
@@ -0,0 +1,32 @@
+namespace org.apache.gobblin.restli.throttling
+
+/**
+ * Used by gobblin-throttling-service to allocate permits to a client.
+ */
+record PermitAllocation {
+
+  /**
+   * Number of permits allocated. This may be 0 if no permits are allocated, 
or the number of requested permits.
+   */
+  permits: long
+
+  /**
+   * Expiration time in Unix timestamp of the allocated permits.
+   */
+  expiration: long
+
+  /**
+   * Client should not try to acquire permits before this delay has passed.
+   */
+  minRetryDelayMillis: optional long
+
+  /**
+   * Client must wait this many millis before allocating provided permits.
+   */
+  waitForPermitUseMillis: optional long = 0
+
+  /**
+   * If larger than 0, specifies request larger than this number are 
impossible to satisfy by the policy.
+   */
+  unsatisfiablePermits: optional long = 0
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitAllocation.pdsc
 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitAllocation.pdsc
deleted file mode 100644
index 8601d29..0000000
--- 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitAllocation.pdsc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "name": "PermitAllocation",
-  "type": "record",
-  "namespace" : "org.apache.gobblin.restli.throttling",
-  "doc": "Used by gobblin-throttling-service to allocate permits to a client.",
-  "fields": [
-    {"name": "permits", "type": "long", "doc": "Number of permits allocated. 
This may be 0 if no permits are allocated, or the number of requested 
permits."},
-    {"name": "expiration", "type": "long", "doc": "Expiration time in Unix 
timestamp of the allocated permits."},
-    {"name": "minRetryDelayMillis", "type": "long", "doc": "Client should not 
try to acquire permits before this delay has passed.", "optional" : true},
-    {"name": "waitForPermitUseMillis", "type": "long", "doc": "Client must 
wait this many millis before allocating provided permits.", "optional": true, 
"default": 0},
-    {"name": "unsatisfiablePermits", "type": "long", "doc": "If larger than 0, 
specifies request larger than this number are impossible to satisfy by the 
policy.", "optional": true, "default": 0}
-  ]
-}
diff --git 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitRequest.pdl
 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitRequest.pdl
new file mode 100644
index 0000000..315c0e2
--- /dev/null
+++ 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitRequest.pdl
@@ -0,0 +1,32 @@
+namespace org.apache.gobblin.restli.throttling
+
+/**
+ * Used to request permits from a gobblin-throttling-service.
+ */
+record PermitRequest {
+
+  /**
+   * Resource for which permits are needed.
+   */
+  resource: string
+
+  /**
+   * Number of permits needed.
+   */
+  permits: long
+
+  /**
+   * Minimum number of useful permits.
+   */
+  minPermits: optional long = 0
+
+  /**
+   * Identifier of the service requesting the permits.
+   */
+  requestorIdentifier: string
+
+  /**
+   * Protocol version, see ThrottlingProtocolVersion.java. Allows the server 
to avoid asking the client for unsupported operations.
+   */
+  version: optional int = 0
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitRequest.pdsc
 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitRequest.pdsc
deleted file mode 100644
index 1cee3df..0000000
--- 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/PermitRequest.pdsc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "name": "PermitRequest",
-  "type": "record",
-  "namespace" : "org.apache.gobblin.restli.throttling",
-  "doc": "Used to request permits from a gobblin-throttling-service.",
-  "fields": [
-    {"name": "resource", "type": "string", "doc": "Resource for which permits 
are needed."},
-    {"name": "permits", "type": "long", "doc": "Number of permits needed."},
-    {"name": "minPermits", "type": "long", "doc": "Minimum number of useful 
permits.", "optional" : true, "default": 0},
-    {"name": "requestorIdentifier", "type": "string", "doc" : "Identifier of 
the service requesting the permits."},
-    {"name": "version", "type": "int", "doc": "Protocol version, see 
ThrottlingProtocolVersion.java. Allows the server to avoid asking the client 
for unsupported operations.", "optional": true, "default": 0}
-  ]
-}
diff --git 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/Policy.pdl
 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/Policy.pdl
new file mode 100644
index 0000000..5d4c0f6
--- /dev/null
+++ 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/Policy.pdl
@@ -0,0 +1,32 @@
+namespace org.apache.gobblin.restli.throttling
+
+/**
+ * A throttling policy for Gobblin throttling service.
+ */
+record Policy {
+
+  /**
+   * Resource for which this policy applied.
+   */
+  resource: string
+
+  /**
+   * The name of the policy.
+   */
+  policyName: string
+
+  /**
+   * Parameters for this policy.
+   */
+  parameters: map[string, string]
+
+  /**
+   * Metrics for this policy.
+   */
+  metrics: map[string, string]
+
+  /**
+   * Human readable policy details.
+   */
+  policyDetails: string
+}
\ No newline at end of file
diff --git 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/Policy.pdsc
 
b/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/Policy.pdsc
deleted file mode 100644
index 87298e8..0000000
--- 
a/gobblin-restli/gobblin-throttling-service/gobblin-throttling-service-api/src/main/pegasus/org/apache/gobblin/restli/throttling/Policy.pdsc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "name": "Policy",
-  "type": "record",
-  "namespace" : "org.apache.gobblin.restli.throttling",
-  "doc": "A throttling policy for Gobblin throttling service.",
-  "fields": [
-    {"name": "resource", "type": "string", "doc": "Resource for which this 
policy applied."},
-    {"name": "policyName", "type": "string", "doc": "The name of the policy."},
-    {"name": "parameters", "type": {"type": "map", "values": "string"}, "doc": 
"Parameters for this policy."},
-    {"name": "metrics", "type": {"type": "map", "values": "string"}, "doc": 
"Metrics for this policy."},
-    {"name": "policyDetails", "type": "string", "doc": "Human readable policy 
details."}
-  ]
-}
diff --git a/gradle/scripts/defaultBuildProperties.gradle 
b/gradle/scripts/defaultBuildProperties.gradle
index e772acd..f12a1f4 100644
--- a/gradle/scripts/defaultBuildProperties.gradle
+++ b/gradle/scripts/defaultBuildProperties.gradle
@@ -35,7 +35,7 @@ def BuildProperties BUILD_PROPERTIES = new 
BuildProperties(project)
     "Java languange compatibility; supported versions: " + 
JavaVersion.VERSION_1_8))
     .register(new BuildProperty("kafka08Version", "0.8.2.2", "Kafka 0.8 
dependencies version"))
     .register(new BuildProperty("kafka09Version", "0.9.0.1", "Kafka 0.9 
dependencies version"))
-    .register(new BuildProperty("pegasusVersion", "11.0.0", "Pegasus 
dependencies version"))
+    .register(new BuildProperty("pegasusVersion", "29.6.4", "Pegasus 
dependencies version"))
     .register(new BuildProperty("publishToMaven", false, "Enable publishing of 
artifacts to a central Maven repository"))
     .register(new BuildProperty("publishToNexus", false, "Enable publishing of 
artifacts to Nexus"))
     .register(new BuildProperty("salesforceVersion", "42.0.0", "Salesforce 
dependencies version"))
diff --git a/gradle/scripts/repositories.gradle 
b/gradle/scripts/repositories.gradle
index 82d8c08..b35b050 100644
--- a/gradle/scripts/repositories.gradle
+++ b/gradle/scripts/repositories.gradle
@@ -23,6 +23,9 @@ repositories {
   maven {
     url "http://packages.confluent.io/maven/";
   }
+  maven {
+    url "https://linkedin.bintray.com/maven";
+  }
   jcenter()
 }
 

Reply via email to