aspera-cli 4.26.2 → 4.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +310 -21
  4. data/CONTRIBUTING.md +99 -14
  5. data/TODO.md +50 -0
  6. data/bin/ascli +3 -3
  7. data/docs/README.md +10977 -0
  8. data/docs/test-mcp-with-ai.md +202 -0
  9. data/lib/aspera/agent/base.rb +29 -7
  10. data/lib/aspera/agent/connect.rb +58 -21
  11. data/lib/aspera/agent/desktop.rb +53 -18
  12. data/lib/aspera/agent/direct.rb +71 -40
  13. data/lib/aspera/agent/factory.rb +3 -3
  14. data/lib/aspera/agent/httpgw.rb +55 -14
  15. data/lib/aspera/agent/node.rb +34 -2
  16. data/lib/aspera/agent/transferd.rb +48 -12
  17. data/lib/aspera/api/alee.rb +1 -1
  18. data/lib/aspera/api/aoc.rb +42 -44
  19. data/lib/aspera/api/cos_node.rb +10 -9
  20. data/lib/aspera/api/faspex.rb +16 -15
  21. data/lib/aspera/api/httpgw.rb +23 -23
  22. data/lib/aspera/api/node.rb +51 -70
  23. data/lib/aspera/api/queries/bss_subscription_account.graphql +18 -0
  24. data/lib/aspera/api/queries/bss_subscription_usage.graphql +18 -0
  25. data/lib/aspera/ascmd.rb +32 -30
  26. data/lib/aspera/ascp/installation.rb +75 -69
  27. data/lib/aspera/ascp/management.rb +7 -8
  28. data/lib/aspera/assert.rb +12 -13
  29. data/lib/aspera/cli/ascp_actions.rb +155 -0
  30. data/lib/aspera/cli/async_transfer_store.rb +125 -0
  31. data/lib/aspera/cli/bootstrapper.rb +197 -0
  32. data/lib/aspera/cli/command_registry.rb +145 -0
  33. data/lib/aspera/cli/command_spec.rb +141 -0
  34. data/lib/aspera/cli/context.rb +19 -6
  35. data/lib/aspera/cli/error.rb +16 -0
  36. data/lib/aspera/cli/extended_value.rb +27 -26
  37. data/lib/aspera/cli/formatter.rb +95 -59
  38. data/lib/aspera/cli/gem_checker.rb +65 -0
  39. data/lib/aspera/cli/hints.rb +3 -3
  40. data/lib/aspera/cli/http.rb +74 -30
  41. data/lib/aspera/cli/info.rb +2 -0
  42. data/lib/aspera/cli/mailer.rb +97 -0
  43. data/lib/aspera/cli/mcp_tool.rb +225 -0
  44. data/lib/aspera/cli/option_declarator.rb +77 -0
  45. data/lib/aspera/cli/options.schema.yaml +634 -7
  46. data/lib/aspera/cli/parser.rb +1217 -0
  47. data/lib/aspera/cli/plugins/alee.rb +20 -22
  48. data/lib/aspera/cli/plugins/aoc.rb +1178 -881
  49. data/lib/aspera/cli/plugins/ats.rb +205 -162
  50. data/lib/aspera/cli/plugins/base.rb +703 -175
  51. data/lib/aspera/cli/plugins/basic_auth.rb +7 -9
  52. data/lib/aspera/cli/plugins/config.rb +434 -757
  53. data/lib/aspera/cli/plugins/console.rb +107 -65
  54. data/lib/aspera/cli/plugins/cos.rb +46 -33
  55. data/lib/aspera/cli/plugins/factory.rb +6 -6
  56. data/lib/aspera/cli/plugins/faspex5.rb +627 -388
  57. data/lib/aspera/cli/plugins/faspio.rb +54 -51
  58. data/lib/aspera/cli/plugins/httpgw.rb +18 -25
  59. data/lib/aspera/cli/plugins/mcp.rb +279 -0
  60. data/lib/aspera/cli/plugins/node.rb +988 -840
  61. data/lib/aspera/cli/plugins/oauth.rb +7 -10
  62. data/lib/aspera/cli/plugins/orchestrator.rb +112 -135
  63. data/lib/aspera/cli/plugins/preview.rb +195 -157
  64. data/lib/aspera/cli/plugins/server.rb +141 -91
  65. data/lib/aspera/cli/plugins/shares.rb +343 -110
  66. data/lib/aspera/cli/preset_actions.rb +159 -0
  67. data/lib/aspera/cli/preset_manager.rb +82 -39
  68. data/lib/aspera/cli/result.rb +78 -26
  69. data/lib/aspera/cli/runner.rb +323 -153
  70. data/lib/aspera/cli/secret_finder.rb +40 -0
  71. data/lib/aspera/cli/special_values.rb +1 -0
  72. data/lib/aspera/cli/sync_actions.rb +89 -64
  73. data/lib/aspera/cli/terminal_formatter.rb +3 -3
  74. data/lib/aspera/cli/transfer_actions.rb +90 -0
  75. data/lib/aspera/cli/transfer_agent.rb +129 -64
  76. data/lib/aspera/cli/transfer_progress.rb +9 -9
  77. data/lib/aspera/cli/vault_manager.rb +79 -0
  78. data/lib/aspera/cli/version.rb +1 -1
  79. data/lib/aspera/cli/wizard.rb +28 -30
  80. data/lib/aspera/colors.rb +3 -3
  81. data/lib/aspera/command_line_builder.rb +34 -34
  82. data/lib/aspera/command_line_converter.rb +1 -1
  83. data/lib/aspera/coverage.rb +1 -2
  84. data/lib/aspera/data_repository.rb +2 -1
  85. data/lib/aspera/dot_container.rb +12 -12
  86. data/lib/aspera/environment.rb +30 -23
  87. data/lib/aspera/exec_spec.rb +13 -0
  88. data/lib/aspera/faspex_gw.rb +5 -5
  89. data/lib/aspera/faspex_postproc.rb +16 -10
  90. data/lib/aspera/graphql.rb +37 -0
  91. data/lib/aspera/hash_ext.rb +8 -2
  92. data/lib/aspera/json_rpc/client.rb +62 -0
  93. data/lib/aspera/json_rpc/version.rb +7 -0
  94. data/lib/aspera/keychain/base.rb +10 -3
  95. data/lib/aspera/keychain/encrypted_hash.rb +92 -17
  96. data/lib/aspera/keychain/factory.rb +20 -8
  97. data/lib/aspera/keychain/hashicorp_vault.rb +1 -1
  98. data/lib/aspera/keychain/macos_security.rb +23 -25
  99. data/lib/aspera/keychain/one_password_api.rb +86 -0
  100. data/lib/aspera/keychain/one_password_base.rb +34 -0
  101. data/lib/aspera/keychain/one_password_cli.rb +98 -0
  102. data/lib/aspera/link_header.rb +82 -0
  103. data/lib/aspera/log.rb +29 -15
  104. data/lib/aspera/markdown.rb +90 -7
  105. data/lib/aspera/nagios.rb +8 -8
  106. data/lib/aspera/node_simulator.rb +35 -27
  107. data/lib/aspera/oauth/base.rb +9 -10
  108. data/lib/aspera/oauth/boot.rb +5 -5
  109. data/lib/aspera/oauth/factory.rb +12 -10
  110. data/lib/aspera/oauth/jwt.rb +9 -11
  111. data/lib/aspera/oauth/web.rb +6 -6
  112. data/lib/aspera/persistency_action_once.rb +12 -12
  113. data/lib/aspera/persistency_folder.rb +18 -11
  114. data/lib/aspera/preview/file_types.rb +5 -5
  115. data/lib/aspera/preview/generator.rb +52 -49
  116. data/lib/aspera/preview/options.rb +3 -2
  117. data/lib/aspera/preview/terminal.rb +5 -5
  118. data/lib/aspera/preview/utils.rb +66 -19
  119. data/lib/aspera/products/connect.rb +2 -2
  120. data/lib/aspera/products/desktop.rb +1 -1
  121. data/lib/aspera/products/other.rb +3 -3
  122. data/lib/aspera/products/transferd.rb +4 -4
  123. data/lib/aspera/proxy_auto_config.rb +15 -14
  124. data/lib/aspera/rest.rb +159 -151
  125. data/lib/aspera/rest_error_analyzer.rb +6 -6
  126. data/lib/aspera/rest_errors_aspera.rb +0 -10
  127. data/lib/aspera/rest_list.rb +11 -10
  128. data/lib/aspera/schema/IBM Aspera Node API-4.4.6.yaml +6232 -0
  129. data/lib/aspera/schema/IBM Aspera faspio Gateway API-1.0.0.yaml +249 -0
  130. data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +1853 -510
  131. data/lib/aspera/schema/IBM_Aspera_Shares.yaml +4653 -0
  132. data/lib/aspera/schema/documentation.rb +65 -28
  133. data/lib/aspera/schema/reader.rb +136 -13
  134. data/lib/aspera/schema/registry.rb +60 -8
  135. data/lib/aspera/secret_hider.rb +12 -7
  136. data/lib/aspera/ssh.rb +64 -31
  137. data/lib/aspera/ssl.rb +5 -5
  138. data/lib/aspera/sync/conf.schema.yaml +2 -2
  139. data/lib/aspera/sync/database.rb +2 -2
  140. data/lib/aspera/sync/operations.rb +22 -25
  141. data/lib/aspera/temp_file_manager.rb +25 -5
  142. data/lib/aspera/timer_limiter.rb +1 -1
  143. data/lib/aspera/transfer/faux_file.rb +24 -11
  144. data/lib/aspera/transfer/parameters.rb +36 -34
  145. data/lib/aspera/transfer/result.rb +74 -0
  146. data/lib/aspera/transfer/resumer.rb +10 -10
  147. data/lib/aspera/transfer/spec.rb +18 -1
  148. data/lib/aspera/transfer/spec.schema.yaml +12 -3
  149. data/lib/aspera/uri_reader.rb +52 -15
  150. data/lib/aspera/web_auth.rb +8 -7
  151. data/lib/aspera/web_server_simple.rb +15 -12
  152. data/lib/aspera/yaml.rb +5 -4
  153. data.tar.gz.sig +0 -0
  154. metadata +34 -6
  155. metadata.gz.sig +0 -0
  156. data/lib/aspera/cli/manager.rb +0 -766
  157. data/lib/aspera/cli/plugins/faspex.rb +0 -539
  158. data/lib/aspera/json_rpc.rb +0 -52
  159. data/lib/aspera/transfer/uri.rb +0 -56
