aspera-cli 4.20.0 → 4.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +29 -3
  4. data/CONTRIBUTING.md +2 -0
  5. data/README.md +571 -375
  6. data/bin/asession +2 -2
  7. data/examples/get_proto_file.rb +1 -1
  8. data/lib/aspera/agent/alpha.rb +10 -16
  9. data/lib/aspera/agent/connect.rb +20 -2
  10. data/lib/aspera/agent/direct.rb +21 -30
  11. data/lib/aspera/agent/node.rb +1 -11
  12. data/lib/aspera/agent/{trsdk.rb → transferd.rb} +13 -34
  13. data/lib/aspera/api/aoc.rb +13 -8
  14. data/lib/aspera/api/node.rb +45 -28
  15. data/lib/aspera/ascp/installation.rb +87 -48
  16. data/lib/aspera/ascp/management.rb +27 -6
  17. data/lib/aspera/cli/formatter.rb +148 -154
  18. data/lib/aspera/cli/info.rb +1 -1
  19. data/lib/aspera/cli/main.rb +12 -0
  20. data/lib/aspera/cli/manager.rb +2 -2
  21. data/lib/aspera/cli/plugin.rb +2 -2
  22. data/lib/aspera/cli/plugins/aoc.rb +28 -18
  23. data/lib/aspera/cli/plugins/config.rb +106 -54
  24. data/lib/aspera/cli/plugins/cos.rb +1 -0
  25. data/lib/aspera/cli/plugins/faspex.rb +4 -2
  26. data/lib/aspera/cli/plugins/faspex5.rb +21 -9
  27. data/lib/aspera/cli/plugins/node.rb +45 -38
  28. data/lib/aspera/cli/transfer_progress.rb +2 -0
  29. data/lib/aspera/cli/version.rb +1 -1
  30. data/lib/aspera/command_line_builder.rb +1 -1
  31. data/lib/aspera/environment.rb +48 -14
  32. data/lib/aspera/node_simulator.rb +230 -112
  33. data/lib/aspera/oauth/base.rb +34 -47
  34. data/lib/aspera/oauth/factory.rb +41 -2
  35. data/lib/aspera/oauth/jwt.rb +4 -1
  36. data/lib/aspera/persistency_action_once.rb +1 -1
  37. data/lib/aspera/persistency_folder.rb +20 -2
  38. data/lib/aspera/preview/generator.rb +1 -1
  39. data/lib/aspera/preview/utils.rb +8 -3
  40. data/lib/aspera/products/alpha.rb +30 -0
  41. data/lib/aspera/products/connect.rb +48 -0
  42. data/lib/aspera/products/other.rb +82 -0
  43. data/lib/aspera/products/transferd.rb +54 -0
  44. data/lib/aspera/rest.rb +18 -13
  45. data/lib/aspera/secret_hider.rb +2 -2
  46. data/lib/aspera/ssh.rb +31 -24
  47. data/lib/aspera/transfer/parameters.rb +2 -1
  48. data/lib/aspera/transfer/spec.yaml +22 -20
  49. data/lib/aspera/transfer/sync.rb +1 -5
  50. data/lib/aspera/transfer/uri.rb +2 -2
  51. data/lib/transferd_pb.rb +86 -0
  52. data/lib/transferd_services_pb.rb +84 -0
  53. data.tar.gz.sig +0 -0
  54. metadata +38 -21
  55. metadata.gz.sig +0 -0
  56. data/lib/aspera/ascp/products.rb +0 -168
  57. data/lib/transfer_pb.rb +0 -84
  58. data/lib/transfer_services_pb.rb +0 -82
data/README.md CHANGED
@@ -5,7 +5,7 @@ Do not edit this README.md, edit docs/README.erb.md, for details, read docs/READ
5
5
  markdownlint-disable MD033 MD003 MD053
6
6
  cspell:ignore Serban Antipolis
7
7
  PANDOC_META_BEGIN
8
- subtitle: "ascli 4.20.0"
8
+ subtitle: "ascli 4.21.1"
9
9
  PANDOC_META_END
10
10
  -->
11
11
 
@@ -15,7 +15,7 @@ PANDOC_META_END
15
15
 
16
16
  ## Introduction
17
17
 
18
- Version : 4.20.0
18
+ Version : 4.21.1
19
19
 
20
20
  Laurent/2016-2025
21
21
 
