X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/831fac7cc24323bd48cdfd645d31153876516e55..fd507a52e72e992a3fd19309de65905341630396:/doc/api/methods/collections.html.textile.liquid?ds=sidebyside diff --git a/doc/api/methods/collections.html.textile.liquid b/doc/api/methods/collections.html.textile.liquid index bea19bb75a..29d28d42a2 100644 --- a/doc/api/methods/collections.html.textile.liquid +++ b/doc/api/methods/collections.html.textile.liquid @@ -19,7 +19,7 @@ Example UUID: @zzzzz-4zz18-0123456789abcde@ h2. Resource -Collections describe sets of files in terms of data blocks stored in Keep. See "Keep - Content-Addressable Storage":{{site.baseurl}}/architecture/storage.html for details. +Collections describe sets of files in terms of data blocks stored in Keep. See "Keep - Content-Addressable Storage":{{site.baseurl}}/architecture/storage.html and "using collection versioning":../../user/topics/collection-versioning.html for details. Each collection has, in addition to the "Common resource fields":{{site.baseurl}}/api/resources.html: @@ -72,8 +72,9 @@ Arguments: table(table table-bordered table-condensed). |_. Argument |_. Type |_. Description |_. Location |_. Example | |collection|object||query|| +|replace_files|object|Initialize files and directories using content from other collections|query|| -The new collection's content can be initialized by providing a @manifest_text@ or @splices@ key in the provided @collection@ object (see "splices":#splices below). +The new collection's content can be initialized by providing a @manifest_text@ key in the provided @collection@ object, or by using the @replace_files@ option (see "replace_files":#replace_files below). h3. delete @@ -87,7 +88,7 @@ table(table table-bordered table-condensed). h3. get -Gets a Collection's metadata by UUID or portable data hash. When making a request by portable data hash, attributes other than @portable_data_hash@ and @manifest_text@ are not returned, even when requested explicitly using the @select@ parameter. +Gets a Collection's metadata by UUID or portable data hash. When making a request by portable data hash, attributes other than @portable_data_hash@, @manifest_text@, and @trash_at@ are not returned, even when requested explicitly using the @select@ parameter. Arguments: @@ -108,6 +109,36 @@ table(table table-bordered table-condensed). Note: Because adding access tokens to manifests can be computationally expensive, the @manifest_text@ field is not included in results by default. If you need it, pass a @select@ parameter that includes @manifest_text@. +h4. Searching Collections for names of file or directories + +You can search collections for specific file or directory names (whole or part) using the following filter in a @list@ query. + +
+filters: [["file_names", "ilike", "%sample1234.fastq%"]]
+
+ +Note: @file_names@ is a hidden field used for indexing. It is not returned by any API call. On the client, you can programmatically enumerate all the files in a collection using @arv-ls@, the Python SDK @Collection@ class, Go SDK @FileSystem@ struct, the WebDAV API, or the S3-compatible API. + +As of this writing (Arvados 2.4), you can also search for directory paths, but _not_ complete file paths. + +In other words, this will work (when @dir3@ is a directory): + +
+filters: [["file_names", "ilike", "%dir1/dir2/dir3%"]]
+
+ +However, this will _not_ return the desired results (where @sample1234.fastq@ is a file): + +
+filters: [["file_names", "ilike", "%dir1/dir2/dir3/sample1234.fastq%"]]
+
+ +As a workaround, you can search for both the directory path and file name separately, and then filter on the client side. + +
+filters: [["file_names", "ilike", "%dir1/dir2/dir3%"], ["file_names", "ilike", "%sample1234.fastq%"]]
+
+ h3. update Update attributes of an existing Collection. @@ -118,8 +149,9 @@ table(table table-bordered table-condensed). |_. Argument |_. Type |_. Description |_. Location |_. Example | {background:#ccffcc}.|uuid|string|The UUID of the Collection in question.|path|| |collection|object||query|| +|replace_files|object|Delete and replace files and directories using content from other collections|query|| -The collection's content can be updated by providing a @manifest_text@ or @splices@ key in the provided @collection@ object (see "splices":#splices below). +The collection's content can be updated by providing a @manifest_text@ key in the provided @collection@ object, or by using the @replace_files@ option (see "replace_files":#replace_files below). h3. untrash @@ -165,11 +197,11 @@ table(table table-bordered table-condensed). |_. Argument |_. Type |_. Description |_. Location |_. Example | {background:#ccffcc}.|uuid|string|The UUID of the Collection to get usage.|path|| -h2(#splices). Using "splices" to create/update collections +h2(#replace_files). Using "replace_files" to create/update collections -The @splices@ attribute can be used with the @create@ and @update@ APIs to efficiently copy individual files and directory trees from other collections, and copy/rename/delete items within an existing collection, without transferring any file data. +The @replace_files@ option can be used with the @create@ and @update@ APIs to efficiently copy individual files and directory trees from other collections, and copy/rename/delete items within an existing collection, without transferring any file data. -@splices@ keys indicate target paths in the new collection, and values specify sources that should be copied to the target paths. +@replace_files@ keys indicate target paths in the new collection, and values specify sources that should be copied to the target paths. * Each target path must be an absolute canonical path beginning with @/@. It must not contain @.@ or @..@ components, consecutive @/@ characters, or a trailing @/@ after the final component. * Each source must be either an empty string (signifying that the target path is to be deleted), or @PDH/path@ where @PDH@ is the portable data hash of a collection on the cluster and @/path@ is a file or directory in that collection. * In an @update@ request, sources may reference the current portable data hash of the collection being updated. @@ -177,53 +209,43 @@ The @splices@ attribute can be used with the @create@ and @update@ APIs to effic Example: delete @foo.txt@ from a collection
-"collection": {
-  "splices": {
-    "/foo.txt": ""
-  }
+"replace_files": {
+  "/foo.txt": ""
 }
 
Example: rename @foo.txt@ to @bar.txt@ in a collection with portable data hash @fa7aeb5140e2848d39b416daeef4ffc5+45@
-"collection": {
-  "splices": {
-    "/foo.txt": "",
-    "/bar.txt": "fa7aeb5140e2848d39b416daeef4ffc5+45/foo.txt"
-  }
+"replace_files": {
+  "/foo.txt": "",
+  "/bar.txt": "fa7aeb5140e2848d39b416daeef4ffc5+45/foo.txt"
 }
 
Example: delete current contents, then add content from multiple collections
-"collection": {
-  "splices": {
-    "/": "",
-    "/copy of collection 1": "1f4b0bc7583c2a7f9102c395f4ffc5e3+45/",
-    "/copy of collection 2": "ea10d51bcf88862dbcc36eb292017dfd+45/"
-  }
+"replace_files": {
+  "/": "",
+  "/copy of collection 1": "1f4b0bc7583c2a7f9102c395f4ffc5e3+45/",
+  "/copy of collection 2": "ea10d51bcf88862dbcc36eb292017dfd+45/"
 }
 
Example: replace entire collection with a copy of a subdirectory from another collection
-"collection": {
-  "splices": {
-    "/": "1f4b0bc7583c2a7f9102c395f4ffc5e3+45/subdir"
-  }
+"replace_files": {
+  "/": "1f4b0bc7583c2a7f9102c395f4ffc5e3+45/subdir"
 }
 
A target path with a non-empty source cannot be the ancestor of another target path in the same request. For example, the following request is invalid:
-"collection": {
-  "splices": {
-    "/foo": "fa7aeb5140e2848d39b416daeef4ffc5+45/",
-    "/foo/this_will_return_an_error": ""
-  }
+"replace_files": {
+  "/foo": "fa7aeb5140e2848d39b416daeef4ffc5+45/",
+  "/foo/this_will_return_an_error": ""
 }