@@ -6,9 +6,95 @@ info:
6
6
  paths: {}
7
7
  components:
8
8
  schemas:
9
- TransferInfo:
9
+ LogOptions:
10
10
  type: object
11
- description: Optional parameters to control multi-session transfers, Web Socket Session, resume policy, and additional arguments for `ascp`.
11
+ description: Logging options.
12
+ properties:
13
+ level:
14
+ type: string
15
+ description: Minimum log level displayed.
16
+ enum: [trace2, trace1, debug, info, warn, error, fatal, unknown]
17
+ default: warn
18
+ type:
19
+ type: string
20
+ description: Log output destination.
21
+ enum: [stderr, stdout, syslog]
22
+ default: stderr
23
+ format:
24
+ type: string
25
+ description: Log line formatter. Use `@ruby:` for a custom lambda.
26
+ enum: [default, caller, standard]
27
+ default: default
28
+ secrets:
29
+ type: boolean
30
+ description: Show passwords and secrets in logs.
31
+ default: false
32
+ McpServerOptions:
33
+ type: object
34
+ description: MCP server configuration for the `mcp server` command.
35
+ properties:
36
+ transport:
37
+ type: string
38
+ description: Transport used by the MCP server.
39
+ enum: [stdio, http]
40
+ default: stdio
41
+ extra_args:
42
+ type: array
43
+ description: Flags prepended to every `ascli` command.
44
+ items:
45
+ type: string
46
+ max_text_bytes:
47
+ type: integer
48
+ description: Maximum number of bytes for JSON text content in list results.
49
+ default: 100000
50
+ max_line_bytes:
51
+ type: integer
52
+ description: Maximum JSON frame size for stdio transport.
53
+ default: 4194304
54
+ port:
55
+ type: integer
56
+ description: TCP port for HTTP transport.
57
+ default: 3000
58
+ bind:
59
+ type: string
60
+ description: Bind address for HTTP transport.
61
+ default: 127.0.0.1
62
+ stateless:
63
+ type: boolean
64
+ description: Run HTTP transport in stateless mode.
65
+ default: false
66
+ allowed_origins:
67
+ type: array
68
+ description: Allowed HTTP origin values.
69
+ items:
70
+ type: string
71
+ allowed_hosts:
72
+ type: array
73
+ description: Allowed HTTP host values.
74
+ items:
75
+ type: string
76
+ session_idle_timeout:
77
+ type: integer
78
+ description: HTTP session idle timeout in seconds.
79
+ max_sessions:
80
+ type: integer
81
+ description: Maximum number of HTTP sessions.
82
+ instructions:
83
+ type: string
84
+ description: Instructions shown to the AI client.
85
+ description:
86
+ type: string
87
+ description: Description advertised by the MCP server.
88
+ protocol_version:
89
+ type: string
90
+ description: MCP protocol version, for example `2024-11-05`.
91
+ validate_tool_call_arguments:
92
+ type: boolean
93
+ description: Validate MCP tool call arguments.
94
+ default: true
95
+ DirectAgentOptions:
96
+ type: object
97
+ description: Parameters for the `ascp` transfer agent.
12
98
  properties:
