aspera-cli 4.16.0 → 4.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +50 -19
  4. data/CONTRIBUTING.md +3 -1
  5. data/README.md +965 -793
  6. data/bin/asession +29 -21
  7. data/lib/aspera/{fasp/agent_alpha.rb → agent/alpha.rb} +26 -25
  8. data/lib/aspera/{fasp/agent_base.rb → agent/base.rb} +15 -12
  9. data/lib/aspera/{fasp/agent_connect.rb → agent/connect.rb} +13 -11
  10. data/lib/aspera/{fasp/agent_direct.rb → agent/direct.rb} +49 -53
  11. data/lib/aspera/{fasp/agent_httpgw.rb → agent/httpgw.rb} +20 -19
  12. data/lib/aspera/{fasp/agent_node.rb → agent/node.rb} +20 -33
  13. data/lib/aspera/{fasp/agent_trsdk.rb → agent/trsdk.rb} +11 -11
  14. data/lib/aspera/api/aoc.rb +586 -0
  15. data/lib/aspera/api/ats.rb +46 -0
  16. data/lib/aspera/api/cos_node.rb +95 -0
  17. data/lib/aspera/api/node.rb +344 -0
  18. data/lib/aspera/ascmd.rb +46 -10
  19. data/lib/aspera/{fasp → ascp}/installation.rb +5 -5
  20. data/lib/aspera/{fasp → ascp}/management.rb +3 -8
  21. data/lib/aspera/{fasp → ascp}/products.rb +1 -1
  22. data/lib/aspera/assert.rb +30 -30
  23. data/lib/aspera/cli/basic_auth_plugin.rb +11 -10
  24. data/lib/aspera/cli/extended_value.rb +1 -1
  25. data/lib/aspera/cli/formatter.rb +13 -13
  26. data/lib/aspera/cli/hints.rb +5 -5
  27. data/lib/aspera/cli/main.rb +35 -28
  28. data/lib/aspera/cli/manager.rb +25 -24
  29. data/lib/aspera/cli/plugin.rb +22 -15
  30. data/lib/aspera/cli/plugin_factory.rb +61 -0
  31. data/lib/aspera/cli/plugins/alee.rb +7 -7
  32. data/lib/aspera/cli/plugins/aoc.rb +83 -77
  33. data/lib/aspera/cli/plugins/ats.rb +32 -33
  34. data/lib/aspera/cli/plugins/bss.rb +3 -4
  35. data/lib/aspera/cli/plugins/config.rb +169 -186
  36. data/lib/aspera/cli/plugins/console.rb +8 -6
  37. data/lib/aspera/cli/plugins/cos.rb +19 -18
  38. data/lib/aspera/cli/plugins/faspex.rb +61 -54
  39. data/lib/aspera/cli/plugins/faspex5.rb +150 -103
  40. data/lib/aspera/cli/plugins/node.rb +68 -73
  41. data/lib/aspera/cli/plugins/orchestrator.rb +34 -44
  42. data/lib/aspera/cli/plugins/preview.rb +31 -31
  43. data/lib/aspera/cli/plugins/server.rb +31 -33
  44. data/lib/aspera/cli/plugins/shares.rb +13 -11
  45. data/lib/aspera/cli/sync_actions.rb +8 -8
  46. data/lib/aspera/cli/transfer_agent.rb +32 -19
  47. data/lib/aspera/cli/transfer_progress.rb +1 -1
  48. data/lib/aspera/cli/version.rb +1 -1
  49. data/lib/aspera/colors.rb +5 -0
  50. data/lib/aspera/command_line_builder.rb +14 -14
  51. data/lib/aspera/coverage.rb +1 -2
  52. data/lib/aspera/data_repository.rb +1 -1
  53. data/lib/aspera/environment.rb +2 -3
  54. data/lib/aspera/faspex_gw.rb +5 -6
  55. data/lib/aspera/faspex_postproc.rb +1 -1
  56. data/lib/aspera/id_generator.rb +2 -2
  57. data/lib/aspera/json_rpc.rb +5 -5
  58. data/lib/aspera/keychain/encrypted_hash.rb +6 -6
  59. data/lib/aspera/keychain/macos_security.rb +27 -22
  60. data/lib/aspera/log.rb +2 -2
  61. data/lib/aspera/nagios.rb +3 -3
  62. data/lib/aspera/node_simulator.rb +5 -6
  63. data/lib/aspera/oauth/base.rb +143 -0
  64. data/lib/aspera/oauth/factory.rb +124 -0
  65. data/lib/aspera/oauth/generic.rb +34 -0
  66. data/lib/aspera/oauth/jwt.rb +51 -0
  67. data/lib/aspera/oauth/url_json.rb +31 -0
  68. data/lib/aspera/oauth/web.rb +50 -0
  69. data/lib/aspera/oauth.rb +5 -331
  70. data/lib/aspera/open_application.rb +7 -7
  71. data/lib/aspera/persistency_action_once.rb +4 -4
  72. data/lib/aspera/persistency_folder.rb +2 -2
  73. data/lib/aspera/preview/generator.rb +5 -5
  74. data/lib/aspera/preview/terminal.rb +3 -2
  75. data/lib/aspera/preview/utils.rb +3 -3
  76. data/lib/aspera/proxy_auto_config.rb +4 -4
  77. data/lib/aspera/rest.rb +175 -144
  78. data/lib/aspera/rest_errors_aspera.rb +3 -3
  79. data/lib/aspera/resumer.rb +77 -0
  80. data/lib/aspera/ssh.rb +6 -1
  81. data/lib/aspera/{fasp → transfer}/error.rb +3 -3
  82. data/lib/aspera/{fasp → transfer}/error_info.rb +1 -1
  83. data/lib/aspera/{fasp → transfer}/faux_file.rb +1 -1
  84. data/lib/aspera/{fasp → transfer}/parameters.rb +58 -89
  85. data/lib/aspera/{fasp/transfer_spec.rb → transfer/spec.rb} +18 -16
  86. data/lib/aspera/{fasp/parameters.yaml → transfer/spec.yaml} +4 -99
  87. data/lib/aspera/{fasp → transfer}/sync.rb +32 -32
  88. data/lib/aspera/{fasp → transfer}/uri.rb +9 -8
  89. data/lib/aspera/web_server_simple.rb +11 -3
  90. data.tar.gz.sig +0 -0
  91. metadata +36 -63
  92. metadata.gz.sig +0 -0
  93. data/lib/aspera/aoc.rb +0 -601
  94. data/lib/aspera/ats_api.rb +0 -47
  95. data/lib/aspera/cos_node.rb +0 -94
  96. data/lib/aspera/fasp/resume_policy.rb +0 -79
  97. data/lib/aspera/node.rb +0 -339
data/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## Introduction
12
12
 
13
- Version : 4.16.0
13
+ Version : 4.17.0
14
14
 
15
15
  Laurent/2016-2024
16
16
 
