diff --git a/README.md b/README.md
index 1b9867fd198f..85a3ef7993f8 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ This client supports the following Google Cloud Platform services:
Quickstart
----------
-Add this to your pom.xml file
+If you are using Maven, add this to your pom.xml file
```xml
com.google.gcloud
@@ -28,6 +28,14 @@ Add this to your pom.xml file
0.0.10
```
+If you are using Gradle, add this to your dependencies
+```Groovy
+compile 'com.google.gcloud:gcloud-java:jar:0.0.10'
+```
+If you are using SBT, add this to your dependencies
+```Scala
+libraryDependencies += "com.google.gcloud" % "gcloud-java" % "0.0.10"
+```
Example Applications
--------------------
diff --git a/gcloud-java-bigquery/README.md b/gcloud-java-bigquery/README.md
new file mode 100644
index 000000000000..17ae3a267b0e
--- /dev/null
+++ b/gcloud-java-bigquery/README.md
@@ -0,0 +1,86 @@
+Google Cloud Java Client for BigQuery
+====================================
+
+Java idiomatic client for [Google Cloud BigQuery] (https://cloud.google.com/bigquery).
+
+[](https://travis-ci.org/GoogleCloudPlatform/gcloud-java)
+[](https://coveralls.io/r/GoogleCloudPlatform/gcloud-java?branch=master)
+
+
+- [Homepage] (https://googlecloudplatform.github.io/gcloud-java/)
++
+
+> Note: This client is a work-in-progress, and may occasionally
+> make backwards-incompatible changes.
+
+Quickstart
+----------
+Add this to your pom.xml file
+
+
+
+Example Application
+-------------------
+
+
+
+Authentication
+--------------
+
+See the [Authentication](https://github.com/GoogleCloudPlatform/gcloud-java#authentication) section in the base directory's README.
+
+About Google Cloud BigQuery
+--------------------------
+
+[Google Cloud BigQuery][cloud-bigquery] is a fully managed, NoOps, low cost data analytics service.
+Data can be streamed into BigQuery at millions of rows per second to enable real-time analysis.
+With BigQuery you can easily deploy Petabyte-scale Databases.
+
+Be sure to activate the Google Cloud BigQuery API on the Developer's Console to use BigQuery from your project.
+
+See the ``gcloud-java`` API [bigquery documentation][bigquery-api] to learn how to interact
+with Google Cloud BigQuery using this Client Library.
+
+Here is a code snippet showing a simple usage example from within Compute/App Engine. Note that you must [supply credentials](https://github.com/GoogleCloudPlatform/gcloud-java#authentication) and a project ID if running this snippet elsewhere.
+
+
+
+Java Versions
+-------------
+
+Java 7 or above is required for using this client.
+
+Testing
+-------
+
+
+
+Versioning
+----------
+
+This library follows [Semantic Versioning] (http://semver.org/).
+
+It is currently in major version zero (``0.y.z``), which means that anything
+may change at any time and the public API should not be considered
+stable.
+
+Contributing
+------------
+
+Contributions to this library are always welcome and highly encouraged.
+
+See [CONTRIBUTING] for more information on how to get started.
+
+License
+-------
+
+Apache 2.0 - See [LICENSE] for more information.
+
+
+[CONTRIBUTING]:https://github.com/GoogleCloudPlatform/gcloud-java/blob/master/CONTRIBUTING.md
+[LICENSE]: https://github.com/GoogleCloudPlatform/gcloud-java/blob/master/LICENSE
+[TESTING]: https://github.com/GoogleCloudPlatform/gcloud-java/blob/master/TESTING.md#testing-code-that-uses-bigquery
+[cloud-platform]: https://cloud.google.com/
+
+[cloud-bigquery]: https://cloud.google.com/bigquery/
+[bigquery-api]: http://googlecloudplatform.github.io/gcloud-java/apidocs/index.html?com/google/gcloud/bigquery/package-summary.html
\ No newline at end of file
diff --git a/gcloud-java-bigquery/pom.xml b/gcloud-java-bigquery/pom.xml
new file mode 100644
index 000000000000..f4d459ab82f7
--- /dev/null
+++ b/gcloud-java-bigquery/pom.xml
@@ -0,0 +1,50 @@
+
+
+ 4.0.0
+ com.google.gcloud
+ gcloud-java-bigquery
+ jar
+ GCloud Java bigquery
+
+ Java idiomatic client for Google Cloud BigQuery.
+
+
+ com.google.gcloud
+ gcloud-java-pom
+ 0.0.11-SNAPSHOT
+
+
+ gcloud-java-bigquery
+
+
+
+ ${project.groupId}
+ gcloud-java-core
+ ${project.version}
+
+
+ com.google.apis
+ google-api-services-bigquery
+ v2-rev244-1.20.0
+ compile
+
+
+ com.google.guava
+ guava-jdk5
+
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+ org.easymock
+ easymock
+ 3.3
+ test
+
+
+
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQuery.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQuery.java
new file mode 100644
index 000000000000..28fb33dcc58c
--- /dev/null
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQuery.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.gcloud.bigquery;
+
+import com.google.gcloud.Service;
+
+/**
+ * An interface for Google Cloud BigQuery.
+ *
+ * @see Google Cloud BigQuery
+ */
+public interface BigQuery extends Service {
+
+ // TODO(mziccard) add missing methods
+}
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryException.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryException.java
new file mode 100644
index 000000000000..020917762fa3
--- /dev/null
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryException.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.gcloud.bigquery;
+
+import com.google.gcloud.BaseServiceException;
+import com.google.gcloud.RetryHelper.RetryHelperException;
+import com.google.gcloud.RetryHelper.RetryInterruptedException;
+
+/**
+ * BigQuery service exception.
+ *
+ * @see Google Cloud
+ * BigQuery error codes
+ */
+public class BigQueryException extends BaseServiceException {
+
+ private static final long serialVersionUID = -5504832700512784654L;
+ public static final int UNKNOWN_CODE = -1;
+
+ public BigQueryException(int code, String message, boolean retryable) {
+ super(code, message, retryable);
+ }
+
+ /**
+ * Translate RetryHelperException to the BigQueryException that caused the error. This method will
+ * always throw an exception.
+ *
+ * @throws BigQueryException when {@code ex} was caused by a {@code BigQueryException}
+ * @throws RetryInterruptedException when {@code ex} is a {@code RetryInterruptedException}
+ */
+ static BigQueryException translateAndThrow(RetryHelperException ex) {
+ if (ex.getCause() instanceof BigQueryException) {
+ throw (BigQueryException) ex.getCause();
+ }
+ if (ex instanceof RetryInterruptedException) {
+ RetryInterruptedException.propagate();
+ }
+ throw new BigQueryException(UNKNOWN_CODE, ex.getMessage(), false);
+ }
+}
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryFactory.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryFactory.java
new file mode 100644
index 000000000000..2fc98125f4be
--- /dev/null
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryFactory.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.gcloud.bigquery;
+
+
+import com.google.gcloud.ServiceFactory;
+
+/**
+ * An interface for BigQuery factories.
+ */
+public interface BigQueryFactory extends ServiceFactory {
+}
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryOptions.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryOptions.java
new file mode 100644
index 000000000000..59a4b3229f68
--- /dev/null
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/BigQueryOptions.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.gcloud.bigquery;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.gcloud.ServiceOptions;
+import com.google.gcloud.spi.DefaultBigQueryRpc;
+import com.google.gcloud.spi.BigQueryRpc;
+import com.google.gcloud.spi.BigQueryRpcFactory;
+
+import java.util.Set;
+
+public class BigQueryOptions extends ServiceOptions {
+
+ private static final String BIGQUERY_SCOPE = "https://www.googleapis.com/auth/bigquery";
+ private static final Set SCOPES = ImmutableSet.of(BIGQUERY_SCOPE);
+ private static final long serialVersionUID = -215981591481708043L;
+
+ public static class DefaultBigqueryFactory implements BigQueryFactory {
+
+ private static final BigQueryFactory INSTANCE = new DefaultBigqueryFactory();
+
+ @Override
+ public BigQuery create(BigQueryOptions options) {
+ // TODO(mziccard) return new BigqueryImpl(options);
+ return null;
+ }
+ }
+
+ public static class DefaultBigQueryRpcFactory implements BigQueryRpcFactory {
+
+ private static final BigQueryRpcFactory INSTANCE = new DefaultBigQueryRpcFactory();
+
+ @Override
+ public BigQueryRpc create(BigQueryOptions options) {
+ // TODO(mziccard) return new DefaultBigqueryRpc(options);
+ return null;
+ }
+ }
+
+ public static class Builder extends
+ ServiceOptions.Builder {
+
+ private Builder() {
+ }
+
+ private Builder(BigQueryOptions options) {
+ super(options);
+ }
+
+ @Override
+ public BigQueryOptions build() {
+ return new BigQueryOptions(this);
+ }
+ }
+
+ private BigQueryOptions(Builder builder) {
+ super(BigQueryFactory.class, BigQueryRpcFactory.class, builder);
+ }
+
+ @Override
+ protected BigQueryFactory defaultServiceFactory() {
+ return DefaultBigqueryFactory.INSTANCE;
+ }
+
+ @Override
+ protected BigQueryRpcFactory defaultRpcFactory() {
+ return DefaultBigQueryRpcFactory.INSTANCE;
+ }
+
+ @Override
+ protected Set scopes() {
+ return SCOPES;
+ }
+
+ @Override
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
+ @Override
+ public int hashCode() {
+ return baseHashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof BigQueryOptions)) {
+ return false;
+ }
+ BigQueryOptions other = (BigQueryOptions) obj;
+ return baseEquals(other);
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+}
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/package-info.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/package-info.java
new file mode 100644
index 000000000000..4acaa40ca851
--- /dev/null
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/package-info.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * A client to Google Cloud BigQuery.
+ *
+ *
A simple usage example:
+ *
{@code
+ * //TODO(mziccard): add code example
+ * }
+ *
+ * @see Google Cloud BigQuery
+ */
+package com.google.gcloud.bigquery;
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/spi/BigQueryRpc.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/spi/BigQueryRpc.java
new file mode 100644
index 000000000000..7cce35ab3eb9
--- /dev/null
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/spi/BigQueryRpc.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.gcloud.spi;
+
+import com.google.api.services.bigquery.model.Dataset;
+import com.google.api.services.bigquery.model.GetQueryResultsResponse;
+import com.google.api.services.bigquery.model.Job;
+import com.google.api.services.bigquery.model.JobReference;
+import com.google.api.services.bigquery.model.QueryRequest;
+import com.google.api.services.bigquery.model.QueryResponse;
+import com.google.api.services.bigquery.model.Table;
+import com.google.api.services.bigquery.model.TableDataInsertAllRequest;
+import com.google.api.services.bigquery.model.TableDataInsertAllResponse;
+import com.google.api.services.bigquery.model.TableReference;
+import com.google.api.services.bigquery.model.TableRow;
+import com.google.gcloud.bigquery.BigQueryException;
+
+import java.util.Map;
+
+public interface BigQueryRpc {
+
+ // These options are part of the Google Cloud BigQuery query parameters
+ enum Option {
+ QUOTA_USER("quotaUser"),
+ USER_IP("userIp"),
+ FIELDS("fields"),
+ DELETE_CONTENTS("deleteContents"),
+ ALL_DATASETS("all"),
+ ALL_USERS("allUsers"),
+ MAX_RESULTS("maxResults"),
+ PAGE_TOKEN("pageToken"),
+ START_INDEX("startIndex"),
+ STATE_FILTER("stateFilter"),
+ TIMEOUT("timeoutMs");
+
+ private final String value;
+
+ Option(String value) {
+ this.value = value;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ @SuppressWarnings("unchecked")
+ T get(Map