13
99
  wss:
14
100
  type: boolean
@@ -17,7 +103,14 @@ components:
17
103
  quiet:
18
104
  type: boolean
19
105
  description: Suppress the `ascp` progress bar display.
20
- default: false
106
+ default: true
107
+ file_list:
108
+ type: boolean
109
+ description: >-
110
+ If `true`, source paths are written to a temp file passed to `ascp` via `--file-list` or `--file-pair-list`.
111
+
112
+ If `false`, source paths are placed directly on the `ascp` command line.
113
+ default: true
21
114
  trusted_certs:
22
115
  type: array
23
116
  description: List of trusted certificate repositories.
@@ -41,7 +134,7 @@ components:
41
134
  type: number
42
135
  format: float
43
136
  description: Multi session - Maximum time (in seconds) to verify that `ascp` is running.
44
- default: 3
137
+ default: 2
45
138
  spawn_delay_sec:
46
139
  type: number
47
140
  format: float
@@ -51,11 +144,12 @@ components:
51
144
  type: boolean
52
145
  description: >-
53
146
  Multi session - Increment UDP port for each session.
54
-
147
+
55
148
  If `true`, each session uses a different UDP port starting at `fasp_port` (default: 33001).
56
-
149
+
57
150
  If `false`, all sessions use the same `fasp_port` (or `ascp` default).