@@ -27,9 +27,9 @@ Ruby Gem: [https://rubygems.org/gems/aspera-cli](https://rubygems.org/gems/asper
27
27
 
28
28
  Ruby Doc: [https://www.rubydoc.info/gems/aspera-cli](https://www.rubydoc.info/gems/aspera-cli)
29
29
 
30
- Minimum required Ruby version: >= 2.6.
30
+ Minimum required Ruby version: >= 3.1.
31
31
 
32
- > **Deprecation notice**: the minimum Ruby version will be 3.0 in a future version.
32
+ > **Deprecation notice**: the minimum Ruby version will be 3.2 in a future version.
33
33
 
34
34
  [Aspera APIs on IBM developer](https://developer.ibm.com/?size=30&q=aspera&DWContentType[0]=APIs&sort=title_asc)
35
35
  [Link 2](https://developer.ibm.com/apis/catalog/?search=aspera)
@@ -112,7 +112,7 @@ Once the gem is installed, `ascli` shall be accessible:
112
112
 
113
113
  ```console
114
114
  $ ascli --version
115
- 4.20.0
115
+ 4.21.1
116
116
  ```
117
117
 
118
118
  ### First use
@@ -211,26 +211,31 @@ The direct installation is recommended and consists in installing:
211
211
  - [aspera-cli](#ruby-gem-aspera-cli) <!-- markdownlint-disable-line -->
212
212
  - [Aspera SDK (`ascp`)](#fasp-protocol-ascp)
213
213
 
214
- Ruby version: >= 2.6.
214
+ Ruby version: >= 3.1.
215
215
 
216
- > **Deprecation notice**: the minimum Ruby version will be 3.0 in a future version.
216
+ > **Deprecation notice**: the minimum Ruby version will be 3.2 in a future version.
217
217
 
218
218
  The following sections provide information on the various installation methods.
219
219
 
220
220
  An internet connection is required for the installation.
221
221
  If you don't have internet for the installation, refer to section [Installation without internet access](#installation-in-air-gapped-environment).
222
222
 
223
- A package with pre-installed Ruby, gem and ascp may also be provided.
223
+ A package with pre-installed Ruby, gem and `ascp` may also be provided.
224
224
 
225
- ### Ruby
225
+ ### `ascli` executable
226
+
227
+ **Note:** This is an Alpha feature. The binary depends on certain GLIBC version for Linux.
226
228
 
227
- Use this method to install on the native host (e.g. your Windows, macOS or Linux system).
229
+ It is planned to provide `ascli` as a single platform-dependent executable.
230
+ [Alpha releases can be found here](https://ibm.biz/aspera-cli-exe).
231
+
232
+ ### Ruby
228
233
 
229
234
  A Ruby interpreter is required to run `ascli`.
230
235
 
231
- Required Ruby version: >= 2.6.
236
+ Required Ruby version: >= 3.1.
232
237
 
233
- > **Deprecation notice**: the minimum Ruby version will be 3.0 in a future version.
238
+ > **Deprecation notice**: the minimum Ruby version will be 3.2 in a future version.
234
239
 
235
240
  **Ruby can be installed using any method** : rpm, yum, dnf, rvm, brew, Windows installer, ... .
236
241
 
@@ -241,64 +246,8 @@ Required Ruby version: >= 2.6.
241
246
 
242
247
  For convenience, you may refer to the following sections for a proposed method for specific operating systems.
243
248
 
244
- #### Unix-like: RVM: Single user installation (not root)
245
-
246
- Install `rvm`.
247
- Follow [https://rvm.io/](https://rvm.io/).
248
-
249
- Execute the shell/curl command.
250
- As regular user, it installs in the user's home: `~/.rvm` .
251
-
252
- ```bash
253
- \curl -sSL https://get.rvm.io | bash -s stable
254
- ```
255
-
256
- Follow on-screen instructions to install keys, and then re-execute the command.
257
-
258
- Upon RVM installation, open a new terminal or initialize with:
259
-
260
- ```bash
261
- source ~/.rvm/scripts/rvm
262
- ```
263
-
264
- It is advised to get one of the pre-compiled Ruby version, you can list with:
265
-
266
- ```bash
267
- rvm list --remote
268
- ```
269
-
270
- Install the chosen pre-compiled Ruby version:
271
-
272
- ```bash
273
- rvm install 3.2.2
274
- ```
275
-
276
- Ruby is now installed for the user, go to [Gem installation](#ruby-gem-aspera-cli). <!-- markdownlint-disable-line -->
277
-
278
- Alternatively RVM can be installed system-wide, for this execute as `root`.
279
- It then installs by default in `/usr/local/rvm` for all users and creates `/etc/profile.d/rvm.sh`.
280
- One can install in another location with:
281
-
282
- ```bash
283
- curl -sSL https://get.rvm.io | bash -s -- --path /usr/local
284
- ```
285
-
286
- As root, make sure this will not collide with other application using Ruby (e.g. Faspex).
287
- If so, one can rename the environment script so that it is not loaded by default:
288
-
289
- ```bash
290
- mv /etc/profile.d/rvm.sh /etc/profile.d/rvm.sh.ok
291
- ```
292
-
293
- To activate Ruby (and ascli) later, source it:
294
-
295
- ```bash
296
- source /etc/profile.d/rvm.sh.ok
297
- ```
298
-
299
- ```bash
300
- rvm version
301
- ```
249
+ Latest version of `ascli` requires a ruby version [at least under maintenance support](https://www.ruby-lang.org/en/downloads/branches/).
250
+ If an older Ruby version is needed, then use an older version of `ascli` that supports it.
302
251
 
303
252
  #### Windows: Installer
304
253
 
@@ -322,15 +271,24 @@ rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\asper
322
271
 
323
272
  #### macOS: `brew`
324
273
 
325
- **macOS** come with Ruby.
326
- Nevertheless, [Apple has deprecated it](https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes), and it will be removed in the future, so better not to rely on it.
274
+ **macOS** comes with Ruby 2.6.
275
+ It is an old unsupported version and [Apple has deprecated it](https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes), and it will be removed in the future.
276
+ Do not use it.
327
277
 
328
- The recommended way is to either user `RVM` or use [Homebrew](https://brew.sh/).
278
+ The recommended way is to either use [Homebrew](https://brew.sh/) or [RVM](https://rvm.io/).
329
279
 
330
280
  ```bash
331
281
  brew install ruby
332
282
  ```
333
283
 
284
+ This installs a recent ruby suitable for `ascli`.
285
+
286
+ If using `rvm`, one way to force use of openssl 3.0 is:
287
+
288
+ ```bash
289
+ RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3.0)" rvm install 3.4.0
290
+ ```
291
+
334
292
  #### Linux: Package
335
293
 
336
294
  If your Linux distribution provides a standard Ruby package, you can use it provided that the version supported.
@@ -384,7 +342,66 @@ One can remove all installed gems, for example to start fresh:
384
342
  gem uninstall -axI $(ls $(gem env gemdir)/gems/|sed -e 's/-[^-]*$//'|sort -u)
385
343
  ```
386
344
 
387
- #### Linux as simple user
345
+ #### Unix-like: RVM: Single user installation (not root)
346
+
347
+ Install `rvm`.
348
+ Follow [https://rvm.io/](https://rvm.io/).
349
+
350
+ Execute the shell/curl command.
351
+ As regular user, it installs in the user's home: `~/.rvm` .
352
+
353
+ ```bash
354
+ \curl -sSL https://get.rvm.io | bash -s stable
355
+ ```
356
+
357
+ Follow on-screen instructions to install keys, and then re-execute the command.
358
+
359
+ Upon RVM installation, open a new terminal or initialize with:
360
+
361
+ ```bash
362
+ source ~/.rvm/scripts/rvm
363
+ ```
364
+
365
+ It is advised to get one of the pre-compiled Ruby version, you can list with:
366
+
367
+ ```bash
368
+ rvm list --remote
369
+ ```
370
+
371
+ Install the chosen pre-compiled Ruby version:
372
+
373
+ ```bash
374
+ rvm install 3.2.2
375
+ ```
376
+
377
+ Ruby is now installed for the user, go to [Gem installation](#ruby-gem-aspera-cli). <!-- markdownlint-disable-line -->
378
+
379
+ Alternatively RVM can be installed system-wide, for this execute as `root`.
380
+ It then installs by default in `/usr/local/rvm` for all users and creates `/etc/profile.d/rvm.sh`.
381
+ One can install in another location with:
382
+
383
+ ```bash
384
+ curl -sSL https://get.rvm.io | bash -s -- --path /usr/local
385
+ ```
386
+
387
+ As root, make sure this will not collide with other application using Ruby (e.g. Faspex).
388
+ If so, one can rename the environment script so that it is not loaded by default:
389
+
390
+ ```bash
391
+ mv /etc/profile.d/rvm.sh /etc/profile.d/rvm.sh.ok
392
+ ```
393
+
394
+ To activate Ruby (and ascli) later, source it:
395
+
396
+ ```bash
397
+ source /etc/profile.d/rvm.sh.ok
398
+ ```
399
+
400
+ ```bash
401
+ rvm version
402
+ ```
403
+
404
+ #### Linux as non-root
388
405
 
389
406
  If you don't have root access, you can install Ruby in your home directory using `rbenv` see [rbenv-installer](https://github.com/rbenv/rbenv-installer#rbenv-installer):
390
407
 
@@ -392,7 +409,7 @@ If you don't have root access, you can install Ruby in your home directory using
392
409
  curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
393
410
  ```
394
411
 
395
- Then open a new terminal, or "source" the shell initialization script:
412
+ Then open a new terminal, or `source` the shell initialization script:
396
413
 
397
414
  ```bash
398
415
  source ~/.bashrc
@@ -411,8 +428,7 @@ For example for AIX, one can look at:
411
428
 
412
429
  <https://www.ibm.com/support/pages/aix-toolbox-open-source-software-downloads-alpha#R>
413
430
 
414
- If your Unix does not provide a pre-built Ruby, you can get it using one of those
415
- [methods](https://www.ruby-lang.org/en/documentation/installation/).
431
+ If your Unix does not provide a pre-built Ruby, you can get it using one of those [methods](https://www.ruby-lang.org/en/documentation/installation/).
416
432
 
417
433
  For instance to build from source and install in `/opt/ruby` :
418
434
 
@@ -465,16 +481,24 @@ JRUBY_OPTS=--dev ascli -v
465
481
 
466
482
  #### Optional gems
467
483
 
468
- Some additional gems can be installed to provide additional features:
484
+ Some additional gems are required for some specific features, see [Gemfile.optional](Gemfile.optional):
469
485
 
470
- - `rmagick` : to generate thumbnails of images
471
- - `grpc` : to use the transfer SDK (gRPC)
472
- - `mimemagic` : to detect MIME type of files for `preview` command
486
+ | name | version | comment |
487
+ | ---- | ------- | ------- |
488
+ | grpc | ~> 1.65 | for transferSDK |
489
+ | mimemagic | ~> 0.4 | for preview |
490
+ | rmagick | ~> 5.5 | for terminal view |
491
+ | symmetric-encryption | ~> 4.6 | for file vault |
492
+ | bigdecimal | ~> 3.1.9 | if RUBY_VERSION >= '3.4' for symmetric-encryption ? |
473
493
 
474
494
  Install like this:
475
495
 
476
496
  ```bash
477
- gem install rmagick grpc mimemagic
497
+ gem install grpc -v '~> 1.65'
498
+ gem install mimemagic -v '~> 0.4'
499
+ gem install rmagick -v '~> 5.5'
500
+ gem install symmetric-encryption -v '~> 4.6'
501
+ gem install bigdecimal -v '~> 3.1.9'
478
502
  ```
479
503
 
480
504
  > **Note:** Those are not installed as part of dependencies because they involve compilation of native code.
@@ -529,36 +553,59 @@ Only two additional files are required to perform an Aspera Transfer, which are
529
553
  - `ascp`
530
554
  - `aspera-license` (in same folder, or ../etc)
531
555
 
532
- This can be installed either be installing an Aspera transfer software, or using an embedded command:
556
+ This can be installed either be installing an Aspera transfer software or using an `ascli` command.
557
+
558
+ #### Installation of `ascp` through `transferd`
559
+
560
+ The easiest option to install `ascp` is through the use of the IBM Aspera Transfer Daemon.
561
+
562
+ Supported platforms are listed in the [Release Notes](https://developer.ibm.com/apis/catalog/aspera--aspera-transfer-sdk/Release+notes) and archives can be downloaded from [Downloads](https://developer.ibm.com/apis/catalog/aspera--aspera-transfer-sdk/downloads/downloads.json).
563
+
564
+ Install with:
533
565
 
534
566
  ```bash
535
567
  ascli config ascp install
536
568
  ```
537
569
 
570
+ or
571
+
572
+ ```bash
573
+ ascli config transferd install
574
+ ```
575
+
538
576
  This command will retrieve the list of current archives for all platforms from: <https://ibm.biz/sdk_location> and then select the latest version for the current platform.
539
577
  In this case, the default value for option `sdk_url` is `DEF`.
540
578
 
541
- If a local SDK installation is preferred instead of fetching from internet: one can specify the location of the SDK file:
579
+ Available Transfer Daemon versions can be listed with: `ascli config transferd list`
542
580
 
543
- 1. Locate the appropriate SDK archive for your platform, by visiting either:
581
+ To install a specific version, e.g. 1.1.3:
544
582
 
545
- - [IBM API Hub](https://developer.ibm.com/apis/catalog?search=%22aspera%20transfer%20SDK%22)
546
- - or looking at this file: <https://ibm.biz/sdk_location>
583
+ ```bash
584
+ ascli config ascp install 1.1.3
585
+ ```
547
586
 
548
- 2. Download the SDK archive using a browser, or `curl` or `wget`, etc...
587
+ To get the download URL for a specific platform and version:
549
588
 
550
- ```bash
551
- curl -Lso sdk.zip https://...
552
- ```
589
+ ```bash
590
+ ascli config transferd list --select=@json:'{"platform":"osx-arm64","version":"1.1.3"}' --fields=url
591
+ ```
553
592
 
554
- 3. Install using the local archive
593
+ To download it, pipe to `config download`:
555
594
 
556
- ```bash
557
- ascli config ascp install --sdk-url=file:///sdk.zip
558
- ```
595
+ ```bash
596
+ ascli config transferd list --select=@json:'{"platform":"osx-arm64","version":"1.1.3"}' --fields=url | ascli config download @stdin:
597
+ ```
598
+
599
+ If installation from a local file preferred instead of fetching from internet: one can specify the location of the SDK file with option `sdk_url`:
600
+
601
+ ```bash
602
+ ascli config ascp install --sdk-url=file:///macos-arm64-1.1.3-c6c7a2a.zip
603
+ ```
559
604
 
560
605
  The format is: `file:///<path>`, where `<path>` can be either a relative path (not starting with `/`), or an absolute path.
561
606
 
607
+ #### Installation of `ascp` through other component
608
+
562
609
  If the embedded method is not used, the following packages are also suitable:
563
610
 
564
611
  - IBM Aspera Connect Client (Free)
@@ -738,7 +785,7 @@ ascli -v
738
785
  ```
739
786
 
740
787
  ```text
741
- 4.20.0
788
+ 4.21.1
742
789
  ```
743
790
 
744
791
  In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
@@ -1501,16 +1548,33 @@ To redirect results to a file, use option `output`.
1501
1548
 
1502
1549
  Depending on action, the output will contain:
1503
1550
 
1504
- - `single_object` : displayed as a 2 dimensional table: one line per attribute, first column is attribute name, and second is attribute value. Nested hashes are collapsed.
1505
- - `object_list` : displayed as a 2 dimensional table: one line per item, one column per attribute.
1506
- - `value_list` : a table with one column.
1507
- - `empty` : nothing
1508
- - `status` : a message
1509
- - `other_struct` : a complex structure that cannot be displayed as an array
1551
+ | Result Type | Description |
1552
+ |-----------------|-------------------|
1553
+ | `single_object` | displayed as a 2 dimensional table: one line per field, first column is field name, and second is field value. Nested hashes are collapsed. |
1554
+ | `object_list` | displayed as a 2 dimensional table: one line per item, one column per field. |
1555
+ | `value_list` | a table with one column. |
1556
+ | `empty` | nothing |
1557
+ | `status` | a message |
1558
+ | `other_struct` | a complex structure that cannot be displayed as an array |
1559
+
1560
+ #### Option: `format`
1561
+
1562
+ The style of output can be set using the `format` option:
1510
1563
 
1511
- #### Format of output
1564
+ | `format` | Output formatting |
1565
+ |----------|-------------------|
1566
+ | `table` | Text table (default) |
1567
+ | `text` | Value as `String` |
1568
+ | `ruby` | Ruby code |
1569
+ | `json` | JSON code |
1570
+ | `jsonpp` | JSON pretty printed |
1571
+ | `yaml` | YAML |
1572
+ | `csv` | Comma Separated Values |
1573
+ | `image` | Image URL or Image data |
1512
1574
 
1513
- By default, result of type single_object and object_list are displayed using format `table`.
1575
+ By default, result of type `single_object` and `object_list` are displayed using format `table`.
1576
+
1577
+ #### Option: `table_style`
1514
1578
 
1515
1579
  The table style can be customized with option: `table_style` which expects a `Hash`, options are the ones described in gem [`terminal-table`](https://github.com/tj/terminal-table).
1516
1580
 
@@ -1522,28 +1586,64 @@ ascli config preset over --table-style=@ruby:'{border: :unicode_thick_edge}'
1522
1586
 
1523
1587
  > **Note:** Other border styles exist, not limited to: `:unicode`, `:unicode_round`.
1524
1588
 
1525
- In a table format, when displaying **Objects** (single, or list), by default, sub object are flattened (option `flat_hash`).
1526
- For example, object `{"user":{"id":1,"name":"toto"}}` will have attributes: `user.id` and `user.name`.
1527
- Setting option `flat_hash` to `false` will only display one field: `user` and value is the sub `Hash`.
1528
- When in flatten mode, it is possible to filter fields using the option `fields` using the compound field name using `.` (dot) as separator.
1589
+ #### Option: `flat_hash`: `.`-join keys
1590
+
1591
+ This optin controls how object fields are displayed for complex objects.
1592
+
1593
+ Effective only when `format` is `table` to display `single_object` or `object_list`.
1594
+
1595
+ If value is `no`, then object's `field` names are only the first level keys of the `Hash` result and values that are `Hash` are displayed as such in Ruby syntax.
1529
1596
 
1530
- Object lists are displayed one per line, with attributes as columns.
1531
- Single objects (or tables with a single result) are transposed: one attribute per line.
1532
- If transposition of single object is not desired, use option: `transpose_single` set to `no`.
1533
- If option `multi_table` is `yes`, then elements of a table are displayed individually in a table.
1597
+ If value is `yes` (default), then object are flattened, i.e. deep `Hash` are transformed into 1-level Hash, where keys are `.`-junction of deep keys.
1598
+ In this case, it is possible to filter fields using the option `fields` using the compound field name using `.` (dot) as separator.
1534
1599
 
1535
- The style of output can be set using the `format` option, supporting:
1600
+ Example: Result of command is a list of objects with a single object:
1536
1601
 
1537
- - `table` : Text table (default)
1538
- - `text` : Value as String
1539
- - `ruby` : Ruby code
1540
- - `json` : JSON code
1541
- - `jsonpp` : JSON pretty printed
1542
- - `yaml` : YAML
1543
- - `csv` : Comma Separated Values
1544
- - `image` : Image URL or Image data
1602
+ ```console
1603
+ $ ascli config echo @json:'[{"user":{"id":1,"name":"toto"},"project":"blah"}]'
1604
+ ╭─────────┬───────────┬─────────╮
1605
+ user.id user.name │ project │
1606
+ ╞═════════╪═══════════╪═════════╡
1607
+ 1 │ toto │ blah │
1608
+ ╰─────────┴───────────┴─────────╯
1609
+
1610
+ $ ascli config echo @json:'[{"user":{"id":1,"name":"toto"},"project":"blah"}]' --flat-hash=no
1611
+ ╭───────────────────────────┬─────────╮
1612
+ │ user │ project │
1613
+ ╞═══════════════════════════╪═════════╡
1614
+ │ {"id"=>1, "name"=>"toto"} │ blah │
1615
+ ╰───────────────────────────┴─────────╯
1616
+ ```
1545
1617
 
1546
- #### Verbosity of output
1618
+ #### Option: `multi_single`
1619
+
1620
+ This option controls if object fields are displayed as columns or lines.
1621
+
1622
+ If value is `no` (default), `object_list` are displayed with one object per line, with fields as columns (see above).
1623
+ `single_object` are displayed with one field per line (and columns are: `field`, `value`).
1624
+
1625
+ If an `object_list` has a single element, it is possible to have `ascli` display the object as a single object (one field per line instead of columns) with option: `multi_single` set to `single`.
1626
+
1627
+ This parameter can be set as a global default with:
1628
+
1629
+ ```bash
1630
+ ascli config preset set GLOBAL multi_single single
1631
+ ```
1632
+
1633
+ In case multiple objects are returned, it is possible to display one table per object with option `multi_single` set to `yes`.
1634
+
1635
+ ```console
1636
+ $ ascli config echo @json:'[{"user":{"id":1,"name":"toto"},"project":"blash"}]' --multi-single=yes
1637
+ ╭───────────┬───────╮
1638
+ │ field │ value │
1639
+ ╞═══════════╪═══════╡
1640
+ │ user.id │ 1 │
1641
+ │ user.name │ toto │
1642
+ │ project │ blash │
1643
+ ╰───────────┴───────╯
1644
+ ```
1645
+
1646
+ #### Option: `display`: Verbosity of output
1547
1647
 
1548
1648
  Output messages are categorized in 3 types:
1549
1649
 
@@ -1557,13 +1657,17 @@ The option `display` controls the level of output:
1557
1657
  - `data` display `data` and `error` messages
1558
1658
  - `error` display only error messages.
1559
1659
 
1560
- By default, secrets are removed from output: option `show_secrets` defaults to `no`, unless `display` is `data`, to allows piping results.
1561
- To hide secrets from output, set option `show_secrets` to `no`.
1660
+ #### Option: `show_secrets`: Hide or show secrets in results
1661
+
1662
+ If value is `no` (default), then secrets are redacted from command results.
1663
+
1664
+ If value is `yes`, then secrets shown in clear in results.
1562
1665
 
1563
- #### Option: `fields`: Selection of output object properties
1666
+ If `display` is `data`, secrets are included to allows piping results.
1564
1667
 
1565
- By default, a `table` output format will display one line per entry, and columns for each fields (attributes, properties).
1566
- Depending on the command, columns may include by default all fields, or only some selected fields.
1668
+ #### Option: `fields`: Selection of output object fields
1669
+
1670
+ Depending on the command, results may include by default all fields, or only some selected fields.
1567
1671
  It is possible to define specific columns to be displayed, by setting the `fields` option.
1568
1672
 
1569
1673
  The `fields` option is a list that can be either a comma separated list or an extended value `Array`.
@@ -1572,8 +1676,8 @@ Individual elements of the list can be:
1572
1676
 
1573
1677
  - **property** : add property to the current list
1574
1678
  - `-`**property** : remove property from the current list
1575
- - `DEF` : default list of properties (that's the default, when not set)
1576
- - `ALL` : all properties
1679
+ - `DEF` : default list of fields (that's the default, when not set)
1680
+ - `ALL` : all fields
1577
1681
  - A Ruby `RegEx` : using `@ruby:'/.../'`, or `@re:...` add those matching to the list
1578
1682
 
1579
1683
  Examples:
@@ -1581,13 +1685,13 @@ Examples:
1581
1685
  - `a,b,c` : the list of attributes specified as a comma separated list (overrides the all default)
1582
1686
  - `@json:'["a","b","c"]'` : `Array` extended value: same as above
1583
1687
  - `b,DEF,-a` : default property list, remove `a` and add `b` in first position
1584
- - `@ruby:'/^server/'` : Display all properties whose name begin with `server`
1688
+ - `@ruby:'/^server/'` : Display all fields whose name begin with `server`
1585
1689
 
1586
1690
  #### Option: `select`
1587
1691
 
1588
1692
  Table output (`object_list`) can be filtered using option `select`.
1589
1693
  This option is either a `Hash` or `Proc`.
1590
- The `Proc` takes as argument a line (`Hash`) in the table and is a Ruby lambda expression that returns `true` or `false`.
1694
+ The `Proc` takes as argument a line (`Hash`) in the table and is a Ruby lambda expression that shall returns `true` to select or `false` to remove an entry.
1591
1695
 
1592
1696
  Example:
1593
1697
 
@@ -1616,19 +1720,26 @@ In above example, the same result is obtained with option:
1616
1720
 
1617
1721
  The percent selector allows identification of an entity by another unique identifier other than the native identifier.
1618
1722
 
1619
- When a command is executed on a single entity, the entity is identified by a unique identifier that follows the command:
1620
- e.g. `ascli aoc admin user show 1234` where `1234` is the user's identifier.
1723
+ Syntax: `%<field>:<value>`
1621
1724
 
1622
- Some commands provide the following capability:
1623
- If the entity can also be uniquely identified by a name, then the name can be used instead of the identifier, using the **percent selector**: `ascli aoc admin user show %name:john` where `john` is the user name.
1725
+ When a command is executed on a single entity, the entity is identified by a unique identifier that follows the command.
1726
+ For example, in the following command, `1234` is the user's identifier:
1624
1727
 
1625
- Syntax: `%<field>:<value>`
1728
+ ```bash
1729
+ ascli aoc admin user show 1234
1730
+ ```
1626
1731
 
1627
- > **Note:** The legacy option `id` is deprecated: `--id=1234` (options have a single value and thus do not provide the possibility to identify sub-entities)
1732
+ Some commands provide the following capability:
1733
+ If the entity can also be uniquely identified by a name, then the name can be used instead of the identifier, using the **percent selector**.
1734
+ For example, if the name of the user is `john` and a field for this entity named `name` has a value `john`:
1735
+
1736
+ ```bash
1737
+ ascli aoc admin user show %name:john
1738
+ ```
1628
1739
 
1629
1740
  ### Extended Value Syntax
1630
1741
 
1631
- Most options and arguments are specified by a simple string (e.g. username or url).
1742
+ Most options and arguments are specified by a simple string (e.g. `username` or `url`).
1632
1743
  Sometime it is convenient to read a value from a file: for example read the PEM value of a private key, or a list of files.
1633
1744
  Some options expect a more complex value such as `Hash` or `Array`.
1634
1745
 
@@ -1644,31 +1755,31 @@ Decoders act like a function with its parameter on right hand side and are recog
1644
1755
 
1645
1756
  The following decoders are supported:
1646
1757
 
1647
- | Decoder | Parameter| Returns | Description |
1648
- |----------|----------|---------|-------------|
1649
- | `base64` | String | String | Decode a base64 encoded string |
1650
- | `csvt` | String | Array | Decode a titled CSV value |
1651
- | `env` | String | String | Read from a named env var name, e.g. `--password=@env:MYPASSVAR` |
1652
- | `file` | String | String | Read value from specified file (prefix `~/` is replaced with the users home folder), e.g. `--key=@file:~/.ssh/mykey` |
1653
- | `json` | String | Any | Decode JSON values (convenient to provide complex structures) |
1654
- | `lines` | String | Array | Split a string in multiple lines and return an array |
1655
- | `list` | String | Array | Split a string in multiple items taking first character as separator and return an array |
1656
- | `none` | None | Nil | A null value |
1657
- | `path` | String | String | Performs path expansion on specified path (prefix `~/` is replaced with the users home folder), e.g. `--config-file=@path:~/sample_config.yml` |
1658
- | `preset` | String | Hash | Get whole option preset value by name. Sub-values can also be used using `.` as separator. e.g. `foo.bar` is `conf[foo][bar]` |
1659
- | `extend` | String | String | Evaluates embedded extended value syntax in string |
1660
- | `re` | String | Regexp | Ruby Regular Expression (short for `@ruby:/.../`) |
1661
- | `ruby` | String | Any | Execute specified Ruby code |
1662
- | `secret` | None | String | Ask password interactively (hides input) |
1663
- | `stdin` | None | String | Read from stdin in text mode (no value on right) |
1664
- | `stdbin` | None | String | Read from stdin in binary mode (no value on right) |
1665
- | `uri` | String | String | Read value from specified URL, e.g. `--fpac=@uri:http://serv/f.pac` |
1666
- | `val` | String | String | Prevent decoders on the right to be decoded. e.g. `--key=@val:@file:foo` sets the option `key` to value `@file:foo`. |
1667
- | `yaml` | String | Any | Decode YAML |
1668
- | `zlib` | String | String | Un-compress zlib data |
1758
+ | Decoder | Parameter| Returns | Description |
1759
+ |----------|----------|----------|-------------|
1760
+ | `base64` | `String` | `String` | Decode a base64 encoded string |
1761
+ | `csvt` | `String` | `Array` | Decode a titled CSV value |
1762
+ | `env` | `String` | `String` | Read from a named env var name, e.g. `--password=@env:MYPASSVAR` |
1763
+ | `file` | `String` | `String` | Read value from specified file (prefix `~/` is replaced with the users home folder), e.g. `--key=@file:~/.ssh/mykey` |
1764
+ | `json` | `String` | Any | Decode JSON values (convenient to provide complex structures) |
1765
+ | `lines` | `String` | `Array` | Split a string in multiple lines and return an array |
1766
+ | `list` | `String` | `Array` | Split a string in multiple items taking first character as separator and return an array |
1767
+ | `none` | None | Nil | A null value |
1768
+ | `path` | `String` | `String` | Performs path expansion on specified path (prefix `~/` is replaced with the users home folder), e.g. `--config-file=@path:~/sample_config.yml` |
1769
+ | `preset` | `String` | `Hash` | Get whole option preset value by name. Sub-values can also be used using `.` as separator. e.g. `foo.bar` is `conf[foo][bar]` |
1770
+ | `extend` | `String` | `String` | Evaluates embedded extended value syntax in string |
1771
+ | `re` | `String` | `Regexp` | Ruby Regular Expression (short for `@ruby:/.../`) |
1772
+ | `ruby` | `String` | Any | Execute specified Ruby code |
1773
+ | `secret` | None | `String` | Ask password interactively (hides input) |
1774
+ | `stdin` | None | `String` | Read from stdin in text mode (no value on right) |
1775
+ | `stdbin` | None | `String` | Read from stdin in binary mode (no value on right) |
1776
+ | `uri` | `String` | `String` | Read value from specified URL, e.g. `--fpac=@uri:http://serv/f.pac` |
1777
+ | `val` | `String` | `String` | Prevent decoders on the right to be decoded. e.g. `--key=@val:@file:foo` sets the option `key` to value `@file:foo`. |
1778
+ | `yaml` | `String` | Any | Decode YAML |
1779
+ | `zlib` | `String` | `String` | Un-compress zlib data |
1669
1780
 
1670
1781
  > **Note:** A few commands support a value of type `Proc` (lambda expression).
1671
- For example, the **Extended Value** `@ruby:'->(i){i["attr"]}'` is a lambda expression that returns the value of attribute `attr` of the `Hash` `i`.
1782
+ For example, the **Extended Value** `@ruby:'->(i){i["attr"]}'` is a lambda expression that returns the value for key `attr` of the `Hash` `i`.
1672
1783
 
1673
1784
  To display the result of an extended value, use the `config echo` command.
1674
1785
 
@@ -1726,14 +1837,14 @@ ascli config echo @json:@extend:'{"hello":true,"version":"@preset:config.version
1726
1837
 
1727
1838
  ```output
1728
1839
  +---------+-----------+
1729
- | key | value |
1840
+ | field | value |
1730
1841
  +---------+-----------+
1731
1842
  | hello | true |
1732
1843
  | version | 4.14.0 |
1733
1844
  +---------+-----------+
1734
1845
  ```
1735
1846
 
1736
- Example: Create a `Hash` from YAML provided as **heredoc**:
1847
+ Example: Create a `Hash` from YAML provided as shell **heredoc**:
1737
1848
 
1738
1849
  ```bash
1739
1850
  ascli config echo @yaml:@stdin: --format=json<<EOF
@@ -1753,7 +1864,7 @@ EOF
1753
1864
 
1754
1865
  ### Configuration and Persistency Folder
1755
1866
 
1756
- `ascli` configuration and other runtime files (token cache, file lists, persistency files, SDK) are stored by default in `[User's home folder]/.aspera/ascli`.
1867
+ `ascli` configuration and persistency files (token cache, file lists, persistency files) are stored by default in `[User's home folder]/.aspera/ascli`.
1757
1868
 
1758
1869
  > **Note:** `[User's home folder]` is found using Ruby's `Dir.home` (`rb_w32_home_dir`).
1759
1870
  It uses the `HOME` env var primarily, and on MS Windows it also looks at `%HOMEDRIVE%%HOMEPATH%` and `%USERPROFILE%`.
@@ -1782,9 +1893,9 @@ ascli config folder
1782
1893
  C:\Users\Kenji\.aspera\ascli
1783
1894
  ```
1784
1895
 
1785
- When OAuth is used (AoC, Faspex4 api v4, Faspex5) `ascli` keeps a cache of generated bearer tokens in folder `persist_store` in configuration folder by default.
1896
+ When OAuth is used (AoC, Faspex5) `ascli` keeps a cache of generated bearer tokens in folder `persist_store` in configuration folder by default.
1786
1897
  Option `cache_tokens` (**yes**/no) allows to control if Oauth tokens are cached on file system, or generated for each request.
1787
- The command `config flush_tokens` clears that cache.
1898
+ The command `config tokens flush` clears that cache.
1788
1899
  Tokens are kept on disk for a maximum of 30 minutes (`TOKEN_CACHE_EXPIRY_SEC`) and garbage collected after that.
1789
1900
  When a token has expired, then a new token is generated, either using a refresh_token if it is available, or by the default method.
1790
1901
 
@@ -1954,11 +2065,11 @@ ascp errors
1954
2065
  ascp info --sdk-folder=sdk_test_dir
1955
2066
  ascp install
1956
2067
  ascp install --sdk-folder=sdk_test_dir
2068
+ ascp install 1.1.3
1957
2069
  ascp products list
1958
2070
  ascp products use 'IBM Aspera Connect'
1959
2071
  ascp show
1960
2072
  ascp spec
1961
- ascp use /usr/bin/ascp
1962
2073
  check_update
1963
2074
  coffee
1964
2075
  coffee --ui=text
@@ -1977,6 +2088,8 @@ echo -- --special-string
1977
2088
  echo @base64:SGVsbG8gV29ybGQK
1978
2089
  echo @csvt:@stdin:
1979
2090
  echo @env:USER
2091
+ echo @json:'[{"user":{"id":1,"name":"foo"},"project":"bar"}]' --multi-single=single
2092
+ echo @json:'[{"user":{"id":1,"name":"foo"},"project":"bar"}]' --multi-single=yes
1980
2093
  echo @lines:@stdin:
1981
2094
  echo @list:,1,2,3
1982
2095
  echo @secret:
@@ -1990,7 +2103,6 @@ echo hello
1990
2103
  email_test --notify-to=my_email_external
1991
2104
  file
1992
2105
  file --logger=syslog --log-level=debug
1993
- flush_tokens
1994
2106
  folder
1995
2107
  gem name
1996
2108
  gem path
@@ -2006,6 +2118,7 @@ preset delete conf_name
2006
2118
  preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
2007
2119
  preset list
2008
2120
  preset overview
2121
+ preset set GLOBAL version_check_days 0
2009
2122
  preset set conf_name param value
2010
2123
  preset set default shares conf_name
2011
2124
  preset show conf_name
@@ -2017,6 +2130,9 @@ remote_certificate chain https://node.example.com/path
2017
2130
  remote_certificate name https://node.example.com/path
2018
2131
  remote_certificate only https://node.example.com/path
2019
2132
  smtp_settings
2133
+ tokens flush
2134
+ transferd install
2135
+ transferd list
2020
2136
  vault create my_label @json:'{"password":"my_password_here","description":"my secret"}'
2021
2137
  vault delete my_label
2022
2138
  vault info
@@ -2145,7 +2261,7 @@ ascli config wizard
2145
2261
  #### Example of configuration for a plugin
2146
2262
 
2147
2263
  For Faspex, Shares, Node (including ATS, Aspera Transfer Service), Console,
2148
- only username/password and url are required (either on command line, or from configuration file).
2264
+ only username/password and URL are required (either on command line, or from configuration file).
2149
2265
  Those can usually be provided on the command line:
2150
2266
 
2151
2267
  ```bash
@@ -2391,16 +2507,16 @@ This is available:
2391
2507
  - in the `thumbnail` command of `node` when using **gen4/access key** API.
2392
2508
  - when using the `show` command of `preview` plugin.
2393
2509
  - `coffee` and `image` commands of `config` plugin.
2394
- - any displayed value which is an url to image can be displayed with option `format` set to `image`
2510
+ - any displayed value which is a URL to image can be displayed with option `format` set to `image`
2395
2511
 
2396
2512
  The following options can be specified in the option `image`:
2397
2513
 
2398
2514
  | Option | Type | Description |
2399
2515
  |------------|---------|-------------|
2400
- | reserve | Integer | Lines reserved to display a status |
2401
- | text | Bool | Display text instead of image|
2402
- | double | Bool | Display double text resolution (half characters) |
2403
- | font_ratio | Float | Font height/width ratio in terminal |
2516
+ | reserve | `Integer` | Lines reserved to display a status |
2517
+ | text | `Bool` | Display text instead of image|
2518
+ | double | `Bool` | Display double text resolution (half characters) |
2519
+ | font_ratio | `Float` | Font height/width ratio in terminal |
2404
2520
 
2405
2521
  ```bash
2406
2522
  ascli config image https://eudemo.asperademo.com/wallpaper.jpg --ui=text --image=@json:'{"text":true}'
@@ -2433,12 +2549,12 @@ The gem is equipped with traces, mainly for debugging and learning APIs.
2433
2549
  By default logging level is `warn` and the output channel is `stderr`.
2434
2550
  To increase debug level, use option `log_level` (e.g. using command line `--log-level=xx`, env var `ASCLI_LOG_LEVEL`, or an [Option Preset](#option-preset)).
2435
2551
 
2436
- By default passwords and secrets are removed from logs.
2437
- Use option `log_secrets` set to `yes` to reveal secrets in logs.
2552
+ By default passwords and secrets are redacted from logs.
2553
+ Set option `log_secrets` to `yes` to include secrets in logs.
2438
2554
 
2439
- Available loggers: `stdout`, `stderr`, `syslog`.
2555
+ Option `logger`: `stdout`, `stderr`, `syslog`.
2440
2556
 
2441
- Available levels: `debug`, `info`, `warn`, `error`.
2557
+ Option `log_level`: `debug`, `info`, `warn`, `error`.
2442
2558
 
2443
2559
  > **Note:** When using the `direct` agent (`ascp`), additional transfer logs can be activated using `ascp` options and `ascp_args`, see [`direct`](#agent-direct).
2444
2560
 
@@ -2491,7 +2607,7 @@ HTTP connection parameters (not `ascp` wss) can be adjusted using option `http_o
2491
2607
  | `retry_on_error` | 0 | `ascli` |
2492
2608
  | `retry_sleep` | nil | `ascli` |
2493
2609
 
2494
- Time values are in set **seconds** and can be of type either integer or float.
2610
+ Time values are in set **seconds** and can be of type either `Integer` or `Float`.
2495
2611
  Default values are the ones of Ruby:
2496
2612
  For a full list, refer to the Ruby library: [`Net::HTTP`](https://ruby-doc.org/stdlib/libdoc/net/http/rdoc/Net/HTTP.html).
2497
2613
 
@@ -2645,7 +2761,7 @@ ascli config ascp info
2645
2761
 
2646
2762
  ```output
2647
2763
  +--------------------+-----------------------------------------------------------+
2648
- | key | value |
2764
+ | field | value |
2649
2765
  +--------------------+-----------------------------------------------------------+
2650
2766
  | ascp | /Users/laurent/.aspera/ascli/sdk/ascp |
2651
2767
  ...
@@ -2762,51 +2878,53 @@ Downloaded: IBMAsperaConnectInstaller-3.11.2.63.dmg
2762
2878
  ### Transfer Clients: Agents
2763
2879
 
2764
2880
  Some of the actions on Aspera Applications lead to file transfers (upload and download) using the FASP protocol (`ascp`).
2765
-
2766
- When a transfer needs to be started, a [**transfer-spec**](#transfer-specification) has been internally prepared.
2767
- This [**transfer-spec**](#transfer-specification) will be executed by a transfer client, here called **Transfer Agent**.
2881
+ Transfers will be executed by a transfer client, here called **Transfer Agent**.
2768
2882
 
2769
2883
  The following agents are supported and selected with option `transfer`:
2770
2884
 
2771
- - [`direct`](#agent-direct) : direct execution of `ascp` (local)
2772
- - [`trsdk`](#agent-transfer-sdk) : use of Aspera Transfer SDK (local)
2773
- - [`connect`](#agent-connect-client) : use Connect Client (local)
2774
- - [`alpha`](#agent-desktop-client) : use the new Desktop Client (local)
2775
- - [`node`](#agent-node-api) : use an Aspera Transfer Node (**remote**).
2776
- - [`httpgw`](#agent-http-gateway) : use an Aspera HTTP Gateway (**remote**)
2885
+ | `transfer` | location | Description of agent |
2886
+ |------------------------------------|----------|-------------------------------|
2887
+ | [`direct`](#agent-direct) | local | direct execution of `ascp` |
2888
+ | [`transferd`](#agent-transfer-sdk) | local | Aspera Transfer Daemon |
2889
+ | [`connect`](#agent-connect-client) | local | Aspera Connect Client |
2890
+ | [`alpha`](#agent-desktop-client) | local | Aspera for Desktop |
2891
+ | [`node`](#agent-node-api) | remote | Aspera Transfer Node |
2892
+ | [`httpgw`](#agent-http-gateway) | remote | Aspera HTTP Gateway |
2777
2893
 
2778
2894
  > **Note:** All transfer operations are seen from the point of view of the agent.
2779
- For example, a node agent executing an **upload**, or **package send** operation
2780
- will effectively push files to the related server from the agent node.
2895
+ For example, an agent executing an **upload**, or **package send** operation will effectively push files to the related server from the system where the agent runs.
2896
+
2897
+ All of above agents (including `direct`) receive transfer parameters as a [**transfer-spec**](#transfer-specification).
2898
+ Parameters in transfer-spec can be modified with option `ts`.
2781
2899
 
2782
- `ascli` standardizes on the use of a [**transfer-spec**](#transfer-specification) instead of **native** `ascp` options to provide parameters for a transfer session, as a common method for those three Transfer Agents.
2900
+ **Specific** options for agents are provided with option `transfer_info`.
2783
2901
 
2784
- Specific options for agents are provided with option `transfer_info`, cumulatively.
2902
+ > **Note:** Parameters in `transfer_info` are specific for each agent type and are described in the agents respective sections.
2785
2903
 
2786
2904
  #### Agent: Direct
2787
2905
 
2788
- The `direct` agent directly executes a local `ascp`.
2906
+ The `direct` agent directly executes a local `ascp` in `ascli`.
2789
2907
  This is the default agent for `ascli` (option `--transfer=direct`).
2790
- `ascli` will search locally installed Aspera products, including SDK, and use `ascp` from that component.
2908
+ `ascli` will locally search installed Aspera products, including SDK, and use `ascp` from that component.
2791
2909
  Refer to section [FASP](#fasp-configuration).
2792
2910
 
2793
2911
  The `transfer_info` option accepts the following optional parameters to control multi-session, Web Socket Session, Resume policy and add any argument to `ascp`:
2794
2912
 
2795
2913
  | Name | Type | Description |
2796
2914
  |------------------------|---------|-------------|
2797
- | `wss` | Bool | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
2798
- | `quiet` | Bool | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
2799
- | `trusted_certs` | Array | List of repositories for trusted certificates. |
2800
- | `client_ssh_key` | String | SSH Keys to use for token-based transfers. One of: `dsa_rsa`, `rsa`, `per_client`. Default: `rsa` |
2801
- | `ascp_args` | Array | Array of strings with native `ascp` arguments.<br/>Default: `[]` |
2802
- | `spawn_timeout_sec` | Float | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
2803
- | `spawn_delay_sec` | Float | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
2804
- | `multi_incr_udp` | Bool | Multi Session<br/>Increment UDP port on multi-session<br/>If `true`, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)<br/>Default: `true` on Windows, else `false` |
2805
- | `resume` | Hash | Resume parameters. See below |
2806
- | `resume.iter_max` | Integer | Max number of retry on error<br/>Default: `7` |
2807
- | `resume.sleep_initial` | Integer | First Sleep before retry<br/>Default: `2` |
2808
- | `resume.sleep_factor` | Integer | Multiplier of sleep period between attempts<br/>Default: `2` |
2809
- | `resume.sleep_max` | Integer | Default: `60` |
2915
+ | `wss` | `Bool` | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
2916
+ | `quiet` | `Bool` | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
2917
+ | `trusted_certs` | `Array` | List of repositories for trusted certificates. |
2918
+ | `client_ssh_key` | `String` | SSH Keys to use for token-based transfers. One of: `dsa_rsa`, `rsa`, `per_client`. Default: `rsa` |
2919
+ | `ascp_args` | `Array` | Array of strings with native `ascp` arguments.<br/>Default: `[]` |
2920
+ | `spawn_timeout_sec` | `Float` | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
2921
+ | `spawn_delay_sec` | `Float` | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
2922
+ | `multi_incr_udp` | `Bool` | Multi Session<br/>Increment UDP port on multi-session<br/>If `true`, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)<br/>Default: `true` on Windows, else `false` |
2923
+ | `resume` | `Hash` | Resume parameters. See below |
2924
+ | `resume.iter_max` | `Integer` | Max number of retry on error<br/>Default: `7` |
2925
+ | `resume.sleep_initial` | `Integer` | First Sleep before retry<br/>Default: `2` |
2926
+ | `resume.sleep_factor` | `Integer` | Multiplier of sleep period between attempts<br/>Default: `2` |
2927
+ | `resume.sleep_max` | `Integer` | Default: `60` |
2810
2928
 
2811
2929
  In case of transfer interruption, the agent will **resume** a transfer up to `iter_max` time.
2812
2930
  Sleep between iterations is given by the following formula where `iter_index` is the current iteration index, starting at 0:
@@ -2938,12 +3056,12 @@ This is especially useful for direct node-to-node transfers.
2938
3056
 
2939
3057
  Parameters provided in option `transfer_info` are:
2940
3058
 
2941
- | Name | Type | Description |
2942
- |----------|--------|-------------|
2943
- | url | string | URL of the node API</br>Mandatory |
2944
- | username | string | Node api user or access key</br>Mandatory |
2945
- | password | string | Password, secret or bearer token</br>Mandatory |
2946
- | root_id | string | Root file id</br>Mandatory only for bearer token |
3059
+ | Nam e | Type | Description |
3060
+ |------------|--------|--------------------------------------------------|
3061
+ | `url` | `String` | URL of the node API</br>Mandatory |
3062
+ | `username` | `String` | Node api user or access key</br>Mandatory |
3063
+ | `password` | `String` | Password, secret or bearer token</br>Mandatory |
3064
+ | `root_id` | `String` | Root file id</br>Mandatory only for bearer token |
2947
3065
 
2948
3066
  Like any other option, `transfer_info` can get its value from a pre-configured [Option Preset](#option-preset) :
2949
3067
 
@@ -2972,10 +3090,10 @@ Parameters provided in option `transfer_info` are:
2972
3090
 
2973
3091
  | Name | Type | Description |
2974
3092
  |------------------------|--------|---------------------------------------|
2975
- | url | string | URL of the HTTP GW</br>Mandatory |
2976
- | upload_chunk_size | int | Size in bytes of chunks for upload<br/>Default: `64000` |
2977
- | api_version | string | Force use of version (`v1`, `v2`)<br/>Default: `v2` |
2978
- | synchronous | bool | Wait for each message acknowledgment<br/>Default: `false` |
3093
+ | url | `String` | URL of the HTTP GW</br>Mandatory |
3094
+ | upload_chunk_size | `Integer` | Size in bytes of chunks for upload<br/>Default: `64000` |
3095
+ | api_version | `String` | Force use of version (`v1`, `v2`)<br/>Default: `v2` |
3096
+ | synchronous | `Bool` | Wait for each message acknowledgment<br/>Default: `false` |
2979
3097
 
2980
3098
  Example:
2981
3099
 
@@ -2990,15 +3108,15 @@ If the application, e.g. AoC or Faspex 5, is configured to use the HTTP Gateway,
2990
3108
  #### Agent: Transfer SDK
2991
3109
 
2992
3110
  Another possibility is to use the Transfer SDK daemon (`asperatransferd`).
2993
- Set option `transfer` to `trsdk`.
3111
+ Set option `transfer` to `transferd`.
2994
3112
 
2995
3113
  Options for `transfer_info` are:
2996
3114
 
2997
3115
  | Name | Type | Description |
2998
3116
  |----------|--------|-------------|
2999
- | `url` | string | IP address and port listened by the daemon</br>Mandatory<br/>Default: `:0` |
3000
- | `external` | bool | Use external daemon, do not start one.<br/>Default: `false` |
3001
- | `keep` | bool | Keep the daemon running after exiting `ascli`<br/>Default: `false` |
3117
+ | `url` | `String` | IP address and port listened by the daemon</br>Mandatory<br/>Default: `:0` |
3118
+ | `external` | `Bool` | Use external daemon, do not start one.<br/>Default: `false` |
3119
+ | `keep` | `Bool` | Keep the daemon running after exiting `ascli`<br/>Default: `false` |
3002
3120
 
3003
3121
  > **Note:** If port zero is specified in the URL, then the daemon will listen on a random available port. If no address is specified, then `127.0.0.1` is used.
3004
3122
 
@@ -3081,91 +3199,92 @@ Columns:
3081
3199
 
3082
3200
  `ascp` argument or environment variable is provided in description.
3083
3201
 
3084
- | Field | Type | D | N | C | T | H | Description |
3085
- | ----- | ---- | - | - | - | - | - | ----------- |
3086
- | apply_local_docroot | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Apply local docroot to source paths.<br/>(--apply-local-docroot) |
3087
- | authentication | string | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | value=token for SSH bypass keys, else password asked if not provided.<br/>(&lt;ignored&gt;) |
3088
- | cipher | string | Y | Y | Y | Y | Y | In transit encryption type.<br/>Allowed values: none, aes-128, aes-192, aes-256, aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-gcm, aes-192-gcm, aes-256-gcm<br/>(-c (conversion){enum}) |
3089
- | cipher_allowed | string | Y | Y | Y | Y | Y | returned by node API. Valid literals include "aes-128" and "none".<br/>(&lt;ignored&gt;) |
3090
- | compression | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only, 0 / 1?<br/>(&lt;ignored&gt;) |
3091
- | content_protection | string | Y | Y | Y | Y | Y | Enable client-side encryption at rest. (CSEAR, content protection)<br/>Allowed values: encrypt, decrypt<br/>(--file-crypt {enum}) |
3092
- | content_protection_password | string | Y | Y | Y | Y | Y | Specifies CSEAR password. (content protection)<br/>(env:ASPERA_SCP_FILEPASS) |
3093
- | cookie | string | Y | Y | Y | Y | Y | Metadata for transfer specified by application<br/>(env:ASPERA_SCP_COOKIE) |
3094
- | create_dir | bool | Y | Y | Y | Y | Y | Specifies whether to create new directories.<br/>(-d) |
3095
- | delete_before_transfer | bool | Y | Y | Y | Y | Y | Before transfer, delete files that exist at the destination but not at the source.<br/>The source and destination arguments must be directories that have matching names.<br/>Objects on the destination that have the same name but different type or size as objects<br/>on the source are not deleted.<br/>(--delete-before-transfer) |
3096
- | delete_source | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3097
- | destination_root | string | Y | Y | Y | Y | Y | Destination root directory.<br/>(&lt;special&gt;) |
3098
- | destination_root_id | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The file ID of the destination root directory.<br/>Required when using Bearer token auth for the destination node.<br/>(&lt;ignored&gt;) |
3099
- | dgram_size | int | Y | Y | Y | Y | Y | UDP datagram size in bytes<br/>(-Z {int}) |
3100
- | direction | string | Y | Y | Y | Y | Y | Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode (conversion){enum}) |
3101
- | exclude_newer_than | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | skip src files with mtime > arg<br/>(--exclude-newer-than {int}) |
3102
- | exclude_older_than | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | skip src files with mtime < arg<br/>(--exclude-older-than {int}) |
3103
- | fasp_port | int | Y | Y | Y | Y | Y | Specifies fasp (UDP) port.<br/>(-O {int}) |
3104
- | fasp_url | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Only used in Faspex.<br/>(&lt;ignored&gt;) |
3105
- | file_checksum | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | Enable checksum reporting for transferred files by specifying the hash to use.<br/>Allowed values: sha-512, sha-384, sha-256, sha1, md5, none<br/>(&lt;ignored&gt;) |
3106
- | http_fallback | bool<br/>string | Y | Y | Y | Y | Y | When true(1), attempts to perform an HTTP transfer if a FASP transfer cannot be performed.<br/>(-y (conversion){bool}\|{string}) |
3107
- | http_fallback_port | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specifies http port when no cipher is used<br/>(-t {int}) |
3108
- | https_fallback_port | int | Y | Y | Y | Y | Y | Specifies https port when cipher is used<br/>(-t {int}) |
3109
- | keepalive | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The session is running in persistent session mode.<br/>(--keepalive) |
3110
- | lock_min_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3111
- | lock_min_rate_kbps | bool | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | If true, lock the minimum transfer rate to the value set for min_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3112
- | lock_rate_policy | bool | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | If true, lock the rate policy to the default value.<br/>(&lt;ignored&gt;) |
3113
- | lock_target_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3114
- | lock_target_rate_kbps | bool | Y | Y | Y | Y | Y | If true, lock the target transfer rate to the default value set for target_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3115
- | min_rate_cap_kbps | int | Y | Y | Y | Y | Y | The highest minimum rate that an incoming transfer can request, in kilobits per second.<br/>Client minimum rate requests that exceed the minimum rate cap are ignored.<br/>The default value of unlimited applies no cap to the minimum rate. (Default: 0)<br/>(&lt;ignored&gt;) |
3116
- | min_rate_kbps | int | Y | Y | Y | Y | Y | Set the minimum transfer rate in kilobits per second.<br/>(-m {int}) |
3117
- | move_after_transfer | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | The relative path to which the files will be moved after the transfer at the source side. Available as of 3.8.0.<br/>(--move-after-transfer {string}) |
3118
- | multi_session | int | Y | Y | Y | Y | Y | Use multi-session transfer. max 128.<br/>Each participant on one host needs an independent UDP (-O) port.<br/>Large files are split between sessions only when transferring with resume_policy=none.<br/><br/>(&lt;special&gt;) |
3119
- | multi_session_threshold | int | Y | Y | &nbsp; | &nbsp; | &nbsp; | Split files across multiple ascp sessions if their size in bytes is greater than or equal to the specified value.<br/>(0=no file is split)<br/>(--multi-session-threshold {int}) |
3120
- | obfuscate_file_names | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | HTTP Gateway obfuscates file names when set to true.<br/>(&lt;ignored&gt;) |
3121
- | overwrite | string | Y | Y | Y | Y | Y | Overwrite destination files with the source files of the same name.<br/>Allowed values: never, always, diff, older, diff+older<br/>(--overwrite {enum}) |
3122
- | password | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Password for local Windows user when transfer user associated with node api user is not the same as the one running asperanoded.<br/>Allows impersonating the transfer user and have access to resources (e.g. network shares).<br/>Windows only, node api only.<br/>(&lt;ignored&gt;) |
3123
- | paths | array | Y | Y | Y | Y | Y | Array of path to the source (required) and a path to the destination (optional).<br/>(&lt;special&gt;) |
3124
- | precalculate_job_size | bool | Y | Y | Y | Y | Y | Specifies whether to precalculate the job size.<br/>(--precalculate-job-size) |
3125
- | preserve_access_time | bool | Y | Y | Y | Y | Y | Preserve the source-file access timestamps at the destination.<br/>Because source access times are updated by the transfer operation,<br/>the timestamp that is preserved is the one just before to the transfer.<br/>(--preserve-access-time) |
3126
- | preserve_acls | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve access control lists.<br/>Allowed values: none, native, metafile<br/>(--preserve-acls {enum}) |
3127
- | preserve_creation_time | bool | Y | Y | Y | Y | Y | (Windows only) Preserve source-file creation timestamps at the destination.<br/>Only Windows systems retain information about creation time.<br/>If the destination is not a Windows computer, this option is ignored.<br/>(--preserve-creation-time) |
3128
- | preserve_extended_attrs | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the extended attributes.<br/>Allowed values: none, native, metafile<br/>(--preserve-xattrs {enum}) |
3129
- | preserve_file_owner_gid | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the group ID for a file owner<br/>(--preserve-file-owner-gid) |
3130
- | preserve_file_owner_uid | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the user ID for a file owner<br/>(--preserve-file-owner-uid) |
3131
- | preserve_modification_time | bool | Y | Y | Y | Y | Y | Set the modification time, the last time a file or directory was modified (written), of a transferred file<br/>to the modification of the source file or directory.<br/>Preserve source-file modification timestamps at the destination.<br/>(--preserve-modification-time) |
3132
- | preserve_remote_acls | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve remote access control lists.<br/>Allowed values: none, native, metafile<br/>(--remote-preserve-acls {enum}) |
3133
- | preserve_source_access_time | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the time logged for when the source file was accessed<br/>(--preserve-source-access-time) |
3134
- | preserve_times | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve file timestamps.<br/>(--preserve-times) |
3135
- | proxy | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specify the address of the Aspera high-speed proxy server.<br/>dnat(s)://[user[:password]@]server:port<br/>Default ports for DNAT and DNATS protocols are 9091 and 9092.<br/>Password, if specified here, overrides the value of environment variable ASPERA_PROXY_PASS.<br/>(--proxy {string}) |
3136
- | rate_policy | string | Y | Y | Y | Y | Y | The transfer rate policy to use when sharing bandwidth.<br/>Allowed values: low, fair, high, fixed<br/>(--policy {enum}) |
3137
- | rate_policy_allowed | string | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | Specifies most aggressive rate policy that is allowed.<br/>Returned by node API.<br/>Allowed values: low, fair, high, fixed<br/>(&lt;ignored&gt;) |
3138
- | read_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3139
- | remote_access_key | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The access key ID of the access key that was used to construct the bearer token that is used to authenticate to the remote node.<br/>(&lt;ignored&gt;) |
3140
- | remote_host | string | Y | Y | Y | Y | Y | IP or fully qualified domain name of the remote server<br/>(--host {string}) |
3141
- | remote_password | string | Y | Y | Y | Y | Y | SSH session password<br/>(env:ASPERA_SCP_PASS) |
3142
- | remote_user | string | Y | Y | Y | Y | Y | Remote user. Default value is "xfer" on node or connect.<br/>(--user {string}) |
3143
- | remove_after_transfer | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3144
- | remove_empty_directories | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Specifies whether to remove empty directories.<br/>(--remove-empty-directories) |
3145
- | remove_empty_source_directory | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Remove empty source subdirectories and remove the source directory itself, if empty<br/>(--remove-empty-source-directory) |
3146
- | remove_skipped | bool | Y | Y | Y | &nbsp; | &nbsp; | Must also have remove_after_transfer set to true, Defaults to false, if true, skipped files will be removed as well.<br/>(--remove-skipped) |
3147
- | resume_policy | string | Y | Y | Y | Y | Y | If a transfer is interrupted or fails to finish, resume without re-transferring the whole files.<br/>Allowed values: none, attrs, sparse_csum, full_csum<br/>(-k (conversion){enum}) |
3148
- | retry_duration | string<br/>int | &nbsp; | Y | Y | &nbsp; | &nbsp; | Specifies how long to wait before retrying transfer. (e.g. "5min")<br/>(&lt;ignored&gt;) |
3149
- | source_root | string | Y | Y | Y | Y | Y | Path to be prepended to each source path.<br/>This is either a conventional path or it can be a URI but only if there is no root defined.<br/>(--source-prefix64 (conversion){string}) |
3150
- | source_root_id | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | The file ID of the source root directory. Required when using Bearer token auth for the source node.<br/>(&lt;ignored&gt;) |
3151
- | src_base | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | Specify the prefix to be stripped off from each source object.<br/>The remaining portion of the source path is kept intact at the destination.<br/>Special care must be taken when used with cloud storage.<br/>(--src-base64 (conversion){string}) |
3152
- | ssh_args | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Array of arguments to pass to SSH. Use with caution.<br/>(&lt;ignored&gt;) |
3153
- | ssh_port | int | Y | Y | Y | Y | Y | Specifies SSH (TCP) port. Default: local:22, other:33001<br/>(-P {int}) |
3154
- | ssh_private_key | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Private key used for SSH authentication.<br/>Shall look like: -----BEGIN RSA PRIV4TE KEY-----\nMII...<br/>Note the JSON encoding: \n for newlines.<br/>(env:ASPERA_SCP_KEY) |
3155
- | ssh_private_key_passphrase | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The passphrase associated with the transfer user's SSH private key. Available as of 3.7.2.<br/>(env:ASPERA_SCP_PASS) |
3156
- | sshfp | string | Y | Y | Y | Y | Y | Check it against server SSH host key fingerprint<br/>(--check-sshfp {string}) |
3157
- | symlink_policy | string | Y | Y | Y | Y | Y | Handle source side symbolic links<br/>Allowed values: follow, copy, copy+force, skip<br/>(--symbolic-links {enum}) |
3158
- | tags | hash | Y | Y | Y | Y | Y | Metadata for transfer as JSON<br/>(--tags64 (conversion){hash}) |
3159
- | target_rate_cap_kbps | int | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | Returned by upload/download_setup node API.<br/>(&lt;ignored&gt;) |
3160
- | target_rate_kbps | int | Y | Y | Y | Y | Y | Specifies desired speed for the transfer.<br/>(-l {int}) |
3161
- | target_rate_percentage | string | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3162
- | title | string | &nbsp; | Y | Y | &nbsp; | &nbsp; | Title of the transfer<br/>(&lt;ignored&gt;) |
3163
- | token | string | Y | Y | Y | Y | Y | Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN) |
3164
- | use_ascp4 | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | specify version of protocol<br/>(&lt;special&gt;) |
3165
- | use_system_ssh | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | TODO, comment...<br/>(&lt;ignored&gt;) |
3166
- | write_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3167
- | wss_enabled | bool | Y | Y | Y | Y | Y | Server has Web Socket service enabled<br/>(&lt;special&gt;) |
3168
- | wss_port | int | Y | Y | Y | Y | Y | TCP port used for websocket service feed<br/>(&lt;special&gt;) |
3202
+ | Field | Type | N | D | A | T | H | C | Description |
3203
+ | ----- | ---- | - | - | - | - | - | - | ----------- |
3204
+ | apply_local_docroot | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Apply local docroot to source paths.<br/>(--apply-local-docroot) |
3205
+ | authentication | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | value=token for SSH bypass keys, else password asked if not provided.<br/>(&lt;ignored&gt;) |
3206
+ | cipher | string | Y | Y | Y | Y | Y | Y | In transit encryption type.<br/>Allowed values: none, aes-128, aes-192, aes-256, aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-gcm, aes-192-gcm, aes-256-gcm<br/>(-c (conversion){enum}) |
3207
+ | cipher_allowed | string | Y | Y | Y | Y | Y | Y | returned by node API. Valid literals include "aes-128" and "none".<br/>(&lt;ignored&gt;) |
3208
+ | compression | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only, 0 / 1?<br/>(&lt;ignored&gt;) |
3209
+ | content_protection | string | Y | Y | Y | Y | Y | Y | Enable client-side encryption at rest. (CSEAR, content protection)<br/>Allowed values: encrypt, decrypt<br/>(--file-crypt {enum}) |
3210
+ | content_protection_password | string | Y | Y | Y | Y | Y | Y | Specifies CSEAR password. (content protection)<br/>(env:ASPERA_SCP_FILEPASS) |
3211
+ | cookie | string | Y | Y | Y | Y | Y | Y | Metadata for transfer specified by application<br/>(env:ASPERA_SCP_COOKIE) |
3212
+ | create_dir | bool | Y | Y | Y | Y | Y | Y | Specifies whether to create new directories.<br/>(-d) |
3213
+ | delete_before_transfer | bool | Y | Y | Y | Y | Y | Y | Before transfer, delete files that exist at the destination but not at the source.<br/>The source and destination arguments must be directories that have matching names.<br/>Objects on the destination that have the same name but different type or size as objects<br/>on the source are not deleted.<br/>(--delete-before-transfer) |
3214
+ | delete_source | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3215
+ | destination_root | string | Y | Y | Y | Y | Y | Y | Destination root directory.<br/>(&lt;special&gt;) |
3216
+ | destination_root_id | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The file ID of the destination root directory.<br/>Required when using Bearer token auth for the destination node.<br/>(&lt;ignored&gt;) |
3217
+ | dgram_size | int | Y | Y | Y | Y | Y | Y | UDP datagram size in bytes<br/>(-Z {int}) |
3218
+ | direction | string | Y | Y | Y | Y | Y | Y | Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode (conversion){enum}) |
3219
+ | exclude_newer_than | string | Y | Y | Y | Y | Y | Y | Exclude files, but not directories, from the transfer if they are newer than the specified number of seconds added to the source computer's epoch. e.g. "-86400" for newer than a day back.<br/>(--exclude-newer-than {string}) |
3220
+ | exclude_older_than | string | Y | Y | Y | Y | Y | Y | Exclude files, but not directories, from the transfer if they are older than the specified number of seconds added to the source computer's epoch. e.g. "-86400" for older than a day back.<br/>(--exclude-older-than {string}) |
3221
+ | fasp_port | int | Y | Y | Y | Y | Y | Y | Specifies fasp (UDP) port.<br/>(-O {int}) |
3222
+ | fasp_url | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Only used in Faspex.<br/>(&lt;ignored&gt;) |
3223
+ | file_checksum | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Enable checksum reporting for transferred files by specifying the hash to use.<br/>Allowed values: sha-512, sha-384, sha-256, sha1, md5, none<br/>(&lt;ignored&gt;) |
3224
+ | http_fallback | bool<br/>string | Y | Y | Y | Y | Y | Y | When true(1), attempts to perform an HTTP transfer if a FASP transfer cannot be performed.<br/>(-y (conversion){bool}\|{string}) |
3225
+ | http_fallback_port | int | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specifies http port when no cipher is used<br/>(-t {int}) |
3226
+ | https_fallback_port | int | Y | Y | Y | Y | Y | Y | Specifies https port when cipher is used<br/>(-t {int}) |
3227
+ | keepalive | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The session is running in persistent session mode.<br/>(--keepalive) |
3228
+ | lock_min_rate | bool | Y | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3229
+ | lock_min_rate_kbps | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | If true, lock the minimum transfer rate to the value set for min_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3230
+ | lock_rate_policy | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | If true, lock the rate policy to the default value.<br/>(&lt;ignored&gt;) |
3231
+ | lock_target_rate | bool | Y | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3232
+ | lock_target_rate_kbps | bool | Y | Y | Y | Y | Y | Y | If true, lock the target transfer rate to the default value set for target_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3233
+ | min_rate_cap_kbps | int | Y | Y | Y | Y | Y | Y | The highest minimum rate that an incoming transfer can request, in kilobits per second.<br/>Client minimum rate requests that exceed the minimum rate cap are ignored.<br/>The default value of unlimited applies no cap to the minimum rate. (Default: 0)<br/>(&lt;ignored&gt;) |
3234
+ | min_rate_kbps | int | Y | Y | Y | Y | Y | Y | Set the minimum transfer rate in kilobits per second.<br/>(-m {int}) |
3235
+ | move_after_transfer | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The relative path to which the files will be moved after the transfer at the source side. Available as of 3.8.0.<br/>(--move-after-transfer {string}) |
3236
+ | multi_session | int | Y | Y | Y | Y | Y | Y | Use multi-session transfer. max 128.<br/>Each participant on one host needs an independent UDP (-O) port.<br/>Large files are split between sessions only when transferring with resume_policy=none.<br/><br/>(&lt;special&gt;) |
3237
+ | multi_session_threshold | int | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Split files across multiple ascp sessions if their size in bytes is greater than or equal to the specified value.<br/>(0=no file is split)<br/>(--multi-session-threshold {int}) |
3238
+ | obfuscate_file_names | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | &nbsp; | HTTP Gateway obfuscates file names when set to true.<br/>(&lt;ignored&gt;) |
3239
+ | overwrite | string | Y | Y | Y | Y | Y | Y | Overwrite destination files with the source files of the same name.<br/>Allowed values: never, always, diff, older, diff+older<br/>(--overwrite {enum}) |
3240
+ | password | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Password for local Windows user when transfer user associated with node api user is not the same as the one running asperanoded.<br/>Allows impersonating the transfer user and have access to resources (e.g. network shares).<br/>Windows only, node api only.<br/>(&lt;ignored&gt;) |
3241
+ | paths | array | Y | Y | Y | Y | Y | Y | Array of path to the source (required) and a path to the destination (optional).<br/>(&lt;special&gt;) |
3242
+ | precalculate_job_size | bool | Y | Y | Y | Y | Y | Y | Specifies whether to precalculate the job size.<br/>(--precalculate-job-size) |
3243
+ | preserve_access_time | bool | Y | Y | Y | Y | Y | Y | Preserve the source-file access timestamps at the destination.<br/>Because source access times are updated by the transfer operation,<br/>the timestamp that is preserved is the one just before to the transfer.<br/>(--preserve-access-time) |
3244
+ | preserve_acls | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve access control lists.<br/>Allowed values: none, native, metafile<br/>(--preserve-acls {enum}) |
3245
+ | preserve_creation_time | bool | Y | Y | Y | Y | Y | Y | (Windows only) Preserve source-file creation timestamps at the destination.<br/>Only Windows systems retain information about creation time.<br/>If the destination is not a Windows computer, this option is ignored.<br/>(--preserve-creation-time) |
3246
+ | preserve_extended_attrs | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the extended attributes.<br/>Allowed values: none, native, metafile<br/>(--preserve-xattrs {enum}) |
3247
+ | preserve_file_owner_gid | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the group ID for a file owner<br/>(--preserve-file-owner-gid) |
3248
+ | preserve_file_owner_uid | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the user ID for a file owner<br/>(--preserve-file-owner-uid) |
3249
+ | preserve_modification_time | bool | Y | Y | Y | Y | Y | Y | Set the modification time, the last time a file or directory was modified (written), of a transferred file<br/>to the modification of the source file or directory.<br/>Preserve source-file modification timestamps at the destination.<br/>(--preserve-modification-time) |
3250
+ | preserve_remote_acls | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve remote access control lists.<br/>Allowed values: none, native, metafile<br/>(--remote-preserve-acls {enum}) |
3251
+ | preserve_source_access_time | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the time logged for when the source file was accessed<br/>(--preserve-source-access-time) |
3252
+ | preserve_times | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve file timestamps.<br/>(--preserve-times) |
3253
+ | proxy | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specify the address of the Aspera high-speed proxy server.<br/>dnat(s)://[user[:password]@]server:port<br/>Default ports for DNAT and DNATS protocols are 9091 and 9092.<br/>Password, if specified here, overrides the value of environment variable ASPERA_PROXY_PASS.<br/>(--proxy {string}) |
3254
+ | rate_policy | string | Y | Y | Y | Y | Y | Y | The transfer rate policy to use when sharing bandwidth.<br/>Allowed values: low, fair, high, fixed<br/>(--policy {enum}) |
3255
+ | rate_policy_allowed | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | Specifies most aggressive rate policy that is allowed.<br/>Returned by node API.<br/>Allowed values: low, fair, high, fixed<br/>(&lt;ignored&gt;) |
3256
+ | read_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3257
+ | remote_access_key | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The access key ID of the access key that was used to construct the bearer token that is used to authenticate to the remote node.<br/>(&lt;ignored&gt;) |
3258
+ | remote_host | string | Y | Y | Y | Y | Y | Y | IP or fully qualified domain name of the remote server<br/>(--host {string}) |
3259
+ | remote_password | string | Y | Y | Y | Y | Y | Y | SSH session password<br/>(env:ASPERA_SCP_PASS) |
3260
+ | remote_user | string | Y | Y | Y | Y | Y | Y | Remote user. Default value is "xfer" on node or connect.<br/>(--user {string}) |
3261
+ | remove_after_transfer | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3262
+ | remove_empty_directories | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specifies whether to remove empty directories.<br/>(--remove-empty-directories) |
3263
+ | remove_empty_source_directory | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Remove empty source subdirectories and remove the source directory itself, if empty<br/>(--remove-empty-source-directory) |
3264
+ | remove_skipped | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Y | Must also have remove_after_transfer set to true, Defaults to false, if true, skipped files will be removed as well.<br/>(--remove-skipped) |
3265
+ | resume_policy | string | Y | Y | Y | Y | Y | Y | If a transfer is interrupted or fails to finish, resume without re-transferring the whole files.<br/>Allowed values: none, attrs, sparse_csum, full_csum<br/>(-k (conversion){enum}) |
3266
+ | retry_duration | string<br/>int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | Specifies how long to wait before retrying transfer. (e.g. "5min")<br/>(&lt;ignored&gt;) |
3267
+ | source_root | string | Y | Y | Y | Y | Y | Y | Path to be prepended to each source path.<br/>This is either a conventional path or it can be a URI but only if there is no root defined.<br/>(--source-prefix64 (conversion){string}) |
3268
+ | source_root_id | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The file ID of the source root directory. Required when using Bearer token auth for the source node.<br/>(&lt;ignored&gt;) |
3269
+ | src_base | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specify the prefix to be stripped off from each source object.<br/>The remaining portion of the source path is kept intact at the destination.<br/>Special care must be taken when used with cloud storage.<br/>(--src-base64 (conversion){string}) |
3270
+ | ssh_args | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Array of arguments to pass to SSH. Use with caution.<br/>(&lt;ignored&gt;) |
3271
+ | ssh_port | int | Y | Y | Y | Y | Y | Y | Specifies SSH (TCP) port. Default: local:22, other:33001<br/>(-P {int}) |
3272
+ | ssh_private_key | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Private key used for SSH authentication.<br/>Shall look like: -----BEGIN RSA PRIV4TE KEY-----\nMII...<br/>Note the JSON encoding: \n for newlines.<br/>(env:ASPERA_SCP_KEY) |
3273
+ | ssh_private_key_passphrase | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The passphrase associated with the transfer user's SSH private key. Available as of 3.7.2.<br/>(env:ASPERA_SCP_PASS) |
3274
+ | sshfp | string | Y | Y | Y | Y | Y | Y | Check it against server SSH host key fingerprint<br/>(--check-sshfp {string}) |
3275
+ | symlink_policy | string | Y | Y | Y | Y | Y | Y | Handle source side symbolic links<br/>Allowed values: follow, copy, copy+force, skip<br/>(--symbolic-links {enum}) |
3276
+ | tags | hash | Y | Y | Y | Y | Y | Y | Metadata for transfer as JSON. Key `aspera` is reserved. Key `aspera.xfer_retry` specified a retry timeout for node api initiated transfers.<br/>(--tags64 (conversion){hash}) |
3277
+ | target_rate_cap_kbps | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | Returned by upload/download_setup node API.<br/>(&lt;ignored&gt;) |
3278
+ | target_rate_kbps | int | Y | Y | Y | Y | Y | Y | Specifies desired speed for the transfer.<br/>(-l {int}) |
3279
+ | target_rate_percentage | string | Y | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3280
+ | title | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | Title of the transfer<br/>(&lt;ignored&gt;) |
3281
+ | token | string | Y | Y | Y | Y | Y | Y | Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN) |
3282
+ | use_ascp4 | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | specify version of protocol<br/>(&lt;special&gt;) |
3283
+ | use_system_ssh | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | TODO, comment...<br/>(&lt;ignored&gt;) |
3284
+ | write_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3285
+ | wss_enabled | bool | Y | Y | Y | Y | Y | Y | Server has Web Socket service enabled<br/>(&lt;special&gt;) |
3286
+ | wss_port | int | Y | Y | Y | Y | Y | Y | TCP port used for websocket service feed<br/>(&lt;special&gt;) |
3287
+ | xfer_max_retries | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | maximum number of retries, for node API initiated transfers. Shall not exceed aspera.conf `transfer_manager_max_retries` (default 5).<br/>(&lt;ignored&gt;) |
3169
3288
 
3170
3289
  #### Destination folder for transfers
3171
3290
 
@@ -3561,9 +3680,9 @@ where:
3561
3680
  | Name | Type | Description |
3562
3681
  |--------|------|-------------|
3563
3682
  |count |int |Number of files<br/>Mandatory|
3564
- |file |string|Basename for files<br>Default: `file`|
3565
- |size |int |Size of first file.<br>Default: 0|
3566
- |inc |int |Increment applied to determine next file size<br>Default: 0|
3683
+ |file |string|Basename for files<br/>Default: `file`|
3684
+ |size |int |Size of first file.<br/>Default: 0|
3685
+ |inc |int |Increment applied to determine next file size<br/>Default: 0|
3567
3686
  |seq |enum |Sequence in determining next file size<br/>Values: random, sequential<br/>Default: sequential|
3568
3687
  |buf_init|enum |How source data is initialized<br/>Option 'none' is not allowed for downloads.<br/>Values:none, zero, random<br/>Default:zero|
3569
3688
 
@@ -3610,7 +3729,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=seque
3610
3729
  ```text
3611
3730
  ascli -h
3612
3731
  NAME
3613
- ascli -- a command line tool for Aspera Applications (v4.20.0)
3732
+ ascli -- a command line tool for Aspera Applications (v4.21.1)
3614
3733
 
3615
3734
  SYNOPSIS
3616
3735
  ascli COMMANDS [OPTIONS] [ARGS]
@@ -3649,8 +3768,7 @@ OPTIONS: global
3649
3768
  --select=VALUE Select only some items in lists: column, value (Hash, Proc)
3650
3769
  --table-style=VALUE Table display style (Hash)
3651
3770
  --flat-hash=ENUM (Table) Display deep values as additional keys: no, [yes]
3652
- --transpose-single=ENUM (Table) Single object fields output vertically: no, [yes]
3653
- --multi-table=ENUM (Table) Each element of a table are displayed as a table: [no], yes
3771
+ --multi-single=ENUM (Table) Control how object list is displayed as single table, or multiple objects: [no], yes, single
3654
3772
  --show-secrets=ENUM Show secrets on command output: [no], yes
3655
3773
  --image=VALUE Options for image display (Hash)
3656
3774
  -h, --help Show this message
@@ -3703,11 +3821,11 @@ OPTIONS: global
3703
3821
  --to-folder=VALUE Destination folder for transferred files
3704
3822
  --sources=VALUE How list of transferred files is provided (@args,@ts,Array)
3705
3823
  --src-type=ENUM Type of file list: [list], pair
3706
- --transfer=ENUM Type of transfer agent: node, [direct], alpha, httpgw, connect, trsdk
3824
+ --transfer=ENUM Type of transfer agent: node, [direct], alpha, transferd, httpgw, connect
3707
3825
  --transfer-info=VALUE Parameters for transfer agent (Hash)
3708
3826
 
3709
3827
  COMMAND: config
3710
- SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings test vault wizard
3828
+ SUBCOMMANDS: ascp check_update coffee detect documentation download echo email_test file folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings test tokens transferd vault wizard
3711
3829
 
3712
3830
 
3713
3831
  COMMAND: shares
@@ -4018,7 +4136,7 @@ ascli aoc user profile show
4018
4136
  Optionally, it is possible to create a new organization-specific integration, i.e. client application identification.
4019
4137
  For this, specify the option: `--use-generic-client=no`.
4020
4138
 
4021
- If you already know the application, and want to limit the detection to it, provide url and plugin name:
4139
+ If you already know the application, and want to limit the detection to it, provide URL and plugin name:
4022
4140
 
4023
4141
  ```bash
4024
4142
  ascli config wizard _your_instance_ aoc
@@ -4036,7 +4154,7 @@ Several types of OAuth authentication are supported:
4036
4154
 
4037
4155
  - JSON Web Token (JWT) : authentication is secured by a private key (recommended for `ascli`)
4038
4156
  - Web based authentication : authentication is made by user using a browser
4039
- - URL Token : external users authentication with url tokens (public links)
4157
+ - URL Token : external users authentication with URL tokens (public links)
4040
4158
 
4041
4159
  The authentication method is controlled by option `auth`.
4042
4160
 
@@ -4781,7 +4899,7 @@ So, for example, the creation of a node using ATS in IBM Cloud looks like (see o
4781
4899
  First, Retrieve the ATS node address
4782
4900
 
4783
4901
  ```bash
4784
- ascli aoc admin ats cluster show --cloud=softlayer --region=eu-de --fields=transfer_setup_url --format=csv --transpose-single=no
4902
+ ascli aoc admin ats cluster show --cloud=softlayer --region=eu-de --fields=transfer_setup_url --format=csv
4785
4903
  ```
4786
4904
 
4787
4905
  Then use the returned address for the `url` key to actually create the AoC Node entity:
@@ -4845,6 +4963,20 @@ If a user recipient (email) is not already registered and the workspace allows e
4845
4963
  - if the option `new_user_option` is `@json:{"package_contact":true}` (default), then a public link is sent and the external user does not need to create an account
4846
4964
  - if the option `new_user_option` is `@json:{}`, then external users are invited to join the workspace
4847
4965
 
4966
+ #### List packages
4967
+
4968
+ By default, when using `aoc packages list`, the following `query` is performed:
4969
+
4970
+ | query parameter | value |
4971
+ |----------------------------|-------|
4972
+ | `archived` | `false` |
4973
+ | `has_content` | `true` |
4974
+ | `received` | `true` |
4975
+ | `completed` | `true` |
4976
+ | `workspace_id` | based on current workspace |
4977
+ | `exclude_dropbox_packages` | `true` or `false` depending if watching a dropbox|
4978
+ | `dropbox_id` | set accoring to `dropbox_name` |
4979
+
4848
4980
  #### Example: Send a package with one file to two users, using their email
4849
4981
 
4850
4982
  ```bash
@@ -4886,7 +5018,7 @@ ascli aoc packages list --query=@json:'{"dropbox_name":"My Shared Inbox","archiv
4886
5018
  Using shared inbox identifier: first retrieve the id of the shared inbox, and then list packages with the appropriate filter.
4887
5019
 
4888
5020
  ```bash
4889
- shared_box_id=$(ascli aoc packages shared_inboxes show --name='My Shared Inbox' --format=csv --display=data --fields=id --transpose-single=no)
5021
+ shared_box_id=$(ascli aoc packages shared_inboxes show --name='My Shared Inbox' --format=csv --display=data --fields=id)
4890
5022
  ```
4891
5023
 
4892
5024
  ```bash
@@ -4938,6 +5070,26 @@ ascli aoc packages recv ALL --once-only=yes --lock-port=12345
4938
5070
 
4939
5071
  Typically, one would execute this command on a regular basis, using the method of your choice: see [Scheduler](#scheduler).
4940
5072
 
5073
+ ### Example: Content of a received Package
5074
+
5075
+ Some `node` operations are available for a package, such as `browse` and `find`.
5076
+
5077
+ To list the content of a package, use command `packages browse <package id> <folder>`:
5078
+
5079
+ ```bash
5080
+ ascli aoc package browse my5CnbeWng /
5081
+ ```
5082
+
5083
+ To list recursively, use command `find`.
5084
+
5085
+ To download only some of the files listed in the package, just add the path of the files on the command line.
5086
+
5087
+ For advanced users, it's also possible to pipe node information for the package and use node operations:
5088
+
5089
+ ```bash
5090
+ ascli aoc package node_info <package id here> / --format=json --show-secrets=yes --display=data | ascli node -N --preset=@json:@stdin: access_key do self browse /
5091
+ ```
5092
+
4941
5093
  ### Files
4942
5094
 
4943
5095
  The Files application presents a **Home** folder to users in a given workspace.
@@ -5092,7 +5244,7 @@ For instructions, refer to section `find` for plugin `node`.
5092
5244
 
5093
5245
  ```bash
5094
5246
  admin analytics transfers nodes
5095
- admin analytics transfers organization --query=@json:'{"status":"completed","direction":"receive"}' --notify-to=my_email_external --notify-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
5247
+ admin analytics transfers organization --query=@json:'{"status":"completed","direction":"receive","limit":2}' --notify-to=my_email_external --notify-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
5096
5248
  admin analytics transfers users --once-only=yes
5097
5249
  admin application list
5098
5250
  admin ats access_key create --cloud=aws --region=my_region --params=@json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
@@ -5117,8 +5269,10 @@ admin group list
5117
5269
  admin kms_profile list
5118
5270
  admin node do %name:my_node_name --secret=my_ak_secret browse /
5119
5271
  admin node do %name:my_node_name --secret=my_ak_secret delete /folder1
5272
+ admin node do %name:my_node_name --secret=my_ak_secret delete /folder_sub
5120
5273
  admin node do %name:my_node_name --secret=my_ak_secret mkdir /folder1
5121
- admin node do %name:my_node_name --secret=my_ak_secret v3 access_key create @json:'{"id":"testsub1","storage":{"path":"/folder1"}}'
5274
+ admin node do %name:my_node_name --secret=my_ak_secret mkdir /folder_sub
5275
+ admin node do %name:my_node_name --secret=my_ak_secret v3 access_key create @json:'{"id":"testsub1","storage":{"path":"/folder_sub"}}'
5122
5276
  admin node do %name:my_node_name --secret=my_ak_secret v3 access_key delete testsub1
5123
5277
  admin node do %name:my_node_name --secret=my_ak_secret v3 events
5124
5278
  admin node do %name:my_node_name delete test_shared_folder
@@ -5189,13 +5343,14 @@ files v3 info
5189
5343
  gateway --pid-file=pid_aocfxgw https://localhost:12345/aspera/faspex &
5190
5344
  org --url=my_public_link_recv_from_aoc_user
5191
5345
  organization
5192
- packages browse package_id3 /contents
5346
+ packages browse package_id3 /
5193
5347
  packages list
5194
5348
  packages list --query=@json:'{"dropbox_name":"my_shared_inbox_name","sort":"-received_at","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false}'
5195
5349
  packages receive ALL --once-only=yes --to-folder=. --lock-port=12345
5196
5350
  packages receive ALL --once-only=yes --to-folder=. --lock-port=12345 --query=@json:'{"dropbox_name":"my_shared_inbox_name","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false,"include_draft":false}' --ts=@json:'{"resume_policy":"sparse_csum","target_rate_kbps":50000}'
5197
5351
  packages receive INIT --once-only=yes --query=@json:'{"dropbox_name":"my_shared_inbox_name"}'
5198
5352
  packages receive package_id3 --to-folder=.
5353
+ packages receive package_id3 --to-folder=. /
5199
5354
  packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_meta"],"metadata":[{"input_type":"single-text","name":"Project Id","values":["123"]},{"input_type":"single-dropdown","name":"Type","values":["Opt2"]},{"input_type":"multiple-checkbox","name":"CheckThose","values":["Check1","Check2"]},{"input_type":"date","name":"Optional Date","values":["2021-01-13T15:02:00.000Z"]}]}' test_file.bin
5200
5355
  packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_meta"],"metadata":{"Project Id":"456","Type":"Opt2","CheckThose":["Check1","Check2"],"Optional Date":"2021-01-13T15:02:00.000Z"}}' test_file.bin
5201
5356
  packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_meta"],"metadata":{"Type":"Opt2","CheckThose":["Check1","Check2"],"Optional Date":"2021-01-13T15:02:00.000Z"}}' test_file.bin
@@ -5290,7 +5445,7 @@ ascli ats api_key create
5290
5445
 
5291
5446
  ```output
5292
5447
  +--------+----------------------------------------------+
5293
- | key | value |
5448
+ | field | value |
5294
5449
  +--------+----------------------------------------------+
5295
5450
  | id | ats_XXXXXXXXXXXXXXXXXXXXXXXX |
5296
5451
  | secret | YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY |
@@ -5392,7 +5547,7 @@ delete my_inside_folder
5392
5547
  delete my_upload_folder/to.delete
5393
5548
  df
5394
5549
  download my_inside_folder/test_file.bin --to-folder=. --transfer-info=@json:'{"wss":false,"resume":{"iter_max":1}}'
5395
- download my_inside_folder/test_file.bin --to-folder=my_upload_folder --transfer=node
5550
+ download my_large_file --to-folder=my_upload_folder --transfer=node --ts=@json:'{"resume_policy":"none"}'
5396
5551
  du /
5397
5552
  health transfer --to-folder=my_upload_folder --format=nagios
5398
5553
  info
@@ -5410,10 +5565,10 @@ upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:
5410
5565
  upload 'test_file.bin' --to-folder=my_inside_folder --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":100000}' --transfer-info=@json:'{"spawn_delay_sec":2.5,"multi_incr_udp":false}' --progress-bar=yes
5411
5566
  upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-list","filelist.txt"]}' --to-folder=my_inside_folder
5412
5567
  upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-pair-list","file_pair_list.txt"]}'
5413
- upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destination":"my_inside_folder/other_name_4"}]}' --transfer=trsdk
5568
+ upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destination":"my_inside_folder/other_name_4"}]}' --transfer=transferd
5414
5569
  upload --src-type=pair 'test_file.bin' my_inside_folder/other_name_2 --notify-to=my_email_external --transfer-info=@json:'{"ascp_args":["-l","100m"]}'
5415
- upload --src-type=pair --sources=@json:'["test_file.bin","my_inside_folder/other_name_3"]' --transfer-info=@json:'{"quiet":false}' --ts=@json:'{"use_ascp4":true}' --progress=no
5416
- upload --src-type=pair test_file.bin my_upload_folder/other_name_5 --ts=@json:'{"cipher":"aes-192-gcm","content_protection":"encrypt","content_protection_password":"my_secret_here","cookie":"biscuit","create_dir":true,"delete_before_transfer":false,"delete_source":false,"exclude_newer_than":1,"exclude_older_than":10000,"fasp_port":33001,"http_fallback":false,"multi_session":0,"overwrite":"diff+older","precalculate_job_size":true,"preserve_access_time":true,"preserve_creation_time":true,"rate_policy":"fair","resume_policy":"sparse_csum","symlink_policy":"follow"}'
5570
+ upload --src-type=pair --sources=@json:'["test_file.bin","my_inside_folder/other_name_3"]' --transfer-info=@json:'{"quiet":false}' --progress=no
5571
+ upload --src-type=pair test_file.bin my_upload_folder/other_name_5 --ts=@json:'{"cipher":"aes-192-gcm","content_protection":"encrypt","content_protection_password":"my_secret_here","cookie":"biscuit","create_dir":true,"delete_before_transfer":false,"delete_source":false,"exclude_newer_than":"-1","exclude_older_than":"-10000","fasp_port":33001,"http_fallback":false,"multi_session":0,"overwrite":"diff+older","precalculate_job_size":true,"preserve_access_time":true,"preserve_creation_time":true,"rate_policy":"fair","resume_policy":"sparse_csum","symlink_policy":"follow"}'
5417
5572
  upload --to-folder=my_upload_folder/target_hot --lock-port=12345 --transfer-info=@json:'{"ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","source_hot"]}' source_hot
5418
5573
  ```
5419
5574
 
@@ -5523,6 +5678,8 @@ This plugin gives access to capabilities provided by the HSTS node API.
5523
5678
  The authentication is `username` and `password` or `access_key` and `secret` through options: `username` and `password`.
5524
5679
 
5525
5680
  > **Note:** Capabilities of this plugin are used in other plugins which access to the node API, such as `aoc`, `ats`, `shares`.
5681
+ >
5682
+ > **Note:** This plugin can be used with any type of **Aspera Node**, either on-prem or ATS, provided that you have node api credentials. Those credentials can be either Node API user or Access Key (e.g. on ATS).
5526
5683
 
5527
5684
  ### File Operations
5528
5685
 
@@ -5792,7 +5949,7 @@ Bearer tokens are part of the **gen4/access key** API.
5792
5949
  It follows the model of OAuth 2.
5793
5950
  For example, they are used in Aspera on Cloud.
5794
5951
  This is also available for developers for any application integrating Aspera.
5795
- In this API, files, users and groups are identified by an id (a String, e.g. `"125"`, not necessarily numerical).
5952
+ In this API, files, users and groups are identified by an id (a `String`, e.g. `"125"`, not necessarily numerical).
5796
5953
 
5797
5954
  Bearer tokens are typically generated by the authentication application and then recognized by the node API.
5798
5955
  A bearer token is authorized on the node by creating `permissions` on a **folder**.
@@ -5899,7 +6056,7 @@ Using `ascli`, an access key can be created using the `access_key create` on the
5899
6056
 
5900
6057
  Now, let's assume we are the user, the only information received are:
5901
6058
 
5902
- - The url of the node API
6059
+ - The URL of the node API
5903
6060
  - A Bearer token
5904
6061
  - A file `id` for which we have access
5905
6062
 
@@ -5923,7 +6080,6 @@ access_key do my_ak_name delete test_nd_ak3
5923
6080
  access_key do my_ak_name download test_nd_ak3 --to-folder=.
5924
6081
  access_key do my_ak_name find my_test_folder
5925
6082
  access_key do my_ak_name find my_test_folder @ruby:'->(f){f["name"].end_with?(".jpg")}'
5926
- access_key do my_ak_name find my_test_folder exec:'f["name"].end_with?(".jpg")'
5927
6083
  access_key do my_ak_name mkdir /tst_nd_ak
5928
6084
  access_key do my_ak_name node_info /
5929
6085
  access_key do my_ak_name rename /tst_nd_ak test_nd_ak2
@@ -5968,7 +6124,7 @@ slash
5968
6124
  space /
5969
6125
  ssync bandwidth %name:my_node_sync
5970
6126
  ssync counters %name:my_node_sync
5971
- ssync create @json:'{"configuration":{"name":"my_node_sync","local":{"path":"my_local_path"},"remote":{"host":"my_host","port":my_port,"user":"my_username","pass":"my_password_here","path":"my_remote_path"}}}'
6127
+ ssync create @json:'{"configuration":{"name":"my_node_sync","local":{"path":"my_local_path_real"},"remote":{"host":"my_host","port":my_port,"user":"my_username","pass":"my_password_here","path":"my_remote_path"}}}'
5972
6128
  ssync delete %name:my_node_sync
5973
6129
  ssync files %name:my_node_sync
5974
6130
  ssync list
@@ -6073,16 +6229,16 @@ Activation is in two steps:
6073
6229
  - Click on `Create` Button
6074
6230
  - Take note of Client Id (and Client Secret, but not used in current version)
6075
6231
 
6076
- - The user uses a private key and sets the public key in his faspex 5 profile
6232
+ - The user will authenticate with a private key and set the public key in his faspex 5 profile.
6077
6233
 
6234
+ **Note:** If you don't have a private key refer to section [Private Key](#private-key) to generate one.
6235
+
6078
6236
  This operation is done by each user using the CLI.
6079
6237
 
6080
6238
  - As user, click on the user logo, left to the app switcher on top right.
6081
6239
  - Select `Account Settings`
6082
6240
  - on the bottom in the text field: `Public key in PEM format` paste the **public** key corresponding to the private key used by the user.
6083
6241
 
6084
- **Note:** If you don't have any refer to section [Private Key](#private-key)
6085
-
6086
6242
  Then use these options:
6087
6243
 
6088
6244
  ```text
@@ -6152,7 +6308,7 @@ admin contacts list
6152
6308
  admin distribution_lists create @json:'{"name":"test4","contacts":[{"name":"john@example.com"}]}'
6153
6309
  admin distribution_lists delete %name:test4
6154
6310
  admin distribution_lists list --query=@json:'{"type":"global"}'
6155
- admin event app
6311
+ admin event app --query=@json:'{"max":20}'
6156
6312
  admin event web
6157
6313
  admin jobs list --query=@json:'{"job_type":"email","status":"failed"}' --fields=id,error_desc
6158
6314
  admin metadata_profiles list
@@ -6193,7 +6349,7 @@ packages show --box=my_shared_box_name package_box_id1
6193
6349
  packages show --box=my_workgroup --group-type=workgroups workgroup_package_id1
6194
6350
  packages show f5_p31
6195
6351
  packages status f5_p31
6196
- postprocessing --pid-file=pid_f5_postproc @json:'{"url":"https://localhost:8443/domain","processing":{"script_folder":""}}' &
6352
+ postprocessing --pid-file=pid_f5_postproc @json:'{"url":"http://localhost:8088/asclihook","processing":{"script_folder":""}}' &
6197
6353
  shared browse %name:my_src
6198
6354
  shared list
6199
6355
  shared_folders browse %name:my_shared_folder_name
@@ -6230,13 +6386,23 @@ To select another inbox, use option `box` with one of the following values:
6230
6386
 
6231
6387
  ### Faspex 5: Send a package
6232
6388
 
6233
- The `Hash` creation **Command Parameter** provided to command `faspex5 packages send [extended value: Hash with package info ] [files...]` corresponds to the Faspex 5 API: `POST /packages`.
6389
+ A package can be sent with the command:
6234
6390
 
6235
- The interface is the one of the API (Refer to Faspex5 API documentation, or look at request in browser).
6391
+ ```bash
6392
+ ascli faspex5 packages send [extended value: Hash with package info ] [files...]
6393
+ ```
6394
+
6395
+ The `Hash` creation **Command Parameter** provided to command corresponds to the Faspex 5 API: `POST /packages` (refer to the API reference for a full list of parameters, or look at request in browser).
6236
6396
 
6237
6397
  Required fields are `title` and `recipients`.
6238
6398
 
6239
- Example using `@json:` format:
6399
+ Example (assuming a default preset is created for the connection information):
6400
+
6401
+ ```bash
6402
+ ascli faspex5 packages send @json:'{"title":"some title","recipients":["user@example.com"]}' mybygfile1
6403
+ ```
6404
+
6405
+ Longer example for the ayload of `@json:`:
6240
6406
 
6241
6407
  ```json
6242
6408
  {"title":"some title","recipients":[{"recipient_type":"user","name":"user@example.com"}]}
@@ -6320,7 +6486,7 @@ To list the content of a package, use command `faspex5 packages browse /`.
6320
6486
 
6321
6487
  Option `query` is available.
6322
6488
 
6323
- To list recursively add option `--query=@json:{"recursive":true}`.
6489
+ To list recursively add option `--query=@json:'{"recursive":true}'`.
6324
6490
 
6325
6491
  > **Note:** Option `recursive` makes recursive API calls, so it can take a long time on large packages.
6326
6492
 
@@ -6393,15 +6559,15 @@ ascli faspex5 admin shared create @json:'{"name":"the shared inbox","metadata_pr
6393
6559
  ### Faspex 5: List content in Shared folder and send package from remote source
6394
6560
 
6395
6561
  ```bash
6396
- ascli faspex5 shared_folders list
6562
+ ascli faspex5 shared_folders list --fields=id,name
6397
6563
  ```
6398
6564
 
6399
6565
  ```markdown
6400
- +----+----------+---------+-----+
6401
- | id | name | node_id | ... |
6402
- +----+----------+---------+-----+
6403
- | 3 | partages | 2 | ... |
6404
- +----+----------+---------+-----+
6566
+ +----+----------+
6567
+ | id | name |
6568
+ +----+----------+
6569
+ | 3 | partages |
6570
+ +----+----------+
6405
6571
  ```
6406
6572
 
6407
6573
  ```bash
@@ -6444,13 +6610,13 @@ Private invitations are for internal users, provide the user or shared inbox ide
6444
6610
 
6445
6611
  > **Note:** Operation requires admin level.
6446
6612
 
6447
- Automated cleanup period can be displayed with:
6613
+ The default automated cleanup period can be displayed with:
6448
6614
 
6449
6615
  ```bash
6450
6616
  ascli faspex5 admin configuration show --fields=days_before_deleting_package_records
6451
6617
  ```
6452
6618
 
6453
- This parameter can also be modified, for example:
6619
+ This parameter can be modified with:
6454
6620
 
6455
6621
  ```bash
6456
6622
  ascli faspex5 admin configuration modify @json:'{"days_before_deleting_package_records":30}'
@@ -6462,6 +6628,8 @@ To start package purge, i.e. permanently remove packages marked for deletion old
6462
6628
  ascli faspex5 admin clean_deleted
6463
6629
  ```
6464
6630
 
6631
+ > **Note:** The expiration perid taken by default is the one from `admin configuration show`. To use a different period than the default, specify it on command line with: `@json:'{"days_before_deleting_package_records":15}'`
6632
+
6465
6633
  To delete all packages, one can use the following command:
6466
6634
 
6467
6635
  ```bash
@@ -6469,12 +6637,32 @@ ascli faspex5 packages list --box=ALL --format=yaml --fields=id | ascli faspex5
6469
6637
  ```
6470
6638
 
6471
6639
  > **Note:** Above command will mark all packages for deletion, and will be permanently removed after the configured period (`clean_deleted` command).
6472
- > It is possible to add a filter to the list command to only delete packages matching some criteria, e.g. using `--select=@ruby:`.
6640
+ > It is possible to add a filter to the list command to only delete packages matching some criteria, e.g. using `--select=@ruby:'->(p){...}'` on `packages list`.
6641
+
6642
+ ### Faspex 5: Admin: Unlock user
6643
+
6644
+ To unlock a user, you can de-activate and then re-activate the user:
6645
+
6646
+ ```bash
6647
+ ascli faspex5 admin accounts modify %name:some.user@example.com @json:'{"account_activated":false}'
6648
+ ```
6649
+
6650
+ ```bash
6651
+ ascli faspex5 admin accounts modify %name:some.user@example.com @json:'{"account_activated":true}'
6652
+ ```
6653
+
6654
+ > **Note:** here we use the convenient percent selector, but the numerical if can be used as well.
6655
+
6656
+ To send a password reset link to a user, use command `reset_password` on the `account`.
6473
6657
 
6474
6658
  ### Faspex 5: Faspex 4-style postprocessing
6475
6659
 
6476
- `ascli` provides command `postprocessing` in plugin `faspex5` to emulate Faspex 4 postprocessing.
6477
- It implements Faspex 5 web hooks, and calls a local script with the same environment as Faspex 4.
6660
+ The command command `ascli faspex5 postprocessing` emulates Faspex 4 postprocessing script execution in Faspex 5.
6661
+ It implements Faspex 5 web hooks and calls a script with the same environment variables as set by Faspex 4.
6662
+ Environment variables at set to the values provided by the web hook which are the same as Faspex 4 postprocessing.
6663
+
6664
+ It allows to quickly migrate workflows to Faspex 5 while preserving scripts.
6665
+ Nevertheless, on long term, a native approach shall be considered, such as using Aspera Orchestrator or other workflow engine.
6478
6666
 
6479
6667
  It is invoked like this:
6480
6668
 
@@ -6482,41 +6670,46 @@ It is invoked like this:
6482
6670
  ascli faspex5 postprocessing @json:'{"url":"http://localhost:8080/processing"}'
6483
6671
  ```
6484
6672
 
6485
- The following parameters are supported:
6673
+ The following parameters are supported in the extended value `Hash`:
6486
6674
 
6487
- | parameter | type | default | description |
6488
- |----------------------------|---------|------------------------|-----------------------------------------------------|
6489
- | url | string | http://localhost:8080 | Base url on which requests are listened | <!-- markdownlint-disable-line -->
6490
- | certificate | hash | nil | Certificate information (if HTTPS) |
6491
- | certificate.key | string | nil | Path to private key file |
6492
- | certificate.cert | string | nil | Path to certificate |
6493
- | certificate.chain | string | nil | Path to intermediary certificates |
6494
- | processing | hash | nil | Behavior of post processing |
6495
- | processing.script_folder | string | . | Prefix added to script path |
6496
- | processing.fail_on_error | bool | false | Fail if true and process exit with non zero |
6497
- | processing.timeout_seconds | integer | 60 | Max. execution time before script is killed |
6675
+ | parameter | type | default | description |
6676
+ |----------------------------|----------|---------|-----------------------------------------------------|
6677
+ | url | `String` | `http://localhost:8080` | Base URL on which requests are listened, a path can be provided. | <!-- markdownlint-disable-line -->
6678
+ | certificate | `Hash` | nil | Certificate information (if URL is HTTPS) |
6679
+ | certificate.key | `String` | nil | Path to private key file |
6680
+ | certificate.cert | `String` | nil | Path to certificate |
6681
+ | certificate.chain | `String` | nil | Path to certificate chain |
6682
+ | processing | `Hash` | nil | Behavior of post processing |
6683
+ | processing.script_folder | `String` | . | Prefix added to script path |
6684
+ | processing.fail_on_error | `Bool` | false | Fail if true and process exits with non zero code |
6685
+ | processing.timeout_seconds | `Integer`| 60 | Max. execution time before script is killed |
6498
6686
 
6499
- Parameter `url` defines:
6687
+ Parameter `url` (base URL) defines:
6500
6688
 
6501
6689
  - If `http` or `https` is used
6502
- - The local port number
6503
- - The **base path**, i.e. the path under which requests are received.
6690
+ - The local port number (default 443 for HTTPS, 80 for HTTP)
6691
+ - The **base path**, i.e. the path under which requests are received, if a reverse proxy is used this can be used to route.
6504
6692
 
6505
6693
  When a request is received the following happens:
6506
6694
 
6507
- - The processor get the path of the url called
6508
- - It removes the **base path**
6695
+ - `ascli` gets the path of the URL called
6696
+ - It removes the **base path** of base URL.
6509
6697
  - It prepends it with the value of `script_folder`
6510
6698
  - It executes the script
6511
6699
  - Upon success, a success code is returned
6512
6700
 
6513
- In Faspex 5, configure like this:
6701
+ For example:
6514
6702
 
6515
- **Webhook endpoint URI** : `http://localhost:8080/processing/script1.sh`
6703
+ The base URL is defined as: `http://localhost:8080/processing`.
6704
+ The parameter `script_folder` is set to `/opt/scripts`
6516
6705
 
6517
- Then, the postprocessing script executed will be `script1.sh`.
6706
+ In Faspex 5, the URL of the webhook endpoint shall be reachable from within Faspex containers.
6707
+ For example, if `ascli` in running in the base host, the URL hostname shall not be localhost, as this refers to the local address inside Faspex container.
6708
+ Instead, one can specify the IP address of the host or `host.containers.internal`.
6518
6709
 
6519
- Environment variables at set to the values provided by the web hook which are the same as Faspex 4 postprocessing.
6710
+ **Webhook endpoint URI** : `http://host.containers.internal:8080/processing/script1.sh`
6711
+
6712
+ Then the postprocessing script executed will be `/opt/scripts/script1.sh`.
6520
6713
 
6521
6714
  ### Faspex 5: Faspex 4 Gateway
6522
6715
 
@@ -6524,7 +6717,7 @@ Environment variables at set to the values provided by the web hook which are th
6524
6717
 
6525
6718
  For legacy faspex client applications that use the `send` API (only) of Faspex v4, the command `gateway` provides the capability to present an API compatible with Faspex 4, and it will call the Faspex 5 API.
6526
6719
 
6527
- It takes a single argument which is the url at which the gateway will be located (locally):
6720
+ It takes a single argument which is the URL at which the gateway will be located (locally):
6528
6721
 
6529
6722
  ```bash
6530
6723
  ascli faspex5 gateway https://localhost:12345/aspera/faspex
@@ -6551,6 +6744,8 @@ curl -H "Authorization: $(ascli ascli bearer)" https://faspex5.example.com/asper
6551
6744
 
6552
6745
  ## Plugin: `faspex`: IBM Aspera Faspex v4
6553
6746
 
6747
+ > **Note:** Faspex v4 is end of support since Sept. 30th, 2024. So this plugin for faspex v4 is deprecated. If you still need to use Faspex4, then use `ascli` version 4.19.0 or earlier.
6748
+ >
6554
6749
  > **Note:** For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
6555
6750
 
6556
6751
  This plugin uses APIs versions 3 Faspex v4.
@@ -6846,7 +7041,7 @@ If you don't have credentials but have access to the IBM Cloud console, then use
6846
7041
  If you have those parameters already, then following options shall be provided:
6847
7042
 
6848
7043
  - `bucket` bucket name
6849
- - `endpoint` storage endpoint url, e.g. `https://s3.hkg02.cloud-object-storage.appdomain.cloud`
7044
+ - `endpoint` storage endpoint URL, e.g. `https://s3.hkg02.cloud-object-storage.appdomain.cloud`
6850
7045
  - `apikey` API Key
6851
7046
  - `crn` resource instance id
6852
7047
 
@@ -7281,6 +7476,7 @@ If the preview generator does not have access to files on the file system (it is
7281
7476
 
7282
7477
  ```bash
7283
7478
  check --skip-types=office
7479
+ events --once-only=yes --skip-types=office --log-level=info
7284
7480
  scan --scan-id=1 --skip-types=office --log-level=info --file-access=remote --ts=@json:'{"target_rate_kbps":1000000}'
7285
7481
  scan --skip-types=office --log-level=info
7286
7482
  show --base=test my_docx
@@ -7385,7 +7581,7 @@ Interesting `ascp` features are found in its arguments: (see `ascp` manual):
7385
7581
 
7386
7582
  > **Note:** `ascli` takes transfer parameters exclusively as a [**transfer-spec**](#transfer-specification), with `ts` option.
7387
7583
  >
7388
- > **Note:** Most, but not all, native `ascp` arguments are available as standard [**transfer-spec**](#transfer-specification) parameters.
7584
+ > **Note:** Usual native `ascp` arguments are available as standard [**transfer-spec**](#transfer-specification) parameters, but not special or advanced options.
7389
7585
  >
7390
7586
  > **Note:** Only for the [`direct`](#agent-direct) transfer agent (not others, like connect or node), native `ascp` arguments can be provided with parameter `ascp_args` of option `transfer_info` .
7391
7587