[ARVADOS] created: 2c157382b1ecf0175f0356d6c3a457dca942f5f3

git at public.curoverse.com git at public.curoverse.com
Fri Apr 18 23:00:32 EDT 2014


        at  2c157382b1ecf0175f0356d6c3a457dca942f5f3 (commit)


commit 2c157382b1ecf0175f0356d6c3a457dca942f5f3
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 22:36:05 2014 -0400

    Remove updated_at from API responses.

diff --git a/services/api/lib/common_api_template.rb b/services/api/lib/common_api_template.rb
index b1da94a..67c7f8c 100644
--- a/services/api/lib/common_api_template.rb
+++ b/services/api/lib/common_api_template.rb
@@ -16,7 +16,6 @@ module CommonApiTemplate
       t.add :modified_by_client_uuid
       t.add :modified_by_user_uuid
       t.add :modified_at
-      t.add :updated_at
     end
   end
 
diff --git a/services/api/test/functional/arvados/v1/links_controller_test.rb b/services/api/test/functional/arvados/v1/links_controller_test.rb
index ac93c68..804e1bd 100644
--- a/services/api/test/functional/arvados/v1/links_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/links_controller_test.rb
@@ -20,7 +20,7 @@ class Arvados::V1::LinksControllerTest < ActionController::TestCase
     end
   end
 
-  %w(created_at updated_at modified_at).each do |attr|
+  %w(created_at modified_at).each do |attr|
     {nil: nil, bogus: 2.days.ago}.each do |bogustype, bogusvalue|
       test "cannot set #{bogustype} #{attr} in create" do
         authorize_with :active

commit 39e3f82b53db6a86f17ef1f7aa63a6c4ba155a1c
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 22:29:00 2014 -0400

    Describe logins and get_all_logins methods.

diff --git a/doc/api/methods/virtual_machines.html.textile.liquid b/doc/api/methods/virtual_machines.html.textile.liquid
index a3c89ab..0a7853c 100644
--- a/doc/api/methods/virtual_machines.html.textile.liquid
+++ b/doc/api/methods/virtual_machines.html.textile.liquid
@@ -45,12 +45,9 @@ table(table table-bordered table-condensed).
 
 h2. get_all_logins
 
-get_all_logins virtual_machines
+Get a list, for every virtual machine in the system, of SSH keys and account names that should be able to log in.
 
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
+Arguments: none.
 
 h2. list
 
@@ -66,7 +63,7 @@ table(table table-bordered table-condensed).
 
 h2. logins
 
-logins virtual_machines
+Get a list of SSH keys and account names that should be able to log in to a given virtual machine.
 
 Arguments:
 

commit eded84b99309a2cc84ba5cabb29c8f218cbcb599
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 22:24:51 2014 -0400

    Fix up job create/cancel descriptions.

diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index 59d9b6d..60d5a9e 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -14,7 +14,7 @@ Required arguments are displayed in %{background:#ccffcc}green%.
 
 h2. cancel
 
-cancel jobs
+Cancel a job that is queued or running.
 
 Arguments:
 
@@ -35,7 +35,7 @@ table(table table-bordered table-condensed).
 |exclude_script_versions|array of strings|Git commit branches, tags, or hashes to exclude when deciding whether to re-use a past job.|query|@["8f03c71","8f03c71"]@|
 |find_or_create         |boolean    |Before creating, look for an existing job that has identical script, script_version, and script_parameters to those in the present job, has nondeterministic=false, and did not fail (it could be queued, running, or completed). If such a job exists, respond with the existing job instead of submitting a new one.|query|@false@|
 
-When a job is executed, the 'script_version' field is resolved to an exact Git revision and the Git hash for that revision is recorded in 'script_version'.  If 'script_version' can't be resolved, the job submission will be rejected.
+When a job is submitted to the queue using the **create** method, the 'script_version' field is updated to a full 40-character Git commit hash based on the current content of the specified repository. If 'script_version' cannot be resolved, the job submission is rejected.
 
 h3. Reusing jobs
 

commit 5d83a6b6e8a76bfa79a9929c0658eeb7409c4574
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 22:18:32 2014 -0400

    Clean up API schema and method pages.
    
    Fill in missing object descriptions.
    Remove redundant updated_at attributes.
    Move methods sections from schema pages to method pages.
    Remove some unnecessary empty sections.
    Remove obsolete Commit and CommitAncestor.

diff --git a/doc/_config.yml b/doc/_config.yml
index 714c66a..fc26cc9 100644
--- a/doc/_config.yml
+++ b/doc/_config.yml
@@ -91,8 +91,6 @@ navbar:
       - api/schema/ApiClient.html.textile.liquid
       - api/schema/AuthorizedKey.html.textile.liquid
       - api/schema/Collection.html.textile.liquid
-      - api/schema/CommitAncestor.html.textile.liquid
-      - api/schema/Commit.html.textile.liquid
       - api/schema/Group.html.textile.liquid
       - api/schema/Human.html.textile.liquid
       - api/schema/Job.html.textile.liquid
diff --git a/doc/api/methods/api_client_authorizations.html.textile.liquid b/doc/api/methods/api_client_authorizations.html.textile.liquid
index c2e2feb..7af9711 100644
--- a/doc/api/methods/api_client_authorizations.html.textile.liquid
+++ b/doc/api/methods/api_client_authorizations.html.textile.liquid
@@ -6,7 +6,9 @@ title: "api_client_authorizations"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/api_client_authorizations@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/api_clients.html.textile.liquid b/doc/api/methods/api_clients.html.textile.liquid
index 0edc7ab..056cc30 100644
--- a/doc/api/methods/api_clients.html.textile.liquid
+++ b/doc/api/methods/api_clients.html.textile.liquid
@@ -6,11 +6,12 @@ title: "api_clients"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/api_clients@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
-
 h2. create
 
 Create a new ApiClient.
diff --git a/doc/api/methods/authorized_keys.html.textile.liquid b/doc/api/methods/authorized_keys.html.textile.liquid
index cbd1e16..9727c57 100644
--- a/doc/api/methods/authorized_keys.html.textile.liquid
+++ b/doc/api/methods/authorized_keys.html.textile.liquid
@@ -6,7 +6,9 @@ title: "authorized_keys"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/authorized_keys@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/collections.html.textile.liquid b/doc/api/methods/collections.html.textile.liquid
index a0a8ba6..f4eabcf 100644
--- a/doc/api/methods/collections.html.textile.liquid
+++ b/doc/api/methods/collections.html.textile.liquid
@@ -6,11 +6,12 @@ title: "collections"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/collections@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
-
 h2. create
 
 Create a new Collection.
diff --git a/doc/api/methods/groups.html.textile.liquid b/doc/api/methods/groups.html.textile.liquid
index 671ea1a..d2a2eee 100644
--- a/doc/api/methods/groups.html.textile.liquid
+++ b/doc/api/methods/groups.html.textile.liquid
@@ -7,6 +7,9 @@ title: "groups"
 ...
 
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
+
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/groups@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/humans.html.textile.liquid b/doc/api/methods/humans.html.textile.liquid
index bc9473b..1d8c13e 100644
--- a/doc/api/methods/humans.html.textile.liquid
+++ b/doc/api/methods/humans.html.textile.liquid
@@ -6,7 +6,9 @@ title: "humans"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/humans@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/job_tasks.html.textile.liquid b/doc/api/methods/job_tasks.html.textile.liquid
index 2ef87d6..7b040d8 100644
--- a/doc/api/methods/job_tasks.html.textile.liquid
+++ b/doc/api/methods/job_tasks.html.textile.liquid
@@ -6,7 +6,9 @@ title: "job_tasks"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/job_tasks@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index b8a8a24..59d9b6d 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -6,11 +6,12 @@ title: "jobs"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/jobs@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
-
 h2. cancel
 
 cancel jobs
@@ -168,7 +169,7 @@ table(table table-bordered table-condensed).
 
 h2. queue
 
-queue jobs
+Get the current job queue.
 
 Arguments:
 
@@ -177,6 +178,8 @@ table(table table-bordered table-condensed).
 |order|string||query||
 |filters|array||query||
 
+This method is equivalent to the "list method":#list, except that the results are restricted to queued jobs (i.e., jobs that have not yet been started or cancelled) and order defaults to queue priority.
+
 h2. update
 
 Update attributes of an existing Job.
diff --git a/doc/api/methods/keep_disks.html.textile.liquid b/doc/api/methods/keep_disks.html.textile.liquid
index 33498e6..5179ccc 100644
--- a/doc/api/methods/keep_disks.html.textile.liquid
+++ b/doc/api/methods/keep_disks.html.textile.liquid
@@ -6,11 +6,12 @@ title: "keep_disks"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/keep_disks@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
-
 h2. create
 
 Create a new KeepDisk.
diff --git a/doc/api/methods/links.html.textile.liquid b/doc/api/methods/links.html.textile.liquid
index 53cae9b..3c0bdf3 100644
--- a/doc/api/methods/links.html.textile.liquid
+++ b/doc/api/methods/links.html.textile.liquid
@@ -6,11 +6,12 @@ title: "links"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/links@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
-
 h2. create
 
 Create a new Link.
diff --git a/doc/api/methods/logs.html.textile.liquid b/doc/api/methods/logs.html.textile.liquid
index c7a0515..6d91322 100644
--- a/doc/api/methods/logs.html.textile.liquid
+++ b/doc/api/methods/logs.html.textile.liquid
@@ -6,7 +6,9 @@ title: "logs"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/logs@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/nodes.html.textile.liquid b/doc/api/methods/nodes.html.textile.liquid
index e6ce82a..2fb77e0 100644
--- a/doc/api/methods/nodes.html.textile.liquid
+++ b/doc/api/methods/nodes.html.textile.liquid
@@ -6,7 +6,9 @@ title: "nodes"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/nodes@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/pipeline_instances.html.textile.liquid b/doc/api/methods/pipeline_instances.html.textile.liquid
index 0a01176..d637a69 100644
--- a/doc/api/methods/pipeline_instances.html.textile.liquid
+++ b/doc/api/methods/pipeline_instances.html.textile.liquid
@@ -6,7 +6,9 @@ title: "pipeline_instances"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/pipeline_instances@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/pipeline_templates.html.textile.liquid b/doc/api/methods/pipeline_templates.html.textile.liquid
index 5c6f1e6..06684cc 100644
--- a/doc/api/methods/pipeline_templates.html.textile.liquid
+++ b/doc/api/methods/pipeline_templates.html.textile.liquid
@@ -6,7 +6,9 @@ title: "pipeline_templates"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/pipeline_templates@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/repositories.html.textile.liquid b/doc/api/methods/repositories.html.textile.liquid
index 9c53240..7bd8dd9 100644
--- a/doc/api/methods/repositories.html.textile.liquid
+++ b/doc/api/methods/repositories.html.textile.liquid
@@ -6,7 +6,9 @@ title: "repositories"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/repositories@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/specimens.html.textile.liquid b/doc/api/methods/specimens.html.textile.liquid
index f2f234f..6737c9b 100644
--- a/doc/api/methods/specimens.html.textile.liquid
+++ b/doc/api/methods/specimens.html.textile.liquid
@@ -6,7 +6,9 @@ title: "specimens"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/specimens@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/traits.html.textile.liquid b/doc/api/methods/traits.html.textile.liquid
index 65b6c47..9b19a08 100644
--- a/doc/api/methods/traits.html.textile.liquid
+++ b/doc/api/methods/traits.html.textile.liquid
@@ -6,7 +6,9 @@ title: "traits"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/traits@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/users.html.textile.liquid b/doc/api/methods/users.html.textile.liquid
index 102594e..c707f12 100644
--- a/doc/api/methods/users.html.textile.liquid
+++ b/doc/api/methods/users.html.textile.liquid
@@ -6,7 +6,9 @@ title: "users"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/users@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/methods/virtual_machines.html.textile.liquid b/doc/api/methods/virtual_machines.html.textile.liquid
index fa952ba..a3c89ab 100644
--- a/doc/api/methods/virtual_machines.html.textile.liquid
+++ b/doc/api/methods/virtual_machines.html.textile.liquid
@@ -6,7 +6,9 @@ title: "virtual_machines"
 
 ...
 
+See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
 
+API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/virtual_machines@
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
diff --git a/doc/api/schema/ApiClient.html.textile.liquid b/doc/api/schema/ApiClient.html.textile.liquid
index 914537d..0cda1af 100644
--- a/doc/api/schema/ApiClient.html.textile.liquid
+++ b/doc/api/schema/ApiClient.html.textile.liquid
@@ -7,27 +7,13 @@ title: ApiClient
 ...
 
 
-
-An **ApiClient** represents a client program that has issued a request to the API server.
-
+An **ApiClient** represents a client program that can issue requests to the API server.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/api_clients@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating an ApiClient.
-
-h3. Side effects
-
-Side effects of creating an ApiClient.
+See "api_clients":{{site.baseurl}}/api/methods/api_clients.html
 
-h2. Resources
+h2. Resource
 
 Each ApiClient has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -35,4 +21,4 @@ table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |name|string|||
 |url_prefix|string|||
-|is_trusted|boolean|||
+|is_trusted|boolean|Trusted by users to handle their API tokens (ApiClientAuthorizations).||
diff --git a/doc/api/schema/ApiClientAuthorization.html.textile.liquid b/doc/api/schema/ApiClientAuthorization.html.textile.liquid
index d4bbd59..dc9614a 100644
--- a/doc/api/schema/ApiClientAuthorization.html.textile.liquid
+++ b/doc/api/schema/ApiClientAuthorization.html.textile.liquid
@@ -6,27 +6,13 @@ title: ApiClientAuthorization
 
 ...
 
-
-
-A **ApiClientAuthorization** represents the API authorization token that has been issued to each "ApiClient":ApiClient.html known to this Arvados instance.
+An **ApiClientAuthorization** represents an API client's authorization to make API requests on a user's behalf.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/api_client_authorizations@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a ApiClientAuthorization.
-
-h3. Side effects
-
-Side effects of creating a ApiClientAuthorization.
+See "api_client_authorizations":{{site.baseurl}}/api/methods/api_client_authorizations.html
 
-h2. Resources
+h2. Resource
 
 An ApiClientAuthorization is not a generic Arvados resource.  The full list of properties that belong to an ApiClientAuthorization is:
 
@@ -39,6 +25,5 @@ table(table table-bordered table-condensed).
 |last_used_by_ip_address|string|||
 |last_used_at|datetime|||
 |expires_at|datetime|||
-|updated_at|datetime|||
 |default_owner_uuid|string|||
-|scopes|Array|||
+|scopes|array|||
diff --git a/doc/api/schema/AuthorizedKey.html.textile.liquid b/doc/api/schema/AuthorizedKey.html.textile.liquid
index f3dd847..d9f4354 100644
--- a/doc/api/schema/AuthorizedKey.html.textile.liquid
+++ b/doc/api/schema/AuthorizedKey.html.textile.liquid
@@ -5,27 +5,13 @@ navmenu: Schema
 title: AuthorizedKey
 ...
 
-
-
-A **AuthorizedKey** represents...
+An **AuthorizedKey** represents the public part of an SSH authentication key which can be used to authorize transactions on behalf of the user.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/authorized_keys@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a AuthorizedKey.
-
-h3. Side effects
-
-Side effects of creating a AuthorizedKey.
+See "authorized_keys":{{site.baseurl}}/api/methods/authorized_keys.html
 
-h2. Resources
+h2. Resource
 
 Each AuthorizedKey has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -36,4 +22,3 @@ table(table table-bordered table-condensed).
 |authorized_user_uuid|string|||
 |public_key|text|||
 |expires_at|datetime|||
-|updated_at|datetime|||
diff --git a/doc/api/schema/Collection.html.textile.liquid b/doc/api/schema/Collection.html.textile.liquid
index 2aa558a..06f6bca 100644
--- a/doc/api/schema/Collection.html.textile.liquid
+++ b/doc/api/schema/Collection.html.textile.liquid
@@ -6,16 +6,11 @@ title: Collection
 
 ...
 
-
-
-This resource concerns metadata, usage accounting, and integrity checks for data stored on the cloud.  Reading and writing the data _per se_ is achieved by the "Keep":{{site.baseurl}}/user/tutorials/tutorial-keep.html storage system.
-
+Note: This resource concerns indexing, usage accounting, and integrity checks for data stored in Arvados. Reading and writing the data _per se_ is achieved by the "Keep":{{site.baseurl}}/user/tutorials/tutorial-keep.html storage system.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/links@
+See "collections":{{site.baseurl}}/api/methods/collections.html
 
 h3. Conditions of creating a Collection
 
@@ -23,7 +18,7 @@ The @uuid@ and @manifest_text@ attributes must be provided when creating a Colle
 
 h3. Side effects of creating a Collection
 
-Referenced data can be protected from garbage collection.
+Referenced data can be protected from garbage collection. See the section about "resources" links on the "Links":Links.html page.
 
 Data can be shared with other users via the Arvados permission model.
 
diff --git a/doc/api/schema/Commit.html.textile.liquid b/doc/api/schema/Commit.html.textile.liquid
deleted file mode 100644
index 36de53f..0000000
--- a/doc/api/schema/Commit.html.textile.liquid
+++ /dev/null
@@ -1,38 +0,0 @@
----
-layout: default
-navsection: api
-navmenu: Schema
-title: Commit
-
-...
-
-
-
-A **Commit** represents...
-
-h2. Methods
-
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/commits@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a Commit.
-
-h3. Side effects
-
-Side effects of creating a Commit.
-
-h2. Resources
-
-Each Commit has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
-
-table(table table-bordered table-condensed).
-|_. Attribute|_. Type|_. Description|_. Example|
-|repository_name|string|||
-|sha1|string|||
-|message|string|||
-|updated_at|datetime|||
diff --git a/doc/api/schema/CommitAncestor.html.textile.liquid b/doc/api/schema/CommitAncestor.html.textile.liquid
deleted file mode 100644
index b488785..0000000
--- a/doc/api/schema/CommitAncestor.html.textile.liquid
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: default
-navsection: api
-navmenu: Schema
-title: CommitAncestor
-
-...
-
-
-
-A **CommitAncestor** represents...
-
-h2. Methods
-
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/commit_ancestors@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a CommitAncestor.
-
-h3. Side effects
-
-Side effects of creating a CommitAncestor.
-
-h2. Resources
-
-Each CommitAncestor has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
-
-table(table table-bordered table-condensed).
-|_. Attribute|_. Type|_. Description|_. Example|
-|repository_name|string|||
-|descendant|string|||
-|ancestor|string|||
-|is|boolean|||
-|updated_at|datetime|||
diff --git a/doc/api/schema/Group.html.textile.liquid b/doc/api/schema/Group.html.textile.liquid
index e0e092e..f01b75b 100644
--- a/doc/api/schema/Group.html.textile.liquid
+++ b/doc/api/schema/Group.html.textile.liquid
@@ -6,27 +6,11 @@ title: Group
 
 ...
 
-
-
-A **Group** represents...
-
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/groups@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a Group.
-
-h3. Side effects
-
-Side effects of creating a Group.
+See "groups":{{site.baseurl}}/api/methods/groups.html
 
-h2. Resources
+h2. Resource
 
 Each Group has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -34,4 +18,3 @@ table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |name|string|||
 |description|text|||
-|updated_at|datetime|||
diff --git a/doc/api/schema/Human.html.textile.liquid b/doc/api/schema/Human.html.textile.liquid
index 66bc5f1..361e619 100644
--- a/doc/api/schema/Human.html.textile.liquid
+++ b/doc/api/schema/Human.html.textile.liquid
@@ -6,31 +6,14 @@ title: Human
 
 ...
 
-
-
-A **Human** represents...
-
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/humans@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a Human.
-
-h3. Side effects
-
-Side effects of creating a Human.
+See "humans":{{site.baseurl}}/api/methods/humans.html
 
-h2. Resources
+h2. Resource
 
 Each Human has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
 table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
-|properties|Hash|||
-|updated_at|datetime|||
+|properties|hash|||
diff --git a/doc/api/schema/Job.html.textile.liquid b/doc/api/schema/Job.html.textile.liquid
index 14ed975..600ad18 100644
--- a/doc/api/schema/Job.html.textile.liquid
+++ b/doc/api/schema/Job.html.textile.liquid
@@ -6,8 +6,6 @@ title: Job
 
 ...
 
-
-
 Applications submit compute jobs when:
 * Provenance is important, i.e., it is worth recording how the output was produced; or
 * Computation time is significant; or
@@ -15,23 +13,7 @@ Applications submit compute jobs when:
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/jobs@
-
-h3. Queue
-
-<pre>
-GET https://{{ site.arvados_api_host }}/arvados/v1/jobs/queue
-
-POST https://{{ site.arvados_api_host }}/arvados/v1/jobs/queue
-_method=GET
-filters=[["owner_uuid","=","xyzzy-tpzed-a4lcehql0dv2u25"]]
-</pre>
-
-→ Job resource list
-
-This method is equivalent to the "index method":{{site.baseurl}}/api/methods.html#index, except that the results are restricted to queued jobs (i.e., jobs that have not yet been started or cancelled) and order defaults to queue priority.
+See "jobs":{{site.baseurl}}/api/methods/jobs.html
 
 h2. Resource
 
@@ -52,7 +34,7 @@ table(table table-bordered table-condensed).
 |success|boolean|Whether the job indicated successful completion|Is null if job has not finished|
 |is_locked_by_uuid|string|UUID of the user who has locked this job|Is null if job is not locked. The system user locks the job when starting the job, in order to prevent job attributes from being altered.|
 |log|string|Collection UUID|Is null if the job has not finished. After the job runs, the given collection contains a text file with log messages provided by the @arv-crunch-job@ task scheduler as well as the standard error streams provided by the task processes.|
-|tasks_summary|Hash|Summary of task completion states.|Example: @{"done":0,"running":4,"todo":2,"failed":0}@|
+|tasks_summary|hash|Summary of task completion states.|Example: @{"done":0,"running":4,"todo":2,"failed":0}@|
 |output|string|Collection UUID|Is null if the job has not finished.|
 |nondeterministic|boolean|The job is expected to produce different results if run more than once.|If true, this job will not be considered as a candidate for automatic re-use when submitting subsequent identical jobs.|
 |submit_id|string|Unique ID provided by client when job was submitted|Optional. This can be used by a client to make the "jobs.create":{{site.baseurl}}/api/methods/jobs.html#create method idempotent.|
diff --git a/doc/api/schema/JobTask.html.textile.liquid b/doc/api/schema/JobTask.html.textile.liquid
index 67c16ff..fbd4343 100644
--- a/doc/api/schema/JobTask.html.textile.liquid
+++ b/doc/api/schema/JobTask.html.textile.liquid
@@ -6,8 +6,6 @@ title: JobTask
 
 ...
 
-
-
 A Job Task is a well defined independently-computable portion of a "Job":Job.html.
 
 Job tasks are created two ways:
@@ -22,11 +20,9 @@ Job tasks have particular update semantics:
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/job_tasks@
+See "job_tasks":{{site.baseurl}}/api/methods/job_tasks.html
 
-h2. Resources
+h2. Resource
 
 Each JobTask has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -35,7 +31,7 @@ table(table table-bordered table-condensed).
 |sequence|integer|Execution sequence.
 A step cannot be run until all steps with lower sequence numbers have completed.
 Job steps with the same sequence number can be run in any order.||
-|parameters{}|list|||
+|parameters|hash|||
 |output|text|||
 |progress|float|||
 |success|boolean|Is null if the task has neither completed successfully nor failed permanently.||
diff --git a/doc/api/schema/KeepDisk.html.textile.liquid b/doc/api/schema/KeepDisk.html.textile.liquid
index 8779b1f..f2bffb1 100644
--- a/doc/api/schema/KeepDisk.html.textile.liquid
+++ b/doc/api/schema/KeepDisk.html.textile.liquid
@@ -6,27 +6,13 @@ title: KeepDisk
 
 ...
 
-
-
-A **KeepDisk** represents...
+A **KeepDisk** is a filesystem volume used by a Keep storage server to store data blocks.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/keep_disks@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a KeepDisk.
-
-h3. Side effects
-
-Side effects of creating a KeepDisk.
+See "keep_disks":{{site.baseurl}}/api/methods/keep_disks.html
 
-h2. Resources
+h2. Resource
 
 Each KeepDisk has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -42,7 +28,6 @@ table(table table-bordered table-condensed).
 |last_read_at|datetime|||
 |last_write_at|datetime|||
 |last_ping_at|datetime|||
-|updated_at|datetime|||
 |service_host|string|||
 |service_port|integer|||
 |service_ssl_flag|boolean|||
diff --git a/doc/api/schema/Link.html.textile.liquid b/doc/api/schema/Link.html.textile.liquid
index dec33bf..81259a7 100644
--- a/doc/api/schema/Link.html.textile.liquid
+++ b/doc/api/schema/Link.html.textile.liquid
@@ -6,8 +6,6 @@ title: Link
 
 ...
 
-
-
 **Links** describe relationships between Arvados objects, and from objects to primitives.
 
 Links are directional: each metadata object has a tail (the "subject" being described), class, name, properties, and head (the "object" that describes the "subject").  A Link may describe a relationship between two objects in an Arvados database: e.g. a _permission_ link between a User and a Group defines the permissions that User has to read or modify the Group.  Other Links simply represent metadata for a single object, e.g. the _identifier_ Link, in which the _name_ property represents a human-readable identifier for the object at the link's head.
@@ -16,9 +14,7 @@ For links that don't make sense to share between API clients, a _link_class_ tha
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/links@
+See "links":{{site.baseurl}}/api/methods/links.html
 
 h2. Resource
 
@@ -30,7 +26,7 @@ table(table table-bordered table-condensed).
 |link_class|string|Class (see below)|
 |name|string|Link type (see below)|
 |head_uuid|string|Object UUID at the head (end, destination, target) of this link|
-|properties{}|list|Additional information, expressed as a key→value hash. Key: string. Value: string, number, array, or hash.|
+|properties|hash|Additional information, expressed as a key→value hash. Key: string. Value: string, number, array, or hash.|
 
 h2. Link classes
 
diff --git a/doc/api/schema/Log.html.textile.liquid b/doc/api/schema/Log.html.textile.liquid
index 4d781dc..425246a 100644
--- a/doc/api/schema/Log.html.textile.liquid
+++ b/doc/api/schema/Log.html.textile.liquid
@@ -6,15 +6,11 @@ title: Log
 
 ...
 
-
-
 **Log** objects record events that occur in an Arvados cluster. Both user-written pipelines and the Arvados system itself may generate Log events.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/logs@
+See "logs":{{site.baseurl}}/api/methods/logs.html
 
 h2. Creation
 
@@ -22,9 +18,9 @@ Any user may create Log entries for any event they find useful. User-generated L
 
 h3. System Logs
 
-At the time of this writing, the Arvados system uses Logs only to record interactive user shell logins (event type @LOGIN@).
+Arvados uses Logs to record creation, deletion, and updates of other Arvados resources.
 
-h2. Resources
+h2. Resource
 
 Each Log has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -34,5 +30,4 @@ table(table table-bordered table-condensed).
 |event_at|datetime|||
 |event_type|string|A user-defined category or type for this event.|@LOGIN@|
 |summary|text|||
-|info|Hash|||
-|updated_at|datetime|||
+|properties|hash|||
diff --git a/doc/api/schema/Node.html.textile.liquid b/doc/api/schema/Node.html.textile.liquid
index 6a4331a..6f576bf 100644
--- a/doc/api/schema/Node.html.textile.liquid
+++ b/doc/api/schema/Node.html.textile.liquid
@@ -6,27 +6,13 @@ title: Node
 
 ...
 
-
-
-A **Node** represents...
+A **Node** represents a host that can be used to run Crunch job tasks.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/nodes@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a Node.
-
-h3. Side effects
-
-Side effects of creating a Node.
+See "nodes":{{site.baseurl}}/api/methods/nodes.html
 
-h2. Resources
+h2. Resource
 
 Each Node has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -38,5 +24,4 @@ table(table table-bordered table-condensed).
 |ip_address|string|||
 |first_ping_at|datetime|||
 |last_ping_at|datetime|||
-|info|Hash|||
-|updated_at|datetime|||
+|info|hash|||
diff --git a/doc/api/schema/PipelineInstance.html.textile.liquid b/doc/api/schema/PipelineInstance.html.textile.liquid
index bd1009d..75c7885 100644
--- a/doc/api/schema/PipelineInstance.html.textile.liquid
+++ b/doc/api/schema/PipelineInstance.html.textile.liquid
@@ -6,27 +6,13 @@ title: PipelineInstance
 
 ...
 
-
-
-A **PipelineInstance** represents...
+A **PipelineInstance** is the act or record of applying a pipeline template to a specific set of inputs; generally, a pipeline instance refers to a set of jobs that have been run to satisfy the pipeline components.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/pipeline_instances@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a PipelineInstance.
-
-h3. Side effects
-
-Side effects of creating a PipelineInstance.
+See "pipeline_instances":{{site.baseurl}}/api/methods/pipeline_instances.html
 
-h2. Resources
+h2. Resource
 
 Each PipelineInstance has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -34,8 +20,7 @@ table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |pipeline_template_uuid|string|||
 |name|string|||
-|components|Hash|||
+|components|hash|||
 |success|boolean|||
 |active|boolean|||
-|updated_at|datetime|||
 |properties|Hash|||
diff --git a/doc/api/schema/PipelineTemplate.html.textile.liquid b/doc/api/schema/PipelineTemplate.html.textile.liquid
index 9bc5bcc..9e81ec0 100644
--- a/doc/api/schema/PipelineTemplate.html.textile.liquid
+++ b/doc/api/schema/PipelineTemplate.html.textile.liquid
@@ -131,30 +131,15 @@ This pipeline consists of three components.  The component "cleanup" depends on
 }
 </pre></notextile>
 
