Merge branch '13973-child-priority' refs #13973
[arvados.git] / doc / api / methods / groups.html.textile.liquid
1 ---
2 layout: default
3 navsection: api
4 navmenu: API Methods
5 title: "groups"
6 ...
7 {% comment %}
8 Copyright (C) The Arvados Authors. All rights reserved.
9
10 SPDX-License-Identifier: CC-BY-SA-3.0
11 {% endcomment %}
12
13 API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/groups@
14
15 Object type: @j7d0g@
16
17 Example UUID: @zzzzz-j7d0g-0123456789abcde@
18
19 h2. Resource
20
21 Groups provides a way to apply the same permissions to a set of Arvados objects.  See "permission model":{{site.baseurl}}/api/permission-model.html for details.
22
23 Each Group has, in addition to the "Common resource fields":{{site.baseurl}}/api/resources.html:
24
25 table(table table-bordered table-condensed).
26 |_. Attribute|_. Type|_. Description|_. Example|
27 |name|string|||
28 |group_class|string|Type of group. This does not affect behavior, but determines how the group is presented in the user interface. For example, @project@ indicates that the group should be displayed by Workbench and arv-mount as a project for organizing and naming objects.|@"project"@
29 null|
30 |description|text|||
31 |properties|hash|User-defined metadata, may be used in queries using "subproperty filters":{{site.baseurl}}/api/methods.html#subpropertyfilters ||
32 |writable_by|array|List of UUID strings identifying Users and other Groups that have write permission for this Group.  Only users who are allowed to administer the Group will receive a full list.  Other users will receive a partial list that includes the Group's owner_uuid and (if applicable) their own user UUID.||
33 |trash_at|datetime|If @trash_at@ is non-null and in the past, this group and all objects directly or indirectly owned by the group will be hidden from API calls.  May be untrashed.||
34 |delete_at|datetime|If @delete_at@ is non-null and in the past, the group and all objects directly or indirectly owned by the group may be permanently deleted.||
35 |is_trashed|datetime|True if @trash_at@ is in the past, false if not.||
36
37 h2. Methods
38
39 See "Common resource methods":{{site.baseurl}}/api/methods.html for more information about @create@, @delete@, @get@, @list@, and @update@.
40
41 Required arguments are displayed in %{background:#ccffcc}green%.
42
43 h3. contents
44
45 Retrieve a list of items owned by the group.
46
47 Arguments:
48
49 table(table table-bordered table-condensed).
50 |_. Argument |_. Type |_. Description |_. Location |_. Example |
51 {background:#ccffcc}.|uuid|string|The UUID of the group in question.|path||
52 |limit|integer (default 100)|Maximum number of items to return.|query||
53 |order|array|Attributes to use as sort keys to determine the order resources are returned, each optionally followed by @asc@ or @desc@ to indicate ascending or descending order. Sort within a resource type by prefixing the attribute with the resource name and a period.|query|@["collections.modified_at desc"]@|
54 |filters|array|Conditions for filtering items.|query|@[["uuid", "is_a", "arvados#job"]]@|
55 |recursive|boolean (default false)|Include items owned by subprojects.|query|@true@|
56
57 Note: Because adding access tokens to manifests can be computationally expensive, the @manifest_text@ field is not included in listed collections.  If you need it, request a "list of collections":{{site.baseurl}}/api/methods/collections.html with the filter @["owner_uuid", "=", GROUP_UUID]@, and @"manifest_text"@ listed in the select parameter.
58
59 Note: Use filters with the attribute format @<item type>.<field name>@ to filter items of a specific type. For example: @["pipeline_instances.state", "=", "Complete"]@ to filter @pipeline_instances@ where @state@ is @Complete@. All other types of items owned by this group will be unimpacted by this filter and will still be included.
60
61 h3. create
62
63 Create a new Group.
64
65 Arguments:
66
67 table(table table-bordered table-condensed).
68 |_. Argument |_. Type |_. Description |_. Location |_. Example |
69 |group|object||query||
70
71 h3. delete
72
73 Put a Group in the trash.  This sets the @trash_at@ field to @now@ and @delete_at@ field to @now@ + token TTL.  A trashed group is invisible to most API calls unless the @include_trash@ parameter is true.  All objects directly or indirectly owned by the Group are considered trashed as well.
74
75 Arguments:
76
77 table(table table-bordered table-condensed).
78 |_. Argument |_. Type |_. Description |_. Location |_. Example |
79 {background:#ccffcc}.|uuid|string|The UUID of the Group in question.|path||
80
81 h3. get
82
83 Gets a Group's metadata by UUID.
84
85 Arguments:
86
87 table(table table-bordered table-condensed).
88 |_. Argument |_. Type |_. Description |_. Location |_. Example |
89 {background:#ccffcc}.|uuid|string|The UUID of the Group in question.|path||
90
91 h3. list
92
93 List groups.
94
95 See "common resource list method.":{{site.baseurl}}/api/methods.html#index
96
97 h3. show
98
99 show groups
100
101 Arguments:
102
103 table(table table-bordered table-condensed).
104 |_. Argument |_. Type |_. Description |_. Location |_. Example |
105 {background:#ccffcc}.|uuid|string||path||
106
107 h3. update
108
109 Update attributes of an existing Group.
110
111 Arguments:
112
113 table(table table-bordered table-condensed).
114 |_. Argument |_. Type |_. Description |_. Location |_. Example |
115 {background:#ccffcc}.|uuid|string|The UUID of the Group in question.|path||
116 |group|object||query||
117
118 h3. untrash
119
120 Remove a Group from the trash.  This sets the @trash_at@ and @delete_at@ fields to @null@.
121
122 Arguments:
123
124 table(table table-bordered table-condensed).
125 |_. Argument |_. Type |_. Description |_. Location |_. Example |
126 {background:#ccffcc}.|uuid|string|The UUID of the Group to untrash.|path||
127 |ensure_unique_name|boolean (default false)|Rename project uniquely if untrashing it would fail with a unique name conflict.|query||
128
129 h3. shared
130
131 This endpoint returns the toplevel set of groups to which access is granted through a chain of one or more permission links rather than through direct ownership by the current user account.  This is useful for clients which wish to browse the list of projects the user has permission to read which are not part of the "home" project tree.
132
133 When called with "include=owner_uuid" this also returns (in the "included" field) the objects that own those projects (users or non-project groups).
134
135 Specifically, the logic is:
136
137 <pre>
138 select groups that are readable by current user AND
139     (the owner_uuid is a user (but not the current user) OR
140      the owner_uuid is not readable by the current user OR
141      the owner_uuid is a group but group_class is not a project)
142 </pre>
143
144 In addition to the "include" parameter this endpoint also supports the same parameters as the "list method.":{{site.baseurl}}/api/methods.html#index
145
146 table(table table-bordered table-condensed).
147 |_. Argument |_. Type |_. Description |_. Location |_. Example |
148 |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|