-# Google API Client
+[comment]: # (Copyright © The Arvados Authors. All rights reserved.)
+[comment]: # ()
+[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0)
-<dl>
- <dt>Homepage</dt><dd><a href="http://www.github.com/google/google-api-ruby-client">http://www.github.com/google/google-api-ruby-client</a></dd>
- <dt>Authors</dt><dd>Bob Aman, <a href="mailto:sbazyl@google.com">Steven Bazyl</a></dd>
- <dt>Copyright</dt><dd>Copyright © 2011 Google, Inc.</dd>
- <dt>License</dt><dd>Apache 2.0</dd>
-</dl>
+[](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) | [Installing Arvados](https://doc.arvados.org/install/index.html) | [Installing Client SDKs](https://doc.arvados.org/sdk/index.html) | [Report a bug](https://dev.arvados.org/projects/arvados/issues/new) | [Development and Contributing](CONTRIBUTING.md)
-[](http://travis-ci.org/google/google-api-ruby-client)
-[](https://gemnasium.com/google/google-api-ruby-client)
+<img align="right" src="doc/images/dax.png" height="240px">
-## Description
+[Arvados](https://arvados.org) is an open source platform for
+managing, processing, and sharing genomic and other large scientific
+and biomedical data. With Arvados, bioinformaticians run and scale
+compute-intensive workflows, developers create biomedical
+applications, and IT administrators manage large compute and storage
+resources.
-The Google API Ruby Client makes it trivial to discover and access supported
-APIs.
+The key components of Arvados are:
-## Alpha
+* *Keep*: Keep is the Arvados storage system for managing and storing large
+collections of files. Keep combines content addressing and a
+distributed storage architecture resulting in both high reliability
+and high throughput. Every file stored in Keep can be accurately
+verified every time it is retrieved. Keep supports the creation of
+collections as a flexible way to define data sets without having to
+re-organize or needlessly copy data. Keep works on a wide range of
+underlying filesystems and object stores.
-This library is in Alpha. Some advanced features may not work. Please file bugs if any problems are found.
+* *Crunch*: Crunch is the orchestration system for running [Common Workflow Language](https://www.commonwl.org) workflows. It is
+designed to maintain data provenance and workflow
+reproducibility. Crunch automatically tracks data inputs and outputs
+through Keep and executes workflow processes in Docker containers. In
+a cloud environment, Crunch optimizes costs by scaling compute on demand.
-## Install
+* *Workbench*: The Workbench web application allows users to interactively access
+Arvados functionality. It is especially helpful for querying and
+browsing data, visualizing provenance, and tracking the progress of
+workflows.
-Be sure `https://rubygems.org/` is in your gem sources.
+* *Command Line tools*: The command line interface (CLI) provides convenient access to Arvados
+functionality in the Arvados platform from the command line.
-For normal client usage, this is sufficient:
+* *API and SDKs*: Arvados is designed to be integrated with existing infrastructure. All
+the services in Arvados are accessed through a RESTful API. SDKs are
+available for Python, Go, R, Perl, Ruby, and Java.
-```bash
-$ gem install google-api-client
-```
-
-## Example Usage
-
-```ruby
-require 'google/api_client'
-require 'google/api_client/client_secrets'
-require 'google/api_client/auth/installed_app'
-
-# Initialize the client.
-client = Google::APIClient.new(
- :application_name => 'Example Ruby application',
- :application_version => '1.0.0'
-)
-
-# Initialize Google+ API. Note this will make a request to the
-# discovery service every time, so be sure to use serialization
-# in your production code. Check the samples for more details.
-plus = client.discovered_api('plus')
-
-# Load client secrets from your client_secrets.json.
-client_secrets = Google::APIClient::ClientSecrets.load
-
-# Run installed application flow. Check the samples for a more
-# complete example that saves the credentials between runs.
-flow = Google::APIClient::InstalledAppFlow.new(
- :client_id => client_secrets.client_id,
- :client_secret => client_secrets.client_secret,
- :scope => ['https://www.googleapis.com/auth/plus.me']
-)
-client.authorization = flow.authorize
-
-# Make an API call.
-result = client.execute(
- :api_method => plus.activities.list,
- :parameters => {'collection' => 'public', 'userId' => 'me'}
-)
-
-puts result.data
-```
-
-## API Features
-
-### API Discovery
-
-To take full advantage of the client, load API definitions prior to use. To load an API:
-
-```ruby
-urlshortener = client.discovered_api('urlshortener')
-```
+# Quick start
-Specific versions of the API can be loaded as well:
+To try out Arvados on your local workstation, you can use Arvbox, which
+provides Arvados components pre-installed in a Docker container (requires
+Docker 1.9+). After cloning the Arvados git repository:
-```ruby
-drive = client.discovered_api('drive', 'v2')
```
-
-Locally cached discovery documents may be used as well. To load an API from a local file:
-
-```ruby
-doc = File.read('my-api.json')
-my_api = client.register_discovery_document('myapi', 'v1', doc)
+$ cd arvados/tools/arvbox/bin
+$ ./arvbox start localdemo
```
-### Authorization
-
-Most interactions with Google APIs require users to authorize applications via OAuth 2.0. The client library uses [Signet](https://github.com/google/signet) to handle most aspects of authorization. For additional details about Google's OAuth support, see [Google Developers](https://developers.google.com/accounts/docs/OAuth2).
+In this mode you will only be able to connect to Arvbox from the same host. To
+configure Arvbox to be accessible over a network and for other options see
+http://doc.arvados.org/install/arvbox.html for details.
-Credentials can be managed at the connection level, as shown, or supplied on a per-request basis when calling `execute`.
-
-For server-to-server interactions, like those between a web application and Google Cloud Storage, Prediction, or BigQuery APIs, use service accounts.
-
-```ruby
-key = Google::APIClient::KeyUtils.load_from_pkcs12('client.p12', 'notasecret')
-client.authorization = Signet::OAuth2::Client.new(
- :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
- :audience => 'https://accounts.google.com/o/oauth2/token',
- :scope => 'https://www.googleapis.com/auth/prediction',
- :issuer => '123456-abcdef@developer.gserviceaccount.com',
- :signing_key => key)
-client.authorization.fetch_access_token!
-client.execute(...)
-```
+# Documentation
-Service accounts are also used for delegation in Google Apps domains. The target user for impersonation is specified by setting the `:person` parameter to the user's email address
-in the credentials. Detailed instructions on how to enable delegation for your domain can be found at [developers.google.com](https://developers.google.com/drive/delegation).
+Complete documentation, including the [User Guide](https://doc.arvados.org/user/index.html), [Installation documentation](https://doc.arvados.org/install/index.html), [Administrator documentation](https://doc.arvados.org/admin/index.html) and
+[API documentation](https://doc.arvados.org/api/index.html) is available at http://doc.arvados.org/
-### Automatic Retries & Backoff
+If you wish to build the Arvados documentation from a local git clone, see
+[doc/README.textile](doc/README.textile) for instructions.
-The API client can automatically retry requests for recoverable errors. To enable retries, set the `client.retries` property to
-the number of additional attempts. To avoid flooding servers, retries invovle a 1 second delay that increases on each subsequent retry.
+# Community
-The default value for retries is 0, but will be enabled by default in future releases.
+[](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-### Batching Requests
+The [Arvados community channel](https://gitter.im/arvados/community)
+channel at [gitter.im](https://gitter.im) is available for live
+discussion and support.
-Some Google APIs support batching requests into a single HTTP request. Use `Google::APIClient::BatchRequest`
-to bundle multiple requests together.
+The [Arvados developement channel](https://gitter.im/arvados/development)
+channel at [gitter.im](https://gitter.im) is used to coordinate development.
-Example:
+The [Arvados user mailing list](http://lists.arvados.org/mailman/listinfo/arvados)
+is used to announce new versions and other news.
-```ruby
-client = Google::APIClient.new
-urlshortener = client.discovered_api('urlshortner')
+All participants are expected to abide by the [Arvados Code of Conduct](CODE_OF_CONDUCT.md).
-batch = Google::APIClient::BatchRequest.new do |result|
- puts result.data
-end
+# Reporting bugs
-batch.add(:api_method => urlshortener.url.insert,
- :body_object => { 'longUrl' => 'http://example.com/foo' })
-batch.add(:api_method => urlshortener.url.insert,
- :body_object => { 'longUrl' => 'http://example.com/bar' })
-client.execute(batch)
-```
-
-Blocks for handling responses can be specified either at the batch level or when adding an individual API call. For example:
-
-```ruby
-batch.add(:api_method=>urlshortener.url.insert, :body_object => { 'longUrl' => 'http://example.com/bar' }) do |result|
- puts result.data
-end
-```
-
-### Media Upload
-
-For APIs that support file uploads, use `Google::APIClient::UploadIO` to load the stream. Both multipart and resumable
-uploads can be used. For example, to upload a file to Google Drive using multipart
-
-```ruby
-drive = client.discovered_api('drive', 'v2')
-
-media = Google::APIClient::UploadIO.new('mymovie.m4v', 'video/mp4')
-metadata = {
- 'title' => 'My movie',
- 'description' => 'The best home movie ever made'
-}
-client.execute(:api_method => drive.files.insert,
- :parameters => { 'uploadType' => 'multipart' },
- :body_object => metadata,
- :media => media )
-```
-
-To use resumable uploads, change the `uploadType` parameter to `resumable`. To check the status of the upload
-and continue if necessary, check `result.resumable_upload`.
-
-```ruby
-client.execute(:api_method => drive.files.insert,
- :parameters => { 'uploadType' => 'resumable' },
- :body_object => metadata,
- :media => media )
-upload = result.resumable_upload
-
-# Resume if needed
-if upload.resumable?
- client.execute(upload)
-end
-```
+[Report a bug](https://dev.arvados.org/projects/arvados/issues/new) on [dev.arvados.org](https://dev.arvados.org).
-## Samples
+# Development and Contributing
-See the full list of [samples on Github](https://github.com/google/google-api-ruby-client-samples).
+See [CONTRIBUTING](CONTRIBUTING.md) for information about Arvados development and how to contribute to the Arvados project.
+The [development road map](https://dev.arvados.org/issues/gantt?utf8=%E2%9C%93&set_filter=1&gantt=1&f%5B%5D=project_id&op%5Bproject_id%5D=%3D&v%5Bproject_id%5D%5B%5D=49&f%5B%5D=&zoom=1) outlines some of the project priorities over the next twelve months.
-## Support
+# Licensing
-Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
+Arvados is Free Software. See [COPYING](COPYING) for information about the open source licenses used in Arvados.