-
-
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/pipeline_templates@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a PipelineTemplate.
-
-h3. Side effects
-
-Side effects of creating a PipelineTemplate.
+See "pipeline_templates":{{site.baseurl}}/api/methods/pipeline_templates.html
 
-h2. Resources
+h2. Resource
 
 Each PipelineTemplate has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
 table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |name|string|||
-|components|Hash|||
-|updated_at|datetime|||
+|components|hash|||
diff --git a/doc/api/schema/Repository.html.textile.liquid b/doc/api/schema/Repository.html.textile.liquid
index 7c23eff..0308f7d 100644
--- a/doc/api/schema/Repository.html.textile.liquid
+++ b/doc/api/schema/Repository.html.textile.liquid
@@ -6,27 +6,13 @@ title: Repository
 
 ...
 
-
-
-A **Repository** represents...
+A **Repository** represents a git repository hosted in an Arvados installation.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/repositories@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a Repository.
-
-h3. Side effects
-
-Side effects of creating a Repository.
+See "repositories":{{site.baseurl}}/api/methods/repositories.html
 
-h2. Resources
+h2. Resource
 
 Each Repository has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -35,4 +21,3 @@ table(table table-bordered table-condensed).
 |name|string|||
 |fetch_url|string|||
 |push_url|string|||
-|updated_at|datetime|||
diff --git a/doc/api/schema/Specimen.html.textile.liquid b/doc/api/schema/Specimen.html.textile.liquid
index 4add1a4..1a7e483 100644
--- a/doc/api/schema/Specimen.html.textile.liquid
+++ b/doc/api/schema/Specimen.html.textile.liquid
@@ -6,32 +6,17 @@ title: Specimen
 
 ...
 
-
-
-A **Specimen** represents...
+A **Specimen** represents a tissue sample or similar material obtained from a human that has some biomedical significance or interest.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/specimens@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a Specimen.
-
-h3. Side effects
-
-Side effects of creating a Specimen.
+See "specimens":{{site.baseurl}}/api/methods/specimens.html
 
-h2. Resources
+h2. Resource
 
 Each Specimen has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
 table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |material|string|||
-|updated_at|datetime|||
-|properties|Hash|||
+|properties|hash|||
diff --git a/doc/api/schema/Trait.html.textile.liquid b/doc/api/schema/Trait.html.textile.liquid
index fcb9756..80c74ab 100644
--- a/doc/api/schema/Trait.html.textile.liquid
+++ b/doc/api/schema/Trait.html.textile.liquid
@@ -6,32 +6,17 @@ title: Trait
 
 ...
 
-
-
-A **Trait** represents...
+A **Trait** represents a measured or observed characteristic of a human.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/traits@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a Trait.
-
-h3. Side effects
-
-Side effects of creating a Trait.
+See "traits":{{site.baseurl}}/api/methods/traits.html
 
-h2. Resources
+h2. Resource
 
 Each Trait has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
 table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |name|string|||
-|properties|Hash|||
-|updated_at|datetime|||
+|properties|hash|||
diff --git a/doc/api/schema/User.html.textile.liquid b/doc/api/schema/User.html.textile.liquid
index 461147c..c95a243 100644
--- a/doc/api/schema/User.html.textile.liquid
+++ b/doc/api/schema/User.html.textile.liquid
@@ -6,27 +6,13 @@ title: User
 
 ...
 
-
-
-A **User** represents...
+A **User** represents a person who interacts with Arvados via an ApiClient.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/users@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a User.
-
-h3. Side effects
-
-Side effects of creating a User.
+See "users":{{site.baseurl}}/api/methods/users.html
 
-h2. Resources
+h2. Resource
 
 Each User has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
@@ -37,7 +23,6 @@ table(table table-bordered table-condensed).
 |last_name|string|||
 |identity_url|string|||
 |is_admin|boolean|||
-|prefs|Hash|||
-|updated_at|datetime|||
+|prefs|hash|||
 |default_owner_uuid|string|||
 |is_active|boolean|||
diff --git a/doc/api/schema/VirtualMachine.html.textile.liquid b/doc/api/schema/VirtualMachine.html.textile.liquid
index 6aa9c2b..1c6a4b6 100644
--- a/doc/api/schema/VirtualMachine.html.textile.liquid
+++ b/doc/api/schema/VirtualMachine.html.textile.liquid
@@ -6,31 +6,16 @@ title: VirtualMachine
 
 ...
 
-
-
-A **VirtualMachine** represents...
+A **VirtualMachine** represents a network host, running within an Arvados installation, on which Arvados users are given login accounts.
 
 h2. Methods
 
-See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
-
-API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/virtual_machines@
-
-h2. Creation
-
-h3. Prerequisites
-
-Prerequisites for creating a VirtualMachine.
-
-h3. Side effects
-
-Side effects of creating a VirtualMachine.
+See "virtual_machines":{{site.baseurl}}/api/methods/virtual_machines.html
 
-h2. Resources
+h2. Resource
 
 Each VirtualMachine has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
 
 table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |hostname|string|||
-|updated_at|datetime|||

commit 153056777f77f09a6d29543e73db315a7fb6b0fb
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 21:23:08 2014 -0400

    Remove spurious "destroy" methods from API docs.

diff --git a/doc/api/methods/api_client_authorizations.html.textile.liquid b/doc/api/methods/api_client_authorizations.html.textile.liquid
index 01cda81..c2e2feb 100644
--- a/doc/api/methods/api_client_authorizations.html.textile.liquid
+++ b/doc/api/methods/api_client_authorizations.html.textile.liquid
@@ -42,16 +42,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the ApiClientAuthorization in question.|path||
 
-h2. destroy
-
-destroy api_client_authorizations
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a ApiClientAuthorization's metadata by UUID.
diff --git a/doc/api/methods/api_clients.html.textile.liquid b/doc/api/methods/api_clients.html.textile.liquid
index ddb66f5..0edc7ab 100644
--- a/doc/api/methods/api_clients.html.textile.liquid
+++ b/doc/api/methods/api_clients.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the ApiClient in question.|path||
 
-h2. destroy
-
-destroy api_clients
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a ApiClient's metadata by UUID.
diff --git a/doc/api/methods/authorized_keys.html.textile.liquid b/doc/api/methods/authorized_keys.html.textile.liquid
index 771409e..cbd1e16 100644
--- a/doc/api/methods/authorized_keys.html.textile.liquid
+++ b/doc/api/methods/authorized_keys.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the AuthorizedKey in question.|path||
 
-h2. destroy
-
-destroy authorized_keys
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a AuthorizedKey's metadata by UUID.
diff --git a/doc/api/methods/collections.html.textile.liquid b/doc/api/methods/collections.html.textile.liquid
index 1829738..a0a8ba6 100644
--- a/doc/api/methods/collections.html.textile.liquid
+++ b/doc/api/methods/collections.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Collection in question.|path||
 
-h2. destroy
-
-destroy collections
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Collection's metadata by UUID.
diff --git a/doc/api/methods/groups.html.textile.liquid b/doc/api/methods/groups.html.textile.liquid
index 7384f01..671ea1a 100644
--- a/doc/api/methods/groups.html.textile.liquid
+++ b/doc/api/methods/groups.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Group in question.|path||
 
-h2. destroy
-
-destroy groups
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Group's metadata by UUID.
diff --git a/doc/api/methods/humans.html.textile.liquid b/doc/api/methods/humans.html.textile.liquid
index a5170ba..bc9473b 100644
--- a/doc/api/methods/humans.html.textile.liquid
+++ b/doc/api/methods/humans.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Human in question.|path||
 
-h2. destroy
-
-destroy humans
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Human's metadata by UUID.
diff --git a/doc/api/methods/job_tasks.html.textile.liquid b/doc/api/methods/job_tasks.html.textile.liquid
index 1f6c9d9..2ef87d6 100644
--- a/doc/api/methods/job_tasks.html.textile.liquid
+++ b/doc/api/methods/job_tasks.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the JobTask in question.|path||
 
-h2. destroy
-
-destroy job_tasks
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a JobTask's metadata by UUID.
diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index 0560131..b8a8a24 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -133,16 +133,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Job in question.|path||
 
-h2. destroy
-
-destroy jobs
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Job's metadata by UUID.
diff --git a/doc/api/methods/keep_disks.html.textile.liquid b/doc/api/methods/keep_disks.html.textile.liquid
index f458598..33498e6 100644
--- a/doc/api/methods/keep_disks.html.textile.liquid
+++ b/doc/api/methods/keep_disks.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the KeepDisk in question.|path||
 