58
- default: true
151
+
152
+ Default: `true` on Windows, `false` on other platforms.
59
153
  resume:
60
154
  type: object
61
155
  description: Configuration for automatic transfer resume on interruption.
@@ -80,3 +174,536 @@ components:
80
174
  type: boolean
81
175
  description: Enable use of the `ascp` management port for transfer monitoring.
82
176
  default: true
177
+ NodeAgentOptions:
178
+ type: object
179
+ description: Parameters for the Node API transfer agent.
180
+ required:
181
+ - url
182
+ - username
183
+ - password
184
+ properties:
185
+ url:
186
+ type: string
187
+ description: URL of the Node API.
188
+ username:
189
+ type: string
190
+ description: Node API user or access key.
191
+ password:
192
+ type: string
193
+ description: Password, secret, or bearer token.
194
+ root_id:
195
+ type: string
196
+ description: Root file ID. Mandatory only when `password` is a bearer token.
197
+ HttpgwAgentOptions:
198
+ type: object
199
+ description: Parameters for the HTTP Gateway transfer agent.
200
+ required:
201
+ - url
202
+ properties:
203
+ url:
204
+ type: string
205
+ description: URL of the HTTP Gateway.
206
+ upload_chunk_size:
207
+ type: integer
208
+ description: Size in bytes of each upload chunk.
209
+ default: 64000
210
+ api_version:
211
+ type: string
212
+ description: Force use of a specific API version.
213
+ enum:
214
+ - v1
215
+ - v2
216
+ default: v2
217
+ synchronous:
218
+ type: boolean
219
+ description: Wait for acknowledgment after each message.
220
+ default: false
221
+ DesktopAgentOptions:
222
+ type: object
223
+ description: >-
224
+ Parameters for the IBM Aspera Desktop Client transfer agent.
225
+ The Desktop Client must be running locally. No additional options are required.
226
+ properties: {}
227
+ ConnectAgentOptions:
228
+ type: object
229
+ description: >-
230
+ Parameters for the IBM Aspera Connect Client transfer agent.
231
+ The Connect Client must be running locally. No additional options are required.
232
+ properties: {}
233
+ TransferdAgentOptions:
234
+ type: object
235
+ description: Parameters for the Transfer Daemon transfer agent.
236
+ properties:
237
+ url:
238
+ type: string
239
+ description: >-
240
+ Address and port listened by the daemon (e.g. `:55002`).
241
+ If port is `0`, the daemon listens on a random available port.
242
+ If no address is given, `127.0.0.1` is used.
243
+ default: ":0"
244
+ start:
245
+ type: boolean
246
+ description: Start a new daemon instance.
247
+ default: true
248
+ stop:
249
+ type: boolean
250
+ description: Stop the daemon when `ascli` exits.
251
+ default: true
252
+ TransferAgentOptions:
253
+ description: >-
254
+ Transfer agent selector and agent-specific parameters.
255
+ Set `agent` to select the agent type (default: `direct`).
256
+ Remaining keys are passed to the selected agent.
257
+ oneOf:
258
+ - $ref: "#/components/schemas/DirectAgentOptions"
259
+ - $ref: "#/components/schemas/NodeAgentOptions"
260
+ - $ref: "#/components/schemas/HttpgwAgentOptions"
261
+ - $ref: "#/components/schemas/TransferdAgentOptions"
262
+ - $ref: "#/components/schemas/DesktopAgentOptions"
263
+ - $ref: "#/components/schemas/ConnectAgentOptions"
264
+ discriminator:
265
+ propertyName: agent
266
+ mapping:
267
+ direct: "#/components/schemas/DirectAgentOptions"
268
+ node: "#/components/schemas/NodeAgentOptions"
269
+ httpgw: "#/components/schemas/HttpgwAgentOptions"
270
+ transferd: "#/components/schemas/TransferdAgentOptions"
271
+ desktop: "#/components/schemas/DesktopAgentOptions"
272
+ connect: "#/components/schemas/ConnectAgentOptions"
273
+ SmtpOptions:
274
+ type: object
275
+ description: SMTP email server configuration.
276
+ required:
277
+ - server
278
+ properties:
279
+ server:
280
+ type: string
281
+ description: SMTP server address.
282
+ example: smtp.gmail.com
283
+ tls:
284
+ type: boolean
285
+ description: Enable `STARTTLS` (port 587).
286
+ default: true
287
+ ssl:
288
+ type: boolean
289
+ description: Enable `TLS/SSL` (port 465).
290
+ default: false
291
+ port:
292
+ type: integer
293
+ description: >-
294
+ Port for the SMTP service.
295
+
296
+ Defaults: `587` (TLS), `465` (SSL), `25` (plain).
297
+ example: 587
298
+ domain:
299
+ type: string
300
+ description: Email domain of the user. Defaults to the domain part of `server`.
301
+ example: gmail.com
302
+ username:
303
+ type: string
304
+ description: >-
305
+ User to authenticate on the SMTP server.
306
+ Leave empty for open (unauthenticated) relay.
307
+ example: john@example.com
308
+ password:
309
+ type: string
310
+ description: Password for the above `username`.
311
+ example: my_password
312
+ from_email:
313
+ type: string
314
+ description: Sender address (used in `From:` header and as reply-to). Defaults to `username` when defined.
315
+ example: johnny@example.com
316
+ from_name:
317
+ type: string
318
+ description: Display name of the sender. Defaults to the local-part of `from_email`.
319
+ example: John Wayne
320
+ HttpOptions:
321
+ type: object
322
+ description: >-
323
+ HTTP/S connection parameters for REST calls (not `ascp` WSS).
324
+
325
+ Keys are dispatched at startup to three targets:
326
+ `RestParameters` (`user_agent`, `download_partial_suffix`, `retry_*`),
327
+ `SSL` (`ssl_options`), and `OAuth` (`token_cache_max_age`, `token_refresh_threshold`).
328
+ Any remaining key is forwarded as a setter to the `Net::HTTP` session
329
+ (e.g. `ca_file`, `verify_mode`) — the list below covers the common ones.
330
+ additionalProperties: true
331
+ properties:
332
+ read_timeout:
333
+ type: number
334
+ description: Maximum time in seconds to wait for data to be read from the server. (Net::HTTP)
335
+ default: 60
336
+ write_timeout:
337
+ type: number
338
+ description: Maximum time in seconds to wait for data to be written to the server. (Net::HTTP)
339
+ default: 60
340
+ open_timeout:
341
+ type: number
342
+ description: Maximum time in seconds to wait for a connection to be established. (Net::HTTP)
343
+ default: 60
344
+ keep_alive_timeout:
345
+ type: number
346
+ description: Maximum time in seconds to keep an idle persistent connection open. (Net::HTTP)
347
+ default: 2
348
+ ssl_options:
349
+ type: array
350
+ description: List of OpenSSL option flags to set on the HTTP session (e.g. `IGNORE_UNEXPECTED_EOF`). (SSL)
351
+ items:
352
+ type: string
353
+ user_agent:
354
+ type: string
355
+ description: Value sent in the `User-Agent` HTTP request header. (Rest)
356
+ download_partial_suffix:
357
+ type: string
358
+ description: File suffix appended to the target filename while a download is in progress. (Rest)
359
+ default: .http_partial
360
+ retry_on_error:
361
+ type: boolean
362
+ description: Retry the request on any HTTP error response. (Rest)
363
+ default: false
364
+ retry_on_timeout:
365
+ type: boolean
366
+ description: Retry the request on connection timeout. (Rest)
367
+ default: true
368
+ retry_on_unavailable:
369
+ type: boolean
370
+ description: Retry the request on HTTP 503 Service Unavailable. (Rest)
371
+ default: true
372
+ retry_max:
373
+ type: integer
374
+ description: Maximum number of retry attempts. (Rest)
375
+ default: 1
376
+ retry_sleep:
377
+ type: integer
378
+ description: Delay in seconds between retry attempts. (Rest)
379
+ default: 4
380
+ token_cache_max_age:
381
+ type: integer
382
+ description: Maximum age in seconds of a cached OAuth token before it is discarded. (OAuth)
383
+ default: 1800
384
+ token_refresh_threshold:
385
+ type: integer
386
+ description: Remaining token lifetime in seconds below which the token is proactively refreshed. (OAuth)
387
+ default: 120
388
+ VaultHashicorpOptions:
389
+ type: object
390
+ description: IBM HashiCorp Vault secret store.
391
+ required:
392
+ - type
393
+ - url
394
+ properties:
395
+ type:
396
+ type: string
397
+ description: Vault type selector.
398
+ enum: [vault]
399
+ url:
400
+ type: string
401
+ description: URL of the HashiCorp Vault server.
402
+ example: "http://127.0.0.1:8200"
403
+ token:
404
+ type: string
405
+ description: Authentication token. Defaults to the value of `vault_password`.
406
+ example: dev-only-token
407
+ VaultSystemOptions:
408
+ type: object
409
+ description: macOS system keychain secret store.
410
+ required:
411
+ - type
412
+ properties:
413
+ type:
414
+ type: string
415
+ description: Vault type selector.
416
+ enum: [system]
417
+ name:
418
+ type: string
419
+ description: Name of the keychain to use.
420
+ VaultOnePasswordOptions:
421
+ type: object
422
+ description: 1Password secret store (Connect REST API or CLI).
423
+ required:
424
+ - type
425
+ - source
426
+ properties:
427
+ type:
428
+ type: string
429
+ description: Vault type selector.
430
+ enum: [1password]
431
+ source:
432
+ type: string
433
+ description: Backend source. Use `api` for the Connect REST API, `cli` for the `op` CLI.
434
+ enum: [api, cli]
435
+ default: api
436
+ url:
437
+ type: string
438
+ description: Base URL of the 1Password Connect server (required when `source` is `api`).
439
+ example: "http://localhost:8080"
440
+ vault_id:
441
+ type: string
442
+ description: ID of the 1Password vault to use (required when `source` is `api`).
443
+ token:
444
+ type: string
445
+ description: Bearer token for the Connect API (required when `source` is `api`). Defaults to the value of `vault_password`.
446
+ vault:
447
+ type: string
448
+ description: Name or ID of the 1Password vault to use with the CLI (used when `source` is `cli`). Uses the default vault if omitted.
449
+ account:
450
+ type: string
451
+ description: Account shorthand for `op` (used when `source` is `cli`). Uses the default account if omitted.
452
+ VaultFileOptions:
453
+ type: object
454
+ description: Encrypted file secret store.
455
+ required:
456
+ - type
457
+ properties:
458
+ type:
459
+ type: string
460
+ description: Vault type selector.
461
+ enum: [file]
462
+ name:
463
+ type: string
464
+ description: >-
465
+ Path to the encrypted vault file.
466
+ Relative paths are resolved from the configuration folder.
467
+ default: vault.bin
468
+ VaultSecret:
469
+ type: object
470
+ description: Secret entry in the vault
471
+ required:
472
+ - label
473
+ properties:
474
+ label:
475
+ type: string
476
+ description: Unique identifier for this secret entry
477
+ username:
478
+ type: string
479
+ description: Username associated with the secret
480
+ password:
481
+ type: string
482
+ description: Secret value
483
+ url:
484
+ type: string
485
+ description: URL associated with the secret
486
+ description:
487
+ type: string
488
+ description: Human-readable description of this secret
489
+ VaultOptions:
490
+ title: Secret vault configuration
491
+ description: Secret vault configuration. Set `type` to select the vault backend.
492
+ oneOf:
493
+ - $ref: "#/components/schemas/VaultHashicorpOptions"
494
+ - $ref: "#/components/schemas/VaultSystemOptions"
495
+ - $ref: "#/components/schemas/VaultFileOptions"
496
+ - $ref: "#/components/schemas/VaultOnePasswordOptions"
497
+ discriminator:
498
+ propertyName: type
499
+ mapping:
500
+ vault: "#/components/schemas/VaultHashicorpOptions"
501
+ system: "#/components/schemas/VaultSystemOptions"
502
+ file: "#/components/schemas/VaultFileOptions"
503
+ 1password: "#/components/schemas/VaultOnePasswordOptions"
504
+ ImageOptions:
505
+ type: object
506
+ description: Options for displaying images and thumbnails in the terminal.
507
+ properties:
508
+ reserve:
509
+ type: integer
510
+ description: Number of terminal lines reserved for non-image output.
511
+ default: 3
512
+ text:
513
+ type: boolean
514
+ description: Display the image as colorized text instead of using the iTerm2 inline protocol.
515
+ default: false
516
+ double:
517
+ type: boolean
518
+ description: Use double vertical resolution via half-block characters.
519
+ default: true
520
+ font_ratio:
521
+ type: number
522
+ format: float
523
+ description: Terminal font aspect ratio (height divided by width).
524
+ default: 2.3
525
+ PackageFolderOptions:
526
+ type: object
527
+ title: Package download folder organization
528
+ description: >-
529
+ Controls how downloaded packages are organized into subfolders under `to_folder`.
530
+ If not specified or empty, packages are downloaded directly into `to_folder`.
531
+ properties:
532
+ fld:
533
+ type: array
534
+ description: >-
535
+ List of package fields (up to 2) used to build the subfolder name.
536
+ Field values are joined with `.`.
537
+ items:
538
+ type: string
539
+ maxItems: 2
540
+ example: ["name", "id"]
541
+ seq:
542
+ type: boolean
543
+ description: >-
544
+ If `true`, appends an incrementing number to the folder name when a conflict occurs.
545
+ default: false
546
+ opt:
547
+ type: boolean
548
+ description: >-
549
+ If `false` (default), all fields in `fld` are always used.
550
+ If `true`, the first field is used unless the folder already exists.
551
+ default: false
552
+ inf:
553
+ type: boolean
554
+ description: >-
555
+ If `true`, creates a `<ID>.info.json` sidecar file inside the folder
556
+ containing package metadata.
557
+ default: false
558
+ NodeBearerTokenOptions:
559
+ type: object
560
+ description: >-
561
+ JWT payload used to generate an Aspera Node bearer token (`node bearer_token`).
562
+ `user_id` is the only mandatory field.
563
+ The CLI strips the `_validity` and `_scope` convenience keys before signing;
564
+ remaining fields are embedded verbatim in the token.
565
+ required:
566
+ - user_id
567
+ properties:
568
+ user_id:
569
+ type: string
570
+ description: Identifier of the user for whom the token is generated.
571
+ example: jdoe
572
+ _validity:
573
+ type: integer
574
+ description: Token lifetime in seconds (convenience key, removed before signing).
575
+ default: 86400
576
+ _scope:
577
+ type: string
578
+ description: >-
579
+ Scope shorthand used to build the `scope` field (convenience key, removed before signing).
580
+ Maps to `node.<access_key>:<scope>`.
581
+ enum: [user, admin]
582
+ default: user
583
+ scope:
584
+ type: string
585
+ description: >-
586
+ Full scope string. Computed automatically from `_scope` when absent.
587
+ Example: `node::ik-00000000-0000-0000-0000-000000000000:user`.
588
+ auth_type:
589
+ type: string
590
+ description: Authentication type embedded in the token.
591
+ default: access_key
592
+ expires_at:
593
+ type: string
594
+ description: >-
595
+ Token expiry timestamp in ISO 8601 format (`YYYY-MM-DDTHH:MM:SSZ`).
596
+ Computed automatically from `_validity` when absent.
597
+ example: "2030-01-01T00:00:00Z"
598
+ NodeSimulatorOptions:
599
+ type: object
600
+ description: >-
601
+ Configuration for the embedded Node API simulator (`node simulator`).
602
+ The simulator starts a local WEBrick server that answers `/ops/transfers`,
603
+ `/ops/transfers/{id}`, `/files/browse`, and `/info` — sufficient to test
604
+ CLI commands against a live Node API without a real HSTS instance.
605
+ properties:
606
+ url:
607
+ type: string
608
+ description: >-
609
+ Address and port the simulator listens on.
610
+ Use `https://` with `cert`/`key` for TLS.
611
+ default: http://localhost:8080
612
+ cert:
613
+ type: string
614
+ description: >-
615
+ Path to the TLS certificate file.
616
+ Accepted formats: PEM (`.pem`) or PKCS12 (`.p12` / `.pfx`).
617
+ example: /path/to/cert.pem
618
+ key:
619
+ type: string
620
+ description: >-
621
+ Path to the PEM private key file, or the PKCS12 passphrase when `cert` is a `.p12`/`.pfx` file.
622
+ example: /path/to/key.pem
623
+ chain:
624
+ type: string
625
+ description: Path to the PEM certificate chain file (appended as extra chain certificates).
626
+ example: /path/to/chain.pem
627
+ browse_root:
628
+ type: string
629
+ description: >-
630
+ Root directory the simulator is allowed to expose via `/files/browse`.
631
+ Requests for paths outside this directory are rejected.
632
+ Defaults to the current working directory.
633
+ example: /data/aspera
634
+ NodeTelemetryOptions:
635
+ type: object
636
+ description: >-
637
+ Configuration for the telemetry reporter (`node telemetry`).
638
+ The command periodically queries `ops/transfers?active_only=true` and sends
639
+ an OpenTelemetry gauge metric to an Instana backend.
640
+ required:
641
+ - url
642
+ - key
643
+ properties:
644
+ url:
645
+ type: string
646
+ description: Base URL of the Instana backend (without `/v1`).
647
+ example: https://my-instana.example.com
648
+ key:
649
+ type: string
650
+ description: Instana API key sent in the `x-instana-key` header.
651
+ example: my-instana-api-key
652
+ interval:
653
+ type: number
654
+ format: float
655
+ description: >-
656
+ Polling interval in seconds. Use `0` for a single-shot run (no loop).
657
+ default: 10
658
+ hostname:
659
+ type: string
660
+ description: >-
661
+ Value sent in the `x-instana-host` header.
662
+ Defaults to the local machine's hostname.
663
+ example: hsts-prod-01
664
+ TableOptions:
665
+ type: object
666
+ description: Terminal table rendering options.
667
+ properties:
668
+ pivot:
669
+ type: string
670
+ description: Control how an object list is displayed (no/yes/single).
671
+ enum: ['no', 'yes', 'single']
672
+ default: 'no'
673
+ OutOptions:
674
+ type: object
675
+ description: Output rendering options (dot-notation sub-properties).
676
+ properties:
677
+ format:
678
+ type: string
679
+ description: Output format.
680
+ enum: [text, nagios, ruby, json, jsonpp, yaml, table, csv, image]
681
+ default: table
682
+ level:
683
+ type: string
684
+ description: Output verbosity level (which information to display).
685
+ enum: [info, data, error]
686
+ default: data
687
+ file:
688
+ type: string
689
+ description: Destination file for results (use `-` for stdout).
690
+ fields:
691
+ description: >-
692
+ Comma-separated list of fields to display, or a special value:
693
+ `ALL` for all fields, `DEF` for default fields.
694
+ Prefix a field name with `-` to exclude it.
695
+ select:
696
+ type: object
697
+ description: Select only matching items from a list (field/value filter or lambda).
698
+ table:
699
+ $ref: "#/components/schemas/TableOptions"
700
+ flat:
701
+ type: boolean
702
+ description: Display deep hash values as additional top-level keys.
703
+ default: true
704
+ secrets:
705
+ type: boolean
706
+ description: Show secrets in command output.
707
+ default: false
708
+ img:
709
+ $ref: "#/components/schemas/ImageOptions"