13146: Don't return "included" field unless non-nil
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 16 Aug 2018 19:36:30 +0000 (15:36 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 16 Aug 2018 19:57:07 +0000 (15:57 -0400)
Update documention/comments.

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

doc/api/methods/groups.html.textile.liquid
services/api/app/controllers/application_controller.rb
services/api/app/controllers/arvados/v1/groups_controller.rb

index e87bc51ad4a590b4102fd4f1047c9b878de466a2..cec80631826befa7f44acba58a1c2b00881ca131 100644 (file)
@@ -125,3 +125,26 @@ table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |_. Example |
 {background:#ccffcc}.|uuid|string|The UUID of the Group to untrash.|path||
 |ensure_unique_name|boolean (default false)|Rename project uniquely if untrashing it would fail with a unique name conflict.|query||
+
+h3. shared
+
+This endpoint returns the toplevel set of groups which are *not* reachable through a direct ownership chain of projects starting from the current user account.  In other words, groups which to which access was granted via a permission link or chain of links.
+
+This also returns (in the "included" field) the objects that own those projects (users or non-project groups).
+
+The logic is:
+
+<pre>
+select groups that are readable by current user AND
+    the owner_uuid is a user (but not the current user) OR
+    the owner_uuid is not readable by the current user OR
+    the owner_uuid is a group but group_class is not a project
+</pre>
+
+The intended use of this endpoint is to support clients which wish to browse the list of projects the user has permission to read which are not part of the "home" project (projects directly owned by the user).
+
+This endpoint supports the same parameters as the "list method.":{{site.baseurl}}/api/methods.html#index  It also supports the "include" parameter:
+
+table(table table-bordered table-condensed).
+|_. Argument |_. Type |_. Description |_. Location |_. Example |
+|include|string|If provided with the value "owner_uuid", this will return owner objects in the "included" field of the response.|query|?include=owner_uuid|
index a9134ad59c894ad3194ab0fed64997548dc602bc..81e4b961e441ab3a7b032ef217c8c65b32eb725e 100644 (file)
@@ -491,9 +491,11 @@ class ApplicationController < ActionController::Base
       :self_link => "",
       :offset => @offset,
       :limit => @limit,
-      :items => @objects.as_api_response(nil, {select: @select}),
-      :included => @extra_included.as_api_response(nil, {select: @select}),
+      :items => @objects.as_api_response(nil, {select: @select})
     }
+    if @extra_included
+      list[:included] = @extra_included.as_api_response(nil, {select: @select})
+    end
     case params[:count]
     when nil, '', 'exact'
       if @objects.respond_to? :except
index f458d9fb962394c8f0db23eff930a179a703aca8..e8ce4aae65b9c41dbae1385229ee77a5651acdd7 100644 (file)
@@ -73,7 +73,7 @@ class Arvados::V1::GroupsController < ApplicationController
     # other words, groups which to which access was granted via a
     # permission link or chain of links.
     #
-    # This also returns (in the "includes" field) the objects that own
+    # This also returns (in the "included" field) the objects that own
     # those projects (users or non-project groups).
     #
     # select groups that are readable by current user AND