-h2. destroy
-
-destroy keep_disks
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a KeepDisk's metadata by UUID.
diff --git a/doc/api/methods/links.html.textile.liquid b/doc/api/methods/links.html.textile.liquid
index 1913777..53cae9b 100644
--- a/doc/api/methods/links.html.textile.liquid
+++ b/doc/api/methods/links.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Link in question.|path||
 
-h2. destroy
-
-destroy links
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Link's metadata by UUID.
diff --git a/doc/api/methods/logs.html.textile.liquid b/doc/api/methods/logs.html.textile.liquid
index a064625..c7a0515 100644
--- a/doc/api/methods/logs.html.textile.liquid
+++ b/doc/api/methods/logs.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Log in question.|path||
 
-h2. destroy
-
-destroy logs
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Log's metadata by UUID.
diff --git a/doc/api/methods/nodes.html.textile.liquid b/doc/api/methods/nodes.html.textile.liquid
index d3c41aa..e6ce82a 100644
--- a/doc/api/methods/nodes.html.textile.liquid
+++ b/doc/api/methods/nodes.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Node in question.|path||
 
-h2. destroy
-
-destroy nodes
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Node's metadata by UUID.
diff --git a/doc/api/methods/pipeline_instances.html.textile.liquid b/doc/api/methods/pipeline_instances.html.textile.liquid
index d9f1733..0a01176 100644
--- a/doc/api/methods/pipeline_instances.html.textile.liquid
+++ b/doc/api/methods/pipeline_instances.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the PipelineInstance in question.|path||
 
-h2. destroy
-
-destroy pipeline_instances
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a PipelineInstance's metadata by UUID.
diff --git a/doc/api/methods/pipeline_templates.html.textile.liquid b/doc/api/methods/pipeline_templates.html.textile.liquid
index 29b0a6a..5c6f1e6 100644
--- a/doc/api/methods/pipeline_templates.html.textile.liquid
+++ b/doc/api/methods/pipeline_templates.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the PipelineTemplate in question.|path||
 
-h2. destroy
-
-destroy pipeline_templates
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a PipelineTemplate's metadata by UUID.
diff --git a/doc/api/methods/repositories.html.textile.liquid b/doc/api/methods/repositories.html.textile.liquid
index e89c6a5..9c53240 100644
--- a/doc/api/methods/repositories.html.textile.liquid
+++ b/doc/api/methods/repositories.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Repository in question.|path||
 
-h2. destroy
-
-destroy repositories
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Repository's metadata by UUID.
diff --git a/doc/api/methods/specimens.html.textile.liquid b/doc/api/methods/specimens.html.textile.liquid
index 2734557..f2f234f 100644
--- a/doc/api/methods/specimens.html.textile.liquid
+++ b/doc/api/methods/specimens.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Specimen in question.|path||
 
-h2. destroy
-
-destroy specimens
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Specimen's metadata by UUID.
diff --git a/doc/api/methods/traits.html.textile.liquid b/doc/api/methods/traits.html.textile.liquid
index ab2fa6f..65b6c47 100644
--- a/doc/api/methods/traits.html.textile.liquid
+++ b/doc/api/methods/traits.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Trait in question.|path||
 
-h2. destroy
-
-destroy traits
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a Trait's metadata by UUID.
diff --git a/doc/api/methods/users.html.textile.liquid b/doc/api/methods/users.html.textile.liquid
index cb35c3d..102594e 100644
--- a/doc/api/methods/users.html.textile.liquid
+++ b/doc/api/methods/users.html.textile.liquid
@@ -40,16 +40,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the User in question.|path||
 
-h2. destroy
-
-destroy users
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. event_stream
 
 event_stream users
diff --git a/doc/api/methods/virtual_machines.html.textile.liquid b/doc/api/methods/virtual_machines.html.textile.liquid
index 070569c..fa952ba 100644
--- a/doc/api/methods/virtual_machines.html.textile.liquid
+++ b/doc/api/methods/virtual_machines.html.textile.liquid
@@ -31,16 +31,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the VirtualMachine in question.|path||
 
-h2. destroy
-
-destroy virtual_machines
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. get
 
 Gets a VirtualMachine's metadata by UUID.

commit 172496748cb0a149426e8a10cb4fd1c64e20dbe7
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 21:21:24 2014 -0400

    Remove spurious "show" methods from API docs.

diff --git a/doc/api/methods.html.textile.liquid b/doc/api/methods.html.textile.liquid
index 187ca26..9078720 100644
--- a/doc/api/methods.html.textile.liquid
+++ b/doc/api/methods.html.textile.liquid
@@ -44,14 +44,6 @@ DELETE https://{{ site.arvados_api_host }}/arvados/v1/groups/xyzzy-ldvyl-vyydjep
 
 → Group resource
 
-h2. Show
-
-<pre>
-GET https://{{ site.arvados_api_host }}/arvados/v1/groups/xyzzy-ldvyl-vyydjeplwaa6emg
-</pre>
-
-→ Group resource
-
 h2. Update
 
 <pre>
diff --git a/doc/api/methods/api_client_authorizations.html.textile.liquid b/doc/api/methods/api_client_authorizations.html.textile.liquid
index b79ba78..01cda81 100644
--- a/doc/api/methods/api_client_authorizations.html.textile.liquid
+++ b/doc/api/methods/api_client_authorizations.html.textile.liquid
@@ -74,16 +74,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching api_client_authorizations.|query||
 |filters|array|Conditions for filtering api_client_authorizations.|query||
 
-h2. show
-
-show api_client_authorizations
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing ApiClientAuthorization.
diff --git a/doc/api/methods/api_clients.html.textile.liquid b/doc/api/methods/api_clients.html.textile.liquid
index 72c2943..ddb66f5 100644
--- a/doc/api/methods/api_clients.html.textile.liquid
+++ b/doc/api/methods/api_clients.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching api_clients.|query||
 |filters|array|Conditions for filtering api_clients.|query||
 
-h2. show
-
-show api_clients
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing ApiClient.
diff --git a/doc/api/methods/authorized_keys.html.textile.liquid b/doc/api/methods/authorized_keys.html.textile.liquid
index 6f9fb5a..771409e 100644
--- a/doc/api/methods/authorized_keys.html.textile.liquid
+++ b/doc/api/methods/authorized_keys.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching authorized_keys.|query||
 |filters|array|Conditions for filtering authorized_keys.|query||
 
-h2. show
-
-show authorized_keys
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing AuthorizedKey.
diff --git a/doc/api/methods/collections.html.textile.liquid b/doc/api/methods/collections.html.textile.liquid
index 7f522c9..1829738 100644
--- a/doc/api/methods/collections.html.textile.liquid
+++ b/doc/api/methods/collections.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching collections.|query||
 |filters|array|Conditions for filtering collections.|query||
 
-h2. show
-
-show collections
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Collection.
diff --git a/doc/api/methods/groups.html.textile.liquid b/doc/api/methods/groups.html.textile.liquid
index 9aa664d..7384f01 100644
--- a/doc/api/methods/groups.html.textile.liquid
+++ b/doc/api/methods/groups.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching groups.|query||
 |filters|array|Conditions for filtering groups.|query||
 
-h2. show
-
-show groups
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Group.
diff --git a/doc/api/methods/humans.html.textile.liquid b/doc/api/methods/humans.html.textile.liquid
index 22cd7fe..a5170ba 100644
--- a/doc/api/methods/humans.html.textile.liquid
+++ b/doc/api/methods/humans.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching humans.|query||
 |filters|array|Conditions for filtering humans.|query||
 
-h2. show
-
-show humans
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Human.
diff --git a/doc/api/methods/job_tasks.html.textile.liquid b/doc/api/methods/job_tasks.html.textile.liquid
index 2b2b111..1f6c9d9 100644
--- a/doc/api/methods/job_tasks.html.textile.liquid
+++ b/doc/api/methods/job_tasks.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching job_tasks.|query||
 |filters|array|Conditions for filtering job_tasks.|query||
 
-h2. show
-
-show job_tasks
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing JobTask.
diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index cc2aa2d..0560131 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -187,16 +187,6 @@ table(table table-bordered table-condensed).
 |order|string||query||
 |filters|array||query||
 
-h2. show
-
-show jobs
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Job.
diff --git a/doc/api/methods/keep_disks.html.textile.liquid b/doc/api/methods/keep_disks.html.textile.liquid
index 15551d2..f458598 100644
--- a/doc/api/methods/keep_disks.html.textile.liquid
+++ b/doc/api/methods/keep_disks.html.textile.liquid
@@ -79,16 +79,6 @@ table(table table-bordered table-condensed).
 |service_host|string||query||
 |uuid|string||query||
 
-h2. show
-
-show keep_disks
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing KeepDisk.
diff --git a/doc/api/methods/links.html.textile.liquid b/doc/api/methods/links.html.textile.liquid
index 7f04baf..1913777 100644
--- a/doc/api/methods/links.html.textile.liquid
+++ b/doc/api/methods/links.html.textile.liquid
@@ -73,16 +73,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|a|string||path||
 
-h2. show
-
-show links
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Link.
diff --git a/doc/api/methods/logs.html.textile.liquid b/doc/api/methods/logs.html.textile.liquid
index cdc9f61..a064625 100644
--- a/doc/api/methods/logs.html.textile.liquid
+++ b/doc/api/methods/logs.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching logs.|query||
 |filters|array|Conditions for filtering logs.|query||
 