@@ -37,7 +37,7 @@ A PDF version of this documentation is available here: [docs/Manual.pdf](docs/Ma
37
37
 
38
38
  Refer to [BUGS.md](BUGS.md) and [CONTRIBUTING.md](CONTRIBUTING.md).
39
39
 
40
- ### <a id="when_to_use"></a>When to use and when not to use
40
+ ### When to use and when not to use
41
41
 
42
42
  `ascli` is designed to be used as a command line tool to:
43
43
 
@@ -52,7 +52,7 @@ It is designed for:
52
52
  `ascli` can be seen as a command line tool integrating:
53
53
 
54
54
  - A configuration file (`config.yaml`)
55
- - Advanced command line options ([Extended Value](#extended))
55
+ - Advanced command line options ([Extended Value](#extended-value-syntax))
56
56
  - `curl` (for REST calls)
57
57
  - Aspera transfer (`ascp`)
58
58
 
@@ -75,10 +75,10 @@ Command line parameters in examples beginning with `my_`, e.g. `my_param_value`,
75
75
  `ascli` is an API **Client** toward the remote Aspera application **Server** (Faspex, HSTS, etc...)
76
76
 
77
77
  Some commands will start an Aspera-based transfer (e.g. `upload`).
78
- The transfer is not directly implemented in `ascli`, rather `ascli` uses one of the external Aspera Transfer Clients called **[Transfer Agents](#agents)**.
78
+ The transfer is not directly implemented in `ascli`, rather `ascli` uses one of the external Aspera Transfer Clients called **[Transfer Agents](#transfer-clients-agents)**.
79
79
 
80
- > **Note:** A **[Transfer Agents](#agents)** is a client for the remote Transfer Server (HSTS).
81
- The **[Transfer Agents](#agents)** may be local or remote...
80
+ > **Note:** A **[Transfer Agents](#transfer-clients-agents)** is a client for the remote Transfer Server (HSTS).
81
+ The **[Transfer Agents](#transfer-clients-agents)** may be local or remote...
82
82
  For example a remote Aspera Server may be used as a transfer agent (using node API).
83
83
  i.e. using option `--transfer=node`
84
84
 
@@ -92,14 +92,14 @@ Once the gem is installed, `ascli` shall be accessible:
92
92
 
93
93
  ```console
94
94
  $ ascli --version
95
- 4.16.0
95
+ 4.17.0
96
96
  ```
97
97
 
98
98
  ### First use
99
99
 
100
100
  Once installation is completed, you can proceed to the first use with a demo server:
101
101
 
102
- If you want to test with Aspera on Cloud, jump to section: [Wizard](#aocwizard).
102
+ If you want to test with Aspera on Cloud, jump to section: [Wizard](#configuration-using-wizard).
103
103
 
104
104
  To test with Aspera demo transfer server, setup the environment and then test:
105
105
 
@@ -122,10 +122,10 @@ ascli server browse /
122
122
  +------------+--------+-----------+-------+---------------------------+-----------------------+
123
123
  ```
124
124
 
125
- If you want to use `ascli` with another server, and in order to make further calls more convenient, it is advised to define a [option preset](#lprt) for the server's authentication options.
125
+ If you want to use `ascli` with another server, and in order to make further calls more convenient, it is advised to define a [Option Preset](#option-preset)' for the server's authentication options.
126
126
  The following example will:
127
127
 
128
- - Create a [option preset](#lprt)
128
+ - Create a [Option Preset](#option-preset)'
129
129
  - Define it as default for the `server` plugin
130
130
  - List files in a folder
131
131
  - Download a file
@@ -177,19 +177,19 @@ complete
177
177
 
178
178
  ### Going further
179
179
 
180
- Get familiar with configuration, options, commands : [Command Line Interface](#cli).
180
+ Get familiar with configuration, options, commands : [Command Line Interface](#command-line-interface).
181
181
 
182
182
  Then, follow the section relative to the product you want to interact with ( Aspera on Cloud, Faspex, ...) : [Application Plugins](plugins)
183
183
 
184
- ## <a id="installation"></a>Installation
184
+ ## Installation
185
185
 
186
186
  It is possible to install **either** directly on the host operating system (Linux, macOS, Windows) or as a [container](#container) (`docker`, `podman`, `singularity`).
187
187
 
188
188
  The direct installation is recommended and consists in installing:
189
189
 
190
190
  - [Ruby](#ruby)
191
- - [aspera-cli](#the_gem)
192
- - [Aspera SDK (`ascp`)](#fasp_prot)
191
+ - [aspera-cli](#ruby-gem)
192
+ - [Aspera SDK (`ascp`)](#fasp-protocol)
193
193
 
194
194
  Ruby version: >= 2.6.
195
195
 
@@ -198,11 +198,11 @@ Ruby version: >= 2.6.
198
198
  The following sections provide information on the various installation methods.
199
199
 
200
200
  An internet connection is required for the installation.
201
- If you don't have internet for the installation, refer to section [Installation without internet access](#offline_install).
201
+ If you don't have internet for the installation, refer to section [Installation without internet access](#installation-in-air-gapped-environment).
202
202
 
203
203
  A package with pre-installed Ruby, gem and ascp may also be provided.
204
204
 
205
- ### <a id="ruby"></a>Ruby
205
+ ### Ruby
206
206
 
207
207
  Use this method to install on the native host (e.g. your Windows, macOS or Linux system).
208
208
 
@@ -253,7 +253,7 @@ Install the chosen pre-compiled Ruby version:
253
253
  rvm install 3.2.2
254
254
  ```
255
255
 
256
- Ruby is now installed for the user, go to [Gem installation](#the_gem).
256
+ Ruby is now installed for the user, go to [Gem installation](#ruby-gem).
257
257
 
258
258
  Alternatively RVM can be installed system-wide, for this execute as `root`.
259
259
  It then installs by default in `/usr/local/rvm` for all users and creates `/etc/profile.d/rvm.sh`.
@@ -434,11 +434,34 @@ make
434
434
  make install
435
435
  ```
436
436
 
437
- If you already have a Java JVM on your system (`java`), it is possible to use `jruby`:
437
+ #### JRuby
438
+
439
+ `ascli` can also run with the [JRuby](https://www.jruby.org/) interpreter.
440
+ All what is needed is a JVM (Java Virtual Machine) on your system (`java`).
441
+ The JRuby package comes pre-complied and does not require compilation of native extensions.
442
+ Use a version of JRuby compatible with Ruby version supported by `ascli`.
443
+ Refer to [the wikipedia page](https://en.wikipedia.org/wiki/JRuby) to match JRuby and Ruby versions.
444
+ Choose the latest version from:
438
445
 
439
446
  <https://www.jruby.org/download>
440
447
 
441
- > **Note:** Using `jruby`, the startup time is longer than the native Ruby, but transfer speed is not impacted (executed by `ascp` binary).
448
+ > **Note:** The startup time is slightly longer using `jruby` than the native Ruby, refer to the [JRuby wiki](https://github.com/jruby/jruby/wiki) for details. This can be reduced by using the `--dev` option.
449
+ > The transfer speed is not impacted (executed by `ascp` binary).
450
+ >
451
+ > **Note:** JRuby can be [installed](https://www.jruby.org/getting-started) using `rvm`.
452
+
453
+ Example: start `ascli` with JRuby and reduce startup time:
454
+
455
+ ```bash
456
+ export JRUBY_OPTS=--dev
457
+ ascli -v
458
+ ```
459
+
460
+ or
461
+
462
+ ```bash
463
+ JRUBY_OPTS=--dev ascli -v
464
+ ```
442
465
 
443
466
  #### Optional gems
444
467
 
@@ -456,7 +479,7 @@ gem install rmagick grpc mimemagic
456
479
 
457
480
  > **Note:** Those are not installed as part of dependencies because they involve compilation of native code.
458
481
 
459
- ### <a id="the_gem"></a>`aspera-cli` gem
482
+ ### Ruby Gem
460
483
 
461
484
  Once you have Ruby and rights to install gems, install the `aspera-cli` gem and its dependencies:
462
485
 
@@ -479,7 +502,7 @@ To check if a new version is available (independently of `version_check_days`):
479
502
  ascli config check_update
480
503
  ```
481
504
 
482
- ### <a id="fasp_prot"></a>FASP Protocol
505
+ ### FASP Protocol
483
506
 
484
507
  Most file transfers will be executed using the **FASP** protocol, using `ascp`.
485
508
  Only two additional files are required to perform an Aspera Transfer, which are part of Aspera SDK:
@@ -516,13 +539,13 @@ For instance, Aspera Connect Client can be installed by visiting the page:
516
539
  [https://www.ibm.com/aspera/connect/](https://www.ibm.com/aspera/connect/).
517
540
 
518
541
  `ascli` will detect most of Aspera transfer products in standard locations and use the first one found by default.
519
- Refer to section [FASP](#client) for details on how to select a client or set path to the FASP protocol.
542
+ Refer to section [FASP](#fasp-configuration) for details on how to select a client or set path to the FASP protocol.
520
543
 
521
544
  Several methods are provided to start a transfer.
522
- Use of a local client ([`direct`](#agt_direct) transfer agent) is one of them, but other methods are available.
523
- Refer to section: [Transfer Agents](#agents)
545
+ Use of a local client ([`direct`](#agent-direct) transfer agent) is one of them, but other methods are available.
546
+ Refer to section: [Transfer Agents](#transfer-clients-agents)
524
547
 
525
- ### <a id="offline_install"></a>Installation in air gapped environment
548
+ ### Installation in air gapped environment
526
549
 
527
550
  > **Note:** No pre-packaged version is provided yet.
528
551
 
@@ -636,7 +659,7 @@ ascli -v
636
659
  ```
637
660
 
638
661
  ```text
639
- 4.16.0
662
+ 4.17.0
640
663
  ```
641
664
 
642
665
  In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
@@ -779,7 +802,9 @@ Or get a shell with access to `ascli` like this:
779
802
  singularity shell ascli.sif
780
803
  ```
781
804
 
782
- ## <a id="cli"></a>Command Line Interface: `ascli`
805
+ ## Command Line Interface
806
+
807
+ The command line tool is: ``ascli``
783
808
 
784
809
  The `aspera-cli` gem provides a command line interface (CLI) which interacts with Aspera Products (mostly using REST APIs):
785
810
 
@@ -796,8 +821,8 @@ The `aspera-cli` gem provides a command line interface (CLI) which interacts wit
796
821
  - Supports commands to Aspera server products (on-premise and SaaS)
797
822
  - Any command line **options** (products URL, credentials or any option) can be provided on command line, in configuration file, in env var, in files, ...
798
823
  - Supports Commands, Option values and Parameters shortcuts
799
- - FASP [Transfer Agents](#agents) can be: local `ascp`, or Connect Client, or any transfer node
800
- - Transfer parameters can be altered by modification of [*transfer-spec*](#transferspec), this includes requiring multi-session
824
+ - FASP [Transfer Agents](#transfer-clients-agents) can be: local `ascp`, or Connect Client, or any transfer node
825
+ - Transfer parameters can be altered by modification of [*transfer-spec*](#transfer-specification), this includes requiring multi-session
801
826
  - Allows transfers from products to products, essentially at node level (using the node transfer agent)
802
827
  - Supports FaspStream creation (using Node API)
803
828
  - Supports **Watchfolder** creation (using Node API)
@@ -828,16 +853,18 @@ Using `ascli` with plugin `server` for command line gives advantages over `ascp`
828
853
 
829
854
  Moreover all `ascp` options are supported either through transfer spec parameters (listed with `conf ascp spec`) and with the possibility to provide `ascp` arguments directly when the `direct` agent is used (`ascp_args` in `transfer_info`).
830
855
 
831
- ### <a id="parsing"></a>Command line parsing, Special Characters
856
+ ### Command line parsing, Special Characters
832
857
 
833
858
  `ascli` is typically executed in a shell, either interactively or in a script.
834
859
  `ascli` receives its arguments from this shell (through the Operating System).
835
860
 
836
861
  #### Shell parsing for Unix-like systems: Linux, macOS, AIX
837
862
 
838
- Linux command line parsing is easy: It is fully documented in the shell's documentation.
863
+ Linux command line parsing is easy:
864
+ It is fully documented in the shell's documentation.
839
865
 
840
866
  On Unix-like environments, this is typically a POSIX shell (bash, zsh, ksh, sh).
867
+ A c-shell (`csh`, `tcsh`) or other shell can also be used.
841
868
  In this environment the shell parses the command line, possibly replacing variables, etc...
842
869
  See [bash shell operation](https://www.gnu.org/software/bash/manual/bash.html#Shell-Operation).
843
870
  The shell builds the list of arguments and then `fork`/`exec` Ruby with that list.
@@ -846,7 +873,10 @@ Special character handling (quotes, spaces, env vars, ...) is handled by the she
846
873
 
847
874
  #### Shell parsing for Windows
848
875
 
849
- MS Windows command line parsing is not handled by the shell (`cmd.exe`), not handled by the operating system, but it is handled by the executable.
876
+ Command line parsing first depends on the shell used.
877
+ MS Windows command line parsing is not like Unix-like systems simply because Windows does not provide a list of arguments to the executable (Ruby): it provides the whole command line as a single string, but the shell may interpret some special characters.
878
+
879
+ So command line parsing is not handled by the shell (`cmd.exe`), not handled by the operating system, but it is handled by the executable.
850
880
  Typically, Windows executables use the [microsoft library for this parsing](https://learn.microsoft.com/en-us/cpp/cpp/main-function-command-line-args).
851
881
 
852
882
  As far as `ascli` is concerned: the executable is Ruby.
@@ -855,7 +885,36 @@ It has its own parsing algorithm, close to a Linux shell parsing.
855
885
  Thankfully, `ascli` provides a command to check the value of an argument after parsing: `config echo`.
856
886
  One can also run `ascli` with option `--log-level=debug` to display the command line after parsing.
857
887
 
858
- The following examples give the same result on Windows:
888
+ It is also possible to display arguments received by Ruby using this command:
889
+
890
+ ```console
891
+ C:> ruby -e 'puts ARGV' "Hello World" 1 2
892
+ Hello World
893
+ 1
894
+ 2
895
+ ```
896
+
897
+ Once the shell has dealt with the command line "special" characters for it, the shell calls Windows' `CreateProcess` with just the whole command line as a single string.
898
+ (Unlike Unix-like systems where the command line is split into arguments by the shell.)
899
+
900
+ It's up to the program to split arguments:
901
+
902
+ - [Windows: How Command Line Parameters Are Parsed](https://daviddeley.com/autohotkey/parameters/parameters.htm#RUBY)
903
+ - [Understand Quoting and Escaping of Windows Command Line Arguments](https://web.archive.org/web/20190316094059/http://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by-a-windows-program/)
904
+
905
+ is a Ruby program, so Ruby parses the command line into arguments and provides them to the program.
906
+ Ruby vaguely follows the Microsoft C/C++ parameter parsing rules.
907
+ (See `w32_cmdvector` in Ruby source [`win32.c`](https://github.com/ruby/ruby/blob/master/win32/win32.c#L1766)) : <!--cspell:disable-line-->
908
+
909
+ - Space characters: split arguments (space, tab, newline)
910
+ - Backslash: `\` escape single special character
911
+ - Globing characters: `*?[]{}` for file globing
912
+ - Double quotes: `"`
913
+ - Single quotes: `'`
914
+
915
+ #### Shell parsing for Windows: `cmd.exe`
916
+
917
+ The following examples give the same result on Windows using `cmd.exe`:
859
918
 
860
919
  - Single quote protects the double quote
861
920
 
@@ -875,40 +934,49 @@ The following examples give the same result on Windows:
875
934
  ascli config echo @json:"{\"url\":\"https://...\"}"
876
935
  ```
877
936
 
878
- More details: on Windows, `cmd.exe` is typically used to start .
879
937
  `cmd.exe` handles some special characters: `^"<>|%&`.
880
938
  Basically it handles I/O redirection (`<>|`), shell variables (`%`), multiple commands (`&`) and handles those special characters from the command line.
881
939
  Eventually, all those special characters are removed from the command line unless escaped with `^` or `"`.
882
940
  `"` are kept and given to the program.
883
941
 
884
- Then, the shell calls Windows' `CreateProcess` with just the whole command line as a single string.
885
- Unlike Unix-like systems where the command line is split into arguments by the shell.
942
+ #### Shell parsing for Windows: Powershell
886
943
 
887
- It's up to the program to split arguments:
944
+ For Powershell, it actually depends on the version of it.
888
945
 
889
- - [Windows: How Command Line Parameters Are Parsed](https://daviddeley.com/autohotkey/parameters/parameters.htm#RUBY)
890
- - [Understand Quoting and Escaping of Windows Command Line Arguments](https://web.archive.org/web/20190316094059/http://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by-a-windows-program/)
946
+ A difficulty is that Powershell parses the command line for its own use and manages special characters, but then it passes the command line to the program (Ruby) as a single string, possibly without the special characters.
891
947
 
892
- is a Ruby program, so Ruby parses the command line into arguments and provides them to the program.
893
- Ruby vaguely follows the Microsoft C/C++ parameter parsing rules.
894
- (See `w32_cmdvector` in Ruby source [`win32.c`](https://github.com/ruby/ruby/blob/master/win32/win32.c#L1766)) : <!--cspell:disable-line-->
948
+ Details can be found here:
895
949
 
896
- - Space characters: split arguments (space, tab, newline)
897
- - Backslash: `\` escape single special character
898
- - Globing characters: `*?[]{}` for file globing
899
- - Double quotes: `"`
900
- - Single quotes: `'`
950
+ - [Passing arguments with quotes](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-7.4#passing-arguments-that-contain-quote-characters)
951
+
952
+ - [quoting rules](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7.4)
953
+
954
+ The following examples give the same result on Windows using Powershell:
955
+
956
+ ```console
957
+ PS C:\> echo $psversiontable.psversion
958
+
959
+ Major Minor Build Revision
960
+ ----- ----- ----- --------
961
+ 5 1 19041 4046
962
+
963
+ PS C:\> ascli conf echo --% @json:'{"k":"v","x":"y"}'
964
+
965
+ PS C:\> ascli conf echo @json:'{"""k""":"""v""","""x""":"""y"""}'
966
+ ```
967
+
968
+ > **Note:** The special powershell argument `--%` places powershell in legacy parsing mode.
901
969
 
902
970
  #### Extended Values (JSON, Ruby, ...)
903
971
 
904
- Some of the `ascli` parameters are expected to be [Extended Values](#extended), i.e. not a simple `String`, but a composite structure (`Hash`, `Array`).
972
+ Some of the `ascli` parameters are expected to be [Extended Values](#extended-value-syntax), i.e. not a simple `String`, but a composite structure (`Hash`, `Array`).
905
973
  Typically, the `@json:` modifier is used, it expects a [JSON](https://www.json.org/) string.
906
974
  JSON itself has some special syntax: for example `"` is used to enclose a `String`.
907
975
 
908
976
  #### Testing Extended Values
909
977
 
910
978
  In case of doubt of argument values after parsing, one can test using command `config echo`.
911
- `config echo` takes exactly **one** argument which can use the [Extended Value](#extended) syntax.
979
+ `config echo` takes exactly **one** argument which can use the [Extended Value](#extended-value-syntax) syntax.
912
980
  Unprocessed command line arguments are shown in the error message.
913
981
 
914
982
  Example:
@@ -927,7 +995,7 @@ ERROR: Argument: unprocessed values: ["2", "3"]
927
995
 
928
996
  > **Note:** It gets its value after shell command line parsing and `ascli` extended value parsing.
929
997
 
930
- In the following examples (using a POSIX shell, such as `bash`), several equivalent sample commands are provided.
998
+ In the following examples (using a POSIX shell, such as `bash`), several equivalent commands are provided.
931
999
  For all example, most of special character handling is not specific to `ascli`:
932
1000
  It depends on the underlying syntax: shell , JSON, etc...
933
1001
  Depending on the case, a different `format` option is used to display the actual value.
@@ -978,7 +1046,8 @@ ascli config echo '"'
978
1046
  "
979
1047
  ```
980
1048
 
981
- Double quote in JSON is a little tricky because `"` is special both for the shell and JSON. Both shell and JSON syntax allow to protect `"`, but only the shell allows protection using single quote.
1049
+ Double quote in JSON is a little tricky because `"` is special both for the shell and JSON.
1050
+ Both shell and JSON syntax allow to protect `"`, but only the shell allows protection using single quote.
982
1051
 
983
1052
  ```bash
984
1053
  ascli config echo @json:'"\""' --format=text
@@ -990,7 +1059,8 @@ ascli config echo @ruby:\'\"\' --format=text
990
1059
  "
991
1060
  ```
992
1061
 
993
- Here a single quote or a backslash protects the double quote to avoid shell processing, and then an additional `\` is added to protect the `"` for JSON. But as `\` is also shell special, then it is protected by another `\`.
1062
+ Here a single quote or a backslash protects the double quote to avoid shell processing, and then an additional `\` is added to protect the `"` for JSON.
1063
+ But as `\` is also shell special, then it is protected by another `\`.
994
1064
 
995
1065
  #### Shell and JSON or Ruby special characters in extended value
996
1066
 
@@ -1087,7 +1157,7 @@ ascli config echo @ruby:"{'title'=>ENV['MYTITLE']}" --format=json
1087
1157
  ### Commands, Options, Positional Arguments
1088
1158
 
1089
1159
  Command line arguments are the units of command line typically separated by spaces (the `argv` of C).
1090
- The tokenization of the command line is typically done by the shell, refer to the previous section [Command Line Parsing](#parsing).
1160
+ The tokenization of the command line is typically done by the shell, refer to the previous section [Command Line Parsing](#command-line-parsing-special-characters).
1091
1161
 
1092
1162
  `ascli` handles three types of command line arguments:
1093
1163
 
@@ -1108,7 +1178,7 @@ ascli command subcommand --option-name=VAL1 VAL2
1108
1178
  If the value of a command, option or argument is constrained by a fixed list of values, then it is possible to use a few of the first letters of the value, provided that it uniquely identifies the value.
1109
1179
  For example `ascli config pre ov` is the same as `ascli config preset overview`.
1110
1180
 
1111
- The value of options and arguments is evaluated with the [Extended Value Syntax](#extended).
1181
+ The value of options and arguments is evaluated with the [Extended Value Syntax](#extended-value-syntax).
1112
1182
 
1113
1183
  #### Commands
1114
1184
 
@@ -1142,9 +1212,9 @@ It could also be designed as an option, but since it is mandatory and typically
1142
1212
  The advantages of using a positional argument instead of an option for the same are that the command line is shorter(no option name, just the position) and the value is clearly mandatory.
1143
1213
 
1144
1214
  The disadvantage is that it is not possible to define a default value in a configuration file or environment variable like for options.
1145
- Nevertheless, [Extended Values](#extended) syntax is supported, so it is possible to retrieve a value from the configuration file or environment variable (using `@preset:`).
1215
+ Nevertheless, [Extended Values](#extended-value-syntax) syntax is supported, so it is possible to retrieve a value from the configuration file or environment variable (using `@preset:`).
1146
1216
 
1147
- If a Positional Arguments begins with `-`, then either use the `@val:` syntax (see [Extended Values](#extended)), or use the `--` separator (see below).
1217
+ If a Positional Arguments begins with `-`, then either use the `@val:` syntax (see [Extended Values](#extended-value-syntax)), or use the `--` separator (see below).
1148
1218
 
1149
1219
  A few positional arguments are optional, they are located at the end of the command line.
1150
1220
 
@@ -1184,7 +1254,7 @@ But some are mandatory, so they can be placed in a configuration file, for examp
1184
1254
 
1185
1255
  The value for **any** options can come from the following locations (in this order, last value evaluated overrides previous value):
1186
1256
 
1187
- - [Configuration file](#configfile)
1257
+ - [Configuration file](#configuration-file)
1188
1258
  - Environment variable
1189
1259
  - Command line
1190
1260
 
@@ -1293,9 +1363,9 @@ Examples:
1293
1363
  - `DEF,-a,b` : default property list, remove `a` and add `b`
1294
1364
  - `@ruby:'/^server/'` : Display all properties whose name begin with `server`
1295
1365
 
1296
- #### <a id="option_select"></a>Option: `select`: Filter on columns values for `object_list`
1366
+ #### Option: `select`
1297
1367
 
1298
- Table output can be filtered using option `select`.
1368
+ Table output (`object_list`) can be filtered using option `select`.
1299
1369
  This parameter is either a `Hash` or `Proc`.
1300
1370
  The `Proc` takes as argument a line (`Hash`) in the table and is a Ruby lambda expression that returns `true` or `false`.
1301
1371
 
@@ -1336,7 +1406,7 @@ Syntax: `%<field>:<value>`
1336
1406
 
1337
1407
  > **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)
1338
1408
 
1339
- ### <a id="extended"></a>Extended Value Syntax
1409
+ ### Extended Value Syntax
1340
1410
 
1341
1411
  Most options and arguments are specified by a simple string (e.g. username or url).
1342
1412
  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.
@@ -1460,7 +1530,7 @@ EOF
1460
1530
  {"key1":"value1","key2":["item1","item2"],"key3":{"key4":"value4","key5":"value5"}}
1461
1531
  ```
1462
1532
 
1463
- ### <a id="conffolder"></a>Configuration and Persistency Folder
1533
+ ### Configuration and Persistency Folder
1464
1534
 
1465
1535
  `ascli` configuration and other runtime files (token cache, file lists, persistency files, SDK) are stored by default in `[User's home folder]/.aspera/ascli`.
1466
1536
 
@@ -1503,46 +1573,46 @@ Some temporary files may be needed during runtime.
1503
1573
  The temporary folder may be specified with option: `temp_folder`.
1504
1574
  Temporary files are deleted at the end of execution unless option: `clean_temp` is set to `no`.
1505
1575
 
1506
- ### <a id="configfile"></a>Configuration file
1576
+ ### Configuration file
1507
1577
 
1508
1578
  On the first execution of `ascli`, an empty configuration file is created in the configuration folder.
1509
1579
  Nevertheless, there is no mandatory information required in this file, the use of it is optional as any option can be provided on the command line.
1510
1580
 
1511
1581
  Although the file is a standard YAML file, `ascli` provides commands to read and modify it using the `config` command.
1512
1582
 
1513
- All options for `ascli` can be set on command line, or by env vars, or using [option presets](#lprt) in the configuration file.
1583
+ All options for `ascli` can be set on command line, or by env vars, or using [Option Preset](#option-preset)' in the configuration file.
1514
1584
 
1515
1585
  A configuration file provides a way to define default values, especially for authentication parameters, thus avoiding to always having to specify those parameters on the command line.
1516
1586
 
1517
1587
  The default configuration file is: `$HOME/.aspera/ascli/config.yaml` (this can be overridden with option `--config-file=path` or equivalent env var).
1518
1588
 
1519
- The configuration file is simply a catalog of pre-defined lists of options, called: [option presets](#lprt). Then, instead of specifying some common options on the command line (e.g. address, credentials), it is possible to invoke the ones of a [option preset](#lprt) (e.g. `mypreset`) using the option: `-Pmypreset` or `--preset=mypreset`.
1589
+ The configuration file is simply a catalog of pre-defined lists of options, called: [Option Preset](#option-preset)'. Then, instead of specifying some common options on the command line (e.g. address, credentials), it is possible to invoke the ones of a [Option Preset](#option-preset)' (e.g. `mypreset`) using the option: `-Pmypreset` or `--preset=mypreset`.
1520
1590
 
1521
- #### <a id="lprt"></a>Option preset
1591
+ #### Option Preset
1522
1592
 
1523
- A [option preset](#lprt) is simply a collection of parameters and their associated values in a named section in the configuration file.
1593
+ A [Option Preset](#option-preset)' is simply a collection of parameters and their associated values in a named section in the configuration file.
1524
1594
 
1525
- A named [option preset](#lprt) can be modified directly using `ascli`, which will update the configuration file :
1595
+ A named [Option Preset](#option-preset)' can be modified directly using `ascli`, which will update the configuration file :
1526
1596
 
1527
1597
  ```bash
1528
1598
  ascli config preset set|delete|show|initialize|update <option preset>
1529
1599
  ```
1530
1600
 
1531
- The command `update` allows the easy creation of [option preset](#lprt) by simply providing the options in their command line format, e.g. :
1601
+ The command `update` allows the easy creation of [Option Preset](#option-preset)' by simply providing the options in their command line format, e.g. :
1532
1602
 
1533
1603
  ```bash
1534
1604
  ascli config preset update demo_server --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=my_password_here --ts=@json:'{"precalculate_job_size":true}'
1535
1605
  ```
1536
1606
 
1537
- - This creates a [option preset](#lprt) `demo_server` with all provided options.
1607
+ - This creates a [Option Preset](#option-preset)' `demo_server` with all provided options.
1538
1608
 
1539
- The command `set` allows setting individual options in a [option preset](#lprt).
1609
+ The command `set` allows setting individual options in a [Option Preset](#option-preset)'.
1540
1610
 
1541
1611
  ```bash
1542
1612
  ascli config preset set demo_server password my_password_here
1543
1613
  ```
1544
1614
 
1545
- The command `initialize`, like `update` allows to set several parameters at once, but it deletes an existing configuration instead of updating it, and expects a [`Hash` Extended Value](#extended).
1615
+ The command `initialize`, like `update` allows to set several parameters at once, but it deletes an existing configuration instead of updating it, and expects a [`Hash` Extended Value](#extended-value-syntax).
1546
1616
 
1547
1617
  ```bash
1548
1618
  ascli config preset initialize demo_server @json:'{"url":"ssh://demo.asperasoft.com:33001","username":"asperaweb","password":"my_pass_here","ts":{"precalculate_job_size":true}}'
@@ -1554,7 +1624,7 @@ A full terminal based overview of the configuration can be displayed using:
1554
1624
  ascli config preset over
1555
1625
  ```
1556
1626
 
1557
- A list of [option preset](#lprt) can be displayed using:
1627
+ A list of [Option Preset](#option-preset)' can be displayed using:
1558
1628
 
1559
1629
  ```bash
1560
1630
  ascli config preset list
@@ -1577,11 +1647,11 @@ ascli config preset over
1577
1647
  ascli config preset list
1578
1648
  ```
1579
1649
 
1580
- #### <a id="lprtconf"></a>Special Option preset: `config`
1650
+ #### Special Option Preset: `config`
1581
1651
 
1582
1652
  This preset name is reserved and contains a single key: `version`. This is the version of `ascli` which created the file.
1583
1653
 
1584
- #### <a id="lprtdef"></a>Special Option preset: `default`
1654
+ #### Special Option Preset: `default`
1585
1655
 
1586
1656
  This preset name is reserved and contains an array of key-value , where the key is the name of a plugin, and the value is the name of another preset.
1587
1657
 
@@ -1603,24 +1673,24 @@ ascli config preset get default _plugin_name_
1603
1673
  "_default_preset_for_plugin_"
1604
1674
  ```
1605
1675
 
1606
- #### <a id="config"></a>Plugin: `config`: Configuration
1676
+ #### Plugin: `config`: Configuration
1607
1677
 
1608
1678
  Plugin `config` provides general commands for `ascli`:
1609
1679
 
1610
- - Option preset, configuration file operations
1680
+ - Option Preset, configuration file operations
1611
1681
  - `wizard`
1612
1682
  - `vault`
1613
1683
  - `ascp`
1614
1684
 
1615
1685
  The default preset for `config` is read for any plugin invocation, this allows setting global options, such as `--log-level` or `--interactive`.
1616
- When `ascli` starts, it looks for the `default` Option preset and checks the value for `config`.
1686
+ When `ascli` starts, it looks for the `default` Option Preset and checks the value for `config`.
1617
1687
  If set, it loads the options independently of the plugin used.
1618
1688
 
1619
1689
  > **Note:** If no global default is set by the user, `ascli` will use `global_common_defaults` when setting global parameters (e.g. `config ascp use`)
1620
1690
  >
1621
1691
  > **Note:** If you don't know the name of the global preset, you can use `GLOBAL` to refer to it.
1622
1692
 
1623
- Show current default (global) Option preset (`config` plugin):
1693
+ Show current default (global) Option Preset (`config` plugin):
1624
1694
 
1625
1695
  ```console
1626
1696
  $ ascli config preset get default config
@@ -1631,90 +1701,95 @@ global_common_defaults
1631
1701
  ascli config preset set GLOBAL version_check_days 0
1632
1702
  ```
1633
1703
 
1634
- If the default global Option preset is not set, and you want to use a different name:
1704
+ If the default global Option Preset is not set, and you want to use a different name:
1635
1705
 
1636
1706
  ```bash
1637
1707
  ascli config preset set GLOBAL version_check_days 0
1638
1708
  ascli config preset set default config my_common_defaults
1639
1709
  ```
1640
1710
 
1641
- #### Config sample commands
1642
-
1643
- ```bash
1644
- config ascp connect info 'Aspera Connect for Windows'
1645
- config ascp connect list
1646
- config ascp connect version 'Aspera Connect for Windows' download 'Windows Installer' --to-folder=.
1647
- config ascp connect version 'Aspera Connect for Windows' list
1648
- config ascp connect version 'Aspera Connect for Windows' open documentation
1649
- config ascp errors
1650
- config ascp info --sdk-folder=sdk_test_dir
1651
- config ascp install
1652
- config ascp install --sdk-folder=sdk_test_dir
1653
- config ascp products list
1654
- config ascp products use 'IBM Aspera Connect'
1655
- config ascp show
1656
- config ascp spec
1657
- config ascp use /usr/bin/ascp
1658
- config check_update
1659
- config coffee
1660
- config coffee --ui=text
1661
- config coffee --ui=text --query=@json:'{"text":"true"}'
1662
- config detect https://faspex4.example.com/path
1663
- config detect https://faspex5.example.com/path
1664
- config detect https://node.example.com/path
1665
- config detect https://shares.example.com/path shares
1666
- config detect my_org aoc
1667
- config doc
1668
- config doc transfer-parameters
1669
- config echo -- --special-string
1670
- config echo @base64:SGVsbG8gV29ybGQK
1671
- config echo @csvt:@stdin:
1672
- config echo @env:USER
1673
- config echo @lines:@stdin:
1674
- config echo @list:,1,2,3
1675
- config echo @secret:
1676
- config echo @uri:/etc/hosts
1677
- config echo @uri:file:/etc/hosts
1678
- config echo @uri:http://ifconfig.me
1679
- config echo @uri:https://ifconfig.me
1680
- config echo @vault:my_preset.password
1681
- config echo @zlib:@stdin:
1682
- config echo hello
1683
- config email_test --notify-to=my_email_external
1684
- config flush_tokens
1685
- config folder
1686
- config gem name
1687
- config gem path
1688
- config gem version
1689
- config genkey my_key
1690
- config genkey my_key 4096
1691
- config initdemo
1692
- config open
1693
- config plugin create my_command
1694
- config plugin list
1695
- config preset delete conf_name
1696
- config preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
1697
- config preset list
1698
- config preset overview
1699
- config preset set conf_name param value
1700
- config preset set default shares conf_name
1701
- config preset show conf_name
1702
- config preset unset conf_name param
1703
- config preset update conf_name --p1=v1 --p2=v2
1704
- config proxy_check --fpac=@file:examples/proxy.pac https://eudemo.asperademo.com --proxy-credentials=@list:,user,pass
1705
- config pubkey @file:my_key
1706
- config vault create my_label @json:'{"password":"my_password_here","description":"my secret"}'
1707
- config vault delete my_label
1708
- config vault list
1709
- config vault show my_label
1710
- config wizard https://console.example.com/path console
1711
- config wizard https://faspex4.example.com/path faspex --username=test --password=test
1712
- config wizard https://faspex5.example.com/path faspex5 --key-path=my_private_key
1713
- config wizard https://node.example.com/path node --username=test --password=test
1714
- config wizard https://orch.example.com/path orchestrator --username=test --password=test
1715
- config wizard https://shares.example.com/path shares --username=test --password=test
1716
- config wizard my_org aoc --key-path=my_private_key --username=my_user_email
1717
- config wizard my_org aoc --key-path=my_private_key --username=my_user_email --use-generic-client=yes
1711
+ ### Config sample commands
1712
+
1713
+ > **Note:** Add `ascli config` in front of the commands:
1714
+
1715
+ ```bash
1716
+ ascp connect info 'Aspera Connect for Windows'
1717
+ ascp connect list
1718
+ ascp connect version 'Aspera Connect for Windows' download 'Windows Installer' --to-folder=.
1719
+ ascp connect version 'Aspera Connect for Windows' list
1720
+ ascp connect version 'Aspera Connect for Windows' open documentation
1721
+ ascp errors
1722
+ ascp info --sdk-folder=sdk_test_dir
1723
+ ascp install
1724
+ ascp install --sdk-folder=sdk_test_dir
1725
+ ascp products list
1726
+ ascp products use 'IBM Aspera Connect'
1727
+ ascp show
1728
+ ascp spec
1729
+ ascp use /usr/bin/ascp
1730
+ check_update
1731
+ coffee
1732
+ coffee --ui=text
1733
+ coffee --ui=text --query=@json:'{"text":"true"}'
1734
+ detect https://faspex4.example.com/path
1735
+ detect https://faspex5.example.com/path
1736
+ detect https://node.example.com/path
1737
+ detect https://shares.example.com/path shares
1738
+ detect my_org aoc
1739
+ doc
1740
+ doc transfer-parameters
1741
+ echo -- --special-string
1742
+ echo @base64:SGVsbG8gV29ybGQK
1743
+ echo @csvt:@stdin:
1744
+ echo @env:USER
1745
+ echo @lines:@stdin:
1746
+ echo @list:,1,2,3
1747
+ echo @secret:
1748
+ echo @uri:/etc/hosts
1749
+ echo @uri:file:/etc/hosts
1750
+ echo @uri:http://ifconfig.me
1751
+ echo @uri:https://ifconfig.me
1752
+ echo @vault:my_preset.password
1753
+ echo @zlib:@stdin:
1754
+ echo hello
1755
+ email_test --notify-to=my_email_external
1756
+ flush_tokens
1757
+ folder
1758
+ gem name
1759
+ gem path
1760
+ gem version
1761
+ genkey my_key
1762
+ genkey my_key 4096
1763
+ initdemo
1764
+ open
1765
+ plugin create my_command
1766
+ plugin list
1767
+ preset delete conf_name
1768
+ preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
1769
+ preset list
1770
+ preset overview
1771
+ preset set conf_name param value
1772
+ preset set default shares conf_name
1773
+ preset show conf_name
1774
+ preset unset conf_name param
1775
+ preset update conf_name --p1=v1 --p2=v2
1776
+ proxy_check --fpac=@file:examples/proxy.pac https://eudemo.asperademo.com --proxy-credentials=@list:,user,pass
1777
+ pubkey @file:my_key
1778
+ remote_certificate chain https://node.example.com/path
1779
+ remote_certificate name https://node.example.com/path
1780
+ remote_certificate only https://node.example.com/path
1781
+ vault create my_label @json:'{"password":"my_password_here","description":"my secret"}'
1782
+ vault delete my_label
1783
+ vault list
1784
+ vault show my_label
1785
+ wizard https://console.example.com/path console
1786
+ wizard https://faspex4.example.com/path faspex --username=test --password=test
1787
+ wizard https://faspex5.example.com/path faspex5 --key-path=my_private_key
1788
+ wizard https://node.example.com/path node --username=test --password=test
1789
+ wizard https://orch.example.com/path orchestrator --username=test --password=test
1790
+ wizard https://shares.example.com/path shares --username=test --password=test
1791
+ wizard my_org aoc --key-path=my_private_key --username=my_user_email
1792
+ wizard my_org aoc --key-path=my_private_key --username=my_user_email --use-generic-client=yes
1718
1793
  ```
1719
1794
 
1720
1795
  #### Format of file
@@ -1738,27 +1813,27 @@ demo_server:
1738
1813
  We can see here:
1739
1814
 
1740
1815
  - The configuration was created with `ascli` version 0.3.7
1741
- - The default [option preset](#lprt) to load for `server` plugin is : `demo_server`
1742
- - The [option preset](#lprt) `demo_server` defines some parameters: the URL and credentials
1743
- - The default [option preset](#lprt) to load in any case is : `cli_default`
1816
+ - The default [Option Preset](#option-preset)' to load for `server` plugin is : `demo_server`
1817
+ - The [Option Preset](#option-preset)' `demo_server` defines some parameters: the URL and credentials
1818
+ - The default [Option Preset](#option-preset)' to load in any case is : `cli_default`
1744
1819
 
1745
- Two [option presets](#lprt) are reserved:
1820
+ Two [Option Preset](#option-preset)' are reserved:
1746
1821
 
1747
1822
  - `config` contains a single value: `version` showing the version used to create the configuration file.
1748
1823
  It is used to check compatibility.
1749
- - `default` is reserved to define the default [option preset](#lprt) name used for known plugins.
1824
+ - `default` is reserved to define the default [Option Preset](#option-preset)' name used for known plugins.
1750
1825
 
1751
- The user may create as many [option presets](#lprt) as needed. For instance, a particular [option preset](#lprt) can be created for a particular application instance and contain URL and credentials.
1826
+ The user may create as many [Option Preset](#option-preset)' as needed. For instance, a particular [Option Preset](#option-preset)' can be created for a particular application instance and contain URL and credentials.
1752
1827
 
1753
- Values in the configuration also follow the [Extended Value Syntax](#extended).
1828
+ Values in the configuration also follow the [Extended Value Syntax](#extended-value-syntax).
1754
1829
 
1755
- > **Note:** If the user wants to use the [Extended Value Syntax](#extended) inside the configuration file, using the `config preset update` command, the user shall use the `@val:` prefix. Example:
1830
+ > **Note:** If the user wants to use the [Extended Value Syntax](#extended-value-syntax) inside the configuration file, using the `config preset update` command, the user shall use the `@val:` prefix. Example:
1756
1831
 
1757
1832
  ```bash
1758
1833
  ascli config preset set my_aoc_org private_key @val:@file:"$HOME/.aspera/ascli/my_private_key"
1759
1834
  ```
1760
1835
 
1761
- This creates the [option preset](#lprt):
1836
+ This creates the [Option Preset](#option-preset)':
1762
1837
 
1763
1838
  ```yaml
1764
1839
  my_aoc_org:
@@ -1774,20 +1849,20 @@ Some options are global, some options are available only for some plugins. (the
1774
1849
  Options are loaded using this algorithm:
1775
1850
 
1776
1851
  - If option `--no-default` (or `-N`) is specified, then no default value is loaded for the plugin
1777
- - Else it looks for the name of the plugin as key in section `default`, the value is the name of the default [option preset](#lprt) for it, and loads it.
1778
- - If option `--preset=<name or extended value hash>` is specified (or `-Pxxxx`), this reads the [option preset](#lprt) specified from the configuration file, or if the value is a `Hash`, it uses it as options values.
1852
+ - Else it looks for the name of the plugin as key in section `default`, the value is the name of the default [Option Preset](#option-preset)' for it, and loads it.
1853
+ - If option `--preset=<name or extended value hash>` is specified (or `-Pxxxx`), this reads the [Option Preset](#option-preset)' specified from the configuration file, or if the value is a `Hash`, it uses it as options values.
1779
1854
  - Environment variables are evaluated
1780
1855
  - Command line options are evaluated
1781
1856
 
1782
1857
  Parameters are evaluated in the order of command line.
1783
1858
 
1784
- To avoid loading the default [option preset](#lprt) for a plugin, use: `-N`
1859
+ To avoid loading the default [Option Preset](#option-preset)' for a plugin, use: `-N`
1785
1860
 
1786
1861
  On command line, words in parameter names are separated by a dash (`-`).
1787
1862
  In configuration file, separator is an underscore.
1788
1863
  E.g. `--xxx-yyy` on command line gives `xxx_yyy` in configuration file.
1789
1864
 
1790
- The main plugin name is `config`, so it is possible to define a default [option preset](#lprt) for the main plugin with:
1865
+ The main plugin name is `config`, so it is possible to define a default [Option Preset](#option-preset)' for the main plugin with:
1791
1866
 
1792
1867
  ```bash
1793
1868
  ascli config preset set cli_default interactive no
@@ -1797,7 +1872,7 @@ ascli config preset set cli_default interactive no
1797
1872
  ascli config preset set default config cli_default
1798
1873
  ```
1799
1874
 
1800
- A [option preset](#lprt) value can be removed with `unset`:
1875
+ A [Option Preset](#option-preset)' value can be removed with `unset`:
1801
1876
 
1802
1877
  ```bash
1803
1878
  ascli config preset unset cli_default interactive
@@ -1817,7 +1892,7 @@ ascli -N --preset=@json:'{"url":"_url_here_","password":"my_password_here","user
1817
1892
 
1818
1893
  #### Wizard
1819
1894
 
1820
- The wizard is a command that asks the user for information and creates a [option preset](#lprt) with the provided information.
1895
+ The wizard is a command that asks the user for information and creates a [Option Preset](#option-preset)' with the provided information.
1821
1896
 
1822
1897
  It takes an optional argument: the URL of the application, and an **option**: `query` which allows limiting the detection to a given plugin.
1823
1898
 
@@ -1839,7 +1914,7 @@ ascli shares repo browse / --url=https://10.25.0.6 --username=john --password=my
1839
1914
 
1840
1915
  This can also be provisioned in a configuration file:
1841
1916
 
1842
- - Build [option preset](#lprt)
1917
+ - Build [Option Preset](#option-preset)'
1843
1918
 
1844
1919
  ```bash
1845
1920
  ascli config preset set shares06 url https://10.25.0.6
@@ -1859,7 +1934,7 @@ or
1859
1934
  ascli config preset update shares06 --url=https://10.25.0.6 --username=john --password=my_password_here
1860
1935
  ```
1861
1936
 
1862
- - Define this [option preset](#lprt) as the default [option preset](#lprt) for the specified plugin (`shares`)
1937
+ - Define this [Option Preset](#option-preset)' as the default [Option Preset](#option-preset)' for the specified plugin (`shares`)
1863
1938
 
1864
1939
  ```bash
1865
1940
  ascli config preset set default shares shares06
@@ -1877,7 +1952,7 @@ ascli config preset overview
1877
1952
  ascli shares repo browse /
1878
1953
  ```
1879
1954
 
1880
- ### <a id="vault"></a>Secret Vault
1955
+ ### Secret Vault
1881
1956
 
1882
1957
  Secrets (e.g. passwords) are usually command options.
1883
1958
  They can be provided on command line, env vars, files etc.
@@ -1956,7 +2031,7 @@ Then secrets can be manipulated using commands:
1956
2031
  ascli config vault create mylabel @json:'{"password":"my_password_here","description":"for this account"}'
1957
2032
  ```
1958
2033
 
1959
- #### <a id="config_finder"></a>Configuration Finder
2034
+ #### Configuration Finder
1960
2035
 
1961
2036
  When a secret is needed by a sub command, the command can search for existing configurations in the configuration file.
1962
2037
 
@@ -1964,7 +2039,7 @@ The lookup is done by comparing the service URL and username (or access key).
1964
2039
 
1965
2040
  #### Securing passwords and secrets
1966
2041
 
1967
- A passwords can be saved in clear in a [option preset](#lprt) together with other account information (URL, username, etc...).
2042
+ A passwords can be saved in clear in a [Option Preset](#option-preset)' together with other account information (URL, username, etc...).
1968
2043
  Example:
1969
2044
 
1970
2045
  ```bash
@@ -1983,7 +2058,7 @@ ascli config vault create myconf @json:'{"password":"my_password_here"}'
1983
2058
 
1984
2059
  > **Note:** Use `@val:` in front of `@vault:` so that the extended value is not evaluated.
1985
2060
 
1986
- ### <a id="private_key"></a>Private Key
2061
+ ### Private Key
1987
2062
 
1988
2063
  Some applications allow the user to be authenticated using a private key (Server, AoC, Faspex5, ...).
1989
2064
  It consists in using a pair of keys: the private key and its associated public key.
@@ -2063,7 +2138,9 @@ openssl rsa -des3 -in ${PRIVKEYFILE} -out ${PRIVKEYFILE}.with_des
2063
2138
  mv ${PRIVKEYFILE}.with_des ${PRIVKEYFILE}
2064
2139
  ```
2065
2140
 
2066
- ### <a id="certificates"></a>SSL CA certificate bundle
2141
+ ### SSL CA certificate bundle
2142
+
2143
+ The SSL CA certificate bundle can be specified using option `cert_stores`, which is a list of files or folders, by default it uses Ruby's default certificate store.
2067
2144
 
2068
2145
  To display trusted certificate store locations:
2069
2146
 
@@ -2071,40 +2148,50 @@ To display trusted certificate store locations:
2071
2148
  ascli --show-config --fields=cert_stores
2072
2149
  ```
2073
2150
 
2074
- To modify the locations of certificate store, use option `cert_stores`.
2075
- If you use this option, then default locations are removed, but they can be added using special value `DEF`.
2076
- The value can be either an `Array`, or successive options.
2151
+ Use option `cert_stores` to modify the locations of certificate stores (files or folders).
2152
+ If you use this option, then default locations are not used.
2153
+ Default locations can be added using special value `DEF`.
2154
+ The value can be either an `Array` or `String` (path).
2155
+ Successive options add paths incrementally.
2156
+ All files of a folders are added.
2157
+
2158
+ `ascli` uses the Ruby `openssl` gem.
2159
+ By default it uses the system's `openssl` library, but JRuby uses its own implementation.
2160
+
2161
+ For example, on Linux to use the system's certificate store:
2162
+
2163
+ ```bash
2164
+ --cert-stores=$(openssl version -d|cut -f2 -d'"')/cert.pem
2165
+ ```
2077
2166
 
2078
- `ascli` uses the Ruby `openssl` gem, which uses the `openssl` library.
2079
2167
  Certificates are checked against the [Ruby default certificate store](https://ruby-doc.org/stdlib-3.0.3/libdoc/openssl/rdoc/OpenSSL/X509/Store.html) `OpenSSL::X509::DEFAULT_CERT_FILE` and `OpenSSL::X509::DEFAULT_CERT_DIR`, which are typically the ones of `openssl` on Unix-like systems (Linux, macOS, etc..).
2080
2168
  Ruby's default values can be overridden using env vars: `SSL_CERT_FILE` and `SSL_CERT_DIR`.
2081
2169
 
2082
- > **Note:** One can display those values like this:
2170
+ One can display those default values:
2083
2171
 
2084
2172
  ```bash
2085
2173
  ascli config echo @ruby:OpenSSL::X509::DEFAULT_CERT_DIR --format=text
2086
2174
  ascli config echo @ruby:OpenSSL::X509::DEFAULT_CERT_FILE --format=text
2087
2175
  ```
2088
2176
 
2089
- `ascp` also needs to validate certificates when using **WSS**.
2177
+ `ascp` also needs to validate certificates when using **WSS** for transfer TCP part (instead of SSH).
2090
2178
 
2091
- > **Note:** `ascli` overrides the default hardcoded location used by `ascp` for WSS (e.g. on macOS: `/Library/Aspera/ssl`) and uses the same locations as specified in `cert_stores` (using `-i` switch of `ascp`). Hardcoded locations can be found using:
2179
+ By default,`ascp` uses an hardcoded root location `OPENSSLDIR`.
2180
+ Original `ascp`'s hardcoded locations can be found using:
2092
2181
 
2093
2182
  ```bash
2094
2183
  ascli config ascp info --fields=openssldir
2095
2184
  ```
2096
2185
 
2097
- or
2098
-
2099
- ```bash
2100
- strings $(ascli config ascp info --fields=ascp)|grep -w OPENSSLDIR
2101
- ```
2186
+ E.g. on macOS: `/Library/Aspera/ssl`.
2187
+ Then trusted certificates are taken from `[OPENSSLDIR]/cert.pem` and files in `[OPENSSLDIR]/certs`.
2188
+ `ascli` overrides the default hardcoded location used by `ascp` for WSS and uses the same locations as specified in `cert_stores` (using the `-i` option of `ascp`).
2102
2189
 
2103
2190
  To update trusted root certificates for `ascli`:
2104
2191
  Display the trusted certificate store locations used by `ascli`.
2105
2192
  Typically done by updating the system's root certificate store.
2106
2193
 
2107
- An up-to-date version of the certificate bundle can be retrieved with:
2194
+ An up-to-date version of the certificate bundle can also be retrieved with:
2108
2195
 
2109
2196
  ```bash
2110
2197
  ascli config echo @uri:https://curl.haxx.se/ca/cacert.pem --format=text
@@ -2113,18 +2200,18 @@ ascli config echo @uri:https://curl.haxx.se/ca/cacert.pem --format=text
2113
2200
  To download that certificate store:
2114
2201
 
2115
2202
  ```bash
2116
- ascli config echo @uri:https://curl.haxx.se/ca/cacert.pem --format=text > /tmp/cacert.pem
2203
+ ascli config echo @uri:https://curl.haxx.se/ca/cacert.pem --format=text --output=/tmp/cacert.pem
2117
2204
  ```
2118
2205
 
2119
- Then, use this store by setting the option `cert_stores` or env var `SSL_CERT_FILE`.
2206
+ Then, use this store by setting the option `cert_stores` (or env var `SSL_CERT_FILE`).
2120
2207
 
2121
- To trust a specific certificate (e.g. self-signed), **provided that the `CN` is correct**, save the certificate to a file:
2208
+ To trust a specific certificate (e.g. self-signed), **provided that the `CN` is correct**, save the certificate chain to a file:
2122
2209
 
2123
2210
  ```bash
2124
- ascli config remote_certificate https://localhost:9092 > myserver.pem
2211
+ ascli config remote_certificate chain https://localhost:9092 --insecure=yes --output=myserver.pem
2125
2212
  ```
2126
2213
 
2127
- > **Note:** The saved certificate shows the CN as first line.
2214
+ > **Note:** Use command `name` to display the remote common name of the remote certificate.
2128
2215
 
2129
2216
  Then, use this file as certificate store (e.g. here, Node API):
2130
2217
 
@@ -2146,7 +2233,7 @@ The following options can be specified in the option `query`:
2146
2233
  | double | Display double text resolution (half characters) (Bool) |
2147
2234
  | font_ratio | Font height/width ratio in terminal (Float) |
2148
2235
 
2149
- ### <a id="graphical"></a>Graphical Interactions: Browser and Text Editor
2236
+ ### Graphical Interactions: Browser and Text Editor
2150
2237
 
2151
2238
  Some actions may require the use of a graphical tool:
2152
2239
 
@@ -2174,7 +2261,7 @@ Available loggers: `stdout`, `stderr`, `syslog`.
2174
2261
 
2175
2262
  Available levels: `debug`, `info`, `warn`, `error`.
2176
2263
 
2177
- > **Note:** When using the `direct` agent (`ascp`), additional transfer logs can be activated using `ascp` options and `ascp_args`, see [`direct`](#agt_direct).
2264
+ > **Note:** When using the `direct` agent (`ascp`), additional transfer logs can be activated using `ascp` options and `ascp_args`, see [`direct`](#agent-direct).
2178
2265
 
2179
2266
  Examples:
2180
2267
 
@@ -2201,7 +2288,7 @@ To get traces of execution, with dump of API calls, use argument : `--log-level=
2201
2288
  To display HTTP/S traffic set option `log_level` to `trace2`: `--log-level=trace2`.
2202
2289
  It will display the exact content of HTTP requests and responses.
2203
2290
 
2204
- ### <a id="http_options"></a>HTTP socket parameters
2291
+ ### HTTP socket parameters
2205
2292
 
2206
2293
  To ignore SSL certificate for **any** address/port, use option: `insecure`, i.e. `--insecure=yes`.
2207
2294
  To ignore SSL certificate for a list of specific address/port, use option `ignore_certificate`, set to an `Array` of URL for which certificate will be ignored (only the address and port are matched), e.g. `--ignore-certificate=@list:,https://127.0.0.1:9092`
@@ -2306,13 +2393,25 @@ ascli --proxy-credentials=@list::__username_here__:__password_here__ ...
2306
2393
 
2307
2394
  #### Proxy for Legacy Aspera HTTP/S Fallback
2308
2395
 
2309
- Only supported with the `direct` agent: To specify a proxy for legacy HTTP fallback, use `ascp` native option `-x` and `ascp_args`: `--transfer-info=@json:'{"ascp_args":["-x","url_here"]}'`. Alternatively, set the [*transfer-spec*](#transferspec) parameter: `EX_http_proxy_url`.
2396
+ Only supported with the `direct` agent: To specify a proxy for legacy HTTP fallback, use `ascp` native option `-x` and `ascp_args`: `--transfer-info=@json:'{"ascp_args":["-x","url_here"]}'`.
2310
2397
 
2311
2398
  #### FASP proxy (forward) for transfers
2312
2399
 
2313
- To specify a FASP proxy (forward), set the [*transfer-spec*](#transferspec) parameter: `proxy` (only supported with the `direct` agent).
2400
+ To specify a FASP proxy (forward), set the [*transfer-spec*](#transfer-specification) parameter: `proxy` (only supported with the `direct` agent).
2401
+
2402
+ For example, for an Aspera forward proxy not encrypted (HTTP) without authentication running on port 9091, the option would be:
2403
+
2404
+ ```bash
2405
+ --ts=@json:'{"proxy":"dnat://proxy.example.org:9091"}'
2406
+ ```
2407
+
2408
+ Or, alternatively, (prefer transfer spec like above, generally):
2409
+
2410
+ ```bash
2411
+ --transfer-info=@json:'{"ascp_args":["--proxy","dnat://proxy.example.org:9091"]}'
2412
+ ```
2314
2413
 
2315
- ### <a id="client"></a>FASP configuration
2414
+ ### FASP configuration
2316
2415
 
2317
2416
  The `config` plugin also allows specification for the use of a local FASP **client**.
2318
2417
  It provides the following commands for `ascp` subcommand:
@@ -2344,7 +2443,7 @@ ascli config ascp info
2344
2443
  ...
2345
2444
  ```
2346
2445
 
2347
- #### Selection of `ascp` location for [`direct`](#agt_direct) agent
2446
+ #### Selection of `ascp` location for [`direct`](#agent-direct) agent
2348
2447
 
2349
2448
  By default, `ascli` uses any found local product with `ascp`, including Transfer SDK.
2350
2449
 
@@ -2376,7 +2475,7 @@ Updated: global_common_defaults: ascp_path <- C:\Users\admin\.aspera\ascli\sdk\a
2376
2475
  Saved to default global preset global_common_defaults
2377
2476
  ```
2378
2477
 
2379
- If the path has spaces, read section: [Shell and Command line parsing](#parsing).
2478
+ If the path has spaces, read section: [Shell and Command line parsing](#command-line-parsing-special-characters).
2380
2479
 
2381
2480
  #### List locally installed Aspera Transfer products
2382
2481
 
@@ -2397,7 +2496,7 @@ ascli config ascp products list
2397
2496
  +---------------------------------------+----------------------------------------+
2398
2497
  ```
2399
2498
 
2400
- #### Selection of local client for `ascp` for [`direct`](#agt_direct) agent
2499
+ #### Selection of local client for `ascp` for [`direct`](#agent-direct) agent
2401
2500
 
2402
2501
  If no `ascp` is selected, this is equivalent to using option: `--use-product=FIRST`.
2403
2502
 
@@ -2453,58 +2552,64 @@ Time: 00:00:02 ============================================= 100% 27766 KB/sec T
2453
2552
  Downloaded: IBMAsperaConnectInstaller-3.11.2.63.dmg
2454
2553
  ```
2455
2554
 
2456
- ### <a id="agents"></a>Transfer Clients: Agents
2555
+ ### Transfer Clients: Agents
2457
2556
 
2458
2557
  Some of the actions on Aspera Applications lead to file transfers (upload and download) using the FASP protocol (`ascp`).
2459
2558
 
2460
- When a transfer needs to be started, a [*transfer-spec*](#transferspec) has been internally prepared.
2461
- This [*transfer-spec*](#transferspec) will be executed by a transfer client, here called **Transfer Agent**.
2559
+ When a transfer needs to be started, a [*transfer-spec*](#transfer-specification) has been internally prepared.
2560
+ This [*transfer-spec*](#transfer-specification) will be executed by a transfer client, here called **Transfer Agent**.
2462
2561
 
2463
2562
  There are currently 3 agents, set with option `transfer`:
2464
2563
 
2465
- - [`direct`](#agt_direct) : a local execution of `ascp`
2466
- - [`connect`](#agt_connect) : use of a local Connect Client
2467
- - [`node`](#agt_node) : use of an Aspera Transfer Node (potentially **remote**).
2468
- - [`httpgw`](#agt_httpgw) : use of an Aspera HTTP Gateway
2469
- - [`trsdk`](#agt_trsdk) : use of Aspera Transfer SDK
2564
+ - [`direct`](#agent-direct) : execution of `ascp`
2565
+ - [`trsdk`](#agent-transfer-sdk) : use of Aspera Transfer SDK (local)
2566
+ - [`connect`](#agent-connect-client) : use Connect Client (local)
2567
+ - [`alpha`](#agent-desktop-client) : use the new Desktop Client (local)
2568
+ - [`node`](#agent-node-api) : use an Aspera Transfer Node (**remote**).
2569
+ - [`httpgw`](#agent-http-gateway) : use an Aspera HTTP Gateway (**remote**)
2470
2570
 
2471
2571
  > **Note:** All transfer operations are seen from the point of view of the agent.
2472
2572
  For example, a node agent executing an **upload**, or **package send** operation
2473
2573
  will effectively push files to the related server from the agent node.
2474
2574
 
2475
- `ascli` standardizes on the use of a [*transfer-spec*](#transferspec) instead of **native** `ascp` options to provide parameters for a transfer session, as a common method for those three Transfer Agents.
2575
+ `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.
2476
2576
 
2477
2577
  Specific options for agents are provided with option `transfer_info`, cumulatively.
2478
2578
 
2479
- #### <a id="agt_direct"></a>Direct
2579
+ #### Agent: Direct
2480
2580
 
2481
2581
  The `direct` agent directly executes a local `ascp`.
2482
2582
  This is the default agent for `ascli` (option `--transfer=direct`).
2483
2583
  `ascli` will search locally installed Aspera products, including SDK, and use `ascp` from that component.
2484
- Refer to section [FASP](#client).
2584
+ Refer to section [FASP](#fasp-configuration).
2485
2585
 
2486
2586
  The `transfer_info` option accepts the following optional parameters to control multi-session, Web Socket Session and Resume policy:
2487
2587
 
2488
2588
  | Name | Type | Description |
2489
2589
  |------------------------|-------|-------------|
2490
2590
  | `wss` | Bool | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
2491
- | `ascp_args` | Array | Array of strings with native `ascp` arguments<br/>Use this instead of deprecated `EX_ascp_args`.<br/>Default: [] |
2591
+ | `ascp_args` | Array | Array of strings with native `ascp` arguments.<br/>Default: [] |
2492
2592
  | `spawn_timeout_sec` | Float | Multi session<br/>Verification time that `ascp` is running<br/>Default: 3 |
2493
2593
  | `spawn_delay_sec` | Float | Multi session<br/>Delay between startup of sessions<br/>Default: 2 |
2494
2594
  | `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 |
2495
- | `resume` | Hash | Resume<br/>parameters<br/>See below |
2496
- | `resume.iter_max` | int | Resume<br/>Max number of retry on error<br/>Default: 7 |
2497
- | `resume.sleep_initial` | int | Resume<br/>First Sleep before retry<br/>Default: 2 |
2498
- | `resume.sleep_factor` | int | Resume<br/>Multiplier of sleep period between attempts<br/>Default: 2 |
2499
- | `resume.sleep_max` | int | Resume<br/>Default: 60 |
2595
+ | `trusted_certs` | Array | List of repositories for trusted certificates. |
2596
+ | `resume` | Hash | Resume parameters. See below |
2597
+ | `resume.iter_max` | int | Max number of retry on error<br/>Default: 7 |
2598
+ | `resume.sleep_initial` | int | First Sleep before retry<br/>Default: 2 |
2599
+ | `resume.sleep_factor` | int | Multiplier of sleep period between attempts<br/>Default: 2 |
2600
+ | `resume.sleep_max` | int | Default: 60 |
2500
2601
 
2501
2602
  In case of transfer interruption, the agent will **resume** a transfer up to `iter_max` time.
2502
- Sleep between iterations is:
2603
+ Sleep between iterations is given by the following formula where `iter_index` is the current iteration index, starting at 0:
2503
2604
 
2504
2605
  ```bash
2505
- max( sleep_max , sleep_initial * sleep_factor ^ (iter_index-1) )
2606
+ max( sleep_max , sleep_initial * sleep_factor ^ iter_index )
2506
2607
  ```
2507
2608
 
2609
+ By default, Ruby's root CA store is used to validate any HTTPS endpoint used by `ascp` (e.g. WSS).
2610
+ In order to use a custom certificate store, use the `trusted_certs` parameter.
2611
+ To use `ascp`'s default, use option: `--transfer-info=@json:'{"trusted_certs":null}'`.
2612
+
2508
2613
  Some transfer errors are considered **retry-able** (e.g. timeout) and some other not (e.g. wrong password).
2509
2614
  The list of known protocol errors and retry level can be listed:
2510
2615
 
@@ -2519,9 +2624,6 @@ ascli ... --transfer-info=@json:'{"wss":true,"resume":{"iter_max":20}}'
2519
2624
  ascli ... --transfer-info=@json:'{"spawn_delay_sec":2.5,"multi_incr_udp":false}'
2520
2625
  ```
2521
2626
 
2522
- > **Note:** The `direct` agent supports additional `transfer_spec` parameters starting with `EX_` (extended).
2523
- But it is preferred to use the option `transfer_info` with parameter `ascp_args`.
2524
-
2525
2627
  This can be useful to activate logging using option `-L` of `ascp`.
2526
2628
  For example, to activate debug level 2 for `ascp` (`DD`), and display those logs on the terminal (`-`):
2527
2629
 
@@ -2533,15 +2635,9 @@ This is useful to debug if a transfer fails.
2533
2635
 
2534
2636
  To store `ascp` logs in file `aspera-scp-transfer.log` in a folder, use `--transfer-info=@json:'{"ascp_args":["-L","/path/to/folder"]}'`.
2535
2637
 
2536
- > **Note:** When transfer agent [`direct`](#agt_direct) is used, the list of files to transfer is provided to `ascp` using either `--file-list` or `--file-pair-list` and a file list (or pair) file generated in a temporary folder. (unless `--file-list` or `--file-pair-list` is provided using `transfer_info` parameter `ascp_args`).
2638
+ > **Note:** When transfer agent [`direct`](#agent-direct) is used, the list of files to transfer is provided to `ascp` using either `--file-list` or `--file-pair-list` and a file list (or pair) file generated in a temporary folder. (unless `--file-list` or `--file-pair-list` is provided using `transfer_info` parameter `ascp_args`).
2537
2639
 
2538
- In addition to standard methods described in section [File List](#file_list), it is possible to specify the list of file using those additional methods:
2539
-
2540
- - Using the pseudo [*transfer-spec*](#transferspec) parameter `EX_file_list`
2541
-
2542
- ```bash
2543
- --sources=@ts --ts=@json:'{"EX_file_list":"file_list.txt"}'
2544
- ```
2640
+ In addition to standard methods described in section [File List](#list-of-files-for-transfers), it is possible to specify the list of file using those additional methods:
2545
2641
 
2546
2642
  - Using option `transfer_info` parameter `ascp_args`
2547
2643
 
@@ -2553,7 +2649,7 @@ In addition to standard methods described in section [File List](#file_list), it
2553
2649
  >
2554
2650
  > **Note:** Those 2 additional methods avoid the creation of a copy of the file list: if the standard options `--sources=@lines:@file:... --src-type=...` are used, then the file is list read and parsed, and a new file list is created in a temporary folder.
2555
2651
  >
2556
- > **Note:** Those methods have limitations: they apply **only** to the [`direct`](#agt_direct) transfer agent (i.e. local `ascp`) and not for Aspera on Cloud.
2652
+ > **Note:** Those methods have limitations: they apply **only** to the [`direct`](#agent-direct) transfer agent (i.e. local `ascp`) and not for Aspera on Cloud.
2557
2653
 
2558
2654
  This agent supports a local configuration file: `aspera.conf` where Virtual links can be configured:
2559
2655
 
@@ -2616,13 +2712,20 @@ It is also possible to set a schedule with different time and days, for example
2616
2712
  start=08 end=19 days=mon,tue,wed,thu capacity=900000;1000000
2617
2713
  ```
2618
2714
 
2619
- #### <a id="agt_connect"></a>IBM Aspera Connect Client GUI
2715
+ #### Agent: Connect Client
2716
+
2717
+ By specifying option: `--transfer=connect`, `ascli` will start transfers using the locally installed **IBM Aspera Connect Client**.
2718
+ There are no option for `transfer_info`.
2719
+
2720
+ #### Agent: Desktop Client
2620
2721
 
2621
- By specifying option: `--transfer=connect`, `ascli` will start transfers using the locally installed Aspera Connect Client. There are no option for `transfer_info`.
2722
+ By specifying option: `--transfer=alpha`, `ascli` will start transfers using the locally installed **IBM Aspera Desktop Client**.
2723
+ There are no option for `transfer_info`.
2622
2724
 
2623
- #### <a id="agt_node"></a>Aspera Node API : Node to node transfers
2725
+ #### Agent: Node API
2624
2726
 
2625
2727
  By specifying option: `--transfer=node`, `ascli` starts transfers in an Aspera Transfer Server using the Node API, either on a local or remote node.
2728
+ This is especially useful for direct node-to-node transfers.
2626
2729
  Parameters provided in option `transfer_info` are:
2627
2730
 
2628
2731
  | Name | Type | Description |
@@ -2632,7 +2735,7 @@ Parameters provided in option `transfer_info` are:
2632
2735
  | password | string | Password, secret or bearer token</br>Mandatory |
2633
2736
  | root_id | string | Root file id</br>Mandatory only for bearer token |
2634
2737
 
2635
- Like any other option, `transfer_info` can get its value from a pre-configured [option preset](#lprt) :
2738
+ Like any other option, `transfer_info` can get its value from a pre-configured [Option Preset](#option-preset)' :
2636
2739
 
2637
2740
  ```bash
2638
2741
  --transfer-info=@preset:_name_here_
@@ -2649,7 +2752,7 @@ If `transfer_info` is not specified and a default node has been configured (name
2649
2752
  If the `password` value begins with `Bearer` then the `username` is expected to be an access key and the parameter `root_id` is mandatory and specifies the root file id on the node.
2650
2753
  It can be either the access key's root file id, or any authorized file id underneath it.
2651
2754
 
2652
- #### <a id="agt_httpgw"></a>HTTP Gateway
2755
+ #### Agent: HTTP Gateway
2653
2756
 
2654
2757
  If it possible to send using a HTTP gateway, in case use of FASP is not allowed.
2655
2758
 
@@ -2670,7 +2773,7 @@ ascli faspex package recv 323 --transfer=httpgw --transfer-info=@json:'{"url":"h
2670
2773
 
2671
2774
  > **Note:** The gateway only supports transfers authorized with a token.
2672
2775
 
2673
- #### <a id="agt_trsdk"></a>Transfer SDK
2776
+ #### Agent: Transfer SDK
2674
2777
 
2675
2778
  Another possibility is to use the Transfer SDK daemon (`asperatransferd`).
2676
2779
  Set option `transfer` to `trsdk`.
@@ -2706,10 +2809,10 @@ On Windows the compilation may fail for various reasons (3.1.1):
2706
2809
 
2707
2810
  <!-- spellchecker: enable -->
2708
2811
 
2709
- ### <a id="transferspec"></a>Transfer Specification
2812
+ ### Transfer Specification
2710
2813
 
2711
2814
  Some commands lead to file transfer (upload/download).
2712
- All parameters necessary for this transfer are described in a [*transfer-spec*](#transferspec) (Transfer Specification), such as:
2815
+ All parameters necessary for this transfer are described in a [*transfer-spec*](#transfer-specification) (Transfer Specification), such as:
2713
2816
 
2714
2817
  - Server address
2715
2818
  - Transfer user name
@@ -2717,29 +2820,29 @@ All parameters necessary for this transfer are described in a [*transfer-spec*](
2717
2820
  - File list
2718
2821
  - Etc...
2719
2822
 
2720
- `ascli` builds the [*transfer-spec*](#transferspec) internally as a `Hash`.
2823
+ `ascli` builds the [*transfer-spec*](#transfer-specification) internally as a `Hash`.
2721
2824
  It is not necessary to provide additional parameters on the command line for this transfer.
2722
2825
 
2723
- It is possible to modify or add any of the supported [*transfer-spec*](#transferspec) parameter using the `ts` option.
2724
- The `ts` option accepts a [`Hash` Extended Value](#extended) containing one or several [*transfer-spec*](#transferspec) parameters.
2826
+ It is possible to modify or add any of the supported [*transfer-spec*](#transfer-specification) parameter using the `ts` option.
2827
+ The `ts` option accepts a [`Hash` Extended Value](#extended-value-syntax) containing one or several [*transfer-spec*](#transfer-specification) parameters.
2725
2828
  Multiple `ts` options on command line are cumulative, and the `Hash` value is deeply merged.
2726
2829
  To remove a (deep) key from transfer spec, set the value to `null`.
2727
2830
 
2728
2831
  > **Note:** Default transfer spec values can be displayed with command: `config ascp info --flat-hash=no` under field `ts`.
2729
2832
 
2730
- It is possible to specify `ascp` options when the `transfer` option is set to [`direct`](#agt_direct) using `transfer_info` option parameter: `ascp_args`.
2833
+ It is possible to specify `ascp` options when the `transfer` option is set to [`direct`](#agent-direct) using `transfer_info` option parameter: `ascp_args`.
2731
2834
  Example: `--transfer-info=@json:'{"ascp_args":["-l","100m"]}'`.
2732
2835
  This is especially useful for `ascp` command line parameters not supported in the transfer spec.
2733
2836
 
2734
- The use of a [*transfer-spec*](#transferspec) instead of `ascp` parameters has the advantage of:
2837
+ The use of a [*transfer-spec*](#transfer-specification) instead of `ascp` parameters has the advantage of:
2735
2838
 
2736
- - Common to all [Transfer Agent](#agents)
2839
+ - Common to all [Transfer Agent](#transfer-clients-agents)
2737
2840
  - Not dependent on command line limitations (special characters...)
2738
2841
 
2739
- ### <a id="transferparams"></a>Transfer Parameters
2842
+ ### Transfer Parameters
2740
2843
 
2741
- All standard [*transfer-spec*](#transferspec) parameters can be specified.
2742
- [*transfer-spec*](#transferspec) can also be saved/overridden in the configuration file.
2844
+ All standard [*transfer-spec*](#transfer-specification) parameters can be specified.
2845
+ [*transfer-spec*](#transfer-specification) can also be saved/overridden in the configuration file.
2743
2846
 
2744
2847
  References:
2745
2848
 
@@ -2764,48 +2867,46 @@ Columns:
2764
2867
 
2765
2868
  `ascp` argument or environment variable is provided in description.
2766
2869
 
2767
- Fields with EX_ prefix are extensions to transfer agent [`direct`](#agt_direct). (only in `ascli`).
2768
-
2769
2870
  | Field | Type | D | N | C | T | H | Description |
2770
2871
  | ----- | ---- | - | - | - | - | - | ----------- |
2771
2872
  | apply_local_docroot | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Apply local docroot to source paths.<br/>(--apply-local-docroot) |
2772
- | authentication | string | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | value=token for SSH bypass keys, else password asked if not provided.<br/>(<ignored>) |
2873
+ | authentication | string | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | value=token for SSH bypass keys, else password asked if not provided.<br/>(&lt;ignored&gt;) |
2773
2874
  | 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}) |
2774
- | cipher_allowed | string | Y | Y | Y | Y | Y | returned by node API. Valid literals include "aes-128" and "none".<br/>(<ignored>) |
2775
- | compression | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only, 0 / 1?<br/>(<ignored>) |
2875
+ | cipher_allowed | string | Y | Y | Y | Y | Y | returned by node API. Valid literals include "aes-128" and "none".<br/>(&lt;ignored&gt;) |
2876
+ | compression | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only, 0 / 1?<br/>(&lt;ignored&gt;) |
2776
2877
  | 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}) |
2777
2878
  | content_protection_password | string | Y | Y | Y | Y | Y | Specifies CSEAR password. (content protection)<br/>(env:ASPERA_SCP_FILEPASS) |
2778
2879
  | cookie | string | Y | Y | Y | Y | Y | Metadata for transfer specified by application<br/>(env:ASPERA_SCP_COOKIE) |
2779
2880
  | create_dir | bool | Y | Y | Y | Y | Y | Specifies whether to create new directories.<br/>(-d) |
2780
2881
  | 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) |
2781
2882
  | delete_source | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
2782
- | destination_root | string | Y | Y | Y | Y | Y | Destination root directory.<br/>(<special>) |
2783
- | 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/>(<ignored>) |
2883
+ | destination_root | string | Y | Y | Y | Y | Y | Destination root directory.<br/>(&lt;special&gt;) |
2884
+ | 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;) |
2784
2885
  | dgram_size | int | Y | Y | Y | Y | Y | UDP datagram size in bytes<br/>(-Z {int}) |
2785
2886
  | direction | string | Y | Y | Y | Y | Y | Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode (conversion){enum}) |
2786
2887
  | exclude_newer_than | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | skip src files with mtime > arg<br/>(--exclude-newer-than {int}) |
2787
2888
  | exclude_older_than | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | skip src files with mtime < arg<br/>(--exclude-older-than {int}) |
2788
2889
  | fasp_port | int | Y | Y | Y | Y | Y | Specifies fasp (UDP) port.<br/>(-O {int}) |
2789
- | fasp_url | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Only used in Faspex.<br/>(<ignored>) |
2790
- | 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/>(<ignored>) |
2890
+ | fasp_url | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Only used in Faspex.<br/>(&lt;ignored&gt;) |
2891
+ | 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;) |
2791
2892
  | 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}) |
2792
2893
  | http_fallback_port | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specifies http port when no cipher is used<br/>(-t {int}) |
2793
2894
  | https_fallback_port | int | Y | Y | Y | Y | Y | Specifies https port when cipher is used<br/>(-t {int}) |
2794
2895
  | keepalive | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The session is running in persistent session mode.<br/>(--keepalive) |
2795
- | lock_min_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(<ignored>) |
2796
- | 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/>(<ignored>) |
2797
- | lock_rate_policy | bool | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | If true, lock the rate policy to the default value.<br/>(<ignored>) |
2798
- | lock_target_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(<ignored>) |
2799
- | 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/>(<ignored>) |
2800
- | 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/>(<ignored>) |
2896
+ | lock_min_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
2897
+ | 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;) |
2898
+ | lock_rate_policy | bool | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | If true, lock the rate policy to the default value.<br/>(&lt;ignored&gt;) |
2899
+ | lock_target_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
2900
+ | 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;) |
2901
+ | 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;) |
2801
2902
  | min_rate_kbps | int | Y | Y | Y | Y | Y | Set the minimum transfer rate in kilobits per second.<br/>(-m {int}) |
2802
2903
  | 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}) |
2803
- | 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/>(<special>) |
2904
+ | 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;) |
2804
2905
  | 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}) |
2805
- | obfuscate_file_names | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | HTTP Gateway obfuscates file names when set to true.<br/>(<ignored>) |
2906
+ | obfuscate_file_names | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | HTTP Gateway obfuscates file names when set to true.<br/>(&lt;ignored&gt;) |
2806
2907
  | 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}) |
2807
- | 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/>(<ignored>) |
2808
- | paths | array | Y | Y | Y | Y | Y | Array of path to the source (required) and a path to the destination (optional).<br/>(<special>) |
2908
+ | 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;) |
2909
+ | 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;) |
2809
2910
  | precalculate_job_size | bool | Y | Y | Y | Y | Y | Specifies whether to precalculate the job size.<br/>(--precalculate-job-size) |
2810
2911
  | 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) |
2811
2912
  | preserve_acls | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve access control lists.<br/>Allowed values: none, native, metafile<br/>(--preserve-acls {enum}) |
@@ -2819,9 +2920,9 @@ Fields with EX_ prefix are extensions to transfer agent [`direct`](#agt_direct).
2819
2920
  | preserve_times | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve file timestamps.<br/>(--preserve-times) |
2820
2921
  | 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}) |
2821
2922
  | 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}) |
2822
- | 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/>(<ignored>) |
2823
- | read_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(<ignored>) |
2824
- | 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/>(<ignored>) |
2923
+ | 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;) |
2924
+ | read_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
2925
+ | 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;) |
2825
2926
  | remote_host | string | Y | Y | Y | Y | Y | IP or fully qualified domain name of the remote server<br/>(--host {string}) |
2826
2927
  | remote_password | string | Y | Y | Y | Y | Y | SSH session password<br/>(env:ASPERA_SCP_PASS) |
2827
2928
  | remote_user | string | Y | Y | Y | Y | Y | Remote user. Default value is "xfer" on node or connect.<br/>(--user {string}) |
@@ -2830,38 +2931,27 @@ Fields with EX_ prefix are extensions to transfer agent [`direct`](#agt_direct).
2830
2931
  | 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) |
2831
2932
  | 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) |
2832
2933
  | 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}) |
2833
- | retry_duration | string<br/>int | &nbsp; | Y | Y | &nbsp; | &nbsp; | Specifies how long to wait before retrying transfer. (e.g. "5min")<br/>(<ignored>) |
2934
+ | 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;) |
2834
2935
  | 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}) |
2835
- | 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/>(<ignored>) |
2936
+ | 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;) |
2836
2937
  | 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}) |
2837
- | ssh_args | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Array of arguments to pass to SSH. Use with caution.<br/>(<ignored>) |
2938
+ | ssh_args | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Array of arguments to pass to SSH. Use with caution.<br/>(&lt;ignored&gt;) |
2838
2939
  | ssh_port | int | Y | Y | Y | Y | Y | Specifies SSH (TCP) port. Default: local:22, other:33001<br/>(-P {int}) |
2839
2940
  | 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) |
2840
2941
  | 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) |
2841
2942
  | sshfp | string | Y | Y | Y | Y | Y | Check it against server SSH host key fingerprint<br/>(--check-sshfp {string}) |
2842
2943
  | 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}) |
2843
2944
  | tags | hash | Y | Y | Y | Y | Y | Metadata for transfer as JSON<br/>(--tags64 (conversion){hash}) |
2844
- | target_rate_cap_kbps | int | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | Returned by upload/download_setup node API.<br/>(<ignored>) |
2945
+ | target_rate_cap_kbps | int | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | Returned by upload/download_setup node API.<br/>(&lt;ignored&gt;) |
2845
2946
  | target_rate_kbps | int | Y | Y | Y | Y | Y | Specifies desired speed for the transfer.<br/>(-l {int}) |
2846
- | target_rate_percentage | string | Y | Y | Y | Y | Y | TODO: remove ?<br/>(<ignored>) |
2847
- | title | string | &nbsp; | Y | Y | &nbsp; | &nbsp; | Title of the transfer<br/>(<ignored>) |
2947
+ | target_rate_percentage | string | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
2948
+ | title | string | &nbsp; | Y | Y | &nbsp; | &nbsp; | Title of the transfer<br/>(&lt;ignored&gt;) |
2848
2949
  | token | string | Y | Y | Y | Y | Y | Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN) |
2849
- | use_ascp4 | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | specify version of protocol<br/>(<special>) |
2850
- | use_system_ssh | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | TODO, comment...<br/>(<ignored>) |
2851
- | write_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(<ignored>) |
2852
- | wss_enabled | bool | Y | Y | Y | Y | Y | Server has Web Socket service enabled<br/>(<special>) |
2853
- | wss_port | int | Y | Y | Y | Y | Y | TCP port used for websocket service feed<br/>(<special>) |
2854
- | EX_ascp_args | array | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.13) Use option transfer_info.ascp_args<br/>Add native command line arguments to ascp<br/>(<special>) |
2855
- | EX_at_rest_password | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.13) Use standard spec parameter: content_protection_password<br/>Content protection password<br/>(env:ASPERA_SCP_FILEPASS) |
2856
- | EX_file_list | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use command line file list, or option transfer_info.ascp_args<br/>source file list<br/>(<special>) |
2857
- | EX_file_pair_list | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use command line file pair list, or option transfer_info.ascp_args<br/>source file pair list<br/>(<special>) |
2858
- | EX_http_proxy_url | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) TODO, use proxy option ?<br/>Specify the proxy server address used by HTTP Fallback<br/>(-x {string}) |
2859
- | EX_http_transfer_jpeg | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use option transfer_info.ascp_args<br/>HTTP transfers as JPEG file<br/>(-j {int}) |
2860
- | EX_license_text | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use env var ASPERA_SCP_LICENSE<br/>License file text override.<br/>By default ascp looks for license file near executable.<br/>(env:ASPERA_SCP_LICENSE) |
2861
- | EX_no_read | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use option transfer_info.ascp_args<br/>no read source<br/>(--no-read) |
2862
- | EX_no_write | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use option transfer_info.ascp_args<br/>no write on destination<br/>(--no-write) |
2863
- | EX_proxy_password | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use env var ASPERA_PROXY_PASS<br/>Password used for Aspera proxy server authentication.<br/>May be overridden by password in URL provided in parameter: proxy.<br/>(env:ASPERA_PROXY_PASS) |
2864
- | EX_ssh_key_paths | array | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | DEPRECATED: (4.14) Use option transfer_info.ascp_args<br/>Use public key authentication for SSH and specify the private key file paths<br/>(-i {array}) |
2950
+ | use_ascp4 | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | specify version of protocol<br/>(&lt;special&gt;) |
2951
+ | use_system_ssh | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | TODO, comment...<br/>(&lt;ignored&gt;) |
2952
+ | write_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
2953
+ | wss_enabled | bool | Y | Y | Y | Y | Y | Server has Web Socket service enabled<br/>(&lt;special&gt;) |
2954
+ | wss_port | int | Y | Y | Y | Y | Y | TCP port used for websocket service feed<br/>(&lt;special&gt;) |
2865
2955
 
2866
2956
  #### Destination folder for transfers
2867
2957
 
@@ -2870,12 +2960,12 @@ The destination folder is set by `ascli` by default to:
2870
2960
  - `.` for downloads
2871
2961
  - `/` for uploads
2872
2962
 
2873
- It is specified by the [*transfer-spec*](#transferspec) parameter `destination_root`.
2963
+ It is specified by the [*transfer-spec*](#transfer-specification) parameter `destination_root`.
2874
2964
  As such, it can be modified with option: `--ts=@json:'{"destination_root":"<path>"}'`.
2875
2965
  The option `to_folder` provides an equivalent and convenient way to change this parameter:
2876
2966
  `--to-folder=<path>` .
2877
2967
 
2878
- #### <a id="file_list"></a>List of files for transfers
2968
+ #### List of files for transfers
2879
2969
 
2880
2970
  When uploading, downloading or sending files, the user must specify the list of files to transfer.
2881
2971
 
@@ -2884,8 +2974,8 @@ By default the list of files to transfer is simply provided on the command line.
2884
2974
  The list of (source) files to transfer is specified by (extended value) option `sources` (default: `@args`).
2885
2975
  The list is either simply the list of source files, or a combined source/destination list (see below) depending on value of option `src_type` (default: `list`).
2886
2976
 
2887
- In `ascli`, all transfer parameters, including file list, are provided to the transfer agent in a [*transfer-spec*](#transferspec) so that execution of a transfer is independent of the transfer agent (direct, connect, node, transfer sdk...).
2888
- So, eventually, the list of files to transfer is provided to the transfer agent using the [*transfer-spec*](#transferspec) field: `"paths"` which is a list (array) of pairs of `"source"` (mandatory) and `"destination"` (optional).
2977
+ In `ascli`, all transfer parameters, including file list, are provided to the transfer agent in a [*transfer-spec*](#transfer-specification) so that execution of a transfer is independent of the transfer agent (direct, connect, node, transfer sdk...).
2978
+ So, eventually, the list of files to transfer is provided to the transfer agent using the [*transfer-spec*](#transfer-specification) field: `"paths"` which is a list (array) of pairs of `"source"` (mandatory) and `"destination"` (optional).
2889
2979
  The `sources` and `src_type` options provide convenient ways to populate the transfer spec with the source file list.
2890
2980
 
2891
2981
  Possible values for option `sources` are:
@@ -2903,7 +2993,7 @@ So, by default, the list of files to transfer will be simply specified on the co
2903
2993
  ascli server upload --sources=@args --src-type=list ~/mysample.file secondfile
2904
2994
  ```
2905
2995
 
2906
- - An [Extended Value](#extended) with type **Array of String**
2996
+ - An [Extended Value](#extended-value-syntax) with type **Array of String**
2907
2997
 
2908
2998
  > **Note:** extended values can be tested with the command `config echo`
2909
2999
 
@@ -3026,7 +3116,7 @@ Advanced Example: Send files `./file1` and `./folder2/files2` to server (e.g. `/
3026
3116
  - Similarly, create a temporary soft link (Linux): `ln -s . tmp_base` and use `--src-base=tmp_base tmp_base/file1 tmp_base/folder2/files2`
3027
3117
  - One can also similarly use `--sources=@ts` and specify the list of files in the `paths` field of transfer spec with both `source` and `destination` for each file.
3028
3118
 
3029
- #### <a id="multisession"></a>Support of multi-session
3119
+ #### Multi-session transfer
3030
3120
 
3031
3121
  Multi session, i.e. starting a transfer of a file set using multiple sessions (one `ascp` process per session) is supported on `direct` and `node` agents, not yet on connect.
3032
3122
 
@@ -3100,7 +3190,7 @@ The same progress bar is used for any type of transfer, using `ascp`, server to
3100
3190
 
3101
3191
  To display the native progress bar of `ascp`, use `--progress-bar=no --transfer-info=@json:'{"quiet":false}'`.
3102
3192
 
3103
- ### <a id="scheduler"></a>Scheduler
3193
+ ### Scheduler
3104
3194
 
3105
3195
  It is useful to configure automated scheduled execution.
3106
3196
  `ascli` does not provide an internal scheduler.
@@ -3147,7 +3237,7 @@ EOF
3147
3237
 
3148
3238
  > **Note:** Logging options are kept here in the cron file instead of configuration file to allow execution on command line with output on command line.
3149
3239
 
3150
- ### <a id="locking"></a>Locking for exclusive execution
3240
+ ### Locking for exclusive execution
3151
3241
 
3152
3242
  In some cases one needs to ensure that `ascli` is not executed several times in parallel.
3153
3243
 
@@ -3219,7 +3309,7 @@ The simplified format is:
3219
3309
  One of the adapters, used in this manual, for testing, is `faux`.
3220
3310
  It is a pseudo file system allowing generation of file data without actual storage (on source or destination).
3221
3311
 
3222
- ### <a id="faux_testing"></a>`faux:` for testing
3312
+ ### `faux:` for testing
3223
3313
 
3224
3314
  This is an extract of the man page of `ascp`.
3225
3315
  This feature is a feature of `ascp`, not `ascli`.
@@ -3301,12 +3391,12 @@ ascli server upload /tmp/sample --to-folder=faux://
3301
3391
  ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=sequential" --to-folder=/Upload
3302
3392
  ```
3303
3393
 
3304
- ### <a id="usage"></a>Usage
3394
+ ### Usage
3305
3395
 
3306
3396
  ```text
3307
3397
  ascli -h
3308
3398
  NAME
3309
- ascli -- a command line tool for Aspera Applications (v4.16.0)
3399
+ ascli -- a command line tool for Aspera Applications (v4.17.0)
3310
3400
 
3311
3401
  SYNOPSIS
3312
3402
  ascli COMMANDS [OPTIONS] [ARGS]
@@ -3395,14 +3485,14 @@ OPTIONS:
3395
3485
  --silent-insecure=ENUM Issue a warning if certificate is ignored: no, [yes]
3396
3486
  --cert-stores=VALUE List of folder with trusted certificates (Array, String)
3397
3487
  --http-options=VALUE Options for HTTP/S socket (Hash)
3398
- --cache-tokens=ENUM Save and reuse Oauth tokens: no, [yes]
3488
+ --cache-tokens=ENUM Save and reuse OAuth tokens: no, [yes]
3399
3489
  --fpac=VALUE Proxy auto configuration script
3400
3490
  --proxy-credentials=VALUE HTTP proxy credentials (user and password) (Array)
3401
3491
  --ts=VALUE Override transfer spec values (Hash)
3402
3492
  --to-folder=VALUE Destination folder for transferred files
3403
3493
  --sources=VALUE How list of transferred files is provided (@args,@ts,Array)
3404
3494
  --src-type=ENUM Type of file list: [list], pair
3405
- --transfer=ENUM Type of transfer agent: trsdk, [direct], httpgw, connect, node, alpha
3495
+ --transfer=ENUM Type of transfer agent: node, [direct], alpha, httpgw, connect, trsdk
3406
3496
  --transfer-info=VALUE Parameters for transfer agent (Hash)
3407
3497
 
3408
3498
 
@@ -3410,7 +3500,7 @@ COMMAND: shares
3410
3500
  SUBCOMMANDS: admin files health
3411
3501
  OPTIONS:
3412
3502
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3413
- --username=VALUE Username to log in
3503
+ --username=VALUE User's name to log in
3414
3504
  --password=VALUE User's password
3415
3505
 
3416
3506
 
@@ -3418,7 +3508,7 @@ COMMAND: node
3418
3508
  SUBCOMMANDS: access_keys api_details asperabrowser async basic_token bearer_token browse central delete download events health http_node_download info license mkdir mkfile mklink rename search service simulator slash space ssync stream sync transfer upload watch_folder
3419
3509
  OPTIONS:
3420
3510
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3421
- --username=VALUE Username to log in
3511
+ --username=VALUE User's name to log in
3422
3512
  --password=VALUE User's password
3423
3513
  --validator=VALUE Identifier of validator (optional for central)
3424
3514
  --asperabrowserurl=VALUE URL for simple aspera web ui
@@ -3432,7 +3522,7 @@ COMMAND: orchestrator
3432
3522
  SUBCOMMANDS: health info plugins processes workflow
3433
3523
  OPTIONS:
3434
3524
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3435
- --username=VALUE Username to log in
3525
+ --username=VALUE User's name to log in
3436
3526
  --password=VALUE User's password
3437
3527
  --result=VALUE Specify result value as: 'work_step:parameter'
3438
3528
  --synchronous=ENUM Wait for completion: [no], yes
@@ -3444,7 +3534,7 @@ COMMAND: bss
3444
3534
  SUBCOMMANDS: subscription
3445
3535
  OPTIONS:
3446
3536
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3447
- --username=VALUE Username to log in
3537
+ --username=VALUE User's name to log in
3448
3538
  --password=VALUE User's password
3449
3539
 
3450
3540
 
@@ -3452,7 +3542,7 @@ COMMAND: alee
3452
3542
  SUBCOMMANDS: entitlement
3453
3543
  OPTIONS:
3454
3544
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3455
- --username=VALUE Username to log in
3545
+ --username=VALUE User's name to log in
3456
3546
  --password=VALUE User's password
3457
3547
 
3458
3548
 
@@ -3469,15 +3559,15 @@ OPTIONS:
3469
3559
 
3470
3560
 
3471
3561
  COMMAND: faspex5
3472
- SUBCOMMANDS: admin bearer_token gateway health packages postprocessing shared_folders user version
3562
+ SUBCOMMANDS: admin bearer_token gateway health invitations packages postprocessing shared_folders user version
3473
3563
  OPTIONS:
3474
3564
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3475
- --username=VALUE Username to log in
3565
+ --username=VALUE User's name to log in
3476
3566
  --password=VALUE User's password
3477
3567
  --client-id=VALUE OAuth client identifier
3478
3568
  --client-secret=VALUE OAuth client secret
3479
3569
  --redirect-uri=VALUE OAuth redirect URI for web authentication
3480
- --auth=ENUM OAuth type of authentication: boot, web, [jwt]
3570
+ --auth=ENUM OAuth type of authentication: web, [jwt], boot
3481
3571
  --private-key=VALUE OAuth JWT RSA private key PEM value (prefix file path with @file:)
3482
3572
  --passphrase=VALUE OAuth JWT RSA private key passphrase
3483
3573
  --box=VALUE Package inbox, either shared inbox name or one of: inbox, inbox_history, inbox_all, inbox_all_history, outbox, outbox_history, pending, pending_history, all or ALL
@@ -3489,19 +3579,19 @@ COMMAND: cos
3489
3579
  SUBCOMMANDS: node
3490
3580
  OPTIONS:
3491
3581
  --bucket=VALUE Bucket name
3492
- --endpoint=VALUE Storage endpoint url
3582
+ --endpoint=VALUE Storage endpoint (URL)
3493
3583
  --apikey=VALUE Storage API key
3494
- --crn=VALUE Resource instance id
3584
+ --crn=VALUE Resource instance id (CRN)
3495
3585
  --service-credentials=VALUE IBM Cloud service credentials (Hash)
3496
3586
  --region=VALUE Storage region
3497
- --identity=VALUE Authentication url (https://iam.cloud.ibm.com/identity)
3587
+ --identity=VALUE Authentication URL (https://iam.cloud.ibm.com/identity)
3498
3588
 
3499
3589
 
3500
3590
  COMMAND: faspex
3501
3591
  SUBCOMMANDS: address_book dropbox health login_methods me package source v4
3502
3592
  OPTIONS:
3503
3593
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3504
- --username=VALUE Username to log in
3594
+ --username=VALUE User's name to log in
3505
3595
  --password=VALUE User's password
3506
3596
  --link=VALUE Public link for specific operation
3507
3597
  --delivery-info=VALUE Package delivery information (Hash)
@@ -3515,7 +3605,7 @@ COMMAND: preview
3515
3605
  SUBCOMMANDS: check events scan show test trevents
3516
3606
  OPTIONS:
3517
3607
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3518
- --username=VALUE Username to log in
3608
+ --username=VALUE User's name to log in
3519
3609
  --password=VALUE User's password
3520
3610
  --skip-format=ENUM Skip this preview format (multiple possible): png, mp4
3521
3611
  --folder-reset-cache=ENUM Force detection of generated preview by refresh cache: [no], header, read
@@ -3551,7 +3641,7 @@ COMMAND: aoc
3551
3641
  SUBCOMMANDS: admin automation bearer_token files gateway organization packages reminder servers tier_restrictions user
3552
3642
  OPTIONS:
3553
3643
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3554
- --username=VALUE Username to log in
3644
+ --username=VALUE User's name to log in
3555
3645
  --password=VALUE User's password
3556
3646
  --auth=ENUM OAuth type of authentication: web, [jwt]
3557
3647
  --client-id=VALUE OAuth API client identifier
@@ -3563,13 +3653,19 @@ OPTIONS:
3563
3653
  --workspace=VALUE Name of workspace (String, NilClass)
3564
3654
  --new-user-option=VALUE New user creation option for unknown package recipients
3565
3655
  --validate-metadata=ENUM Validate shared inbox metadata: no, [yes]
3656
+ --validator=VALUE Identifier of validator (optional for central)
3657
+ --asperabrowserurl=VALUE URL for simple aspera web ui
3658
+ --sync-name=VALUE Sync name
3659
+ --default-ports=ENUM Use standard FASP ports or get from node api (gen4): no, [yes]
3660
+ --root-id=VALUE File id of top folder if using bearer tokens
3661
+ --sync-info=VALUE Information for sync instance and sessions (Hash)
3566
3662
 
3567
3663
 
3568
3664
  COMMAND: server
3569
3665
  SUBCOMMANDS: browse cp delete df download du health info ls md5sum mkdir mv rename rm sync upload
3570
3666
  OPTIONS:
3571
3667
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3572
- --username=VALUE Username to log in
3668
+ --username=VALUE User's name to log in
3573
3669
  --password=VALUE User's password
3574
3670
  --ssh-keys=VALUE SSH key path list (Array or single)
3575
3671
  --passphrase=VALUE SSH private key passphrase
@@ -3581,7 +3677,7 @@ COMMAND: console
3581
3677
  SUBCOMMANDS: health transfer
3582
3678
  OPTIONS:
3583
3679
  --url=VALUE URL of application, e.g. https://faspex.example.com/aspera/faspex
3584
- --username=VALUE Username to log in
3680
+ --username=VALUE User's name to log in
3585
3681
  --password=VALUE User's password
3586
3682
  --filter-from=DATE Only after date
3587
3683
  --filter-to=DATE Only before date
@@ -3594,7 +3690,7 @@ OPTIONS:
3594
3690
  ### Bulk creation and deletion of resources
3595
3691
 
3596
3692
  Bulk creation and deletion of resources are possible using option `bulk` (`yes`,`no`(default)).
3597
- In that case, the operation expects an `Array` of `Hash` instead of a simple `Hash` using the [Extended Value Syntax](#extended).
3693
+ In that case, the operation expects an `Array` of `Hash` instead of a simple `Hash` using the [Extended Value Syntax](#extended-value-syntax).
3598
3694
  This option is available only for some of the resources: if you need it: try and see if the entities you try to create or delete support this option.
3599
3695
 
3600
3696
  ### Plugins
@@ -3646,13 +3742,13 @@ Created ./foo.rb
3646
3742
  ascli --plugin-folder=. foo
3647
3743
  ```
3648
3744
 
3649
- ## <a id="aoc"></a>Plugin: `aoc`: IBM Aspera on Cloud
3745
+ ## Plugin: `aoc`: IBM Aspera on Cloud
3650
3746
 
3651
3747
  Aspera on Cloud API requires the use of Oauth v2 mechanism for authentication (HTTP Basic authentication is not supported).
3652
3748
 
3653
3749
  It is recommended to use the wizard to set it up, although manual configuration is also possible.
3654
3750
 
3655
- ### <a id="aocwizard"></a>Configuration: Using Wizard
3751
+ ### Configuration: Using Wizard
3656
3752
 
3657
3753
  `ascli` provides a configuration wizard.
3658
3754
 
@@ -3695,7 +3791,7 @@ ascli config wizard _your_instance_ aoc
3695
3791
 
3696
3792
  > **Note:** In above example, replace `_your_instance_` with the first part of your actual AoC URL: `https://_your_instance_.ibmaspera.com`.
3697
3793
 
3698
- ### <a id="aocmanual"></a>Configuration: Using manual setup
3794
+ ### Configuration: Using manual setup
3699
3795
 
3700
3796
  > **Note:** If you used the wizard (recommended): skip this section.
3701
3797
 
@@ -3709,15 +3805,17 @@ Several types of OAuth authentication are supported:
3709
3805
 
3710
3806
  The authentication method is controlled by option `auth`.
3711
3807
 
3712
- For a **quick start**, follow the mandatory and sufficient section: [API Client Registration](#clientreg) (auth=web) as well as [[option preset](#lprt) for Aspera on Cloud](#aocpreset).
3808
+ For a **quick start**, follow the mandatory and sufficient section: [API Client Registration](#api-client-registration) (auth=web) as well as [[Option Preset](#option-preset)' for Aspera on Cloud](#configuration-for-aspera-on-cloud).
3713
3809
 
3714
- For a more convenient, browser-less, experience follow the [JWT](#jwt) section (auth=jwt) in addition to Client Registration.
3810
+ For a more convenient, browser-less, experience follow the [JWT](#authentication-with-private-key) section (auth=jwt) in addition to Client Registration.
3715
3811
 
3716
3812
  In Oauth, a **Bearer** token is generated to authenticate REST calls.
3717
3813
  Bearer tokens are valid for a period of time defined (by the AoC app, configurable by admin) at its creation.
3718
3814
  `ascli` saves generated tokens in its configuration folder, tries to re-use them or regenerates them when they have expired.
3719
3815
 
3720
- #### <a id="clientreg"></a>Optional: API Client Registration
3816
+ #### API Client Registration
3817
+
3818
+ > **Optional**
3721
3819
 
3722
3820
  If you use the built-in client_id and client_secret, skip this and do not set them in next section.
3723
3821
 
@@ -3742,11 +3840,11 @@ Let's start by a registration with web based authentication (auth=web):
3742
3840
 
3743
3841
  Once the client is registered, a **Client ID** and **Secret** are created, these values will be used in the next step.
3744
3842
 
3745
- #### <a id="aocpreset"></a>[option preset](#lprt) for Aspera on Cloud
3843
+ #### Configuration for Aspera on Cloud
3746
3844
 
3747
- If you did not use the wizard, you can also manually create a [option preset](#lprt) for `ascli` in its configuration file.
3845
+ If you did not use the wizard, you can also manually create a [Option Preset](#option-preset)' for `ascli` in its configuration file.
3748
3846
 
3749
- Lets create a [option preset](#lprt) called: `my_aoc_org` using `ask` for interactive input (client info from previous step):
3847
+ Lets create a [Option Preset](#option-preset)' called: `my_aoc_org` using `ask` for interactive input (client info from previous step):
3750
3848
 
3751
3849
  ```bash
3752
3850
  ascli config preset ask my_aoc_org url client_id client_secret
@@ -3760,7 +3858,7 @@ updated: my_aoc_org
3760
3858
 
3761
3859
  (This can also be done in one line using the command `config preset update my_aoc_org --url=...`)
3762
3860
 
3763
- Define this [option preset](#lprt) as default configuration for the `aspera` plugin:
3861
+ Define this [Option Preset](#option-preset)' as default configuration for the `aspera` plugin:
3764
3862
 
3765
3863
  ```bash
3766
3864
  ascli config preset set default aoc my_aoc_org
@@ -3768,12 +3866,12 @@ ascli config preset set default aoc my_aoc_org
3768
3866
 
3769
3867
  > **Note:** Default `auth` method is `web` and default `redirect_uri` is `http://localhost:12345`. Leave those default values.
3770
3868
 
3771
- #### <a id="jwt"></a>Activation of JSON Web Token (JWT) for direct authentication
3869
+ #### Authentication with private key
3772
3870
 
3773
3871
  For a Browser-less, Private Key-based authentication, use the following steps.
3774
3872
 
3775
- In order to use JWT for Aspera on Cloud API client authentication,
3776
- a [private/public key pair](#private_key) must be used.
3873
+ In order to use JSON Web Token (JWT) for Aspera on Cloud API client authentication,
3874
+ a [private/public key pair](#private-key) must be used.
3777
3875
 
3778
3876
  ##### API Client JWT activation
3779
3877
 
@@ -3851,9 +3949,9 @@ modified
3851
3949
 
3852
3950
  > **Note:** The `aspera user info show` command can be used to verify modifications.
3853
3951
 
3854
- #### [option preset](#lprt) modification for JWT
3952
+ #### [Option Preset](#option-preset)' modification for JWT
3855
3953
 
3856
- To activate default use of JWT authentication for `ascli` using the [option preset](#lprt), do the following:
3954
+ To activate default use of JWT authentication for `ascli` using the [Option Preset](#option-preset)', do the following:
3857
3955
 
3858
3956
  - Change auth method to JWT
3859
3957
  - Provide location of private key
@@ -3885,9 +3983,9 @@ So, provide the same options as for regular authentication, and provide the priv
3885
3983
  A user may not be part of any workspace, but still have access to shared folders (using private links).
3886
3984
  In that case, it is possible to list those shared folder by using a value for option `workspace` equal to `@none:` or `@json:null` or `@ruby:nil`.
3887
3985
 
3888
- #### <a id="aocfirst"></a>First Use
3986
+ #### AoC: First Use
3889
3987
 
3890
- Once client has been registered and [option preset](#lprt) created: `ascli` can be used:
3988
+ Once client has been registered and [Option Preset](#option-preset)' created: `ascli` can be used:
3891
3989
 
3892
3990
  ```bash
3893
3991
  ascli aoc files br /
@@ -3930,7 +4028,7 @@ It allows actions (create, update, delete) on **resources**: users, group, nodes
3930
4028
  The command `aoc admin res <type> list` lists all entities of given type. It uses paging and multiple requests if necessary.
3931
4029
 
3932
4030
  The option `query` can be optionally used.
3933
- It expects a `Hash` using [Extended Value Syntax](#extended), generally provided using: `--query=@json:{...}`.
4031
+ It expects a `Hash` using [Extended Value Syntax](#extended-value-syntax), generally provided using: `--query=@json:{...}`.
3934
4032
  Values are directly sent to the API call and used as a filter on server side.
3935
4033
 
3936
4034
  The following parameters are supported:
@@ -3975,9 +4073,9 @@ ascli aoc admin res user list --query=@json:'{"member_of_any_workspace":false,"s
3975
4073
 
3976
4074
  Refer to the AoC API for full list of query parameters, or use the browser in developer mode with the web UI.
3977
4075
 
3978
- > **Note:** The option `select` can also be used to further refine selection, refer to [section earlier](#option_select).
4076
+ > **Note:** The option `select` can also be used to further refine selection, refer to [section earlier](#option-select).
3979
4077
 
3980
- #### <a id="res_select"></a>Selecting a resource
4078
+ #### Selecting a resource
3981
4079
 
3982
4080
  Resources are identified by a unique `id`, as well as a unique `name` (case insensitive).
3983
4081
 
@@ -3988,7 +4086,7 @@ To execute an action on a specific resource, select it using one of those method
3988
4086
  - Provide option `id` : `aoc admin res node show 123`
3989
4087
  - Provide option `name` : `aoc admin res node show --name=abc`
3990
4088
 
3991
- #### <a id="res_create"></a>Creating a resource
4089
+ #### Creating a resource
3992
4090
 
3993
4091
  New resources (users, groups, workspaces, etc..) can be created using a command like:
3994
4092
 
@@ -4043,7 +4141,7 @@ For example in a command like:
4043
4141
  ascli aoc admin res node 123 --secret="my_secret_here" v3 info
4044
4142
  ```
4045
4143
 
4046
- It is also possible to store secrets in the [secret vault](#vault) and then automatically find the related secret using the [config finder](#config_finder).
4144
+ It is also possible to store secrets in the [secret vault](#secret-vault) and then automatically find the related secret using the [config finder](#configuration-finder).
4047
4145
 
4048
4146
  #### Activity
4049
4147
 
@@ -4094,7 +4192,7 @@ The option `default_ports` ([yes]/no) allows ascli to retrieve the server ports
4094
4192
 
4095
4193
  #### Using ATS
4096
4194
 
4097
- Refer to section **Examples** of [ATS](#ats) and substitute command `ats` with `aoc admin ats`.
4195
+ Refer to section **Examples** of [ATS](#plugin-ats-ibm-aspera-transfer-service) and substitute command `ats` with `aoc admin ats`.
4098
4196
 
4099
4197
  #### Files with type `link`
4100
4198
 
@@ -4169,7 +4267,7 @@ ascli aoc admin res user list --query='@json:{"q":"dummyuser"}' --fields=id --di
4169
4267
  +-------+---------+
4170
4268
  ```
4171
4269
 
4172
- #### Example: <a id="deactuser"></a>Find deactivated users since more than 2 years
4270
+ #### Example: Find deactivated users since more than 2 years
4173
4271
 
4174
4272
  ```ruby
4175
4273
  ascli aoc admin res user list --query=@ruby:'{"deactivated"=>true,"q"=>"last_login_at:<#{(DateTime.now.to_time.utc-2*365*86400).iso8601}"}'
@@ -4248,7 +4346,7 @@ Other query parameters:
4248
4346
  {"workspace_membership_through":true,"include_indirect":true}
4249
4347
  ```
4250
4348
 
4251
- #### Example: <a id="aoc_sample_member"></a>add all members of a workspace to another workspace
4349
+ #### Example: Add all members of a workspace to another workspace
4252
4350
 
4253
4351
  a- Get id of first workspace
4254
4352
 
@@ -4267,7 +4365,7 @@ WS2ID=$(ascli aoc admin res workspace list --query=@json:'{"q":"'"$WS2"'"}' --se
4267
4365
  c- Extract membership information
4268
4366
 
4269
4367
  ```bash
4270
- ascli aoc admin res workspace_membership list --fields=manager,member_id,member_type,workspace_id --query=@json:'{"workspace_id":'"$WS1ID"'}' --format=jsonpp > ws1_members.json
4368
+ ascli aoc admin res workspace_membership list --fields=manager,member_id,member_type,workspace_id --query=@json:'{"workspace_id":'"$WS1ID"'}' --format=jsonpp --output=ws1_members.json
4271
4369
  ```
4272
4370
 
4273
4371
  d- Convert to creation data for second workspace:
@@ -4432,7 +4530,7 @@ So, for example, the creation of a node using ATS in IBM Cloud looks like (see o
4432
4530
 
4433
4531
  - Create the access key on ATS
4434
4532
 
4435
- The creation options are the ones of ATS API, refer to the [section on ATS](#ats_params) for more details and examples.
4533
+ The creation options are the ones of ATS API, refer to the [section on ATS](#ats-access-key-creation-parameters) for more details and examples.
4436
4534
 
4437
4535
  ```bash
4438
4536
  ascli aoc admin ats access_key create --cloud=softlayer --region=eu-de --params=@json:'{"storage":{"type":"ibm-s3","bucket":"mybucket","credentials":{"access_key_id":"mykey","secret_access_key":"mysecret"},"path":"/"}}'
@@ -4461,7 +4559,7 @@ Creation of a node with a self-managed node is similar, but the command `aoc adm
4461
4559
  ### List of files to transfer
4462
4560
 
4463
4561
  Source files are provided as a list with the `sources` option.
4464
- Refer to section [File list](#file_list)
4562
+ Refer to section [File list](#list-of-files-for-transfers)
4465
4563
 
4466
4564
  > **Note:** A special case is when the source files are located on **Aspera on Cloud** (i.e. using access keys and the `file id` API).
4467
4565
 
@@ -4490,17 +4588,26 @@ General syntax:
4490
4588
  ascli aoc packages send [package extended value] [other parameters such as file list and transfer parameters]
4491
4589
  ```
4492
4590
 
4493
- Notes:
4591
+ Package creation parameter are sent as positional argument.
4592
+ Refer to the AoC package creation API, or display an existing package in JSON to list attributes.
4593
+
4594
+ List allowed shared inbox destinations with:
4595
+
4596
+ ```bash
4597
+ ascli aoc packages shared_inboxes list
4598
+ ```
4599
+
4600
+ Use fields: `recipients` and/or `bcc_recipients` to provide the list of recipients: **user** or **shared inbox**:
4601
+
4602
+ - Provide either ids as expected by API: `"recipients":[{"type":"dropbox","id":"1234"}]`
4603
+ - or just names: `"recipients":[{"The Dest"}]`.
4604
+
4605
+ ascli will resolve the list of email addresses and dropbox names to the expected type/id list, based on case insensitive partial match.
4494
4606
 
4495
- - Package creation parameter are sent as positional argument.
4496
- Refer to the AoC package creation API, or display an existing package in JSON to list attributes.
4497
- - List allowed shared inbox destinations with: `ascli aoc packages shared_inboxes list`
4498
- - Use fields: `recipients` and/or `bcc_recipients` to provide the list of recipients: user or shared inbox.
4499
- - Provide either ids as expected by API: `"recipients":[{"type":"dropbox","id":"1234"}]`
4500
- - or just names: `"recipients":[{"The Dest"}]` . ascli will resolve the list of email addresses and dropbox names to the expected type/id list, based on case insensitive partial match.
4501
- - If a user recipient (email) is not already registered and the workspace allows external users, then the package is sent to an external user, and
4502
- - 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
4503
- - if the option `new_user_option` is `@json:{}`, then external users are invited to join the workspace
4607
+ If a user recipient (email) is not already registered and the workspace allows external users, then the package is sent to an external user, and:
4608
+
4609
+ - 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
4610
+ - if the option `new_user_option` is `@json:{}`, then external users are invited to join the workspace
4504
4611
 
4505
4612
  #### Example: Send a package with one file to two users, using their email
4506
4613
 
@@ -4532,6 +4639,8 @@ To list packages in a shared inbox, the query has to be specified with the the s
4532
4639
  Additional parameters can be specified, as supported by the API (to find out available filters, consult the API definition, or use the web interface in developer mode).
4533
4640
  The current workspace is added unless specified in the query.
4534
4641
 
4642
+ > **Note:** By default, `exclude_dropbox_packages` is set to true for user packages, and to false for shared inbox packages. This can be overridden in the query.
4643
+
4535
4644
  Using shared inbox name:
4536
4645
 
4537
4646
  ```bash
@@ -4579,7 +4688,7 @@ Let's send a package with the file `10M.dat` from subfolder /src_folder in a pac
4579
4688
  ascli aoc files node_info /src_folder --format=json --display=data | ascli aoc packages send @json:'{"name":"test","recipients":["someuser@example.com"]}' 10M.dat --transfer=node --transfer-info=@json:@stdin:
4580
4689
  ```
4581
4690
 
4582
- #### <a id="aoccargo"></a>Receive new packages only (Cargo)
4691
+ #### Receive new packages only (Cargo)
4583
4692
 
4584
4693
  It is possible to automatically download new packages, like using Aspera Cargo:
4585
4694
 
@@ -4657,13 +4766,13 @@ ascli aoc files short_link public delete _id_
4657
4766
 
4658
4767
  It is possible to transfer files directly between organizations without having to first download locally and then upload...
4659
4768
 
4660
- Although optional, the creation of [option preset](#lprt) is recommended to avoid placing all parameters in the command line.
4769
+ Although optional, the creation of [Option Preset](#option-preset)' is recommended to avoid placing all parameters in the command line.
4661
4770
 
4662
4771
  Procedure to send a file from org1 to org2:
4663
4772
 
4664
- - Get access to Organization 1 and create a [option preset](#lprt): e.g. `org1`, for instance, use the [Wizard](#aocwizard)
4773
+ - Get access to Organization 1 and create a [Option Preset](#option-preset)': e.g. `org1`, for instance, use the [Wizard](#configuration-using-wizard)
4665
4774
  - Check that access works and locate the source file e.g. `mysourcefile`, e.g. using command `files browse`
4666
- - Get access to Organization 2 and create a [option preset](#lprt): e.g. `org2`
4775
+ - Get access to Organization 2 and create a [Option Preset](#option-preset)': e.g. `org2`
4667
4776
  - Check that access works and locate the destination folder `mydestfolder`
4668
4777
  - Execute the following:
4669
4778
 
@@ -4680,7 +4789,7 @@ Explanation:
4680
4789
  - `|` the standard output of the first command is fed into the second one
4681
4790
  - `-Porg2 aoc` use Aspera on Cloud plugin and load credentials for `org2`
4682
4791
  - `files upload mysourcefile` upload the file named `mysourcefile` (located in `org1`)
4683
- - `--transfer=node` use transfer agent type `node` instead of default [`direct`](#agt_direct)
4792
+ - `--transfer=node` use transfer agent type `node` instead of default [`direct`](#agent-direct)
4684
4793
  - `--transfer-info=@json:@stdin:` provide `node` transfer agent information, i.e. node API credentials, those are expected in JSON format and read from standard input
4685
4794
 
4686
4795
  #### Find Files
@@ -4695,120 +4804,123 @@ ascli aoc admin res node --name='my node name' --secret='my_secret_here' v4 find
4695
4804
 
4696
4805
  For instructions, refer to section `find` for plugin `node`.
4697
4806
 
4698
- ### AoC sample commands
4699
-
4700
- ```bash
4701
- aoc admin analytics transfers nodes
4702
- aoc 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%>}'
4703
- aoc admin analytics transfers users --once_only=yes
4704
- aoc admin ats access_key create --cloud=aws --region=my_bucket_region --params=@json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_bucket_name","credentials":{"access_key_id":"my_bucket_key","secret_access_key":"my_bucket_secret"},"path":"/"}}'
4705
- aoc admin ats access_key create --cloud=softlayer --region=my_bucket_region --params=@json:'{"id":"ak1ibmcloud","secret":"my_secret_here","name":"my test key","storage":{"type":"ibm-s3","bucket":"my_bucket_name","credentials":{"access_key_id":"my_bucket_key","secret_access_key":"my_bucket_secret"},"path":"/"}}'
4706
- aoc admin ats access_key delete ak1ibmcloud
4707
- aoc admin ats access_key list --fields=name,id
4708
- aoc admin ats access_key node ak1ibmcloud --secret=my_secret_here browse /
4709
- aoc admin ats cluster clouds
4710
- aoc admin ats cluster list
4711
- aoc admin ats cluster show --cloud=aws --region=eu-west-1
4712
- aoc admin ats cluster show 1f412ae7-869a-445c-9c05-02ad16813be2
4713
- aoc admin auth_providers list
4714
- aoc admin res application list
4715
- aoc admin res client list
4716
- aoc admin res client_access_key list
4717
- aoc admin res client_registration_token create @json:'{"data":{"name":"test_client_reg1","client_subject_scopes":["alee","aejd"],"client_subject_enabled":true}}'
4718
- aoc admin res client_registration_token delete client_reg_id
4719
- aoc admin res client_registration_token list
4720
- aoc admin res contact list
4721
- aoc admin res dropbox list
4722
- aoc admin res dropbox_membership list
4723
- aoc admin res group list
4724
- aoc admin res kms_profile list
4725
- aoc admin res node list
4726
- aoc admin res operation list
4727
- aoc admin res organization show
4728
- aoc admin res package list --http-options=@json:'{"read_timeout":120.0}'
4729
- aoc admin res saml_configuration list
4730
- aoc admin res self show
4731
- aoc admin res short_link list
4732
- aoc admin res user list
4733
- aoc admin res user modify %name:my_user_email @json:'{"deactivated":false}'
4734
- aoc admin res workspace_membership list
4735
- aoc admin resource node do %name:my_ak_name --secret=my_ak_secret browse /
4736
- aoc admin resource node do %name:my_ak_name --secret=my_ak_secret delete /folder1
4737
- aoc admin resource node do %name:my_ak_name --secret=my_ak_secret mkdir /folder1
4738
- aoc admin resource node do %name:my_ak_name --secret=my_ak_secret v3 access_key create @json:'{"id":"testsub1","storage":{"path":"/folder1"}}'
4739
- aoc admin resource node do %name:my_ak_name --secret=my_ak_secret v3 access_key delete testsub1
4740
- aoc admin resource node do %name:my_ak_name --secret=my_ak_secret v3 events
4741
- aoc admin resource workspace list
4742
- aoc admin resource workspace_membership list --fields=ALL --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
4743
- aoc admin subscription
4744
- aoc automation workflow action wf_id create @json:'{"name":"toto"}' \
4745
- aoc automation workflow create @json:'{"name":"test_workflow"}'
4746
- aoc automation workflow delete wf_id
4747
- aoc automation workflow list
4748
- aoc automation workflow list --query=@json:'{"show_org_workflows":"true"}' --scope=admin:all
4749
- aoc automation workflow list --select=@json:'{"name":"test_workflow"}' --fields=id --format=csv --display=data
4750
- aoc bearer_token --display=data --scope=user:all
4751
- aoc files bearer /
4752
- aoc files bearer_token_node / --cache-tokens=no
4753
- aoc files browse /
4754
- aoc files browse / --url=my_private_link
4755
- aoc files browse / --url=my_public_link_folder_no_pass
4756
- aoc files browse / --url=my_public_link_folder_pass --password=my_public_link_password
4757
- aoc files delete /testsrc
4758
- aoc files download --transfer=connect testdst/test_file.bin
4759
- aoc files find / '\.partial$'
4760
- aoc files http_node_download --to-folder=. testdst/test_file.bin
4761
- aoc files mkdir /testsrc
4762
- aoc files modify my_test_folder
4763
- aoc files permission my_test_folder list
4764
- aoc files rename /some_folder testdst
4765
- aoc files short_link private create /testdst
4766
- aoc files short_link private list /testdst
4767
- aoc files short_link public create testdst
4768
- aoc files show %id:aoc_file_id
4769
- aoc files show /
4770
- aoc files show testdst/test_file.bin
4771
- aoc files sync admin status --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
4772
- aoc files sync admin status --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
4773
- aoc files sync start --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
4774
- aoc files sync start --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
4775
- aoc files thumbnail my_test_folder/video_file.mpg
4776
- aoc files thumbnail my_test_folder/video_file.mpg --query=@json:'{"text":true,"double":true}'
4777
- aoc files transfer push /testsrc --to-folder=/testdst test_file.bin
4778
- aoc files upload --to-folder=/ test_file.bin --url=my_public_link_folder_no_pass
4779
- aoc files upload --to-folder=/testsrc test_file.bin
4780
- aoc files upload --workspace=my_other_workspace --to-folder=my_other_folder test_file.bin --transfer=node --transfer-info=@json:@stdin:
4781
- aoc files v3 info
4782
- aoc gateway --pid-file=pid_aocfxgw https://localhost:12345/aspera/faspex &
4783
- aoc org --url=my_public_link_recv_from_aoc_user
4784
- aoc organization
4785
- aoc packages browse package_id3 /contents
4786
- aoc packages list
4787
- aoc packages list --query=@json:'{"dropbox_name":"my_shared_inbox_name","sort":"-received_at","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false}'
4788
- aoc packages receive ALL --once-only=yes --to-folder=. --lock-port=12345
4789
- aoc 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}'
4790
- aoc packages receive INIT --once-only=yes --query=@json:'{"dropbox_name":"my_shared_inbox_name"}'
4791
- aoc packages receive package_id3 --to-folder=.
4792
- aoc 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
4793
- aoc 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
4794
- aoc 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
4795
- aoc packages send --workspace=my_workspace_shared_inbox @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_name"]}' test_file.bin
4796
- aoc packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_external"]}' --new-user-option=@json:'{"package_contact":true}' test_file.bin
4797
- aoc packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_internal"],"note":"my note"}' test_file.bin
4798
- aoc packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin --url=my_public_link_send_aoc_user --password=my_public_link_send_use_pass
4799
- aoc packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin --url=my_public_link_send_shared_inbox
4800
- aoc packages shared_inboxes list
4801
- aoc remind --username=my_user_email
4802
- aoc servers
4803
- aoc user pref modify @json:'{"default_language":"en-us"}'
4804
- aoc user pref show
4805
- aoc user profile modify @json:'{"name":"dummy change"}'
4806
- aoc user profile show
4807
- aoc user workspaces current
4808
- aoc user workspaces list
4809
- ```
4810
-
4811
- ## <a id="ats"></a>Plugin: `ats`: IBM Aspera Transfer Service
4807
+ ### Aoc sample commands
4808
+
4809
+ > **Note:** Add `ascli aoc` in front of the commands:
4810
+
4811
+ ```bash
4812
+ admin analytics transfers nodes
4813
+ 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%>}'
4814
+ admin analytics transfers users --once_only=yes
4815
+ 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":"/"}}'
4816
+ admin ats access_key create --cloud=softlayer --region=my_region --params=@json:'{"id":"ak1ibmcloud","secret":"my_secret_here","name":"my test key","storage":{"type":"ibm-s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
4817
+ admin ats access_key delete ak1ibmcloud
4818
+ admin ats access_key list --fields=name,id
4819
+ admin ats access_key node ak1ibmcloud --secret=my_secret_here browse /
4820
+ admin ats cluster clouds
4821
+ admin ats cluster list
4822
+ admin ats cluster show --cloud=aws --region=eu-west-1
4823
+ admin ats cluster show 1f412ae7-869a-445c-9c05-02ad16813be2
4824
+ admin auth_providers list
4825
+ admin res application list
4826
+ admin res client list
4827
+ admin res client_access_key list
4828
+ admin res client_registration_token create @json:'{"data":{"name":"test_client_reg1","client_subject_scopes":["alee","aejd"],"client_subject_enabled":true}}'
4829
+ admin res client_registration_token delete client_reg_id
4830
+ admin res client_registration_token list
4831
+ admin res contact list
4832
+ admin res dropbox list
4833
+ admin res dropbox_membership list
4834
+ admin res group list
4835
+ admin res kms_profile list
4836
+ admin res node list
4837
+ admin res operation list
4838
+ admin res organization show
4839
+ admin res package list --http-options=@json:'{"read_timeout":120.0}'
4840
+ admin res saml_configuration list
4841
+ admin res self show
4842
+ admin res short_link list
4843
+ admin res user list
4844
+ admin res user modify %name:my_user_email @json:'{"deactivated":false}'
4845
+ admin res workspace_membership list
4846
+ admin resource node do %name:my_ak_name --secret=my_ak_secret browse /
4847
+ admin resource node do %name:my_ak_name --secret=my_ak_secret delete /folder1
4848
+ admin resource node do %name:my_ak_name --secret=my_ak_secret mkdir /folder1
4849
+ admin resource node do %name:my_ak_name --secret=my_ak_secret v3 access_key create @json:'{"id":"testsub1","storage":{"path":"/folder1"}}'
4850
+ admin resource node do %name:my_ak_name --secret=my_ak_secret v3 access_key delete testsub1
4851
+ admin resource node do %name:my_ak_name --secret=my_ak_secret v3 events
4852
+ admin resource workspace list
4853
+ admin resource workspace_membership list --fields=ALL --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
4854
+ admin subscription
4855
+ automation workflow action wf_id create @json:'{"name":"toto"}' \
4856
+ automation workflow create @json:'{"name":"test_workflow"}'
4857
+ automation workflow delete wf_id
4858
+ automation workflow list
4859
+ automation workflow list --query=@json:'{"show_org_workflows":"true"}' --scope=admin:all
4860
+ automation workflow list --select=@json:'{"name":"test_workflow"}' --fields=id --format=csv --display=data --output=test
4861
+ bearer_token --display=data --scope=user:all
4862
+ files bearer /
4863
+ files bearer_token_node / --cache-tokens=no
4864
+ files browse /
4865
+ files browse / --url=my_private_link
4866
+ files browse / --url=my_public_link_folder_no_pass
4867
+ files browse / --url=my_public_link_folder_pass --password=my_public_link_password
4868
+ files delete /testsrc
4869
+ files download --transfer=alpha testdst/test_file.bin
4870
+ files download --transfer=connect testdst/test_file.bin
4871
+ files find / '\.partial$'
4872
+ files http_node_download --to-folder=. testdst/test_file.bin
4873
+ files mkdir /testsrc
4874
+ files modify my_test_folder
4875
+ files permission my_test_folder list
4876
+ files rename /some_folder testdst
4877
+ files short_link private create /testdst
4878
+ files short_link private list /testdst
4879
+ files short_link public create testdst
4880
+ files show %id:aoc_file_id
4881
+ files show /
4882
+ files show testdst/test_file.bin
4883
+ files sync admin status --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
4884
+ files sync admin status --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
4885
+ files sync start --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
4886
+ files sync start --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
4887
+ files thumbnail my_test_folder/video_file.mpg
4888
+ files thumbnail my_test_folder/video_file.mpg --query=@json:'{"text":true,"double":true}'
4889
+ files transfer push /testsrc --to-folder=/testdst test_file.bin
4890
+ files upload --to-folder=/ test_file.bin --url=my_public_link_folder_no_pass
4891
+ files upload --to-folder=/testsrc test_file.bin
4892
+ files upload --workspace=my_other_workspace --to-folder=my_other_folder test_file.bin --transfer=node --transfer-info=@json:@stdin:
4893
+ files v3 info
4894
+ gateway --pid-file=pid_aocfxgw https://localhost:12345/aspera/faspex &
4895
+ org --url=my_public_link_recv_from_aoc_user
4896
+ organization
4897
+ packages browse package_id3 /contents
4898
+ packages list
4899
+ packages list --query=@json:'{"dropbox_name":"my_shared_inbox_name","sort":"-received_at","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false}'
4900
+ packages receive ALL --once-only=yes --to-folder=. --lock-port=12345
4901
+ 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}'
4902
+ packages receive INIT --once-only=yes --query=@json:'{"dropbox_name":"my_shared_inbox_name"}'
4903
+ packages receive package_id3 --to-folder=.
4904
+ 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
4905
+ 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
4906
+ 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
4907
+ packages send --workspace=my_workspace_shared_inbox @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_name"]}' test_file.bin
4908
+ packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_external"]}' --new-user-option=@json:'{"package_contact":true}' test_file.bin
4909
+ packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_internal"],"note":"my note"}' test_file.bin
4910
+ packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin --url=my_public_link_send_aoc_user --password=my_public_link_send_use_pass
4911
+ packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin --url=my_public_link_send_shared_inbox
4912
+ packages shared_inboxes list
4913
+ remind --username=my_user_email
4914
+ servers
4915
+ user pref modify @json:'{"default_language":"en-us"}'
4916
+ user pref show
4917
+ user profile modify @json:'{"name":"dummy change"}'
4918
+ user profile show
4919
+ user workspaces current
4920
+ user workspaces list
4921
+ ```
4922
+
4923
+ ## Plugin: `ats`: IBM Aspera Transfer Service
4812
4924
 
4813
4925
  ATS is usable either :
4814
4926
 
@@ -4889,7 +5001,7 @@ ascli ats api_key create
4889
5001
  ascli config preset update my_ibm_ats --ats-key=ats_XXXXXXXXXXXXXXXXXXXXXXXX --ats-secret=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
4890
5002
  ```
4891
5003
 
4892
- ### <a id="ats_params"></a>ATS Access key creation parameters
5004
+ ### ATS Access key creation parameters
4893
5005
 
4894
5006
  When creating an ATS access key, the option `params` must contain an extended value with the creation parameters.
4895
5007
  Those are directly the parameters expected by the [ATS API](https://developer.ibm.com/apis/catalog?search=%22Aspera%20ATS%20API%22).
@@ -4930,28 +5042,30 @@ ascli ats access_key list --field=id --format=csv | ascli ats access_key delete
4930
5042
 
4931
5043
  The parameters provided to ATS for access key creation are the ones of [ATS API](https://developer.ibm.com/apis/catalog?search=%22aspera%20ats%22) for the `POST /access_keys` endpoint.
4932
5044
 
4933
- ### ATS sample commands
5045
+ ### Ats sample commands
5046
+
5047
+ > **Note:** Add `ascli ats` in front of the commands:
4934
5048
 
4935
5049
  ```bash
4936
- ats access_key cluster ak2ibmcloud --secret=my_secret_here
4937
- ats access_key create --cloud=aws --region=my_bucket_region --params=@json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_bucket_name","credentials":{"access_key_id":"my_bucket_key","secret_access_key":"my_bucket_secret"},"path":"/"}}'
4938
- ats access_key create --cloud=softlayer --region=my_bucket_region --params=@json:'{"id":"ak2ibmcloud","secret":"my_secret_here","name":"my test key","storage":{"type":"ibm-s3","bucket":"my_bucket_name","credentials":{"access_key_id":"my_bucket_key","secret_access_key":"my_bucket_secret"},"path":"/"}}'
4939
- ats access_key delete ak2ibmcloud
4940
- ats access_key delete ak_aws
4941
- ats access_key entitlement ak2ibmcloud
4942
- ats access_key list --fields=name,id
4943
- ats access_key node ak2ibmcloud browse / --secret=my_secret_here
4944
- ats access_key show ak2ibmcloud
4945
- ats api_key create
4946
- ats api_key instances
4947
- ats api_key list
4948
- ats cluster clouds
4949
- ats cluster list
4950
- ats cluster show --cloud=aws --region=eu-west-1
4951
- ats cluster show 1f412ae7-869a-445c-9c05-02ad16813be2
5050
+ access_key cluster ak2ibmcloud --secret=my_secret_here
5051
+ 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":"/"}}'
5052
+ access_key create --cloud=softlayer --region=my_region --params=@json:'{"id":"ak2ibmcloud","secret":"my_secret_here","name":"my test key","storage":{"type":"ibm-s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
5053
+ access_key delete ak2ibmcloud
5054
+ access_key delete ak_aws
5055
+ access_key entitlement ak2ibmcloud
5056
+ access_key list --fields=name,id
5057
+ access_key node ak2ibmcloud browse / --secret=my_secret_here
5058
+ access_key show ak2ibmcloud
5059
+ api_key create
5060
+ api_key instances
5061
+ api_key list
5062
+ cluster clouds
5063
+ cluster list
5064
+ cluster show --cloud=aws --region=eu-west-1
5065
+ cluster show 1f412ae7-869a-445c-9c05-02ad16813be2
4952
5066
  ```
4953
5067
 
4954
- ## <a id="server"></a>Plugin: `server`: IBM Aspera High Speed Transfer Server (SSH)
5068
+ ## Plugin: `server`: IBM Aspera High Speed Transfer Server (SSH)
4955
5069
 
4956
5070
  The `server` plugin is used for operations on Aspera HSTS using SSH authentication.
4957
5071
  It is the legacy way of accessing an Aspera Server, often used for server to server transfers.
@@ -4962,39 +5076,41 @@ then commands `ascp` (for transfers) and `ascmd` (for file operations) are execu
4962
5076
 
4963
5077
  ### Server sample commands
4964
5078
 
4965
- ```bash
4966
- server browse /
4967
- server browse / --password=@none: --ssh-options=@json:'{"number_of_password_prompts":0}' --ssh-keys=$aspera_key_path
4968
- server browse my_inside_folder/test_file.bin
4969
- server browse my_upload_folder/target_hot
4970
- server cp my_inside_folder/test_file.bin my_upload_folder/200KB.2
4971
- server delete my_inside_folder
4972
- server delete my_upload_folder/to.delete
4973
- server df
4974
- server download my_inside_folder/test_file.bin --to-folder=. --transfer-info=@json:'{"wss":false,"resume":{"iter_max":1}}'
4975
- server download my_inside_folder/test_file.bin --to-folder=my_upload_folder --transfer=node
4976
- server du /
4977
- server health transfer --to-folder=my_upload_folder --format=nagios
4978
- server info
4979
- server md5sum my_inside_folder/test_file.bin
4980
- server mkdir my_inside_folder --logger=stdout
4981
- server mkdir my_upload_folder/target_hot
4982
- server mv my_upload_folder/200KB.2 my_upload_folder/to.delete
4983
- server sync admin status --sync-info=@json:'{"name":"sync2","local":{"path":"/data/local_sync"}}'
4984
- server sync admin status --sync-info=@json:'{"name":"sync2"}'
4985
- server sync admin status my_sync --sync-info=@json:'{"sessions":[{"name":"my_sync","local_dir":"/data/local_sync"}]}'
4986
- server sync start --sync-info=@json:'{"instance":{"quiet":false},"sessions":[{"name":"my_sync","direction":"pull","remote_dir":"my_inside_folder","local_dir":"/data/local_sync","reset":true}]}'
4987
- server sync start --sync-info=@json:'{"name":"sync2","local":{"path":"/data/local_sync"},"remote":{"path":"my_inside_folder"},"reset":true,"quiet":false}'
4988
- server upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:'{"target_rate_kbps":1000000,"resume_policy":"none","precalculate_job_size":true}'
4989
- server upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:'{"target_rate_kbps":1000000,"resume_policy":"none","precalculate_job_size":true}' --transfer-info=@json:'{"quiet":false}' --progress=no
4990
- server 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
4991
- server upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-list","filelist.txt"]}' --to-folder=my_inside_folder
4992
- server upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-pair-list","file_pair_list.txt"]}'
4993
- server upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destination":"my_inside_folder/other_name_4"}]}' --transfer=trsdk
4994
- server 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"]}'
4995
- server 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
4996
- server 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"}'
4997
- server 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
5079
+ > **Note:** Add `ascli server` in front of the commands:
5080
+
5081
+ ```bash
5082
+ browse /
5083
+ browse / --password=@none: --ssh-options=@json:'{"number_of_password_prompts":0}' --ssh-keys=$aspera_key_path
5084
+ browse my_inside_folder/test_file.bin
5085
+ browse my_upload_folder/target_hot
5086
+ cp my_inside_folder/test_file.bin my_upload_folder/200KB.2
5087
+ delete my_inside_folder
5088
+ delete my_upload_folder/to.delete
5089
+ df
5090
+ download my_inside_folder/test_file.bin --to-folder=. --transfer-info=@json:'{"wss":false,"resume":{"iter_max":1}}'
5091
+ download my_inside_folder/test_file.bin --to-folder=my_upload_folder --transfer=node
5092
+ du /
5093
+ health transfer --to-folder=my_upload_folder --format=nagios
5094
+ info
5095
+ md5sum my_inside_folder/test_file.bin
5096
+ mkdir my_inside_folder --logger=stdout
5097
+ mkdir my_upload_folder/target_hot
5098
+ mv my_upload_folder/200KB.2 my_upload_folder/to.delete
5099
+ sync admin status --sync-info=@json:'{"name":"sync2","local":{"path":"/data/local_sync"}}'
5100
+ sync admin status --sync-info=@json:'{"name":"sync2"}'
5101
+ sync admin status my_sync --sync-info=@json:'{"sessions":[{"name":"my_sync","local_dir":"/data/local_sync"}]}'
5102
+ sync start --sync-info=@json:'{"instance":{"quiet":false},"sessions":[{"name":"my_sync","direction":"pull","remote_dir":"my_inside_folder","local_dir":"/data/local_sync","reset":true}]}'
5103
+ sync start --sync-info=@json:'{"name":"sync2","local":{"path":"/data/local_sync"},"remote":{"path":"my_inside_folder"},"reset":true,"quiet":false}'
5104
+ upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:'{"target_rate_kbps":1000000,"resume_policy":"none","precalculate_job_size":true}'
5105
+ upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:'{"target_rate_kbps":1000000,"resume_policy":"none","precalculate_job_size":true}' --transfer-info=@json:'{"quiet":false}' --progress=no
5106
+ 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
5107
+ upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-list","filelist.txt"]}' --to-folder=my_inside_folder
5108
+ upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-pair-list","file_pair_list.txt"]}'
5109
+ upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destination":"my_inside_folder/other_name_4"}]}' --transfer=trsdk
5110
+ 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"]}'
5111
+ 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
5112
+ 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"}'
5113
+ 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
4998
5114
  ```
4999
5115
 
5000
5116
  ### Authentication on Server with SSH session
@@ -5087,7 +5203,7 @@ ascli server browse /aspera-test-dir-large
5087
5203
  ascli server download /aspera-test-dir-large/200MB
5088
5204
  ```
5089
5205
 
5090
- `initdemo` creates a [option preset](#lprt) `demoserver` and set it as default for plugin `server`.
5206
+ `initdemo` creates a [Option Preset](#option-preset)' `demoserver` and set it as default for plugin `server`.
5091
5207
 
5092
5208
  If an SSH private key is used for authentication with a passphrase, the passphrase needs to be provided to both options: `ssh_options`, for browsing, and `ts` for transfers:
5093
5209
 
@@ -5095,7 +5211,7 @@ If an SSH private key is used for authentication with a passphrase, the passphra
5095
5211
  ascli server --url=ssh://_server_address_here_:33001 --username=_user_here_ --ssh_keys=_private_key_path_here_ --passphrase=_passphrase_here_
5096
5212
  ```
5097
5213
 
5098
- ## <a id="node"></a>Plugin: `node`: IBM Aspera High Speed Transfer Server Node
5214
+ ## Plugin: `node`: IBM Aspera High Speed Transfer Server Node
5099
5215
 
5100
5216
  This plugin gives access to capabilities provided by the HSTS node API.
5101
5217
 
@@ -5221,7 +5337,7 @@ There are three sync types of operations:
5221
5337
 
5222
5338
  It is possible to start a FASPStream session using the node API:
5223
5339
 
5224
- Use the command `ascli node stream create --ts=@json:<value>`, with [*transfer-spec*](#transferspec):
5340
+ Use the command `ascli node stream create --ts=@json:<value>`, with [*transfer-spec*](#transfer-specification):
5225
5341
 
5226
5342
  ```json
5227
5343
  {"direction":"send","source":"udp://233.3.3.4:3000?loopback=1&ttl=2","destination":"udp://233.3.3.3:3001/","remote_host":"localhost","remote_user":"stream","remote_password":"my_pass_here"}
@@ -5390,7 +5506,7 @@ Let's assume that the access key was created, and a default configuration is set
5390
5506
  ```
5391
5507
 
5392
5508
  > **Note:** This key is not used for authentication, it is used to sign bearer tokens.
5393
- > Refer to section [private key](#private_key) for more details on generation.
5509
+ > Refer to section [private key](#private-key) for more details on generation.
5394
5510
 
5395
5511
  - The corresponding public key shall be placed as an attribute of the **access key**:
5396
5512
 
@@ -5435,7 +5551,7 @@ Let's assume that the access key was created, and a default configuration is set
5435
5551
  - Create a Bearer token for the user:
5436
5552
 
5437
5553
  ```bash
5438
- ascli node bearer_token @file:./myorgkey.pem @json:'{"user_id":"'$my_user_id'","_validity":3600}' > bearer.txt
5554
+ ascli node bearer_token @file:./myorgkey.pem @json:'{"user_id":"'$my_user_id'","_validity":3600}' --output=bearer.txt
5439
5555
  ```
5440
5556
 
5441
5557
  #### Bearer token: User side
@@ -5454,75 +5570,86 @@ ascli node -N --url=... --password="Bearer $(cat bearer.txt)" --root-id=$my_fold
5454
5570
 
5455
5571
  ### Node sample commands
5456
5572
 
5457
- ```bash
5458
- node --url=https://tst.example.com/path --password="Bearer bearer_666" --root-id=root_id access_key do self br /
5459
- node access_key create @json:'{"id":"my_username","secret":"my_password_here","storage":{"type":"local","path":"/"}}'
5460
- node access_key delete my_username
5461
- node access_key do my_ak_name browse /
5462
- node access_key do my_ak_name delete /folder2
5463
- node access_key do my_ak_name delete testfile1
5464
- node access_key do my_ak_name download testfile1 --to-folder=.
5465
- node access_key do my_ak_name find my_test_folder
5466
- node access_key do my_ak_name find my_test_folder @ruby:'->(f){f["name"].end_with?(".jpg")}'
5467
- node access_key do my_ak_name find my_test_folder exec:'f["name"].end_with?(".jpg")'
5468
- node access_key do my_ak_name mkdir /folder1
5469
- node access_key do my_ak_name node_info /
5470
- node access_key do my_ak_name rename /folder1 folder2
5471
- node access_key do my_ak_name show %id:1
5472
- node access_key do my_ak_name show /testfile1
5473
- node access_key do my_ak_name upload 'faux:///testfile1?1k' --default_ports=no
5474
- node access_key do self permission %id:root_id create @json:'{"access_type":"user","access_id":"666"}'
5475
- node access_key do self show / --fields=id
5476
- node access_key list
5477
- node access_key set_bearer_key self @file:my_private_key
5478
- node api_details
5479
- node async bandwidth 1
5480
- node async counters 1
5481
- node async files 1
5482
- node async list
5483
- node async show 1
5484
- node async show ALL
5485
- node basic_token
5486
- node bearer_token @file:my_private_key @json:'{"user_id":"666"}'
5487
- node browse / --log-level=trace2
5488
- node delete @list:,my_upload_folder/a_folder,my_upload_folder/tdlink,my_upload_folder/a_file
5489
- node delete my_upload_folder/test_file.bin
5490
- node download my_upload_folder/test_file.bin --to-folder=.
5491
- node health
5492
- node info --fpac='function FindProxyForURL(url,host){return "DIRECT"}'
5493
- node license
5494
- node mkdir my_upload_folder/a_folder
5495
- node mkfile my_upload_folder/a_file1 "hello world"
5496
- node mklink my_upload_folder/a_folder my_upload_folder/tdlink
5497
- node rename my_upload_folder a_file1 a_file
5498
- node search / --query=@json:'{"sort":"mtime"}'
5499
- node service create @json:'{"id":"service1","type":"WATCHD","run_as":{"user":"user1"}}'
5500
- node service delete service1
5501
- node service list
5502
- node space /
5503
- node ssync bandwidth %name:my_node_sync
5504
- node ssync counters %name:my_node_sync
5505
- node 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"}}}'
5506
- node ssync delete %name:my_node_sync
5507
- node ssync files %name:my_node_sync
5508
- node ssync list
5509
- node ssync show %name:my_node_sync
5510
- node ssync start %name:my_node_sync
5511
- node ssync state %name:my_node_sync
5512
- node ssync stop %name:my_node_sync
5513
- node ssync summary %name:my_node_sync
5514
- node sync admin status --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
5515
- node sync admin status --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
5516
- node sync start --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
5517
- node sync start --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
5518
- node transfer list --query=@json:'{"active_only":true}'
5519
- node transfer sessions
5520
- node upload --to-folder=my_upload_folder --sources=@ts --ts=@json:'{"paths":[{"source":"/aspera-test-dir-small/10MB.2"}],"precalculate_job_size":true}' --transfer=node --transfer-info=@json:'{"url":"https://node.example.com/path@","username":"my_username","password":"my_password_here"}'
5521
- node upload --username=my_ak_name --password=my_ak_secret test_file.bin
5522
- node upload test_file.bin --to-folder=my_upload_folder --ts=@json:'{"target_rate_cap_kbps":10000}'
5523
- ```
5524
-
5525
- ## <a id="faspex5"></a>Plugin: `faspex5`: IBM Aspera Faspex v5
5573
+ > **Note:** Add `ascli node` in front of the commands:
5574
+
5575
+ ```bash
5576
+ --url=https://tst.example.com/path --password="Bearer bearer_666" --root-id=root_id access_key do self br /
5577
+ access_key create @json:'{"id":"my_username","secret":"my_password_here","storage":{"type":"local","path":"/"}}'
5578
+ access_key delete my_username
5579
+ access_key do my_ak_name browse /
5580
+ access_key do my_ak_name delete /folder2
5581
+ access_key do my_ak_name delete testfile1
5582
+ access_key do my_ak_name download testfile1 --to-folder=.
5583
+ access_key do my_ak_name find my_test_folder
5584
+ access_key do my_ak_name find my_test_folder @ruby:'->(f){f["name"].end_with?(".jpg")}'
5585
+ access_key do my_ak_name find my_test_folder exec:'f["name"].end_with?(".jpg")'
5586
+ access_key do my_ak_name mkdir /folder1
5587
+ access_key do my_ak_name node_info /
5588
+ access_key do my_ak_name rename /folder1 folder2
5589
+ access_key do my_ak_name show %id:1
5590
+ access_key do my_ak_name show /testfile1
5591
+ access_key do my_ak_name upload 'faux:///testfile1?1k' --default_ports=no
5592
+ access_key do self permission %id:root_id create @json:'{"access_type":"user","access_id":"666"}'
5593
+ access_key do self show / --fields=id --output=root_id
5594
+ access_key list
5595
+ access_key set_bearer_key self @file:my_private_key
5596
+ access_key show %id:self
5597
+ api_details
5598
+ asperabrowser
5599
+ async bandwidth 1
5600
+ async counters 1
5601
+ async files 1
5602
+ async list
5603
+ async show 1
5604
+ async show ALL
5605
+ basic_token
5606
+ bearer_token @file:my_private_key @json:'{"user_id":"666"}' --output=bearer_666
5607
+ browse / --log-level=trace2
5608
+ central file list
5609
+ central file modify --validator=1 --query=@json:'{"files":[]}'
5610
+ central session list
5611
+ delete @list:,my_upload_folder/a_folder,my_upload_folder/tdlink,my_upload_folder/a_file
5612
+ delete my_upload_folder/test_file.bin
5613
+ download my_upload_folder/test_file.bin --to-folder=.
5614
+ health
5615
+ http_node_download my_upload_folder/test_file.bin --to-folder=.
5616
+ info --fpac='function FindProxyForURL(url,host){return "DIRECT"}'
5617
+ license
5618
+ mkdir my_upload_folder/a_folder
5619
+ mkfile my_upload_folder/a_file1 "hello world"
5620
+ mklink my_upload_folder/a_folder my_upload_folder/tdlink
5621
+ rename my_upload_folder a_file1 a_file
5622
+ search / --query=@json:'{"sort":"mtime"}'
5623
+ service create @json:'{"id":"service1","type":"WATCHD","run_as":{"user":"user1"}}'
5624
+ service delete service1
5625
+ service list
5626
+ slash
5627
+ space /
5628
+ ssync bandwidth %name:my_node_sync
5629
+ ssync counters %name:my_node_sync
5630
+ 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"}}}'
5631
+ ssync delete %name:my_node_sync
5632
+ ssync files %name:my_node_sync
5633
+ ssync list
5634
+ ssync show %name:my_node_sync
5635
+ ssync start %name:my_node_sync
5636
+ ssync state %name:my_node_sync
5637
+ ssync stop %name:my_node_sync
5638
+ ssync summary %name:my_node_sync
5639
+ stream list
5640
+ sync admin status --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
5641
+ sync admin status --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
5642
+ sync start --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
5643
+ sync start --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
5644
+ transfer list --query=@json:'{"active_only":true}'
5645
+ transfer sessions
5646
+ upload --to-folder=my_upload_folder --sources=@ts --ts=@json:'{"paths":[{"source":"/aspera-test-dir-small/10MB.2"}],"precalculate_job_size":true}' --transfer=node --transfer-info=@json:'{"url":"https://node.example.com/path@","username":"my_username","password":"my_password_here"}'
5647
+ upload --username=my_ak_name --password=my_ak_secret test_file.bin
5648
+ upload test_file.bin --to-folder=my_upload_folder --ts=@json:'{"target_rate_cap_kbps":10000}'
5649
+ watch_folder list
5650
+ ```
5651
+
5652
+ ## Plugin: `faspex5`: IBM Aspera Faspex v5
5526
5653
 
5527
5654
  IBM Aspera's newer self-managed application.
5528
5655
 
@@ -5537,7 +5664,7 @@ IBM Aspera's newer self-managed application.
5537
5664
 
5538
5665
  > **Note:** If you have a Faspex 5 public link, provide it, unchanged, through the option `url`
5539
5666
 
5540
- For a quick start, one can use the wizard, which will help creating a [option preset](#lprt):
5667
+ For a quick start, one can use the wizard, which will help creating a [Option Preset](#option-preset)':
5541
5668
 
5542
5669
  ```bash
5543
5670
  ascli config wizard
@@ -5610,7 +5737,7 @@ Activation is in two steps:
5610
5737
  - Select `Account Settings`
5611
5738
  - 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.
5612
5739
 
5613
- **Note:** If you don't have any refer to section [Private Key](#private_key)
5740
+ **Note:** If you don't have any refer to section [Private Key](#private-key)
5614
5741
 
5615
5742
  Then use these options:
5616
5743
 
@@ -5670,7 +5797,60 @@ Use this token as password and use `--auth=boot`.
5670
5797
  ascli config preset update f5boot --url=https://localhost/aspera/faspex --auth=boot --password=_token_here_
5671
5798
  ```
5672
5799
 
5673
- ### Faspex 5 sample commands
5800
+ ### Faspex5 sample commands
5801
+
5802
+ > **Note:** Add `ascli faspex5` in front of the commands:
5803
+
5804
+ ```bash
5805
+ admin res accounts list
5806
+ admin res contacts list
5807
+ admin res jobs list
5808
+ admin res metadata_profiles list
5809
+ admin res node list
5810
+ admin res oauth_clients list
5811
+ admin res registrations list
5812
+ admin res saml_configs list
5813
+ admin res shared_inboxes invite %name:my_shared_box_name johnny@example.com
5814
+ admin res shared_inboxes list
5815
+ admin res shared_inboxes list --query=@json:'{"all":true}'
5816
+ admin res shared_inboxes members %name:my_shared_box_name create %name:john@example.com
5817
+ admin res shared_inboxes members %name:my_shared_box_name delete %name:john@example.com
5818
+ admin res shared_inboxes members %name:my_shared_box_name delete %name:johnny@example.com
5819
+ admin res shared_inboxes members %name:my_shared_box_name list
5820
+ admin res workgroups list
5821
+ admin smtp show
5822
+ admin smtp test my_email_external
5823
+ bearer_token
5824
+ gateway --pid-file=pid_f5_fxgw https://localhost:12346/aspera/faspex &
5825
+ health
5826
+ invitation list
5827
+ invitations create @json:'{"email_address":"aspera.user1+u@gmail.com"}'
5828
+ packages list --box=my_shared_box_name
5829
+ packages list --box=my_workgroup --group-type=workgroups
5830
+ packages list --query=@json:'{"mailbox":"inbox","status":"completed"}'
5831
+ packages receive --box=my_shared_box_name package_box_id1 --to-folder=.
5832
+ packages receive --box=my_workgroup --group-type=workgroups workgroup_package_id1 --to-folder=.
5833
+ packages receive ALL --once-only=yes --to-folder=.
5834
+ packages receive INIT --once-only=yes
5835
+ packages receive f5_p31 --to-folder=. --ts=@json:'{"content_protection_password":"my_secret_here"}'
5836
+ packages send --shared-folder=%name:my_shared_folder_name @json:'{"title":"test title","recipients":["my_email_internal"]}' my_shared_folder_file
5837
+ packages send --url=my_public_link_send_f5_user @json:'{"title":"test title"}' test_file.bin
5838
+ packages send --url=my_public_link_send_shared_box @json:'{"title":"test title"}' test_file.bin
5839
+ packages send @json:'{"title":"test title","recipients":["my_shared_box_name"],"metadata":{"Options":"Opt1","TextInput":"example text"}}' test_file.bin
5840
+ packages send @json:'{"title":"test title","recipients":["my_workgroup"]}' test_file.bin
5841
+ packages send @json:'{"title":"test title","recipients":[{"name":"my_username"}]my_meta}' test_file.bin --ts=@json:'{"content_protection_password":"my_secret_here"}'
5842
+ packages show --box=my_shared_box_name package_box_id1
5843
+ packages show --box=my_workgroup --group-type=workgroups workgroup_package_id1
5844
+ packages show f5_p31
5845
+ packages status f5_p31
5846
+ postprocessing --pid-file=pid_f5_postproc @json:'{"url":"https://localhost:8443/domain","processing":{"script_folder":""}}' &
5847
+ shared browse %name:my_src
5848
+ shared list
5849
+ shared_folders browse %name:my_shared_folder_name
5850
+ shared_folders list
5851
+ user profile modify @json:'{"preference":{"connect_disabled":false}}'
5852
+ user profile show
5853
+ ```
5674
5854
 
5675
5855
  Most commands are directly REST API calls.
5676
5856
  Parameters to commands are carried through option `query`, as extended value, for `list`, or through positional argument for creation.
@@ -5678,53 +5858,6 @@ One can conveniently use the JSON format with prefix `@json:`.
5678
5858
 
5679
5859
  > **Note:** The API is listed in [Faspex 5 API Reference](https://developer.ibm.com/apis/catalog?search="faspex+5") under **IBM Aspera Faspex API**.
5680
5860
 
5681
- ```bash
5682
- faspex5 admin res accounts list
5683
- faspex5 admin res contacts list
5684
- faspex5 admin res jobs list
5685
- faspex5 admin res metadata_profiles list
5686
- faspex5 admin res node list
5687
- faspex5 admin res oauth_clients list
5688
- faspex5 admin res registrations list
5689
- faspex5 admin res saml_configs list
5690
- faspex5 admin res shared_inboxes invite %name:my_shared_box_name johnny@example.com
5691
- faspex5 admin res shared_inboxes list
5692
- faspex5 admin res shared_inboxes list --query=@json:'{"all":true}'
5693
- faspex5 admin res shared_inboxes members %name:my_shared_box_name create %name:john@example.com
5694
- faspex5 admin res shared_inboxes members %name:my_shared_box_name delete %name:john@example.com
5695
- faspex5 admin res shared_inboxes members %name:my_shared_box_name delete %name:johnny@example.com
5696
- faspex5 admin res shared_inboxes members %name:my_shared_box_name list
5697
- faspex5 admin res workgroups list
5698
- faspex5 admin smtp show
5699
- faspex5 admin smtp test my_email_external
5700
- faspex5 bearer_token
5701
- faspex5 gateway --pid-file=pid_f5_fxgw https://localhost:12346/aspera/faspex &
5702
- faspex5 health
5703
- faspex5 packages list --box=my_shared_box_name
5704
- faspex5 packages list --box=my_workgroup --group-type=workgroups
5705
- faspex5 packages list --query=@json:'{"mailbox":"inbox","state":["released"]}'
5706
- faspex5 packages receive --box=my_shared_box_name package_box_id1 --to-folder=.
5707
- faspex5 packages receive --box=my_workgroup --group-type=workgroups workgroup_package_id1 --to-folder=.
5708
- faspex5 packages receive ALL --once-only=yes --to-folder=.
5709
- faspex5 packages receive INIT --once-only=yes
5710
- faspex5 packages receive f5_p31 --to-folder=. --ts=@json:'{"content_protection_password":"my_secret_here"}'
5711
- faspex5 packages send --shared-folder=%name:my_shared_folder_name @json:'{"title":"test title","recipients":["my_email_internal"]}' my_shared_folder_file
5712
- faspex5 packages send @json:'{"title":"test title","recipients":["my_shared_box_name"],"metadata":{"Options":"Opt1","TextInput":"example text"}}' test_file.bin
5713
- faspex5 packages send @json:'{"title":"test title","recipients":["my_workgroup"]}' test_file.bin
5714
- faspex5 packages send @json:'{"title":"test title","recipients":[{"name":"my_username"}]my_meta}' test_file.bin --ts=@json:'{"content_protection_password":"my_passphrase_here"}'
5715
- faspex5 packages show --box=my_shared_box_name package_box_id1
5716
- faspex5 packages show --box=my_workgroup --group-type=workgroups workgroup_package_id1
5717
- faspex5 packages show f5_p31
5718
- faspex5 packages status f5_p31
5719
- faspex5 postprocessing --pid-file=pid_f5_postproc @json:'{"url":"https://localhost:8443/domain","processing":{"script_folder":""}}' &
5720
- faspex5 shared browse %name:my_src
5721
- faspex5 shared list
5722
- faspex5 shared_folders browse %name:my_shared_folder_name
5723
- faspex5 shared_folders list
5724
- faspex5 user profile modify @json:'{"preference":{"connect_disabled":false}}'
5725
- faspex5 user profile show
5726
- ```
5727
-
5728
5861
  ### Faspex 5: Inbox selection
5729
5862
 
5730
5863
  By default, package operations (send, receive, list) are done on the user's inbox.
@@ -5829,6 +5962,20 @@ Examples:
5829
5962
  ascli faspex5 packages list @ruby:'->(p){p["state"].eql?("released")}'
5830
5963
  ```
5831
5964
 
5965
+ ### Faspex 5: Content of a received Package
5966
+
5967
+ > **Note:** Listing content also applies to shares folder, nodes, and received packages (using `--box=outbox`).
5968
+
5969
+ To list the content of a package, use command `faspex5 packages browse /`.
5970
+
5971
+ Option `query` is available.
5972
+
5973
+ To list recursively add option `--query=@json:{"recursive":true}`.
5974
+
5975
+ > **Note:** Option `recirsive` makes recursive API calls, so it can take a long time on large packages.
5976
+
5977
+ To limit the number of items retrieved, use option `--query=@json:{"max":10}`.
5978
+
5832
5979
  ### Faspex 5: Receive a package
5833
5980
 
5834
5981
  To receive one, or several packages at once, use command `faspex5 packages receive`.
@@ -5930,6 +6077,14 @@ To initialize, and skip all current package so that next time `ALL` is used, onl
5930
6077
  ascli faspex5 packages receive INIT --once-only=yes
5931
6078
  ```
5932
6079
 
6080
+ ### Faspex 5: Invitations
6081
+
6082
+ There are two types of invitations of package submission: public or private.
6083
+
6084
+ Public invitations are for external users, provide just the email address.
6085
+
6086
+ Private invitations are for internal users, provide the user or shared inbox identifier through field `recipient_name`.
6087
+
5933
6088
  ### Faspex 5: Faspex 4-style postprocessing
5934
6089
 
5935
6090
  `ascli` provides command `postprocessing` in plugin `faspex5` to emulate Faspex 4 postprocessing.
@@ -5945,8 +6100,7 @@ The following parameters are supported:
5945
6100
 
5946
6101
  | parameter | type | default | description |
5947
6102
  |----------------------------|---------|------------------------|-----------------------------------------------------|
5948
- <!-- markdownlint-disable-next-line -->
5949
- | url | string | http://localhost:8080 | Base url on which requests are listened |
6103
+ | url | string | http://localhost:8080 | Base url on which requests are listened | <!-- markdownlint-disable-line -->
5950
6104
  | certificate | hash | nil | Certificate information (if HTTPS) |
5951
6105
  | certificate.key | string | nil | Path to private key file |
5952
6106
  | certificate.cert | string | nil | Path to certificate |
@@ -5978,12 +6132,12 @@ Then, the postprocessing script executed will be `script1.sh`.
5978
6132
 
5979
6133
  Environment variables at set to the values provided by the web hook which are the same as Faspex 4 postprocessing.
5980
6134
 
5981
- ## <a id="faspex"></a>Plugin: `faspex`: IBM Aspera Faspex v4
6135
+ ## Plugin: `faspex`: IBM Aspera Faspex v4
5982
6136
 
5983
- Notes:
6137
+ > **Note:** For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
5984
6138
 
5985
- - The command `v4` requires the use of APIv4, refer to the Faspex Admin manual on how to activate.
5986
- - For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
6139
+ This plugin uses APIs versions 3 Faspex v4.
6140
+ The `v4` command requires the use of API v4, refer to the Faspex Admin manual on how to activate.
5987
6141
 
5988
6142
  ### Listing Packages
5989
6143
 
@@ -6130,49 +6284,51 @@ The node configuration name is `my_faspex_node` here.
6130
6284
  ### Automated package download (cargo)
6131
6285
 
6132
6286
  It is possible to tell `ascli` to download newly received packages, much like the official
6133
- cargo client, or drive. Refer to the [same section](#aoccargo) in the Aspera on Cloud plugin:
6287
+ cargo client, or drive. Refer to the [same section](#receive-new-packages-only-cargo) in the Aspera on Cloud plugin:
6134
6288
 
6135
6289
  ```bash
6136
6290
  ascli faspex packages recv ALL --once-only=yes --lock-port=12345
6137
6291
  ```
6138
6292
 
6139
- ### Faspex 4 sample commands
6140
-
6141
- ```bash
6142
- faspex address_book
6143
- faspex dropbox list --recipient="*my_dbx"
6144
- faspex health
6145
- faspex login_methods
6146
- faspex me
6147
- faspex package list --box=sent --query=@json:'{"max":1}' --fields=package_id --display=data --format=csv --output=f4_prs2
6148
- faspex package list --query=@json:'{"max":1}' --fields=package_id --display=data --format=csv --output=f4_prs1
6149
- faspex package list --query=@json:'{"max":5}'
6150
- faspex package list --recipient="*my_dbx" --format=csv --fields=package_id --query=@json:'{"max":1}' --output=f4_db_id1
6151
- faspex package list --recipient="*my_wkg" --format=csv --fields=package_id --query=@json:'{"max":1}' --output=f4_db_id2
6152
- faspex package receive --to-folder=. --link=https://app.example.com/recv_from_user_path
6153
- faspex package receive ALL --once-only=yes --to-folder=. --query=@json:'{"max":10}'
6154
- faspex package receive f4_db_id1 --recipient="*my_dbx" --to-folder=.
6155
- faspex package receive f4_db_id2 --recipient="*my_wkg" --to-folder=.
6156
- faspex package receive f4_pri1 --to-folder=.
6157
- faspex package receive f4_prs2 --to-folder=. --box=sent
6158
- faspex package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["*my_dbx"]}' test_file.bin
6159
- faspex package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["*my_wkg"]}' test_file.bin
6160
- faspex package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_internal","my_username"]}' test_file.bin
6161
- faspex package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_internal"]}' --remote_source=%name:my_src sample_source.txt
6162
- faspex package send --link=https://app.example.com/send_to_dropbox_path --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin
6163
- faspex package send --link=https://app.example.com/send_to_user_path --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin
6164
- faspex source info %name:my_src --storage=@preset:faspex4_storage
6165
- faspex source list
6166
- faspex source node %name:my_src br / --storage=@preset:faspex4_storage
6167
- faspex v4 dmembership list
6168
- faspex v4 dropbox list
6169
- faspex v4 metadata_profile list
6170
- faspex v4 user list
6171
- faspex v4 wmembership list
6172
- faspex v4 workgroup list
6173
- ```
6174
-
6175
- ## <a id="shares"></a>Plugin: `shares`: IBM Aspera Shares v1
6293
+ ### Faspex sample commands
6294
+
6295
+ > **Note:** Add `ascli faspex` in front of the commands:
6296
+
6297
+ ```bash
6298
+ address_book
6299
+ dropbox list --recipient="*my_dbx"
6300
+ health
6301
+ login_methods
6302
+ me
6303
+ package list --box=sent --query=@json:'{"max":1}' --fields=package_id --display=data --format=csv --output=f4_prs2
6304
+ package list --query=@json:'{"max":1}' --fields=package_id --display=data --format=csv --output=f4_prs1
6305
+ package list --query=@json:'{"max":5}'
6306
+ package list --recipient="*my_dbx" --format=csv --fields=package_id --query=@json:'{"max":1}' --output=f4_db_id1
6307
+ package list --recipient="*my_wkg" --format=csv --fields=package_id --query=@json:'{"max":1}' --output=f4_db_id2
6308
+ package receive --to-folder=. --link=https://app.example.com/recv_from_user_path
6309
+ package receive ALL --once-only=yes --to-folder=. --query=@json:'{"max":10}'
6310
+ package receive f4_db_id1 --recipient="*my_dbx" --to-folder=.
6311
+ package receive f4_db_id2 --recipient="*my_wkg" --to-folder=.
6312
+ package receive f4_pri1 --to-folder=.
6313
+ package receive f4_prs2 --to-folder=. --box=sent
6314
+ package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["*my_dbx"]}' test_file.bin
6315
+ package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["*my_wkg"]}' test_file.bin
6316
+ package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_internal","my_username"]}' test_file.bin
6317
+ package send --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_email_internal"]}' --remote_source=%name:my_src sample_source.txt
6318
+ package send --link=https://app.example.com/send_to_dropbox_path --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin
6319
+ package send --link=https://app.example.com/send_to_user_path --delivery-info=@json:'{"title":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin
6320
+ source info %name:my_src --storage=@preset:faspex4_storage
6321
+ source list
6322
+ source node %name:my_src br / --storage=@preset:faspex4_storage
6323
+ v4 dmembership list
6324
+ v4 dropbox list
6325
+ v4 metadata_profile list
6326
+ v4 user list
6327
+ v4 wmembership list
6328
+ v4 workgroup list
6329
+ ```
6330
+
6331
+ ## Plugin: `shares`: IBM Aspera Shares v1
6176
6332
 
6177
6333
  Aspera Shares supports the **node API** for the file transfer part.
6178
6334
 
@@ -6192,69 +6348,77 @@ user_id=$(ascli shares admin user list --select=@json:'{"username":"entity1"}' -
6192
6348
  ascli shares admin share user_permissions $share_id create @json:'{"user_id":'$user_id',"browse_permission":true, "download_permission":true, "mkdir_permission":true,"delete_permission":true,"rename_permission":true,"content_availability_permission":true,"manage_permission":true}'
6193
6349
  ```
6194
6350
 
6195
- ### Shares 1 sample commands
6351
+ To figure out the entities payload, for example for creation, refer to the API documentation above.
6352
+
6353
+ ### Shares sample commands
6354
+
6355
+ > **Note:** Add `ascli shares` in front of the commands:
6196
6356
 
6197
6357
  ```bash
6198
- shares admin group all list
6199
- shares admin node list
6200
- shares admin share list --fields=DEF,-status,status_message
6201
- shares admin share user_permissions 1 list
6202
- shares admin user all app_authorizations 1 modify @json:'{"app_login":true}'
6203
- shares admin user all app_authorizations 1 show
6204
- shares admin user all list
6205
- shares admin user all share_permissions 1 list
6206
- shares admin user all share_permissions 1 show 1
6207
- shares admin user ldap add the_name
6208
- shares admin user local list
6209
- shares admin user saml import @json:'{"id":"the_id","name_id":"the_name"}'
6210
- shares files browse /
6211
- shares files delete my_share1/test_file.bin
6212
- shares files download --to-folder=. my_share1/test_file.bin
6213
- shares files download --to-folder=. my_share1/test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn_port/aspera/http-gwy"}'
6214
- shares files upload --to-folder=my_share1 'faux:///testfile?1m' --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn_port/aspera/http-gwy","synchronous":true,"api_version":"v1","upload_chunk_size":100000}'
6215
- shares files upload --to-folder=my_share1 test_file.bin
6216
- shares files upload --to-folder=my_share1 test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn_port/aspera/http-gwy"}'
6217
- shares health
6358
+ admin group all list
6359
+ admin node list
6360
+ admin share list --fields=DEF,-status,status_message
6361
+ admin share user_permissions 1 list
6362
+ admin user all app_authorizations 1 modify @json:'{"app_login":true}'
6363
+ admin user all app_authorizations 1 show
6364
+ admin user all list
6365
+ admin user all share_permissions 1 list
6366
+ admin user all share_permissions 1 show 1
6367
+ admin user ldap add the_name
6368
+ admin user local list
6369
+ admin user saml import @json:'{"id":"the_id","name_id":"the_name"}'
6370
+ files browse /
6371
+ files delete my_share1/test_file.bin
6372
+ files download --to-folder=. my_share1/test_file.bin
6373
+ files download --to-folder=. my_share1/test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn_port/aspera/http-gwy"}'
6374
+ files upload --to-folder=my_share1 'faux:///testfile?1m' --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn_port/aspera/http-gwy","synchronous":true,"api_version":"v1","upload_chunk_size":100000}'
6375
+ files upload --to-folder=my_share1 test_file.bin
6376
+ files upload --to-folder=my_share1 test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn_port/aspera/http-gwy"}'
6377
+ health
6218
6378
  ```
6219
6379
 
6220
- ## <a id="console"></a>Plugin: `console`: IBM Aspera Console
6380
+ ## Plugin: `console`: IBM Aspera Console
6221
6381
 
6222
6382
  ### Console sample commands
6223
6383
 
6384
+ > **Note:** Add `ascli console` in front of the commands:
6385
+
6224
6386
  ```bash
6225
- console health
6226
- console transfer current list
6227
- console transfer smart list
6228
- console transfer smart sub my_smart_id @json:'{"source":{"paths":["my_smart_file"]},"source_type":"user_selected"}'
6387
+ health
6388
+ transfer current list
6389
+ transfer smart list
6390
+ transfer smart sub my_smart_id @json:'{"source":{"paths":["my_smart_file"]},"source_type":"user_selected"}'
6229
6391
  ```
6230
6392
 
6231
- ## <a id="orchestrator"></a>Plugin: `orchestrator`:IBM Aspera Orchestrator
6393
+ ## Plugin: `orchestrator`:IBM Aspera Orchestrator
6232
6394
 
6233
6395
  ### Orchestrator sample commands
6234
6396
 
6397
+ > **Note:** Add `ascli orchestrator` in front of the commands:
6398
+
6235
6399
  ```bash
6236
- orchestrator health
6237
- orchestrator info
6238
- orchestrator plugins
6239
- orchestrator processes
6240
- orchestrator workflow details my_workflow_id
6241
- orchestrator workflow export my_workflow_id
6242
- orchestrator workflow inputs my_workflow_id
6243
- orchestrator workflow list
6244
- orchestrator workflow start my_workflow_id @json:'{"Param":"world !"}'
6245
- orchestrator workflow start my_workflow_id @json:'{"Param":"world !"}' --result=ResultStep:Complete_status_message
6246
- orchestrator workflow status ALL
6247
- orchestrator workflow status my_workflow_id
6400
+ health
6401
+ info
6402
+ plugins
6403
+ processes
6404
+ workflow details my_workflow_id
6405
+ workflow export my_workflow_id
6406
+ workflow inputs my_workflow_id
6407
+ workflow list
6408
+ workflow start my_workflow_id @json:'{"Param":"world !"}'
6409
+ workflow start my_workflow_id @json:'{"Param":"world !"}' --result=ResultStep:Complete_status_message
6410
+ workflow status ALL
6411
+ workflow status my_workflow_id
6248
6412
  ```
6249
6413
 
6250
- ## <a id="cos"></a>Plugin: `cos`: IBM Cloud Object Storage
6414
+ ## Plugin: `cos`: IBM Cloud Object Storage
6251
6415
 
6252
6416
  The IBM Cloud Object Storage provides the possibility to execute transfers using FASP.
6253
6417
  It uses the same transfer service as Aspera on Cloud, called Aspera Transfer Service (ATS).
6254
6418
  Available ATS regions: [https://status.aspera.io](https://status.aspera.io)
6255
6419
 
6256
6420
  There are two possibilities to provide credentials.
6257
- If you already have the endpoint, API key and CRN, use the first method.
6421
+ If you already have the endpoint, API key and Resource Instance ID (CRN), use the first method.
6258
6422
  If you don't have credentials but have access to the IBM Cloud console, then use the second method.
6259
6423
 
6260
6424
  ### Using endpoint, API key and Resource Instance ID (CRN)
@@ -6322,12 +6486,12 @@ The field `resource_instance_id` is for option `crn`
6322
6486
 
6323
6487
  The field `apikey` is for option `apikey`
6324
6488
 
6325
- (If needed: endpoints for regions can be found by querying the `endpoints` URL.)
6489
+ > **Note:** endpoints for regions can be found by querying the `endpoints` URL from file or from the IBM Cloud Console.
6326
6490
 
6327
6491
  The required options for this method are:
6328
6492
 
6329
6493
  - `bucket` bucket name
6330
- - `region` bucket region, e.g. eu-de
6494
+ - `region` bucket region, e.g. `eu-de`
6331
6495
  - `service_credentials` see below
6332
6496
 
6333
6497
  For example, let us create a default configuration:
@@ -6339,7 +6503,7 @@ ascli config preset set default cos mycos
6339
6503
 
6340
6504
  ### Operations, transfers
6341
6505
 
6342
- Let's assume you created a default configuration from once of the two previous steps (else specify the access options on command lines).
6506
+ Let's assume you created a default configuration from one of the two previous steps (else specify the access options on command lines).
6343
6507
 
6344
6508
  A subset of `node` plugin operations are supported, basically node API:
6345
6509
 
@@ -6348,20 +6512,22 @@ ascli cos node info
6348
6512
  ascli cos node upload 'faux:///sample1G?1g'
6349
6513
  ```
6350
6514
 
6351
- > **Note:** We generate a dummy file `sample1G` of size 2GB using the `faux` PVCL (man `ascp` and section above), but you can of course send a real file by specifying a real file instead.
6515
+ > **Note:** A dummy file `sample1G` of size 2GB is generated using the `faux` PVCL (man `ascp` and section above), but you can, of course, send a real file by specifying a real file instead.
6352
6516
 
6353
- ### COS sample commands
6517
+ ### Cos sample commands
6518
+
6519
+ > **Note:** Add `ascli cos` in front of the commands:
6354
6520
 
6355
6521
  ```bash
6356
- cos --bucket=my_bucket_name --endpoint=my_bucket_endpoint --apikey=my_bucket_apikey --crn=my_resource_instance_id node info
6357
- cos --bucket=my_bucket_name --region=my_bucket_region --service-credentials=@json:@file:my_cos_svc_cred node info
6358
- cos node access_key show self
6359
- cos node download test_file.bin --to-folder=.
6360
- cos node info --log-level=trace2
6361
- cos node upload test_file.bin
6522
+ node access_key show self
6523
+ node download test_file.bin --to-folder=.
6524
+ node info --bucket=my_bucket --endpoint=my_endpoint --apikey=my_api_key --crn=my_resource_instance_id
6525
+ node info --bucket=my_bucket --region=my_region --service-credentials=@json:@file:my_cos_svc_cred
6526
+ node info --log-level=trace2
6527
+ node upload test_file.bin
6362
6528
  ```
6363
6529
 
6364
- ## <a id="preview"></a>Plugin: `preview`: Preview generator for AoC
6530
+ ## Plugin: `preview`: Preview generator for AoC
6365
6531
 
6366
6532
  The `preview` generates thumbnails (office, images, video) and video previews on storage for use primarily in the Aspera on Cloud application.
6367
6533
  It uses the **node API** of Aspera HSTS and requires use of Access Keys and its **storage root**.
@@ -6409,7 +6575,7 @@ If you use a value different than 16777216, then specify it using option `max_si
6409
6575
 
6410
6576
  > **Note:** The HSTS parameter (`max_request_file_create_size_kb`) is in **kiloBytes** while the generator parameter is in **Bytes** (factor of 1024).
6411
6577
 
6412
- ### <a id="prev_ext"></a>External tools: Linux
6578
+ ### External tools: Linux
6413
6579
 
6414
6580
  `ascli` requires the following external tools available in the `PATH`:
6415
6581
 
@@ -6476,7 +6642,7 @@ chmod a+x /usr/bin/unoconv
6476
6642
  The preview generator should be executed as a non-user.
6477
6643
  When using object storage, any user can be used, but when using local storage it is usually better to use the user `xfer`, as uploaded files are under this identity: this ensures proper access rights. (we will assume this)
6478
6644
 
6479
- Like any `ascli` commands, parameters can be passed on command line or using a configuration [option preset](#lprt).
6645
+ Like any `ascli` commands, parameters can be passed on command line or using a configuration [Option Preset](#option-preset)'.
6480
6646
  The configuration file must be created with the same user used to run so that it is properly used on runtime.
6481
6647
 
6482
6648
  The `xfer` user has a special protected shell: `aspshell`, so in order to update the configuration, and when changing identity, specify an alternate shell.
@@ -6654,23 +6820,26 @@ If the preview generator does not have access to files on the file system (it is
6654
6820
 
6655
6821
  ### Preview sample commands
6656
6822
 
6823
+ > **Note:** Add `ascli preview` in front of the commands:
6824
+
6657
6825
  ```bash
6658
- preview check --skip-types=office
6659
- preview scan --scan-id=1 --skip-types=office --log-level=info --file-access=remote --ts=@json:'{"target_rate_kbps":1000000}'
6660
- preview scan --skip-types=office --log-level=info
6661
- preview show --base=test my_docx
6662
- preview show --base=test my_mpg --video-png-conv=animated
6663
- preview show --base=test my_mpg --video-png-conv=fixed
6664
- preview show --base=test my_mpg mp4 --video-conversion=clips
6665
- preview show --base=test my_mpg mp4 --video-conversion=reencode
6666
- preview show --base=test my_pdf
6667
- preview test --base=test my_dcm
6668
- preview test --base=test my_mxf mp4 --video-conversion=blend --query=@json:'{"text":true,"double":true}'
6669
- preview test --mimemagic=yes --base=test my_dcm
6670
- preview trevents --once-only=yes --skip-types=office --log-level=info
6826
+ check --skip-types=office
6827
+ scan --scan-id=1 --skip-types=office --log-level=info --file-access=remote --ts=@json:'{"target_rate_kbps":1000000}'
6828
+ scan --skip-types=office --log-level=info
6829
+ show --base=test my_docx
6830
+ show --base=test my_mpg --video-png-conv=animated
6831
+ show --base=test my_mpg --video-png-conv=fixed
6832
+ show --base=test my_mpg mp4 --video-conversion=clips
6833
+ show --base=test my_mpg mp4 --video-conversion=reencode
6834
+ show --base=test my_pdf
6835
+ test --base=test my_dcm
6836
+ test --base=test my_mxf mp4 --video-conversion=blend --query=@json:'{"text":true,"double":true}'
6837
+ test --mimemagic=yes --base=test my_dcm
6838
+ test --mimemagic=yes --base=test my_jpg_unk
6839
+ trevents --once-only=yes --skip-types=office --log-level=info
6671
6840
  ```
6672
6841
 
6673
- ## <a id="async"></a>IBM Aspera Sync
6842
+ ## IBM Aspera Sync
6674
6843
 
6675
6844
  An interface for the `async` utility is provided in the following plugins:
6676
6845
 
@@ -6733,11 +6902,11 @@ Interesting `ascp` features are found in its arguments: (see `ascp` manual):
6733
6902
  - `ascp` has an option to send only files not modified since the last X seconds: `--exclude-newer-than`, `--exclude-older-than` (`exclude_newer_than`,`exclude_older_than`)
6734
6903
  - `--src-base` (`src_base`) if top level folder name shall not be created on destination
6735
6904
 
6736
- > **Note:** `ascli` takes transfer parameters exclusively as a [*transfer-spec*](#transferspec), with `ts` option.
6905
+ > **Note:** `ascli` takes transfer parameters exclusively as a [*transfer-spec*](#transfer-specification), with `ts` option.
6737
6906
  >
6738
- > **Note:** Most, but not all, native `ascp` arguments are available as standard [*transfer-spec*](#transferspec) parameters.
6907
+ > **Note:** Most, but not all, native `ascp` arguments are available as standard [*transfer-spec*](#transfer-specification) parameters.
6739
6908
  >
6740
- > **Note:** Only for the [`direct`](#agt_direct) transfer agent (not others, like connect or node), native `ascp` arguments can be provided with parameter `ascp_args` of option `transfer_info` .
6909
+ > **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` .
6741
6910
 
6742
6911
  #### Server side and configuration
6743
6912
 
@@ -6745,7 +6914,7 @@ Virtually any transfer on a **repository** on a regular basis might emulate a ho
6745
6914
 
6746
6915
  > **Note:** File detection is not based on events (`inotify`, etc...), but on a simple folder scan on source side.
6747
6916
  >
6748
- > **Note:** Parameters may be saved in a [option preset](#lprt) and used with `-P`.
6917
+ > **Note:** Parameters may be saved in a [Option Preset](#option-preset)' and used with `-P`.
6749
6918
 
6750
6919
  #### Scheduling
6751
6920
 
@@ -6912,7 +7081,7 @@ Transfer is: <%=global_transfer_status%>
6912
7081
 
6913
7082
  This gem comes with a second executable tool providing a simplified standardized interface to start a FASP session: `asession`.
6914
7083
 
6915
- It aims at simplifying the startup of a FASP session from a programmatic stand point as formatting a [*transfer-spec*](#transferspec) is:
7084
+ It aims at simplifying the startup of a FASP session from a programmatic stand point as formatting a [*transfer-spec*](#transfer-specification) is:
6916
7085
 
6917
7086
  - Common to Aspera Node API (HTTP POST /ops/transfer)
6918
7087
  - Common to Aspera Connect API (browser javascript startTransfer)
@@ -6922,20 +7091,22 @@ Hopefully, IBM integrates this directly in `ascp`, and this tool is made redunda
6922
7091
 
6923
7092
  This makes it easy to integrate with any language provided that one can spawn a sub process, write to its STDIN, read from STDOUT, generate and parse JSON.
6924
7093
 
6925
- `ascli` expect one single argument: a [*transfer-spec*](#transferspec).
7094
+ `ascli` expect one single argument: a session specification that contains parameters and a [*transfer-spec*](#transfer-specification).
6926
7095
 
6927
- If no argument is provided, it assumes a value of: `@json:@stdin:`, i.e. a JSON formatted [*transfer-spec*](#transferspec) on stdin.
7096
+ If no argument is provided, it assumes a value of: `@json:@stdin:`, i.e. a JSON formatted on stdin.
6928
7097
 
6929
7098
  > **Note:** If JSON is the format, specify `@json:` to tell `ascli` to decode the `Hash` using JSON syntax.
6930
7099
 
6931
7100
  During execution, it generates all low level events, one per line, in JSON format on stdout.
6932
7101
 
6933
- There are special **extended** [*transfer-spec*](#transferspec) parameters supported by `asession`:
6934
-
6935
- - `EX_loglevel` to change log level of `ascli`
6936
- - `EX_file_list_folder` to set the folder used to store (exclusively, because of garbage collection) generated file lists. By default it is `[system tmp folder]/[username]_asession_filelists`
7102
+ Top level parameters supported by `asession`:
6937
7103
 
6938
- > **Note:** In addition, many (deprecated) `EX_` [*transfer-spec*](#transferspec) parameters are supported for the [`direct`](#agt_direct) transfer agent (used by `asession`), refer to section [*transfer-spec*](#transferspec).
7104
+ | parameter | description |
7105
+ |-----------|-------------|
7106
+ | `spec` | the [*transfer-spec*](#transfer-specification) |
7107
+ | `agent` | same parameters as transfer-info for agent `direct` |
7108
+ | `loglevel` | log level of `asession` |
7109
+ | `file_list_folder` | the folder used to store (for garbage collection) generated file lists. By default it is `[system tmp folder]/[username]_asession_filelists` |
6939
7110
 
6940
7111
  ### Comparison of interfaces
6941
7112
 
@@ -6965,7 +7136,7 @@ asession < session.json
6965
7136
 
6966
7137
  `asession` also supports asynchronous commands (on the management port). Instead of the traditional text protocol as described in `ascp` manual, the format for commands is: one single line per command, formatted in JSON, where parameters shall be **snake** style, for example: `LongParameter` -&gt; `long_parameter`
6967
7138
 
6968
- This is particularly useful for a persistent session ( with the [*transfer-spec*](#transferspec) parameter: `"keepalive":true` )
7139
+ This is particularly useful for a persistent session ( with the [*transfer-spec*](#transfer-specification) parameter: `"keepalive":true` )
6969
7140
 
6970
7141
  ```json
6971
7142
  asession
@@ -6987,23 +7158,24 @@ asession -h
6987
7158
  USAGE
6988
7159
  asession
6989
7160
  asession -h|--help
6990
- asession <transfer spec extended value>
7161
+ asession <session spec extended value>
6991
7162
 
6992
7163
  If no argument is provided, default will be used: @json:@stdin
6993
7164
  -h, --help display this message
6994
- <transfer spec extended value> a JSON value for transfer_spec, using the prefix: @json:
7165
+ <session spec extended value> a dictionary value (Hash)
6995
7166
  The value can be either:
6996
7167
  the JSON description itself, e.g. @json:'{"xx":"yy",...}'
6997
7168
  @json:@stdin, if the JSON is provided from stdin
6998
7169
  @json:@file:<path>, if the JSON is provided from a file
7170
+ Parameter spec is mandatory, it contains the transfer spec
6999
7171
  Asynchronous commands can be provided on STDIN, examples:
7000
7172
  {"type":"START","source":"/aspera-test-dir-tiny/200KB.2"}
7001
7173
  {"type":"START","source":"xx","destination":"yy"}
7002
7174
  {"type":"DONE"}
7003
- Note: debug information can be placed on STDERR, using the "EX_loglevel" parameter in transfer spec (debug=0)
7175
+ Note: debug information can be placed on STDERR, using the "loglevel" parameter in session spec (debug=0)
7004
7176
  EXAMPLES
7005
- asession @json:'{"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"demoaspera","direction":"receive","destination_root":"./test.dir","paths":[{"source":"/aspera-test-dir-tiny/200KB.1"}]}'
7006
- echo '{"remote_host":...}'|asession @json:@stdin
7177
+ asession @json:'{"spec":{"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"demoaspera","direction":"receive","destination_root":"./test.dir","paths":[{"source":"/aspera-test-dir-tiny/200KB.1"}]}}'
7178
+ echo '{"spec":{"remote_host":...}}'|asession @json:@stdin
7007
7179
 
7008
7180
  ```
7009
7181
 
@@ -7012,7 +7184,7 @@ EXAMPLES
7012
7184
  Main components:
7013
7185
 
7014
7186
  - `Aspera` generic classes for REST and OAuth
7015
- - `Aspera::Fasp`: starting and monitoring transfers. It can be considered as a FASPManager class for Ruby.
7187
+ - `Aspera::Agent::Direct`: starting and monitoring transfers. It can be considered as a FASPManager class for Ruby.
7016
7188
  - `Aspera::Cli`: `ascli`.
7017
7189
 
7018
7190
  Working examples can be found in repo: <https://github.com/laurent-martin/aspera-api-examples> in Ruby examples.
@@ -7033,7 +7205,7 @@ So, it evolved into `ascli`:
7033
7205
 
7034
7206
  - Portable: works on platforms supporting `ruby` (and `ascp`)
7035
7207
  - Easy to install with the `gem` utility
7036
- - Supports transfers with multiple [Transfer Agents](#agents), that&apos;s why transfer parameters moved from `ascp` command line to [*transfer-spec*](#transferspec) (more reliable , more standard)
7208
+ - Supports transfers with multiple [Transfer Agents](#transfer-clients-agents), that&apos;s why transfer parameters moved from `ascp` command line to [*transfer-spec*](#transfer-specification) (more reliable , more standard)
7037
7209
  - `ruby` is consistent with other Aspera products
7038
7210
 
7039
7211
  Over the time, a supported command line tool `aspera` was developed in C++, it was later on deprecated.