-h2. show
-
-show logs
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Log.
diff --git a/doc/api/methods/nodes.html.textile.liquid b/doc/api/methods/nodes.html.textile.liquid
index 8dc896c..d3c41aa 100644
--- a/doc/api/methods/nodes.html.textile.liquid
+++ b/doc/api/methods/nodes.html.textile.liquid
@@ -74,16 +74,6 @@ table(table table-bordered table-condensed).
 {background:#ccffcc}.|ping_secret|string||query||
 {background:#ccffcc}.|uuid|string||path||
 
-h2. show
-
-show nodes
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Node.
diff --git a/doc/api/methods/pipeline_instances.html.textile.liquid b/doc/api/methods/pipeline_instances.html.textile.liquid
index eb0574a..d9f1733 100644
--- a/doc/api/methods/pipeline_instances.html.textile.liquid
+++ b/doc/api/methods/pipeline_instances.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching pipeline_instances.|query||
 |filters|array|Conditions for filtering pipeline_instances.|query||
 
-h2. show
-
-show pipeline_instances
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing PipelineInstance.
diff --git a/doc/api/methods/pipeline_templates.html.textile.liquid b/doc/api/methods/pipeline_templates.html.textile.liquid
index 5d3c45e..29b0a6a 100644
--- a/doc/api/methods/pipeline_templates.html.textile.liquid
+++ b/doc/api/methods/pipeline_templates.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching pipeline_templates.|query||
 |filters|array|Conditions for filtering pipeline_templates.|query||
 
-h2. show
-
-show pipeline_templates
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing PipelineTemplate.
diff --git a/doc/api/methods/repositories.html.textile.liquid b/doc/api/methods/repositories.html.textile.liquid
index b5af665..e89c6a5 100644
--- a/doc/api/methods/repositories.html.textile.liquid
+++ b/doc/api/methods/repositories.html.textile.liquid
@@ -72,16 +72,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching repositories.|query||
 |filters|array|Conditions for filtering repositories.|query||
 
-h2. show
-
-show repositories
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Repository.
diff --git a/doc/api/methods/specimens.html.textile.liquid b/doc/api/methods/specimens.html.textile.liquid
index 46cbefe..2734557 100644
--- a/doc/api/methods/specimens.html.textile.liquid
+++ b/doc/api/methods/specimens.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching specimens.|query||
 |filters|array|Conditions for filtering specimens.|query||
 
-h2. show
-
-show specimens
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Specimen.
diff --git a/doc/api/methods/traits.html.textile.liquid b/doc/api/methods/traits.html.textile.liquid
index 968cfb6..ab2fa6f 100644
--- a/doc/api/methods/traits.html.textile.liquid
+++ b/doc/api/methods/traits.html.textile.liquid
@@ -63,16 +63,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching traits.|query||
 |filters|array|Conditions for filtering traits.|query||
 
-h2. show
-
-show traits
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing Trait.
diff --git a/doc/api/methods/users.html.textile.liquid b/doc/api/methods/users.html.textile.liquid
index 19b7a6c..cb35c3d 100644
--- a/doc/api/methods/users.html.textile.liquid
+++ b/doc/api/methods/users.html.textile.liquid
@@ -82,16 +82,6 @@ table(table table-bordered table-condensed).
 |order|string|Order in which to return matching users.|query||
 |filters|array|Conditions for filtering users.|query||
 
-h2. show
-
-show users
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. system
 
 system users
diff --git a/doc/api/methods/virtual_machines.html.textile.liquid b/doc/api/methods/virtual_machines.html.textile.liquid
index 2c3c37d..070569c 100644
--- a/doc/api/methods/virtual_machines.html.textile.liquid
+++ b/doc/api/methods/virtual_machines.html.textile.liquid
@@ -82,16 +82,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string||path||
 
-h2. show
-
-show virtual_machines
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|uuid|string||path||
-
 h2. update
 
 Update attributes of an existing VirtualMachine.

commit 61ddcaf192e3f39ed8a1242f35bf1b28ff1fe121
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 21:16:36 2014 -0400

    Use "filters" instead of "where" in examples and docs. Remove
    references to unsupported "q" and "pageToken" parameters.

diff --git a/doc/api/methods.html.textile.liquid b/doc/api/methods.html.textile.liquid
index 0110ebb..187ca26 100644
--- a/doc/api/methods.html.textile.liquid
+++ b/doc/api/methods.html.textile.liquid
@@ -13,20 +13,19 @@ title: REST methods
 h2(#index). Index, list, search
 
 <pre>
-GET https://{{ site.arvados_api_host }}/arvados/v1/groups?where[owner_uuid]=xyzzy-tpzed-a4lcehql0dv2u25
+GET https://{{ site.arvados_api_host }}/arvados/v1/groups?filters=[["owner_uuid","=","xyzzy-tpzed-a4lcehql0dv2u25"]]
  
 POST https://{{ site.arvados_api_host }}/arvados/v1/groups
 _method=GET
-where[owner_uuid]=xyzzy-tpzed-a4lcehql0dv2u25
+filters=[["owner_uuid","=","xyzzy-tpzed-a4lcehql0dv2u25"]]
 </pre>
 
 → Group resource list
 
 table(table table-bordered table-condensed).
 |*Parameter name*|*Value*|*Description*|
-|max_results|integer|Maximum number of resources to return|
-|page_token|string||
-|where{}|list|Attribute values to search for|
+|limit|integer|Maximum number of resources to return|
+|filters|array|Conditions for selecting resources to return|
 
 h2. Create
 
diff --git a/doc/api/methods/api_client_authorizations.html.textile.liquid b/doc/api/methods/api_client_authorizations.html.textile.liquid
index 75ffd3f..b79ba78 100644
--- a/doc/api/methods/api_client_authorizations.html.textile.liquid
+++ b/doc/api/methods/api_client_authorizations.html.textile.liquid
@@ -62,17 +62,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the ApiClientAuthorization in question.|path||
 
-h2. index
-
-index api_client_authorizations
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List api_client_authorizations.
@@ -83,9 +72,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of api_client_authorizations to return.|query||
 |order|string|Order in which to return matching api_client_authorizations.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching api_client_authorizations.|query||
-|where|object|Conditions for filtering api_client_authorizations.|query||
+|filters|array|Conditions for filtering api_client_authorizations.|query||
 
 h2. show
 
diff --git a/doc/api/methods/api_clients.html.textile.liquid b/doc/api/methods/api_clients.html.textile.liquid
index c6b7844..72c2943 100644
--- a/doc/api/methods/api_clients.html.textile.liquid
+++ b/doc/api/methods/api_clients.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the ApiClient in question.|path||
 
-h2. index
-
-index api_clients
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List api_clients.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of api_clients to return.|query||
 |order|string|Order in which to return matching api_clients.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching api_clients.|query||
-|where|object|Conditions for filtering api_clients.|query||
+|filters|array|Conditions for filtering api_clients.|query||
 
 h2. show
 
diff --git a/doc/api/methods/authorized_keys.html.textile.liquid b/doc/api/methods/authorized_keys.html.textile.liquid
index a3cc9e5..6f9fb5a 100644
--- a/doc/api/methods/authorized_keys.html.textile.liquid
+++ b/doc/api/methods/authorized_keys.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the AuthorizedKey in question.|path||
 
-h2. index
-
-index authorized_keys
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List authorized_keys.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of authorized_keys to return.|query||
 |order|string|Order in which to return matching authorized_keys.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching authorized_keys.|query||
-|where|object|Conditions for filtering authorized_keys.|query||
+|filters|array|Conditions for filtering authorized_keys.|query||
 
 h2. show
 
diff --git a/doc/api/methods/collections.html.textile.liquid b/doc/api/methods/collections.html.textile.liquid
index 6f9d142..7f522c9 100644
--- a/doc/api/methods/collections.html.textile.liquid
+++ b/doc/api/methods/collections.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Collection in question.|path||
 
-h2. index
-
-index collections
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List collections.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of collections to return.|query||
 |order|string|Order in which to return matching collections.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching collections.|query||
-|where|object|Conditions for filtering collections.|query||
+|filters|array|Conditions for filtering collections.|query||
 
 h2. show
 
diff --git a/doc/api/methods/groups.html.textile.liquid b/doc/api/methods/groups.html.textile.liquid
index e09b817..9aa664d 100644
--- a/doc/api/methods/groups.html.textile.liquid
+++ b/doc/api/methods/groups.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Group in question.|path||
 
-h2. index
-
-index groups
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List groups.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of groups to return.|query||
 |order|string|Order in which to return matching groups.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching groups.|query||
-|where|object|Conditions for filtering groups.|query||
+|filters|array|Conditions for filtering groups.|query||
 
 h2. show
 
diff --git a/doc/api/methods/humans.html.textile.liquid b/doc/api/methods/humans.html.textile.liquid
index dd3fced..22cd7fe 100644
--- a/doc/api/methods/humans.html.textile.liquid
+++ b/doc/api/methods/humans.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Human in question.|path||
 
-h2. index
-
-index humans
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List humans.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of humans to return.|query||
 |order|string|Order in which to return matching humans.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching humans.|query||
-|where|object|Conditions for filtering humans.|query||
+|filters|array|Conditions for filtering humans.|query||
 
 h2. show
 
diff --git a/doc/api/methods/job_tasks.html.textile.liquid b/doc/api/methods/job_tasks.html.textile.liquid
index ed3fcfa..2b2b111 100644
--- a/doc/api/methods/job_tasks.html.textile.liquid
+++ b/doc/api/methods/job_tasks.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the JobTask in question.|path||
 
-h2. index
-
-index job_tasks
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List job_tasks.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of job_tasks to return.|query||
 |order|string|Order in which to return matching job_tasks.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching job_tasks.|query||
-|where|object|Conditions for filtering job_tasks.|query||
+|filters|array|Conditions for filtering job_tasks.|query||
 
 h2. show
 
diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index a5a3b47..cc2aa2d 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -153,17 +153,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Job in question.|path||
 
-h2. index
-
-index jobs
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List jobs.
@@ -174,9 +163,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of jobs to return.|query||
 |order|string|Order in which to return matching jobs.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching jobs.|query||
-|where|object|Conditions for filtering jobs.|query||
+|filters|array|Conditions for filtering jobs.|query||
 
 h2. log_tail_follow
 
@@ -198,7 +185,7 @@ Arguments:
 table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |order|string||query||
-|where|object||query||
+|filters|array||query||
 
 h2. show
 
diff --git a/doc/api/methods/keep_disks.html.textile.liquid b/doc/api/methods/keep_disks.html.textile.liquid
index 8fa04f5..15551d2 100644
--- a/doc/api/methods/keep_disks.html.textile.liquid
+++ b/doc/api/methods/keep_disks.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the KeepDisk in question.|path||
 
-h2. index
-
-index keep_disks
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List keep_disks.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of keep_disks to return.|query||
 |order|string|Order in which to return matching keep_disks.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching keep_disks.|query||
-|where|object|Conditions for filtering keep_disks.|query||
+|filters|array|Conditions for filtering keep_disks.|query||
 
 h2. ping
 
diff --git a/doc/api/methods/links.html.textile.liquid b/doc/api/methods/links.html.textile.liquid
index 0490bf9..7f04baf 100644
--- a/doc/api/methods/links.html.textile.liquid
+++ b/doc/api/methods/links.html.textile.liquid
@@ -51,18 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Link in question.|path||
 
-h2. index
-
-index links
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|tail_uuid|string||path||
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List links.
@@ -73,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of links to return.|query||
 |order|string|Order in which to return matching links.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching links.|query||
-|where|object|Conditions for filtering links.|query||
+|filters|array|Conditions for filtering links.|query||
 
 h2. render_not_found
 
diff --git a/doc/api/methods/logs.html.textile.liquid b/doc/api/methods/logs.html.textile.liquid
index 2a19853..cdc9f61 100644
--- a/doc/api/methods/logs.html.textile.liquid
+++ b/doc/api/methods/logs.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Log in question.|path||
 
-h2. index
-
-index logs
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List logs.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of logs to return.|query||
 |order|string|Order in which to return matching logs.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching logs.|query||
-|where|object|Conditions for filtering logs.|query||
+|filters|array|Conditions for filtering logs.|query||
 
 h2. show
 
diff --git a/doc/api/methods/nodes.html.textile.liquid b/doc/api/methods/nodes.html.textile.liquid
index f02d50c..8dc896c 100644
--- a/doc/api/methods/nodes.html.textile.liquid
+++ b/doc/api/methods/nodes.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Node in question.|path||
 
-h2. index
-
-index nodes
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List nodes.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of nodes to return.|query||
 |order|string|Order in which to return matching nodes.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching nodes.|query||
-|where|object|Conditions for filtering nodes.|query||
+|filters|array|Conditions for filtering nodes.|query||
 
 h2. ping
 
diff --git a/doc/api/methods/pipeline_instances.html.textile.liquid b/doc/api/methods/pipeline_instances.html.textile.liquid
index b8431f1..eb0574a 100644
--- a/doc/api/methods/pipeline_instances.html.textile.liquid
+++ b/doc/api/methods/pipeline_instances.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the PipelineInstance in question.|path||
 
-h2. index
-
-index pipeline_instances
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List pipeline_instances.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of pipeline_instances to return.|query||
 |order|string|Order in which to return matching pipeline_instances.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching pipeline_instances.|query||
-|where|object|Conditions for filtering pipeline_instances.|query||
+|filters|array|Conditions for filtering pipeline_instances.|query||
 
 h2. show
 
diff --git a/doc/api/methods/pipeline_templates.html.textile.liquid b/doc/api/methods/pipeline_templates.html.textile.liquid
index e8ead24..5d3c45e 100644
--- a/doc/api/methods/pipeline_templates.html.textile.liquid
+++ b/doc/api/methods/pipeline_templates.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the PipelineTemplate in question.|path||
 
-h2. index
-
-index pipeline_templates
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List pipeline_templates.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of pipeline_templates to return.|query||
 |order|string|Order in which to return matching pipeline_templates.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching pipeline_templates.|query||
-|where|object|Conditions for filtering pipeline_templates.|query||
+|filters|array|Conditions for filtering pipeline_templates.|query||
 
 h2. show
 
diff --git a/doc/api/methods/repositories.html.textile.liquid b/doc/api/methods/repositories.html.textile.liquid
index 501bce7..b5af665 100644
--- a/doc/api/methods/repositories.html.textile.liquid
+++ b/doc/api/methods/repositories.html.textile.liquid
@@ -60,17 +60,6 @@ Arguments:
 table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 
-h2. index
-
-index repositories
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List repositories.
@@ -81,9 +70,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of repositories to return.|query||
 |order|string|Order in which to return matching repositories.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching repositories.|query||
-|where|object|Conditions for filtering repositories.|query||
+|filters|array|Conditions for filtering repositories.|query||
 
 h2. show
 
diff --git a/doc/api/methods/specimens.html.textile.liquid b/doc/api/methods/specimens.html.textile.liquid
index 2d7d3c3..46cbefe 100644
--- a/doc/api/methods/specimens.html.textile.liquid
+++ b/doc/api/methods/specimens.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Specimen in question.|path||
 
-h2. index
-
-index specimens
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List specimens.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of specimens to return.|query||
 |order|string|Order in which to return matching specimens.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching specimens.|query||
-|where|object|Conditions for filtering specimens.|query||
+|filters|array|Conditions for filtering specimens.|query||
 
 h2. show
 
diff --git a/doc/api/methods/traits.html.textile.liquid b/doc/api/methods/traits.html.textile.liquid
index 9b7cb92..968cfb6 100644
--- a/doc/api/methods/traits.html.textile.liquid
+++ b/doc/api/methods/traits.html.textile.liquid
@@ -51,17 +51,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Trait in question.|path||
 
-h2. index
-
-index traits
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List traits.
@@ -72,9 +61,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of traits to return.|query||
 |order|string|Order in which to return matching traits.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching traits.|query||
-|where|object|Conditions for filtering traits.|query||
+|filters|array|Conditions for filtering traits.|query||
 
 h2. show
 
diff --git a/doc/api/methods/users.html.textile.liquid b/doc/api/methods/users.html.textile.liquid
index 649b368..19b7a6c 100644
--- a/doc/api/methods/users.html.textile.liquid
+++ b/doc/api/methods/users.html.textile.liquid
@@ -70,17 +70,6 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the User in question.|path||
 
-h2. index
-
-index users
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List users.
@@ -91,9 +80,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of users to return.|query||
 |order|string|Order in which to return matching users.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching users.|query||
-|where|object|Conditions for filtering users.|query||
+|filters|array|Conditions for filtering users.|query||
 
 h2. show
 
diff --git a/doc/api/methods/virtual_machines.html.textile.liquid b/doc/api/methods/virtual_machines.html.textile.liquid
index 790519b..2c3c37d 100644
--- a/doc/api/methods/virtual_machines.html.textile.liquid
+++ b/doc/api/methods/virtual_machines.html.textile.liquid
@@ -60,17 +60,6 @@ Arguments:
 table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 
-h2. index
-
-index virtual_machines
-
-Arguments:
-
-table(table table-bordered table-condensed).
-|_. Argument |_. Type |_. Description |_. Location |_. Example |
-|order|string||query||
-|where|object||query||
-
 h2. list
 
 List virtual_machines.
@@ -81,9 +70,7 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 |limit|integer (default 100)|Maximum number of virtual_machines to return.|query||
 |order|string|Order in which to return matching virtual_machines.|query||
-|pageToken|string|Page token.|query||
-|q|string|Query string for searching virtual_machines.|query||
-|where|object|Conditions for filtering virtual_machines.|query||
+|filters|array|Conditions for filtering virtual_machines.|query||
 
 h2. logins
 
diff --git a/doc/api/schema/Job.html.textile.liquid b/doc/api/schema/Job.html.textile.liquid
index 6d895f9..14ed975 100644
--- a/doc/api/schema/Job.html.textile.liquid
+++ b/doc/api/schema/Job.html.textile.liquid
@@ -26,7 +26,7 @@ GET https://{{ site.arvados_api_host }}/arvados/v1/jobs/queue
 
 POST https://{{ site.arvados_api_host }}/arvados/v1/jobs/queue
 _method=GET
-where[owner_uuid]=xyzzy-tpzed-a4lcehql0dv2u25
+filters=[["owner_uuid","=","xyzzy-tpzed-a4lcehql0dv2u25"]]
 </pre>
 
 → Job resource list
diff --git a/doc/user/topics/tutorial-trait-search.html.textile.liquid b/doc/user/topics/tutorial-trait-search.html.textile.liquid
index a79495e..976f16e 100644
--- a/doc/user/topics/tutorial-trait-search.html.textile.liquid
+++ b/doc/user/topics/tutorial-trait-search.html.textile.liquid
@@ -88,7 +88,7 @@ The query will return links that match all three conditions.
 
 * @arvados.api()@ gets an object that provides access to the Arvados API server
 * @.links()@ gets an object that provides access to the "links" resource on the Arvados API server
-* @.list(limit=1000, where=query)@ constructs a query to elements of the "links" resource that match the criteria discussed above, with a limit of 1000 entries returned
+* @.list(limit=1000, filters=trait_filter)@ constructs a query to elements of the "links" resource that match the criteria discussed above, with a limit of 1000 entries returned
 * @.execute()@ executes the query and returns the result, which we assign to "trait_links"
 
 <notextile>
@@ -120,11 +120,11 @@ u'1h9kt-7a9it-t1v8sjz6dm9jmjf', u'1h9kt-7a9it-qe8wrbyvuqs5jew']
 h2. Find Personal Genome Project identifiers from Arvados UUIDs
 
 <notextile>
-<pre><code>>>> <span class="userinput">human_query = {
-    "link_class": "identifier",
-    "head_uuid": human_uuids
-  }</span>
->>> <span class="userinput">pgpid_links = arvados.api('v1').links().list(limit=1000, where=human_query).execute()</span>
+<pre><code>>>> <span class="userinput">human_filters = [
+    ["link_class", "=", "identifier"],
+    ["head_uuid", "in", human_uuids]
+  ]</span>
+>>> <span class="userinput">pgpid_links = arvados.api('v1').links().list(limit=1000, filters=human_filters).execute()</span>
 >>> <span class="userinput">map(lambda l: l['name'], pgpid_links['items'])</span>
 [u'hu01024B', u'hu11603C', u'hu15402B', u'hu174334', u'hu1BD549', u'hu237A50',
  u'hu34A921', u'hu397733', u'hu414115', u'hu43860C', u'hu474789', u'hu553620',
@@ -146,11 +146,11 @@ h2. Find genomic data from specific humans
 Now we want to find collections in Keep that were provided by these humans.  We search the "links" resource for "provenance" links that point to subjects in list of humans with the non-melanoma skin cancer trait:
 
 <notextile>
-<pre><code>>>> <span class="userinput">provenance_links = arvados.api().links().list(limit=1000, where={
-    "link_class": "provenance",
-    "name": "provided",
-    "tail_uuid": human_uuids
-  }).execute()
+<pre><code>>>> <span class="userinput">provenance_links = arvados.api().links().list(limit=1000, filters=[
+    ["link_class", "=", "provenance"],
+    ["name", "=", "provided"],
+    ["tail_uuid", "in", human_uuids]
+  ]).execute()
 collection_uuids = map(lambda l: l['head_uuid'], provenance_links['items'])
 
 # build map of human uuid -> PGP ID
@@ -163,9 +163,9 @@ for p_link in provenance_links['items']:
   pgpid[p_link['head_uuid']] = pgpid[p_link['tail_uuid']]
 
 # get details (e.g., list of files) of each collection
-collections = arvados.api('v1').collections().list(where={
-    "uuid": collection_uuids
-  }).execute()
+collections = arvados.api('v1').collections().list(filters=[
+    ["uuid", "in", collection_uuids]
+  ]).execute()
 
 # print PGP public profile links with file locators
 for c in collections['items']:

commit 3e7478a9a822686e1b5291fb0909a2ee2fcfeace
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 21:00:31 2014 -0400

    Accept minimum_script_version, excluded_script_versions, and
    find_or_create flag as parameters to create, instead of treating them
    as if they were attributes of the Job resource.
    
    Accept find_or_create as a positive flag, rather than no_reuse as a
    negative flag.
    
    Behave as requested by the find_or_create flag even if
    nondeterministic=true in the submitted job: i.e., a client can use the
    find_or_create feature when submitting a job which itself will never
    be reused. (It's up to the client to decide whether this is ever
    useful.)
    
    For now, both old and new flag names/locations are accepted and
    supplied by API server and arv-run-pipeline-instance respectively.

diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index 5d0b187..a5a3b47 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -32,7 +32,7 @@ table(table table-bordered table-condensed).
 {background:#ccffcc}.|job|object|See "Job resource":{{site.baseurl}}/schema/Job.html|request body||
 |minimum_script_version |string     |Git branch, tag, or commit hash specifying the minimum acceptable script version (earliest ancestor) to consider when deciding whether to re-use a past job.|query|@c3e86c9@|
 |exclude_script_versions|array of strings|Git commit branches, tags, or hashes to exclude when deciding whether to re-use a past job.|query|@["8f03c71","8f03c71"]@|
-|no_reuse               |boolean    |Disable implicit "find or create" feature: run a new job, even if a job is available with identical script, version, and parameters.|query|@false@|
+|find_or_create         |boolean    |Before creating, look for an existing job that has identical script, script_version, and script_parameters to those in the present job, has nondeterministic=false, and did not fail (it could be queued, running, or completed). If such a job exists, respond with the existing job instead of submitting a new one.|query|@false@|
 
 When a job is executed, the 'script_version' field is resolved to an exact Git revision and the Git hash for that revision is recorded in 'script_version'.  If 'script_version' can't be resolved, the job submission will be rejected.
 
@@ -42,11 +42,12 @@ Because Arvados records the exact version of the script, input parameters, and r
 
 notextile. <div class="spaced-out">
 
-# If 'nondeterministic' or 'no_reuse' are true, always create a new job.
+# If 'find_or_create' is false or omitted, create a new job and skip the rest of these steps.
 # Find a list of acceptable values for 'script_version'.  If 'minimum_script_version' is specified, this is the set of all revisions in the Git commit graph between 'minimum_script_version' and 'script_version' (inclusive) [2].  If 'minimum_script_version' is not specified, only 'script_version' is added to the list.  If 'exclude_script_versions' is specified, the listed versions are excluded from the list.
-# Select jobs have the same 'script' and 'script_parameters' attributes, and where the 'script_version' attribute is in the list of acceptable versions.  Exclude jobs that failed or set 'nondeterministic' to true.
-# If there is more than one candidate job, check that all selected past jobs actually did produce the same output.
-# If everything passed, re-use one of the selected past jobs (if there is more than one match, which job will be returned is undefined).  Otherwise create a new job.
+# Select jobs whose 'script' and 'script_parameters' attributes match the submitted job, and whose 'script_version' attribute is in the list of acceptable versions.  Exclude jobs that failed or set 'nondeterministic' to true.
+# If more than one of candidate jobs has finished, check that all such jobs actually did produce the same output.
+# If existing jobs exist and do not disagree with one another about the correct output, re-use one of the selected past jobs. If there is more than one match, which job will be returned is undefined.
+# If an existing job could not be chosen this way, create a new job.
 
 fn1. As of this writing, versioning the runtime environment is still under development.
 
@@ -56,7 +57,7 @@ fn2. This may include parallel branches if there is more than one path between '
 
 h3. Examples
 
-Run the script "crunch_scripts/hash.py" in the repository "you" using the "master" branch head.  Arvados is allowed to re-use a previous job if the script_version of the past job is the same as the "master" branch head (i.e., there have not been any subsequent commits to "master").
+Run the script "crunch_scripts/hash.py" in the repository "you" using the "master" commit.  Arvados should re-use a previous job if the script_version of the previous job is the same as the current "master" commit. This works irrespective of whether the previous job was submitted using the name "master", a different branch name or tag indicating the same commit, a SHA-1 commit hash, etc.
 
 <notextile><pre>
 {
@@ -67,11 +68,12 @@ Run the script "crunch_scripts/hash.py" in the repository "you" using the "maste
     "script_parameters": {
       "input": "c1bad4b39ca5a924e481008009d94e32+210"
     }
-  }
+  },
+  "find_or_create": true
 }
 </pre></notextile>
 
-Run using exactly the version "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5". Arvados is allowed to re-use a previous job if the "script_version" of that job is also "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5".
+Run using exactly the version "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5". Arvados should re-use a previous job if the "script_version" of that job is also "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5".
 
 <notextile><pre>
 {
@@ -82,11 +84,12 @@ Run using exactly the version "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5". Arvado
     "script_parameters": {
       "input": "c1bad4b39ca5a924e481008009d94e32+210"
     }
-  }
+  },
+  "find_or_create": true
 }
 </pre></notextile>
 
-Arvados is allowed to re-use a previous job if the "script_version" of the past job is between "earlier_version_tag" and the head of the "master" branch (inclusive), but not "blacklisted_version_tag".  If there are no previous jobs, run the job using the head of the "master" branch as specified in "script_version".
+Arvados should re-use a previous job if the "script_version" of the previous job is between "earlier_version_tag" and the "master" commit (inclusive), but not the commit indicated by "blacklisted_version_tag". If there are no previous jobs matching these criteria, run the job using the "master" commit.
 
 <notextile><pre>
 {
@@ -99,11 +102,12 @@ Arvados is allowed to re-use a previous job if the "script_version" of the past
     }
   },
   "minimum_script_version": "earlier_version_tag",
-  "exclude_script_versions": ["blacklisted_version_tag"]
+  "exclude_script_versions": ["blacklisted_version_tag"],
+  "find_or_create": true
 }
 </pre></notextile>
 
-Run the script "crunch_scripts/monte-carlo.py" in the repository "you" using the "master" branch head.  Because it is marked as "nondeterministic", never re-use previous jobs, and never re-use this job.
+Run the script "crunch_scripts/monte-carlo.py" in the repository "you" using the current "master" commit. Because it is marked as "nondeterministic", this job will not be considered as a suitable candidate for future job submissions that use the "find_or_create" feature.
 
 <notextile><pre>
 {
diff --git a/sdk/cli/bin/arv-run-pipeline-instance b/sdk/cli/bin/arv-run-pipeline-instance
index 7ddea30..3e8bdbf 100755
--- a/sdk/cli/bin/arv-run-pipeline-instance
+++ b/sdk/cli/bin/arv-run-pipeline-instance
@@ -312,19 +312,19 @@ class JobCache
       []
     end
   end
-  def self.create(attributes)
+  def self.create(job, create_params)
     @cache ||= {}
     result = $client.execute(:api_method => $arvados.jobs.create,
                              :parameters => {
                                :api_token => ENV['ARVADOS_API_TOKEN'],
-                               :job => attributes.to_json
-                             },
+                               :job => job.to_json
+                             }.merge(create_params),
                              :authenticated => false)
     j = JSON.parse result.body, :symbolize_names => true
     if j.is_a? Hash and j[:uuid]
       @cache[j[:uuid]] = j
     else
-      debuglog "create job: #{j[:errors] rescue nil} with attribute #{attributes}", 0
+      debuglog "create job: #{j[:errors] rescue nil} with attributes #{job}", 0
       nil
     end
   end
@@ -437,15 +437,27 @@ class WhRunPipelineInstance
           # No job yet associated with this component and is component inputs
           # are fully specified (any output_of script_parameters are resolved
           # to real value)
-          job = JobCache.create({:script => c[:script],
-                            :script_parameters => c[:script_parameters],
-                            :script_version => c[:script_version],
-                            :repository => c[:repository],
-                            :minimum_script_version => c[:minimum_script_version],
-                            :exclude_script_versions => c[:exclude_minimum_script_versions],
-                            :nondeterministic => c[:nondeterministic],
-                            :no_reuse => @options[:no_reuse],
-                            :output_is_persistent => c[:output_is_persistent] || false})
+          job = JobCache.create {
+            :script => c[:script],
+            :script_parameters => c[:script_parameters],
+            :script_version => c[:script_version],
+            :repository => c[:repository],
+            :nondeterministic => c[:nondeterministic],
+            :output_is_persistent => c[:output_is_persistent] || false,
+            # TODO: Delete the following three attributes when
+            # supporting pre-20140418 API servers is no longer
+            # important. New API servers take these as flags that
+            # control behavior of create, rather than job attributes.
+            :minimum_script_version => c[:minimum_script_version],
+            :exclude_script_versions => c[:exclude_minimum_script_versions],
+            :no_reuse => @options[:no_reuse] || c[:nondeterministic],
+          }, {
+            # This is the right place to put these attributes when
+            # dealing with new API servers.
+            :minimum_script_version => c[:minimum_script_version],
+            :exclude_script_versions => c[:exclude_minimum_script_versions],
+            :find_or_create => !(@options[:no_reuse] || c[:nondeterministic]),
+          }
           if job
             debuglog "component #{cname} new job #{job[:uuid]}"
             c[:job] = job
diff --git a/services/api/app/controllers/arvados/v1/jobs_controller.rb b/services/api/app/controllers/arvados/v1/jobs_controller.rb
index 360d89c..8ef6acd 100644
--- a/services/api/app/controllers/arvados/v1/jobs_controller.rb
+++ b/services/api/app/controllers/arvados/v1/jobs_controller.rb
@@ -14,12 +14,24 @@ class Arvados::V1::JobsController < ApplicationController
       end
     end
 
-    r = Commit.find_commit_range(current_user,
-                                 resource_attrs[:repository],
-                                 resource_attrs[:minimum_script_version],
-                                 resource_attrs[:script_version],
-                                 resource_attrs[:exclude_script_versions])
-    if !resource_attrs[:nondeterministic] and !resource_attrs[:no_reuse]
+    # We used to ask for the minimum_, exclude_, and no_reuse params
+    # in the job resource. Now we advertise them as flags that alter
+    # the behavior of the create action.
+    [:minimum_script_version, :exclude_script_versions].each do |attr|
+      if resource_attrs.has_key? attr
+        params[attr] = resource_attrs.delete attr
+      end
+    end
+    if resource_attrs.has_key? :no_reuse
+      params[:find_or_create] = !resource_attrs.delete(:no_reuse)
+    end
+
+    if params[:find_or_create]
+      r = Commit.find_commit_range(current_user,
+                                   resource_attrs[:repository],
+                                   params[:minimum_script_version],
+                                   resource_attrs[:script_version],
+                                   params[:exclude_script_versions])
       # Search for jobs whose script_version is in the list of commits
       # returned by find_commit_range
       @object = nil
@@ -51,14 +63,7 @@ class Arvados::V1::JobsController < ApplicationController
         end
       end
     end
-    if r
-      resource_attrs[:script_version] = r[0]
-    end
 
-    # Don't pass these on to activerecord
-    resource_attrs.delete(:minimum_script_version)
-    resource_attrs.delete(:exclude_script_versions)
-    resource_attrs.delete(:no_reuse)
     super
   end
 
diff --git a/services/api/app/models/job.rb b/services/api/app/models/job.rb
index 0b2247b..d8f8443 100644
--- a/services/api/app/models/job.rb
+++ b/services/api/app/models/job.rb
@@ -82,7 +82,7 @@ class Job < ArvadosModel
       return true
     end
     if new_record? or script_version_changed?
-      sha1 = Commit.find_commit_range(current_user, nil, nil, self.script_version, nil)[0] rescue nil
+      sha1 = Commit.find_commit_range(current_user, self.repository, nil, self.script_version, nil)[0] rescue nil
       if sha1
         self.script_version = sha1
       else
diff --git a/services/api/test/functional/arvados/v1/job_reuse_controller_test.rb b/services/api/test/functional/arvados/v1/job_reuse_controller_test.rb
index 16916b7..1cd3f2d 100644
--- a/services/api/test/functional/arvados/v1/job_reuse_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/job_reuse_controller_test.rb
@@ -7,10 +7,11 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
   # See git_setup.rb for the commit log for test.git.tar
   include GitSetup
 
-  test "test_reuse_job" do
+  test "reuse job with no_reuse=false" do
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
       repository: "foo",
@@ -26,10 +27,77 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
   end
 
+  test "reuse job with find_or_create=true" do
+    @controller = Arvados::V1::JobsController.new
+    authorize_with :active
+    post :create, {
+      job: {
+        script: "hash",
+        script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
+        repository: "foo",
+        script_parameters: {
+          input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
+          an_integer: '1'
+        }
+      },
+      find_or_create: true
+    }
+    assert_response :success
+    assert_not_nil assigns(:object)
+    new_job = JSON.parse(@response.body)
+    assert_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
+    assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
+  end
+
+  test "do not reuse job because no_reuse=true" do
+    @controller = Arvados::V1::JobsController.new
+    authorize_with :active
+    post :create, {
+      job: {
+        no_reuse: true,
+        script: "hash",
+        script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
+        repository: "foo",
+        script_parameters: {
+          input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
+          an_integer: '1'
+        }
+      }
+    }
+    assert_response :success
+    assert_not_nil assigns(:object)
+    new_job = JSON.parse(@response.body)
+    assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
+    assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
+  end
+
+  test "do not reuse job because find_or_create=false" do
+    @controller = Arvados::V1::JobsController.new
+    authorize_with :active
+    post :create, {
+      job: {
+        script: "hash",
+        script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
+        repository: "foo",
+        script_parameters: {
+          input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
+          an_integer: '1'
+        }
+      },
+      find_or_create: false
+    }
+    assert_response :success
+    assert_not_nil assigns(:object)
+    new_job = JSON.parse(@response.body)
+    assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
+    assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
+  end
+
   test "test_cannot_reuse_job_no_output" do
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
       repository: "foo",
@@ -48,6 +116,7 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       minimum_script_version: "tag1",
       script_version: "master",
@@ -68,6 +137,7 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
       repository: "foo",
@@ -87,6 +157,7 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       script_version: "master",
       repository: "foo",
@@ -102,10 +173,11 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     assert_equal '077ba2ad3ea24a929091a9e6ce545c93199b8e57', new_job['script_version']
   end
 
-  test "test_cannot_reuse_job_submitted_nondeterministic" do
+  test "test_can_reuse_job_submitted_nondeterministic" do
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
       repository: "foo",
@@ -118,7 +190,7 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     assert_response :success
     assert_not_nil assigns(:object)
     new_job = JSON.parse(@response.body)
-    assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
+    assert_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
     assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
   end
 
@@ -126,6 +198,7 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash2",
       script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
       repository: "foo",
@@ -145,6 +218,7 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     @controller = Arvados::V1::JobsController.new
     authorize_with :spectator
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
       repository: "foo",
@@ -164,6 +238,7 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     @controller = Arvados::V1::JobsController.new
     authorize_with :active
     post :create, job: {
+      no_reuse: false,
       script: "hash",
       minimum_script_version: "31ce37fe365b3dc204300a3e4c396ad333ed0556",
       script_version: "master",
@@ -181,5 +256,28 @@ class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
     assert_equal '077ba2ad3ea24a929091a9e6ce545c93199b8e57', new_job['script_version']
   end
 
+  test "cannot reuse job with find_or_create but excluded version" do
+    @controller = Arvados::V1::JobsController.new
+    authorize_with :active
+    post :create, {
+      job: {
+        script: "hash",
+        script_version: "master",
+        repository: "foo",
+        script_parameters: {
+          input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
+          an_integer: '1'
+        }
+      },
+      find_or_create: true,
+      minimum_script_version: "31ce37fe365b3dc204300a3e4c396ad333ed0556",
+      exclude_script_versions: ["tag1"],
+    }
+    assert_response :success
+    assert_not_nil assigns(:object)
+    new_job = JSON.parse(@response.body)
+    assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
+    assert_equal '077ba2ad3ea24a929091a9e6ce545c93199b8e57', new_job['script_version']
+  end
 
 end

commit 441549528f2fcea8e55fde62416a69f2bfc6816d
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 19:36:59 2014 -0400

    Extricate flags controlling jobs.create behavior from the Job resource itself.

diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index 70706c9..5d0b187 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -29,20 +29,10 @@ Arguments:
 
 table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
-{background:#ccffcc}.|job|object||query||
-
-Attributes of 'job' parameter:
-
-table(table table-bordered table-condensed).
-|_. Attribute               |_. Type|_. Accepted values                            |_. Description|
-{background:#ccffcc}.|script                 |string     |filename                                      |The actual script that will be run by crunch.  Must be the name of an executable file in the crunch_scripts/ directory at the Git revision specified by script_version.|
-{background:#ccffcc}.|script_version         |string     |Git branch, tag, or commit hash               |The version of code to run, which must be available in the specified repository.|
-{background:#ccffcc}.|repository             |string     |Name of Git repository hosted by Arvados      |The repository to search for script_version.|
-{background:#ccffcc}.|script_parameters      |object     |Any JSON object                               |The input parameters for the job, with the parameter names as keys mapping to parameter values.|
-|minimum_script_version |string     |Git branch, tag, or commit hash              |The minimum acceptable script version (earliest ancestor) to consider when deciding whether to re-use a past job.|
-|exclude_script_versions|array of strings|Git branch, tag, or commit hash|Script versions to exclude when deciding whether to re-use a past job.|
-|nondeterministic       |boolean    |                                              |If true, never re-use a past job, and flag this job so it will never be considered for re-use.|
-|no_reuse               |boolean    |                                              |If true, do not re-use a past job, but this job may be re-used.|
+{background:#ccffcc}.|job|object|See "Job resource":{{site.baseurl}}/schema/Job.html|request body||
+|minimum_script_version |string     |Git branch, tag, or commit hash specifying the minimum acceptable script version (earliest ancestor) to consider when deciding whether to re-use a past job.|query|@c3e86c9@|
+|exclude_script_versions|array of strings|Git commit branches, tags, or hashes to exclude when deciding whether to re-use a past job.|query|@["8f03c71","8f03c71"]@|
+|no_reuse               |boolean    |Disable implicit "find or create" feature: run a new job, even if a job is available with identical script, version, and parameters.|query|@false@|
 
 When a job is executed, the 'script_version' field is resolved to an exact Git revision and the Git hash for that revision is recorded in 'script_version'.  If 'script_version' can't be resolved, the job submission will be rejected.
 
@@ -70,11 +60,13 @@ Run the script "crunch_scripts/hash.py" in the repository "you" using the "maste
 
 <notextile><pre>
 {
-  "script": "hash.py",
-  "repository": "<b>you</b>",
-  "script_version": "master",
-  "script_parameters": {
-    "input": "c1bad4b39ca5a924e481008009d94e32+210"
+  "job": {
+    "script": "hash.py",
+    "repository": "<b>you</b>",
+    "script_version": "master",
+    "script_parameters": {
+      "input": "c1bad4b39ca5a924e481008009d94e32+210"
+    }
   }
 }
 </pre></notextile>
@@ -83,11 +75,13 @@ Run using exactly the version "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5". Arvado
 
 <notextile><pre>
 {
-  "script": "hash.py",
-  "repository": "<b>you</b>",
-  "script_version": "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5",
-  "script_parameters": {
-    "input": "c1bad4b39ca5a924e481008009d94e32+210"
+  "job": {
+    "script": "hash.py",
+    "repository": "<b>you</b>",
+    "script_version": "d00220fb38d4b85ca8fc28a8151702a2b9d1dec5",
+    "script_parameters": {
+      "input": "c1bad4b39ca5a924e481008009d94e32+210"
+    }
   }
 }
 </pre></notextile>
@@ -96,14 +90,16 @@ Arvados is allowed to re-use a previous job if the "script_version" of the past
 
 <notextile><pre>
 {
-  "script": "hash.py",
-  "repository": "<b>you</b>",
+  "job": {
+    "script": "hash.py",
+    "repository": "<b>you</b>",
+    "script_version": "master",
+    "script_parameters": {
+      "input": "c1bad4b39ca5a924e481008009d94e32+210"
+    }
+  },
   "minimum_script_version": "earlier_version_tag",
-  "script_version": "master",
-  "exclude_script_versions": ["blacklisted_version_tag"],
-  "script_parameters": {
-    "input": "c1bad4b39ca5a924e481008009d94e32+210"
-  }
+  "exclude_script_versions": ["blacklisted_version_tag"]
 }
 </pre></notextile>
 
@@ -111,12 +107,14 @@ Run the script "crunch_scripts/monte-carlo.py" in the repository "you" using the
 
 <notextile><pre>
 {
-  "script": "monte-carlo.py",
-  "repository": "<b>you</b>",
-  "script_version": "master",
-  "nondeterministic": true,
-  "script_parameters": {
-    "input": "c1bad4b39ca5a924e481008009d94e32+210"
+  "job": {
+    "script": "monte-carlo.py",
+    "repository": "<b>you</b>",
+    "script_version": "master",
+    "nondeterministic": true,
+    "script_parameters": {
+      "input": "c1bad4b39ca5a924e481008009d94e32+210"
+    }
   }
 }
 </pre></notextile>
diff --git a/doc/api/schema/Job.html.textile.liquid b/doc/api/schema/Job.html.textile.liquid
index ef8d0a2..6d895f9 100644
--- a/doc/api/schema/Job.html.textile.liquid
+++ b/doc/api/schema/Job.html.textile.liquid
@@ -39,13 +39,10 @@ Each job has, in addition to the usual "attributes of Arvados resources":{{site.
 
 table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Notes|
-|submit_id|string|Unique ID provided by client when job was submitted|Optional. Can be used by client to ensure idempotence|
-|priority|string|||
-|runtime_constraints{}|list|Constraints that must be satisfied by the job/task scheduler in order to run the job.|See below.|
-|script|string|Name of crunch script in @/crunch_scripts/@||
-|script_parameters{}|list|Parameters passed to MapReduce script||
+|script|string|The filename of the job script.|This program will be invoked by Crunch for each job task. It is given as a path to an executable file, relative to the @/crunch_scripts@ directory in the Git tree specified by the _repository_ and _script_version_ attributes.|
+|script_parameters|hash|The input parameters for the job.|Conventionally, one of the parameters is called @"input"@. Typically, some parameter values are collection UUIDs. Ultimately, though, the significance of parameters is left entirely up to the script itself.|
+|repository|string|Git repository|Given as the name of a locally hosted git repository.|
 |script_version|string|Git branch, tag, or commit hash.|Before the job starts, this is the Git branch, tag, or hash supplied by the user.  When the job starts, Arvados updates this field to the full 40-character git hash of the actual commit used by the job.|
-|repository             |string     |The repository from which the script_version will be fetched.|
 |cancelled_by_client_uuid|string|API client ID|Is null if job has not been cancelled|
 |cancelled_by_user_uuid|string|Authenticated user ID|Is null if job has not been cancelled|
 |cancelled_at|datetime|When job was cancelled|Is null if job has not been cancelled|
@@ -54,24 +51,18 @@ table(table table-bordered table-condensed).
 |running|boolean|Whether the job is running||
 |success|boolean|Whether the job indicated successful completion|Is null if job has not finished|
 |is_locked_by_uuid|string|UUID of the user who has locked this job|Is null if job is not locked. The system user locks the job when starting the job, in order to prevent job attributes from being altered.|
-|log|string|||
-|tasks_summary|Hash|||
-|output|string|||
-|nondeterministic       |boolean    |Indicates whether this job is a candidate for re-use|If true, this job will never be considered for re-use.|
+|log|string|Collection UUID|Is null if the job has not finished. After the job runs, the given collection contains a text file with log messages provided by the @arv-crunch-job@ task scheduler as well as the standard error streams provided by the task processes.|
+|tasks_summary|Hash|Summary of task completion states.|Example: @{"done":0,"running":4,"todo":2,"failed":0}@|
+|output|string|Collection UUID|Is null if the job has not finished.|
+|nondeterministic|boolean|The job is expected to produce different results if run more than once.|If true, this job will not be considered as a candidate for automatic re-use when submitting subsequent identical jobs.|
+|submit_id|string|Unique ID provided by client when job was submitted|Optional. This can be used by a client to make the "jobs.create":{{site.baseurl}}/api/methods/jobs.html#create method idempotent.|
+|priority|string|||
+|runtime_constraints|hash|Constraints that must be satisfied by the job/task scheduler in order to run the job.|See below.|
 
 h3. Runtime constraints
 
 table(table table-bordered table-condensed).
 |_. Key|_. Type|_. Description|_. Implemented|
-|dependencies{}|list|[
- {
-  "name": "freebayes",
-  "package_type": "git",
-  "origin": "https://github.com/ekg/freebayes.git",
-  "version": "011561f4a96619125d4388b66b2e82b173f3de7a"
- },
- ...
-]||
 |min_nodes|integer||✓|
 |max_nodes|integer|||
 |max_tasks_per_node|integer|Maximum simultaneous tasks on a single node|✓|

commit 8f03c71e76376e8fa767d049a06d55836c94444c
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 18:27:46 2014 -0400

    Fix here-doc usage.

diff --git a/doc/install/create-standard-objects.html.textile.liquid b/doc/install/create-standard-objects.html.textile.liquid
index ef83a95..eb25136 100644
--- a/doc/install/create-standard-objects.html.textile.liquid
+++ b/doc/install/create-standard-objects.html.textile.liquid
@@ -47,7 +47,7 @@ Currently, you need to tell Arvados about Keep disks manually.
 
 <pre>
 secret=`ruby -e 'print rand(2**512).to_s(36)[0..49]'`
-arv keep_disk create --keep-disk <<EOF
+read -rd $'\000' keepdisk <<EOF; arv keep_disk create --keep-disk "$keepdisk"
 {
  "service_host":"keep0.xyzzy.arvadosapi.com",
  "service_port":25107,

commit b49b532b27ec9013e088eb48d43de75b5e5a7d9c
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 18:27:22 2014 -0400

    Clean up .gitignore files

diff --git a/.gitignore b/.gitignore
index 8cf65b5..83eb73c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,13 @@
+.bundle
+.rvmrc
 *~
 *.pyc
-docker/*/generated/*
+docker/*/generated
 docker/config.yml
-doc/.site/*
+doc/.site
 doc/sdk/python/arvados
 sdk/perl/MYMETA.*
 sdk/perl/Makefile
-sdk/perl/blib/*
+sdk/perl/blib
 sdk/perl/pm_to_blib
+*/vendor/bundle
diff --git a/apps/workbench/.gitignore b/apps/workbench/.gitignore
index fcfa458..afb317b 100644
--- a/apps/workbench/.gitignore
+++ b/apps/workbench/.gitignore
@@ -1,12 +1,3 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-#
-# If you find yourself ignoring temporary files generated by your text editor
-# or operating system, you probably want to add a global ignore instead:
-#   git config --global core.excludesfile ~/.gitignore_global
-
-# Ignore bundler config
-/.bundle
-
 # Ignore the default SQLite database.
 /db/*.sqlite3
 
@@ -23,10 +14,10 @@
 /config/environments/production.rb
 /config/application.yml
 
-/config/piwik.yml
+# Workbench doesn't need one anyway, so this shouldn't come up, but...
+/config/database.yml
 
-# editor backup files
-*~
+/config/piwik.yml
 
 # Capistrano files are coming from another repo
 /Capfile*
@@ -34,3 +25,6 @@
 
 # Themes are coming from another repo
 /themes/*
+
+# This can be a symlink to ../../../doc/.site in dev setups
+/public/doc
diff --git a/services/api/.gitignore b/services/api/.gitignore
index 6ddf523..1b76c64 100644
--- a/services/api/.gitignore
+++ b/services/api/.gitignore
@@ -1,12 +1,3 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-#
-# If you find yourself ignoring temporary files generated by your text editor
-# or operating system, you probably want to add a global ignore instead:
-#   git config --global core.excludesfile ~/.gitignore_global
-
-# Ignore bundler config
-/.bundle
-
 # Ignore the default SQLite database.
 /db/*.sqlite3
 
@@ -14,7 +5,7 @@
 /log/*.log
 /tmp
 
-# Some sensitive files
+# Sensitive files and local configuration
 /config/api.clinicalfuture.com.*
 /config/database.yml
 /config/initializers/omniauth.rb
@@ -23,19 +14,10 @@
 # asset cache
 /public/assets/
 
-# ignore .rvmrc
-.rvmrc
-
-# site-specific hardcoded API tokens
-/config/initializers/hardcoded_api_tokens.rb
-
 /config/environments/development.rb
 /config/environments/production.rb
 /config/environments/test.rb
 
-# editor backup files
-*~
-
 # Capistrano files are coming from another repo
 /Capfile*
 /config/deploy*

commit 3a1eb3b2205c10236faa28ad9731c8b515533500
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 13:44:11 2014 -0400

    Add Postgres setup instructions. Fix missing "bundle exec".

diff --git a/doc/install/install-api-server.html.textile.liquid b/doc/install/install-api-server.html.textile.liquid
index 13b82a3..14f5877 100644
--- a/doc/install/install-api-server.html.textile.liquid
+++ b/doc/install/install-api-server.html.textile.liquid
@@ -84,13 +84,32 @@ Put it in @config/application.yml@ in the production or common section:
 
 Consult @application.default.yml@ for a full list of configuration options. Always put your local configuration in @application.yml@ instead of editing @application.default.yml at .
 
-Configure the database:
+Generate a new database password. Nobody ever needs to memorize it or type it, so we'll make a strong one:
+
+<notextile>
+<pre><code>~/arvados/services/api$ <span class="userinput">ruby -e 'puts rand(2**128).to_s(36)'</span>
+6gqa1vu492idd7yca9tfandj3
+</code></pre></notextile>
+
+Create a new database user with permission to create its own databases.
+
+<notextile>
+<pre><code>~/arvados/services/api$ <span class="userinput">sudo -u postgres createuser --createdb --encrypted --pwprompt arvados</span>
+[sudo] password for <b>you</b>: <span class="userinput">yourpassword</span>
+Enter password for new role: <span class="userinput">paste-password-you-generated</span>
+Enter it again: <span class="userinput">paste-password-again</span>
+Shall the new role be a superuser? (y/n) <span class="userinput">n</span>
+Shall the new role be allowed to create more new roles? (y/n) <span class="userinput">n</span>
+</code></pre></notextile>
+
+Configure API server to connect to your database by creating and updating @config/database.yml at . Replace the @xxxxxxxx@ database password placeholders with the new password you generated above.
 
 <notextile>
 <pre><code>~/arvados/services/api$ <span class="userinput">cp -i config/database.yml.sample config/database.yml</span>
+~/arvados/services/api$ <span class="userinput">edit config/database.yml</span>
 </code></pre></notextile>
 
-By default, the development database will use the sqlite3 driver, so no configuration is necessary.  If you wish to use mysql or postgres, edit @config/database.yml@ to your liking and make sure the database and db user exist. Then initialize the database:
+Create and initialize the database.
 
 <notextile>
 <pre><code>~/arvados/services/api$ <span class="userinput">RAILS_ENV=development bundle exec rake db:setup</span>
@@ -107,7 +126,7 @@ Edit @config/initializers/omniauth.rb at . Set @APP_SECRET@ to the value of @app_se
 You can now run the development server:
 
 <notextile>
-<pre><code>~/arvados/services/api$ <span class="userinput">rails server
+<pre><code>~/arvados/services/api$ <span class="userinput">bundle exec rails server
 </code></pre></notextile>
 
 h3. Apache/Passenger (optional)
diff --git a/services/api/config/database.yml.sample b/services/api/config/database.yml.sample
index a16ea98..6a27016 100644
--- a/services/api/config/database.yml.sample
+++ b/services/api/config/database.yml.sample
@@ -1,6 +1,10 @@
 development:
-  adapter: sqlite3
-  database: db/arvados_development.sqlite3
+  adapter: postgresql
+  encoding: utf8
+  database: arvados_development
+  username: arvados
+  password: xxxxxxxx
+  host: localhost
 
 test:
   adapter: postgresql

commit 4f4c0d83cee7cd6783cfb20ac8d79687b8912e4a
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 13:08:18 2014 -0400

    Fix missing --format=uuid, fix obsolete version=repo:commit example.

diff --git a/doc/install/create-standard-objects.html.textile.liquid b/doc/install/create-standard-objects.html.textile.liquid
index 1daffd3..ef83a95 100644
--- a/doc/install/create-standard-objects.html.textile.liquid
+++ b/doc/install/create-standard-objects.html.textile.liquid
@@ -12,7 +12,7 @@ h3. "All users" group
 The convention is to add every active user to this group. We give it a distinctive UUID that looks like an IP broadcast address.
 
 <pre>
-prefix=`arv user current | cut -d- -f1`
+prefix=`arv --format=uuid user current | cut -d- -f1`
 read -rd $'\000' newgroup <<EOF; arv group create --group "$newgroup"
 {
  "uuid":"$prefix-j7d0g-fffffffffffffff",
@@ -23,12 +23,12 @@ EOF
 
 h3. "arvados" repository
 
-This will be readable by the "All users" group, and therefore by every active user. This makes it possible for users to run the bundled Crunch scripts by specifying a commit like "arvados:HEAD", rather than pulling the Arvados source tree into their own repositories.
+This will be readable by the "All users" group, and therefore by every active user. This makes it possible for users to run the bundled Crunch scripts by specifying @"script_version":"master","repository":"arvados"@ rather than pulling the Arvados source tree into their own repositories.
 
 <pre>
-prefix=`arv user current | cut -d- -f1`
+prefix=`arv --format=uuid user current | cut -d- -f1`
 all_users_group_uuid="$prefix-j7d0g-fffffffffffffff"
-repo_uuid=`arv repository create --repository '{"name":"arvados"}'`
+repo_uuid=`arv --format=uuid repository create --repository '{"name":"arvados"}'`
 echo "Arvados repository uuid is $repo_uuid"
 
 read -rd $'\000' newlink <<EOF; arv link create --link "$newlink" 

commit bef270550d49533c46df8741db9f9dfa67afc1b8
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 12:57:16 2014 -0400

    Fix up MD5 and Git capitalization/typeface and some Git vocabulary

diff --git a/doc/_includes/_tutorial_hash_script_py.liquid b/doc/_includes/_tutorial_hash_script_py.liquid
index 0dcabae..b9c7f31 100644
--- a/doc/_includes/_tutorial_hash_script_py.liquid
+++ b/doc/_includes/_tutorial_hash_script_py.liquid
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-import hashlib      # Import the hashlib module to compute md5.
+import hashlib      # Import the hashlib module to compute MD5.
 import arvados      # Import the Arvados sdk module
 
 # Automatically parallelize this job by running one task per file.
@@ -10,7 +10,7 @@ import arvados      # Import the Arvados sdk module
 arvados.job_setup.one_task_per_input_file(if_sequence=0, and_end_task=True, 
                                           input_as_path=True)
 
-# Create the message digest object that will compute the md5 hash
+# Create the message digest object that will compute the MD5 hash
 digestor = hashlib.new('md5')
 
 # Get the input file for the task
@@ -22,7 +22,7 @@ with open(input_file) as f:
         buf = f.read(2**20)      # read a 1 megabyte block from the file
         if len(buf) == 0:        # break when there is no more data left
             break
-        digestor.update(buf)     # update the md5 hash object
+        digestor.update(buf)     # update the MD5 hash object
 
 # Get object representing the current task
 this_task = arvados.current_task()
@@ -33,7 +33,7 @@ out = arvados.CollectionWriter()
  # Set output file within the collection
 out.set_current_file_name("md5sum.txt")
 
-# Write an output line with the md5 value and input
+# Write an output line with the MD5 value and input
 out.write("%s %s\n" % (digestor.hexdigest(), this_task['parameters']['input']))
 
  # Commit the output to keep.  This returns a Keep id.
diff --git a/doc/api/methods/jobs.html.textile.liquid b/doc/api/methods/jobs.html.textile.liquid
index 351a777..70706c9 100644
--- a/doc/api/methods/jobs.html.textile.liquid
+++ b/doc/api/methods/jobs.html.textile.liquid
@@ -35,16 +35,16 @@ Attributes of 'job' parameter:
 
 table(table table-bordered table-condensed).
 |_. Attribute               |_. Type|_. Accepted values                            |_. Description|
-{background:#ccffcc}.|script                 |string     |filename                                      |The actual script that will be run by crunch.  Must be the name of an executable file in the crunch_scripts/ directory at the git revision specified by script_version.|
-{background:#ccffcc}.|script_version         |string     |git branch, tag, or commit hash               |The version of code to run, which must be available in the specified repository.|
-{background:#ccffcc}.|repository             |string     |name of git repository hosted by Arvados      |The repository to search for script_version.|
-{background:#ccffcc}.|script_parameters      |object     |any JSON object                               |The input parameters for the job, with the parameter names as keys mapping to parameter values.|
-|minimum_script_version |string     |git branch, tag, or commit hash              |The minimum acceptable script version (earliest ancestor) to consider when deciding whether to re-use a past job.|
-|exclude_script_versions|array of strings|git branch, tag, or commit hash|Script versions to exclude when deciding whether to re-use a past job.|
+{background:#ccffcc}.|script                 |string     |filename                                      |The actual script that will be run by crunch.  Must be the name of an executable file in the crunch_scripts/ directory at the Git revision specified by script_version.|
+{background:#ccffcc}.|script_version         |string     |Git branch, tag, or commit hash               |The version of code to run, which must be available in the specified repository.|
+{background:#ccffcc}.|repository             |string     |Name of Git repository hosted by Arvados      |The repository to search for script_version.|
+{background:#ccffcc}.|script_parameters      |object     |Any JSON object                               |The input parameters for the job, with the parameter names as keys mapping to parameter values.|
+|minimum_script_version |string     |Git branch, tag, or commit hash              |The minimum acceptable script version (earliest ancestor) to consider when deciding whether to re-use a past job.|
+|exclude_script_versions|array of strings|Git branch, tag, or commit hash|Script versions to exclude when deciding whether to re-use a past job.|
 |nondeterministic       |boolean    |                                              |If true, never re-use a past job, and flag this job so it will never be considered for re-use.|
 |no_reuse               |boolean    |                                              |If true, do not re-use a past job, but this job may be re-used.|
 
-When a job is executed, the 'script_version' field is resolved to an exact git revision and the git hash for that revision is recorded in 'script_version'.  If 'script_version' can't be resolved, the job submission will be rejected.
+When a job is executed, the 'script_version' field is resolved to an exact Git revision and the Git hash for that revision is recorded in 'script_version'.  If 'script_version' can't be resolved, the job submission will be rejected.
 
 h3. Reusing jobs
 
@@ -53,14 +53,14 @@ Because Arvados records the exact version of the script, input parameters, and r
 notextile. <div class="spaced-out">
 
 # If 'nondeterministic' or 'no_reuse' are true, always create a new job.
-# Find a list of acceptable values for 'script_version'.  If 'minimum_script_version' is specified, this is the set of all revisions in the git commit graph between 'minimum_script_version' and 'script_version' (inclusive) [2].  If 'minimum_script_version' is not specified, only 'script_version' is added to the list.  If 'exclude_script_versions' is specified, the listed versions are excluded from the list.
+# Find a list of acceptable values for 'script_version'.  If 'minimum_script_version' is specified, this is the set of all revisions in the Git commit graph between 'minimum_script_version' and 'script_version' (inclusive) [2].  If 'minimum_script_version' is not specified, only 'script_version' is added to the list.  If 'exclude_script_versions' is specified, the listed versions are excluded from the list.
 # Select jobs have the same 'script' and 'script_parameters' attributes, and where the 'script_version' attribute is in the list of acceptable versions.  Exclude jobs that failed or set 'nondeterministic' to true.
 # If there is more than one candidate job, check that all selected past jobs actually did produce the same output.
 # If everything passed, re-use one of the selected past jobs (if there is more than one match, which job will be returned is undefined).  Otherwise create a new job.
 
 fn1. As of this writing, versioning the runtime environment is still under development.
 
-fn2. This may include parallel branches if there is more than one path between 'minimum_script_version' and 'script_version' in the git commit graph.  Use 'exclude_script_versions' to blacklist specific versions.
+fn2. This may include parallel branches if there is more than one path between 'minimum_script_version' and 'script_version' in the Git commit graph.  Use 'exclude_script_versions' to blacklist specific versions.
 
 </div>
 
diff --git a/doc/api/schema/Job.html.textile.liquid b/doc/api/schema/Job.html.textile.liquid
index 55fb234..ef8d0a2 100644
--- a/doc/api/schema/Job.html.textile.liquid
+++ b/doc/api/schema/Job.html.textile.liquid
@@ -44,7 +44,7 @@ table(table table-bordered table-condensed).
 |runtime_constraints{}|list|Constraints that must be satisfied by the job/task scheduler in order to run the job.|See below.|
 |script|string|Name of crunch script in @/crunch_scripts/@||
 |script_parameters{}|list|Parameters passed to MapReduce script||
-|script_version|string|git branch, tag, or commit hash.|Before the job starts, this is the git branch, tag, or hash supplied by the user.  When the job starts, Arvados updates this field to the full 40-character git hash of the actual commit used by the job.|
+|script_version|string|Git branch, tag, or commit hash.|Before the job starts, this is the Git branch, tag, or hash supplied by the user.  When the job starts, Arvados updates this field to the full 40-character git hash of the actual commit used by the job.|
 |repository             |string     |The repository from which the script_version will be fetched.|
 |cancelled_by_client_uuid|string|API client ID|Is null if job has not been cancelled|
 |cancelled_by_user_uuid|string|Authenticated user ID|Is null if job has not been cancelled|
diff --git a/doc/api/schema/PipelineTemplate.html.textile.liquid b/doc/api/schema/PipelineTemplate.html.textile.liquid
index 6060e59..9bc5bcc 100644
--- a/doc/api/schema/PipelineTemplate.html.textile.liquid
+++ b/doc/api/schema/PipelineTemplate.html.textile.liquid
@@ -29,11 +29,11 @@ fn1. The 'File' type refers to a specific file within a Keep collection in the f
 
 h3. Examples
 
-This is a pipeline named "Filter md5 hash values" with two components, "do_hash" and "filter".  The "input" script parameter of the "do_hash" component is required to be filled in by the user, and the expected data type is "Collection".  This also specifies that the "input" script parameter of the "filter" component is the output of "do_hash", so "filter" will not run until "do_hash" completes successfully.  When the pipeline runs, past jobs that meet the criteria described above may be substituted for either or both components to avoid redundant computation.
+This is a pipeline named "Filter MD5 hash values" with two components, "do_hash" and "filter".  The "input" script parameter of the "do_hash" component is required to be filled in by the user, and the expected data type is "Collection".  This also specifies that the "input" script parameter of the "filter" component is the output of "do_hash", so "filter" will not run until "do_hash" completes successfully.  When the pipeline runs, past jobs that meet the criteria described above may be substituted for either or both components to avoid redundant computation.
 
 <notextile><pre>
 {
-  "name": "Filter md5 hash values",
+  "name": "Filter MD5 hash values",
   "components": {
     "do_hash": {
       "script": "hash.py",
diff --git a/doc/install/create-standard-objects.html.textile.liquid b/doc/install/create-standard-objects.html.textile.liquid
index b56a503..1daffd3 100644
--- a/doc/install/create-standard-objects.html.textile.liquid
+++ b/doc/install/create-standard-objects.html.textile.liquid
@@ -23,7 +23,7 @@ EOF
 
 h3. "arvados" repository
 
-This will be readable by the "All users" group, and therefore by every active user. This makes it possible for users to run the bundled Crunch scripts by specifying a commit like "arvados:HEAD", rather than having to pull the Arvados git tree into their own repositories.
+This will be readable by the "All users" group, and therefore by every active user. This makes it possible for users to run the bundled Crunch scripts by specifying a commit like "arvados:HEAD", rather than pulling the Arvados source tree into their own repositories.
 
 <pre>
 prefix=`arv user current | cut -d- -f1`
diff --git a/doc/install/install-crunch-dispatch.html.textile.liquid b/doc/install/install-crunch-dispatch.html.textile.liquid
index 9b0e9b8..9cdebbc 100644
--- a/doc/install/install-crunch-dispatch.html.textile.liquid
+++ b/doc/install/install-crunch-dispatch.html.textile.liquid
@@ -50,7 +50,7 @@ The crunch user should have the same UID, GID, and home directory on all compute
 
 h4. Repositories
 
-Crunch scripts must be in git repositories in @/var/cache/git/*/.git@ (or whatever is configured in @services/api/config/environments/production.rb@).
+Crunch scripts must be in Git repositories in @/var/cache/git/*/.git@ (or whatever is configured in @services/api/config/environments/production.rb@).
 
 h4. Importing commits
 
diff --git a/doc/user/getting_started/ssh-access.html.textile.liquid b/doc/user/getting_started/ssh-access.html.textile.liquid
index 87240dc..d6ce25b 100644
--- a/doc/user/getting_started/ssh-access.html.textile.liquid
+++ b/doc/user/getting_started/ssh-access.html.textile.liquid
@@ -4,7 +4,7 @@ navsection: userguide
 title: Accessing an Arvados VM with SSH
 ...
 
-Arvados requires a public SSH key in order to securely log in to an Arvados VM instance, or to access an Arvados @git@ repository.
+Arvados requires a public SSH key in order to securely log in to an Arvados VM instance, or to access an Arvados Git repository.
 
 This document is divided up into three sections.
 
diff --git a/doc/user/topics/keep.html.textile.liquid b/doc/user/topics/keep.html.textile.liquid
index 86f1132..f2ffa62 100644
--- a/doc/user/topics/keep.html.textile.liquid
+++ b/doc/user/topics/keep.html.textile.liquid
@@ -33,7 +33,7 @@ This happens because @arv keep get@ tries to find a collection with this identif
 
 {% include 'notebox_end' %}
 
-Let's look at the size and compute the md5 hash of @block1@:
+Let's look at the size and compute the MD5 hash of @block1@:
 
 <notextile>
 <pre><code>/scratch/<b>you</b>$ <span class="userinput">ls -l block1</span>
@@ -44,5 +44,5 @@ Let's look at the size and compute the md5 hash of @block1@:
 </notextile>
 
 Notice that the block identifer <code>204e43b8a1185621ca55a94839582e6f+67108864</code> consists of:
-* the md5 hash of @block1@, @204e43b8a1185621ca55a94839582e6f@, plus
+* the MD5 hash of @block1@, @204e43b8a1185621ca55a94839582e6f@, plus
 * the size of @block1@, @67108864 at .
diff --git a/doc/user/topics/running-pipeline-command-line.html.textile.liquid b/doc/user/topics/running-pipeline-command-line.html.textile.liquid
index 1dc69e7..8acce95 100644
--- a/doc/user/topics/running-pipeline-command-line.html.textile.liquid
+++ b/doc/user/topics/running-pipeline-command-line.html.textile.liquid
@@ -9,7 +9,7 @@ In "Writing a pipeline":{{ site.baseurl }}/user/tutorials/tutorial-firstscript.h
 <notextile>
 <pre><code>~$ <span class="userinput">cat >the_pipeline <<EOF
 {
-  "name":"Filter md5 hash values",
+  "name":"Filter MD5 hash values",
   "components":{
     "do_hash":{
       "script":"hash.py",
@@ -35,7 +35,7 @@ EOF</span>
 ~$ <span class="userinput">arv pipeline_template create --pipeline-template "$(cat the_pipeline)"</span></code></pre>
 </notextile>
 
-(Your shell should automatically fill in @$USER@ with your login name.  The JSON that gets saved should have @"repository"@ pointed at your personal git repository.)
+(Your shell should automatically fill in @$USER@ with your login name.  The JSON that gets saved should have @"repository"@ pointed at your personal Git repository.)
 
 You can run this pipeline from the command line using @arv pipeline run@, filling in the UUID that you received from @arv pipeline_template create@:
 
diff --git a/doc/user/topics/tutorial-job-debug.html.textile.liquid b/doc/user/topics/tutorial-job-debug.html.textile.liquid
index 8d470da..bc1932e 100644
--- a/doc/user/topics/tutorial-job-debug.html.textile.liquid
+++ b/doc/user/topics/tutorial-job-debug.html.textile.liquid
@@ -4,7 +4,7 @@ navsection: userguide
 title: "Debugging a Crunch script"
 ...
 
-To test changes to a script by running a job, the change must be pushed into @git@, the job queued asynchronously, and the actual execution may be run on any compute server.  As a result, debugging a script can be difficult and time consuming.  This tutorial demonstrates using @arv-crunch-job@ to run your job in your local VM.  This avoids the job queue and allows you to execute the script from your uncomitted git tree.
+To test changes to a script by running a job, the change must be pushed to your hosted repository, and the job might have to wait in the queue before it runs. This cycle can be an inefficient way to develop and debug scripts. This tutorial demonstrates an alternative: using @arv-crunch-job@ to run your job in your local VM.  This avoids the job queue and allows you to execute the script directly from your git working tree without committing or pushing.
 
 *This tutorial assumes that you are "logged into an Arvados VM instance":{{site.baseurl}}/user/getting_started/ssh-access.html#login, and have a "working environment.":{{site.baseurl}}/user/getting_started/check-environment.html*
 
@@ -12,7 +12,7 @@ This tutorial uses *@you@* to denote your username.  Replace *@you@* with your u
 
 h2. Create a new script
 
-Change to your git directory and create a new script in @crunch_scripts/@.
+Change to your Git working directory and create a new script in @crunch_scripts/@.
 
 <notextile>
 <pre><code>~$ <span class="userinput">cd <b>you</b>/crunch_scripts</span>
@@ -27,7 +27,7 @@ EOF</span>
 
 h2. Using arv-crunch-job to run the job in your VM
 
-Instead of a git commit hash, we provide the path to the directory in the "script_version" parameter.  The script specified in "script" will actually be searched for in the @crunch_scripts/@ subdirectory of the directory specified "script_version".  Although we are running the script locally, the script still requires access to the Arvados API server and Keep storage service. The job will be recorded in the Arvados job history, and visible in Workbench.
+Instead of a Git commit hash, we provide the path to the directory in the "script_version" parameter.  The script specified in "script" is expected to be in the @crunch_scripts/@ subdirectory of the directory specified "script_version".  Although we are running the script locally, the script still requires access to the Arvados API server and Keep storage service. The job will be recorded in the Arvados job history, and visible in Workbench.
 
 <notextile>
 <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">cat >~/the_job <<EOF
diff --git a/doc/user/topics/tutorial-job1.html.textile.liquid b/doc/user/topics/tutorial-job1.html.textile.liquid
index 2ac8ff5..f69381e 100644
--- a/doc/user/topics/tutorial-job1.html.textile.liquid
+++ b/doc/user/topics/tutorial-job1.html.textile.liquid
@@ -8,7 +8,7 @@ This tutorial introduces how to run individual Crunch jobs using the @arv@ comma
 
 *This tutorial assumes that you are "logged into an Arvados VM instance":{{site.baseurl}}/user/getting_started/ssh-access.html#login, and have a "working environment.":{{site.baseurl}}/user/getting_started/check-environment.html*
 
-You will create a job to run the "hash" Crunch script.  The "hash" script computes the md5 hash of each file in a collection.
+You will create a job to run the "hash" Crunch script.  The "hash" script computes the MD5 hash of each file in a collection.
 
 h2. Jobs
 
@@ -34,9 +34,9 @@ EOF
 * @cat@ is a standard Unix utility that writes a sequence of input to standard output.
 * @<<EOF@ tells the shell to direct the following lines into the standard input for @cat@ up until it sees the line @EOF at .
 * @>~/the_job@ redirects standard output to a file called @~/the_job at .
-* @"repository"@ is the name of a git repository to search for the script version.  You can access a list of available git repositories on the Arvados Workbench under "*Compute* %(rarr)→% *Code repositories*":https://{{site.arvados_workbench_host}}/repositories.
-* @"script_version"@ specifies the version of the script that you wish to run.  This can be in the form of an explicit git revision hash, a tag, or a branch (in which case it will use the most recent commit on the specified branch).  Arvados logs the script version that was used in the run, enabling you to go back and re-run any past job with the guarantee that the exact same code will be used as was used in the previous run.
-* @"script"@ specifies the name of the script to run.  The script is searched for in the @crunch_scripts/@ subdirectory of the git repository.
+* @"repository"@ is the name of a Git repository to search for the script version.  You can access a list of available git repositories on the Arvados Workbench under "*Compute* %(rarr)→% *Code repositories*":https://{{site.arvados_workbench_host}}/repositories.
+* @"script_version"@ specifies the version of the script that you wish to run.  This can be in the form of an explicit Git revision hash, a tag, or a branch.  Arvados logs the script version that was used in the run, enabling you to go back and re-run any past job with the guarantee that the exact same code will be used as was used in the previous run.
+* @"script"@ specifies the name of the script to run.  The script must be given relative to the @crunch_scripts/@ subdirectory of the Git repository.
 * @"script_parameters"@ are provided to the script.  In this case, the input is the PGP data Collection that we "put in Keep earlier":{{site.baseurl}}/user/tutorials/tutorial-keep.html.
 * Setting the @"no_reuse"@ flag tells Crunch not to reuse work from past jobs.  This helps ensure that you can watch a new Job process for the rest of this tutorial, without reusing output from a past run that you made, or somebody else marked as public.  (If you want to experiment, after the first run below finishes, feel free to edit this job to remove the @"no_reuse"@ line and resubmit it.  See what happens!)
 
@@ -166,7 +166,7 @@ This collection consists of the @md5sum.txt@ file.  Use @arv keep get@ to show t
 </code></pre>
 </notextile>
 
-This md5 hash matches the md5 hash which we "computed earlier":{{site.baseurl}}/user/tutorials/tutorial-keep.html.
+This MD5 hash matches the MD5 hash which we "computed earlier":{{site.baseurl}}/user/tutorials/tutorial-keep.html.
 
 h2. The job log
 
diff --git a/doc/user/topics/tutorial-parallel.html.textile.liquid b/doc/user/topics/tutorial-parallel.html.textile.liquid
index 021d736..d7a093a 100644
--- a/doc/user/topics/tutorial-parallel.html.textile.liquid
+++ b/doc/user/topics/tutorial-parallel.html.textile.liquid
@@ -6,7 +6,7 @@ title: "Parallel Crunch tasks"
 
 In the previous tutorials, we used @arvados.job_setup.one_task_per_input_file()@ to automatically parallelize our jobs by creating a separate task per file.  For some types of jobs, you may need to split the work up differently, for example creating tasks to process different segments of a single large file.  In this this tutorial will demonstrate how to create Crunch tasks directly.
 
-Start by entering the @crunch_scripts@ directory of your git repository:
+Start by entering the @crunch_scripts@ directory of your Git repository:
 
 <notextile>
 <pre><code>~$ <span class="userinput">cd <b>you</b>/crunch_scripts</span>
@@ -17,7 +17,7 @@ Next, using @nano@ or your favorite Unix text editor, create a new file called @
 
 notextile. <pre>~/<b>you</b>/crunch_scripts$ <code class="userinput">nano parallel-hash.py</code></pre>
 
-Add the following code to compute the md5 hash of each file in a collection:
+Add the following code to compute the MD5 hash of each file in a collection:
 
 <notextile> {% code 'parallel_hash_script_py' as python %} </notextile>
 
@@ -25,7 +25,7 @@ Make the file executable:
 
 notextile. <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">chmod +x parallel-hash.py</span></code></pre>
 
-Next, add the file to @git@ staging, commit and push:
+Add the file to the Git staging area, commit, and push:
 
 <notextile>
 <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">git add parallel-hash.py</span>
@@ -63,7 +63,7 @@ EOF</span>
 </code></pre>
 </notextile>
 
-(Your shell should automatically fill in @$USER@ with your login name.  The job JSON that gets saved should have @"repository"@ pointed at your personal git repository.)
+(Your shell should automatically fill in @$USER@ with your login name.  The job JSON that gets saved should have @"repository"@ pointed at your personal Git repository.)
 
 Because the job ran in parallel, each instance of parallel-hash creates a separate @md5sum.txt@ as output.  Arvados automatically collates theses files into a single collection, which is the output of the job:
 
diff --git a/doc/user/tutorials/intro-crunch.html.textile.liquid b/doc/user/tutorials/intro-crunch.html.textile.liquid
index 46b4d6c..e3eca16 100644
--- a/doc/user/tutorials/intro-crunch.html.textile.liquid
+++ b/doc/user/tutorials/intro-crunch.html.textile.liquid
@@ -4,7 +4,7 @@ navsection: userguide
 title: Introduction to Crunch
 ...
 
-In "getting data from Keep,":tutorial-keep.html#arv-get we downloaded a file from Keep and did some computation with it (specifically, computing the md5 hash of the complete file).  While a straightforward way to accomplish a computational task, there are several obvious drawbacks to this approach:
+In "getting data from Keep,":tutorial-keep.html#arv-get we downloaded a file from Keep and did some computation with it (specifically, computing the MD5 hash of the complete file).  While a straightforward way to accomplish a computational task, there are several obvious drawbacks to this approach:
 * Large files require significant time to download.
 * Very large files may exceed the scratch space of the local disk.
 * We are only able to use the local CPU to process the file.
diff --git a/doc/user/tutorials/running-external-program.html.textile.liquid b/doc/user/tutorials/running-external-program.html.textile.liquid
index 56b71c0..26b93ce 100644
--- a/doc/user/tutorials/running-external-program.html.textile.liquid
+++ b/doc/user/tutorials/running-external-program.html.textile.liquid
@@ -10,7 +10,7 @@ This tutorial demonstrates how to use Crunch to run an external program by writt
 
 In this tutorial, you will use the external program @md5sum@ to compute hashes instead of the built-in Python library used in earlier tutorials.
 
-Start by entering the @crunch_scripts@ directory of your git repository:
+Start by entering the @crunch_scripts@ directory of your Git working tree:
 
 <notextile>
 <pre><code>~$ <span class="userinput">cd <b>you</b>/crunch_scripts</span>
@@ -29,7 +29,7 @@ Make the file executable:
 
 notextile. <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">chmod +x run-md5sum.py</span></code></pre>
 
-Next, use @git@ to stage the file, commit, and push:
+Next, use Git to stage the file, commit, and push:
 
 <notextile>
 <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">git add run-md5sum.py</span>
@@ -63,6 +63,6 @@ EOF
 </code></pre>
 </notextile>
 
-(Your shell should automatically fill in @$USER@ with your login name.  The JSON that gets saved should have @"repository"@ pointed at your personal git repository.)
+(Your shell should automatically fill in @$USER@ with your login name.  The JSON that gets saved should have @"repository"@ pointed at your personal Git repository.)
 
 Your new pipeline template will appear on the Workbench "Compute %(rarr)→% Pipeline templates":https://{{ site.arvados_workbench_host }}/pipeline_instances page.  You can run the "pipeline using Workbench":tutorial-pipeline-workbench.html.
diff --git a/doc/user/tutorials/tutorial-firstscript.html.textile.liquid b/doc/user/tutorials/tutorial-firstscript.html.textile.liquid
index d0f50f2..46edd2f 100644
--- a/doc/user/tutorials/tutorial-firstscript.html.textile.liquid
+++ b/doc/user/tutorials/tutorial-firstscript.html.textile.liquid
@@ -13,7 +13,7 @@ This tutorial uses *@you@* to denote your username.  Replace *@you@* with your u
 
 h2. Setting up Git
 
-All Crunch scripts are managed through the @git@ revision control system.  Before you start using git, you should do some basic configuration (you only need to do this the first time):
+All Crunch scripts are managed through the Git revision control system.  Before you start using Git, you should do some basic configuration (you only need to do this the first time):
 
 <notextile>
 <pre><code>~$ <span class="userinput">git config --global user.name "Your Name"</span>
@@ -22,21 +22,21 @@ All Crunch scripts are managed through the @git@ revision control system.  Befor
 
 On the Arvados Workbench, navigate to "Compute %(rarr)→% Code repositories":https://{{site.arvados_workbench_host}}/repositories.  You should see a repository with your user name listed in the *name* column.  Next to *name* is the column *push_url*.  Copy the *push_url* value associated with your repository.  This should look like <notextile><code>git at git.{{ site.arvados_api_host }}:<b>you</b>.git</code></notextile>.
 
-Next, on the Arvados virtual machine, clone your git repository:
+Next, on the Arvados virtual machine, clone your Git repository:
 
 <notextile>
 <pre><code>~$ <span class="userinput">git clone git at git.{{ site.arvados_api_host }}:<b>you</b>.git</span>
 Cloning into '<b>you</b>'...</code></pre>
 </notextile>
 
-This will create an git checkout in the directory called *@you@*.
+This will create a Git repository in the directory called *@you@*.
 
 {% include 'notebox_begin' %}
-For more information about using @git@, try
+For more information about using Git, try
 
 notextile. <pre><code>$ <span class="userinput">man gittutorial</span></code></pre>
 
-or *"search Google for git tutorials":http://google.com/#q=git+tutorial*.
+or *"search Google for Git tutorials":http://google.com/#q=git+tutorial*.
 {% include 'notebox_end' %}
 
 h2. Creating a Crunch script
@@ -53,7 +53,7 @@ Next, using @nano@ or your favorite Unix text editor, create a new file called @
 
 notextile. <pre>~/<b>you</b>/crunch_scripts$ <code class="userinput">nano hash.py</code></pre>
 
-Add the following code to compute the md5 hash of each file in a collection:
+Add the following code to compute the MD5 hash of each file in a collection:
 
 <notextile> {% code 'tutorial_hash_script_py' as python %} </notextile>
 
@@ -62,15 +62,15 @@ Make the file executable:
 notextile. <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">chmod +x hash.py</span></code></pre>
 
 {% include 'notebox_begin' %}
-The steps below describe how to execute the script after committing changes to git. To run a script locally for testing, please see "debugging a crunch script":{{site.baseurl}}/user/topics/tutorial-job-debug.html.
+The steps below describe how to execute the script after committing changes to Git. To run a script locally for testing, please see "debugging a crunch script":{{site.baseurl}}/user/topics/tutorial-job-debug.html.
 
 {% include 'notebox_end' %}
 
-Next, add the file to git staging.  This tells @git@ that the file should be included on the next commit.
+Next, add the file to the staging area.  This tells @git@ that the file should be included on the next commit.
 
 notextile. <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">git add hash.py</span></code></pre>
 
-Next, commit your changes to git.  All staged changes are recorded into the local git repository:
+Next, commit your changes.  All staged changes are recorded into the local git repository:
 
 <notextile>
 <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">git commit -m"my first script"</span>
@@ -125,9 +125,9 @@ EOF
 * @"name"@ is a human-readable name for the pipeline.
 * @"components"@ is a set of scripts that make up the pipeline.
 * The component is listed with a human-readable name (@"do_hash"@ in this example).
-* @"repository"@ is the name of a git repository to search for the script version.  You can access a list of available git repositories on the Arvados Workbench under "Compute %(rarr)→% Code repositories":https://{{site.arvados_workbench_host}}/repositories.  Your shell should automatically fill in @$USER@ with your login name, so that the final JSON has @"repository"@ pointed at your personal git repository.
-* @"script_version"@ specifies the version of the script that you wish to run.  This can be in the form of an explicit git revision hash, a tag, or a branch (in which case it will use the HEAD of the specified branch).  Arvados logs the script version that was used in the run, enabling you to go back and re-run any past job with the guarantee that the exact same code will be used as was used in the previous run.
-* @"script"@ specifies the filename of the script to run.  Crunch expects to find this in the @crunch_scripts/@ subdirectory of the git repository.
+* @"repository"@ is the name of a git repository to search for the script version.  You can access a list of available git repositories on the Arvados Workbench under "Compute %(rarr)→% Code repositories":https://{{site.arvados_workbench_host}}/repositories.  Your shell should automatically fill in @$USER@ with your login name, so that the final JSON has @"repository"@ pointed at your personal Git repository.
+* @"script_version"@ specifies the version of the script that you wish to run.  This can be in the form of an explicit Git revision hash, a tag, or a branch (in which case it will use the HEAD of the specified branch).  Arvados logs the script version that was used in the run, enabling you to go back and re-run any past job with the guarantee that the exact same code will be used as was used in the previous run.
+* @"script"@ specifies the filename of the script to run.  Crunch expects to find this in the @crunch_scripts/@ subdirectory of the Git repository.
 * @"script_parameters"@ describes the parameters for the script.  In this example, there is one parameter called @input@ which is @required@ and is a @Collection at .
 * @"output_is_persistent"@ indicates whether the output of the job is considered valuable. If this value is false (or not given), the output will be treated as intermediate data and eventually deleted to reclaim disk space.
 
diff --git a/doc/user/tutorials/tutorial-keep.html.textile.liquid b/doc/user/tutorials/tutorial-keep.html.textile.liquid
index 1f4c723..fac3530 100644
--- a/doc/user/tutorials/tutorial-keep.html.textile.liquid
+++ b/doc/user/tutorials/tutorial-keep.html.textile.liquid
@@ -9,7 +9,7 @@ This tutorial introduces you to the Arvados file storage system.
 
 *This tutorial assumes that you are "logged into an Arvados VM instance":{{site.baseurl}}/user/getting_started/ssh-access.html#login, and have a "working environment.":{{site.baseurl}}/user/getting_started/check-environment.html*
 
-The Arvados distributed file system is called *Keep*.  Keep is a content-addressable file system.  This means that files are managed using special unique identifiers derived from the _contents_ of the file, rather than human-assigned file names (specifically, the md5 hash).  This has a number of advantages:
+The Arvados distributed file system is called *Keep*.  Keep is a content-addressable file system.  This means that files are managed using special unique identifiers derived from the _contents_ of the file, rather than human-assigned file names (specifically, the MD5 hash).  This has a number of advantages:
 * Files can be stored and replicated across a cluster of servers without requiring a central name server.
 * Both the server and client systematically validate data integrity because the checksum is built into the identifier.
 * Data duplication is minimized—two files with the same contents will have in the same identifier, and will not be stored twice.
@@ -119,7 +119,7 @@ You can also download individual files:
 </code></pre>
 </notextile>
 
-With a local copy of the file, we can do some computation, for example computing the md5 hash of the complete file:
+With a local copy of the file, we can do some computation, for example computing the MD5 hash of the complete file:
 
 <notextile>
 <pre><code>/scratch/<b>you</b>$ <span class="userinput">md5sum var-GS000016015-ASM.tsv.bz2</span>
diff --git a/doc/user/tutorials/tutorial-new-pipeline.html.textile.liquid b/doc/user/tutorials/tutorial-new-pipeline.html.textile.liquid
index 2acb34d..d3d4f4a 100644
--- a/doc/user/tutorials/tutorial-new-pipeline.html.textile.liquid
+++ b/doc/user/tutorials/tutorial-new-pipeline.html.textile.liquid
@@ -16,7 +16,7 @@ Our second script will filter the output of @hash.py@ and only include hashes th
 
 <notextile> {% code '0_filter_py' as python %} </notextile>
 
-Now add it to git:
+Now add it to your repository:
 
 <notextile>
 <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">chmod +x 0-filter.py</span>
@@ -33,7 +33,7 @@ Next, create a file that contains the pipeline definition:
 <notextile>
 <pre><code>~/<b>you</b>/crunch_scripts$ <span class="userinput">cat >~/the_pipeline <<EOF
 {
-  "name":"Filter md5 hash values",
+  "name":"Filter MD5 hash values",
   "components":{
     "do_hash":{
       "script":"hash.py",
@@ -66,7 +66,7 @@ EOF
 
 * @"output_of"@ indicates that the @output@ of the @do_hash@ component should be used as the @"input"@ of @do_filter at .  Arvados uses these dependencies between jobs to automatically determine the correct order to run them.
 
-(Your shell should automatically fill in @$USER@ with your login name.  The JSON that gets saved should have @"repository"@ pointed at your personal git repository.)
+(Your shell should automatically fill in @$USER@ with your login name.  The JSON that gets saved should have @"repository"@ pointed at your personal Git repository.)
 
 Now, use @arv pipeline_template create@ to register your pipeline template in Arvados:
 

commit c3e86c9c7d6c01929152259f8b53a8f48853380c
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 12:34:47 2014 -0400

    Fix up SSH capitalization/typeface

diff --git a/doc/user/getting_started/ssh-access.html.textile.liquid b/doc/user/getting_started/ssh-access.html.textile.liquid
index bda1f84..87240dc 100644
--- a/doc/user/getting_started/ssh-access.html.textile.liquid
+++ b/doc/user/getting_started/ssh-access.html.textile.liquid
@@ -1,20 +1,20 @@
 ---
 layout: default
 navsection: userguide
-title: Accessing an Arvados VM over ssh
+title: Accessing an Arvados VM with SSH
 ...
 
-Arvados requires a public ssh key in order to securely log in to an Arvados VM instance, or to access an Arvados @git@ repository.
+Arvados requires a public SSH key in order to securely log in to an Arvados VM instance, or to access an Arvados @git@ repository.
 
 This document is divided up into three sections.
 
-# "Getting your ssh key":#gettingkey
+# "Getting your SSH key":#gettingkey
 # "Adding your key to Arvados Workbench":#workbench
-# "Using ssh to log into an Arvados VM instance":#login
+# "Using SSH to log into an Arvados VM instance":#login
 
-h1(#gettingkey). Getting your ssh key
+h1(#gettingkey). Getting your SSH key
 
-# "Using Unix ssh":#unix (Linux, OS X, Cygwin)
+# "Using SSH":#unix (Linux, OS X, Cygwin)
 # "Using PuTTY":#windows (Windows)
 
 h2(#unix). Unix: Using ssh-keygen
@@ -61,9 +61,9 @@ If you get the error "Could not open a connection to your authentication agent"
 
 notextile. <pre><code>$ <span class="userinput">eval $(ssh-agent -s)</span></code></pre>
 
- at ssh-agent -s@ prints out values for environment variables SSH_AUTH_SOCK and SSH_AGENT_PID and then runs in the background.  Using "eval" on the output as shown here causes those variables to be set in the current shell environment so that subsequent calls to @ssh@ can discover how to access the @ssh-agent@ daemon.
+ at ssh-agent -s@ prints out values for environment variables SSH_AUTH_SOCK and SSH_AGENT_PID and then runs in the background.  Using "eval" on the output as shown here causes those variables to be set in the current shell environment so that subsequent calls to SSH can discover how to access the agent process.
 
-After running @ssh-agent@, or if @ssh-add -l@ prints "The agent has no identities", then you will need to add your key using the following command.  The passphrase to decrypt the key is the same used to protect the key when it was created with @ssh-keygen@:
+After running @ssh-agent@, or if @ssh-add -l@ prints "The agent has no identities", add your key using the following command.  The passphrase to decrypt the key is the same used to protect the key when it was created with @ssh-keygen@:
 
 <notextile>
 <pre><code>$ <span class="userinput">ssh-add</span>
@@ -84,9 +84,9 @@ You may now proceed to "adding your key to the Arvados Workbench.":#workbench
 
 h2(#windows). Windows: Using PuTTY
 
-(Note: if you are using the @ssh@ client that comes with "Cygwin":http://cygwin.com you should follow the "Unix":#unix instructions).
+(Note: if you are using the SSH client that comes with "Cygwin":http://cygwin.com you should follow the "Unix":#unix instructions).
 
-"PuTTY":http://www.chiark.greenend.org.uk/~sgtatham/putty/ is a free (MIT-licensed) Win32 Telnet and SSH client. PuTTY includes all the tools a Windows user needs to create private keys and make ssh connections to your virtual machines in the Arvados Cloud.
+"PuTTY":http://www.chiark.greenend.org.uk/~sgtatham/putty/ is a free (MIT-licensed) Win32 Telnet and SSH client. PuTTY includes all the tools a Windows user needs to create private keys and make SSH connections to your virtual machines in the Arvados Cloud.
 
 You can "download PuTTY from its Web site":http://www.chiark.greenend.org.uk/~sgtatham/putty/.  Note that you should download the installer or .zip file with all of the PuTTY tools (PuTTYtel is not required).
 
@@ -113,7 +113,7 @@ h3. Step 2 - Creating a Public Key
 
 h3. Step 3 - Set up Pageant
 
-Pageant is a PuTTY utility that manages your private keys so is not necessary to enter your private key passphrase every time you make a new ssh connection.
+Pageant is a PuTTY utility that manages your private keys so is not necessary to enter your private key passphrase every time you make a new SSH connection.
 
 # Start Pageant from the Start Menu or the folder where it was installed.
 # Pageant will now be running in the system tray. Click the Pageant icon to configure.
@@ -125,11 +125,11 @@ h1(#workbench). Adding your key to Arvados Workbench
 
 h3. From the Workbench dashboard
 
-If you have no ssh keys registered, there should be a notification asking you to provide your ssh public key.  On the Workbench dashboard, look for the envelope icon <span class="glyphicon glyphicon-envelope"></span> <span class="badge badge-alert">1</span> in upper right corner (the number indicates there are new notifications).  Click on this icon and a dropdown menu should appear with a message asking you to add your public key.  Paste your public key into the text area provided and click on the check button to submit the key.  You are now ready to "log into an Arvados VM":#login.
+If you have no SSH keys registered, there should be a notification asking you to provide your ssh public key.  On the Workbench dashboard, look for the envelope icon <span class="glyphicon glyphicon-envelope"></span> <span class="badge badge-alert">1</span> in upper right corner (the number indicates there are new notifications).  Click on this icon and a dropdown menu should appear with a message asking you to add your public key.  Paste your public key into the text area provided and click on the check button to submit the key.  You are now ready to "log into an Arvados VM":#login.
 
-h3. Alternate way to add ssh keys
+h3. Alternate way to add SSH keys
 
-If you want to add additional ssh keys, click on the user icon <span class="glyphicon glyphicon-user"></span> in the upper right corner to access the user settings menu, and click on the menu item *Manage ssh keys* to go to the Authorized keys page.
+If you want to add more SSH keys, click on the user icon <span class="glyphicon glyphicon-user"></span> in the upper right corner to access the user settings menu, and click on the menu item *Manage ssh keys* to go to the Authorized keys page.
 
 On the *Authorized keys* page, the click on the button <span class="btn btn-primary disabled">Add a new authorized key</span> in the upper right corner.
 
@@ -139,13 +139,13 @@ The page will reload with a new row of information.  Under the *public_key* colu
 
 Paste the public key that you copied to the cliboard in the previous section into the popup text box, then click on the check mark to save it.  This should refresh the page with the public key that you just added now listed under the *public_key* column.  You are now ready to "log into an Arvados VM":#login.
 
-h1(#login). Using ssh to log into an Arvados VM
+h1(#login). Using SSH to log into an Arvados VM
 
 To see a list of virtual machines that you have access to and determine the name and login information, click on Compute %(rarr)→% Virtual machines.  Once on the *Virtual machines* page, The *hostname* columns lists the name of each available VM.  The *logins* column will have a value in the form of @["you"]@.  Your login name is the text inside the quotes.  In this guide the hostname will be _shell_ and the login will be _you_.  Replace these with your hostname and login name as appropriate.
 
 This section consists of two sets of instructions, depending on whether you will be logging in using a "Unix":#unixvm (Linux, OS X, Cygwin) or "Windows":#windowsvm client.
 
-h2(#unixvm). Logging in using command line ssh (Unix)
+h2(#unixvm). Logging in using the @ssh@ command
 
 h3. Connecting to the virtual machine
 
@@ -155,12 +155,12 @@ notextile. <pre><code>$ <span class="userinput">ssh -o "ProxyCommand ssh -a -x -
 
 This command does several things at once. You usually cannot log in directly to virtual machines over the public Internet.  Instead, you log into a "switchyard" server and then tell the switchyard which virtual machine you want to connect to.
 
-* @-o "ProxyCommand ..."@ configures ssh to run the specified command to create a proxy and route your connection through it.
-* @-a@ tells ssh not to forward your ssh-agent credentials to the switchyard.
-* @-x@ tells ssh not to forward your X session to the switchyard.
+* @-o "ProxyCommand ..."@ configures SSH to run the specified command to create a proxy and route your connection through it.
+* @-a@ tells SSH not to forward your ssh-agent credentials to the switchyard.
+* @-x@ tells SSH not to forward your X session to the switchyard.
 * @-p2222@ specifies that the switchyard is running on non-standard port 2222.
 * <code>turnout at switchyard.{{ site.arvados_api_host }}</code> specifies the user (@turnout@) and hostname (@switchyard.{{ site.arvados_api_host }}@) of the switchyard server that will proxy our connection to the VM.
-* *@shell@* is the name of the VM that we want to connect to.  This is sent to the switchyard server as if it were an ssh command, and the switchyard server connects to the VM on our behalf.
+* *@shell@* is the name of the VM that we want to connect to.  This is sent to the switchyard server as if it were an SSH command, and the switchyard server connects to the VM on our behalf.
 * After the ProxyCommand section, we repeat @-x@ to disable X session forwarding to the virtual machine.
 * @-A@ specifies that we want to forward access to @ssh-agent@ to the VM.
 * Finally, *<code>you at shell</code>* specifies your login name and repeats the hostname of the VM.  The username can be found in the *logins* column in the VMs Workbench page, discussed in the previous section.
@@ -169,7 +169,7 @@ You should now be able to log into the Arvados VM and "check your environment.":
 
 h3. Configuration (recommended)
 
-The command line above is cumbersome, but you can configure ssh to remember many of these settings.  Add this text to the file @.ssh/config@ in your home directory (create a new file if @.ssh/config@ doesn't exist):
+The command line above is cumbersome, but you can configure SSH to remember many of these settings.  Add this text to the file @.ssh/config@ in your home directory (create a new file if @.ssh/config@ doesn't exist):
 
 <notextile>
 <pre><code class="userinput">Host *.arvados
diff --git a/doc/user/index.html.textile.liquid b/doc/user/index.html.textile.liquid
index ae06627..09aa798 100644
--- a/doc/user/index.html.textile.liquid
+++ b/doc/user/index.html.textile.liquid
@@ -17,11 +17,11 @@ h2. Prerequisites
 
 To get the most value out of this guide, you should be comfortable with the following:
 
-# Using a secure shell client such as @ssh@ or @putty@ to log on to a remote server
-# Using the Unix command line shell @bash@
-# Viewing and editing files using a unix text editor such as @vi@, @emacs@, or @nano@
-# Programming in @python@
-# Revision control using @git@
+# Using a secure shell client such as SSH or PuTTY to log on to a remote server
+# Using the Unix command line shell, Bash
+# Viewing and editing files using a unix text editor such as vi, Emacs, or nano
+# Programming in Python
+# Revision control using Git
 
 We also recommend you read the "Arvados Platform Overview":https://arvados.org/projects/arvados/wiki#Platform-Overview for an introduction and background information about Arvados.
 
diff --git a/doc/user/reference/api-tokens.html.textile.liquid b/doc/user/reference/api-tokens.html.textile.liquid
index b5015d7..317e7a0 100644
--- a/doc/user/reference/api-tokens.html.textile.liquid
+++ b/doc/user/reference/api-tokens.html.textile.liquid
@@ -8,7 +8,7 @@ The Arvados API token is a secret key that enables the @arv@ command line client
 
 Access the Arvados Workbench using this link: "https://{{ site.arvados_workbench_host }}/":https://{{ site.arvados_workbench_host }}/  (Replace @{{ site.arvados_api_host }}@ with the hostname of your local Arvados instance if necessary.)
 
-Open a shell on the system where you want to use the Arvados client. This may be your local workstation, or "an Arvados virtual machine accessed with ssh":{{site.baseurl}}/user/getting_started/ssh-access.html.
+Open a shell on the system where you want to use the Arvados client. This may be your local workstation, or "an Arvados virtual machine accessed with SSH":{{site.baseurl}}/user/getting_started/ssh-access.html.
 
 Click on the user icon <span class="glyphicon glyphicon-user"></span> in the upper right corner to access the user settings menu.  Click on the menu item *Manage API tokens* to go to the "Api client authorizations" page.
 

commit 56b07eaa6ad92b04d31098913632a397c4aa62d5
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 12:05:49 2014 -0400

    Add missing </span> tag.

diff --git a/doc/install/install-api-server.html.textile.liquid b/doc/install/install-api-server.html.textile.liquid
index e3050dd..13b82a3 100644
--- a/doc/install/install-api-server.html.textile.liquid
+++ b/doc/install/install-api-server.html.textile.liquid
@@ -71,7 +71,7 @@ Make sure a clone of the arvados repository exists in @git_repositories_dir@:
 Generate a new secret token for signing cookies:
 
 <notextile>
-<pre><code>~/arvados/services/api$ <span class="userinput">rake secret
+<pre><code>~/arvados/services/api$ <span class="userinput">rake secret</span>
 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 </code></pre></notextile>
 

commit edc4704eb45c67aaad8428dc493e4e07480b86e3
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 12:04:27 2014 -0400

    Add instructions for Ruby and bundler. Add missing dependencies.

diff --git a/doc/install/install-api-server.html.textile.liquid b/doc/install/install-api-server.html.textile.liquid
index bbfe175..e3050dd 100644
--- a/doc/install/install-api-server.html.textile.liquid
+++ b/doc/install/install-api-server.html.textile.liquid
@@ -8,9 +8,31 @@ h2. Prerequisites:
 
 # A GNU/Linux (virtual) machine
 # A domain name for your api server
-# Ruby >= 2.0.0
-# Bundler: @gem install bundler@
-# Curl libraries: @sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev@
+
+h2. Install dependencies
+
+<notextile>
+<pre><code>~$ <span class="userinput">sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev \
+    libxslt1.1 zlib1g-dev gettext bison libssl-dev libreadline-dev \
+    libpq-dev sqlite3 libsqlite3-dev build-essential wget postgresql
+</span></code></pre></notextile>
+
+h2. Install Ruby and bundler
+
+We recommend Ruby >= 2.1.
+
+<notextile>
+<pre><code><span class="userinput">mkdir -p ~/src
+cd ~/src
+wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz
+tar xzf ruby-2.1.1.tar.gz
+cd ruby-2.1.1
+./configure
+make
+sudo make install
+
+gem install bundler</span>
+</code></pre></notextile>
 
 h2. Download the source tree
 

commit a1a8d260132fc8884c0296fd925b531ef9cc575d
Author: Tom Clegg <tom at curoverse.com>
Date:   Fri Apr 18 11:48:26 2014 -0400

    Fix typo

diff --git a/doc/install/install-api-server.html.textile.liquid b/doc/install/install-api-server.html.textile.liquid
index ccfc58e..bbfe175 100644
--- a/doc/install/install-api-server.html.textile.liquid
+++ b/doc/install/install-api-server.html.textile.liquid
@@ -18,7 +18,7 @@ h2. Download the source tree
 <pre><code>~$ <span class="userinput">git clone https://github.com/curoverse/arvados.git</span>
 </code></pre></notextile>
 
-See also: "Downloading the source code:https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki.
+See also: "Downloading the source code":https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki.
 
 h2. Install gem dependencies
 

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list