aspera-cli 4.27.2 → 4.27.4

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 (145) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +133 -0
  4. data/CONTRIBUTING.md +5 -2
  5. data/bin/ascli +3 -1
  6. data/docs/README.md +1006 -766
  7. data/lib/aspera/agent/base.rb +7 -2
  8. data/lib/aspera/agent/connect.rb +6 -8
  9. data/lib/aspera/agent/desktop.rb +2 -6
  10. data/lib/aspera/agent/direct.rb +52 -22
  11. data/lib/aspera/agent/node.rb +9 -8
  12. data/lib/aspera/agent/transferd.rb +2 -2
  13. data/lib/aspera/api/alee.rb +1 -1
  14. data/lib/aspera/api/aoc.rb +14 -12
  15. data/lib/aspera/api/ats.rb +1 -1
  16. data/lib/aspera/api/cos_node.rb +2 -2
  17. data/lib/aspera/api/faspex.rb +11 -7
  18. data/lib/aspera/api/httpgw.rb +38 -35
  19. data/lib/aspera/api/node.rb +39 -34
  20. data/lib/aspera/ascmd.rb +3 -1
  21. data/lib/aspera/ascp/installation.rb +63 -28
  22. data/lib/aspera/ascp/management.rb +1 -0
  23. data/lib/aspera/assert.rb +4 -0
  24. data/lib/aspera/cli/ascp_actions.rb +20 -41
  25. data/lib/aspera/cli/async_transfer_store.rb +12 -11
  26. data/lib/aspera/cli/bootstrapper.rb +14 -16
  27. data/lib/aspera/cli/command_line.rb +252 -0
  28. data/lib/aspera/cli/command_registry.rb +215 -37
  29. data/lib/aspera/cli/command_spec.rb +104 -15
  30. data/lib/aspera/cli/completion/ascli.bash +12 -0
  31. data/lib/aspera/cli/completion/ascli.fish +16 -0
  32. data/lib/aspera/cli/completion/ascli.zsh +19 -0
  33. data/lib/aspera/cli/context.rb +3 -0
  34. data/lib/aspera/cli/deprecation.rb +37 -0
  35. data/lib/aspera/cli/extended_value.rb +6 -3
  36. data/lib/aspera/cli/formatter.rb +94 -80
  37. data/lib/aspera/cli/gem_checker.rb +1 -1
  38. data/lib/aspera/cli/hints.rb +7 -6
  39. data/lib/aspera/cli/http.rb +22 -34
  40. data/lib/aspera/cli/info.rb +3 -0
  41. data/lib/aspera/cli/mcp_tool.rb +47 -83
  42. data/lib/aspera/cli/option_declarator.rb +33 -42
  43. data/lib/aspera/cli/option_registry.rb +69 -0
  44. data/lib/aspera/cli/option_types.rb +105 -0
  45. data/lib/aspera/cli/option_value.rb +278 -0
  46. data/lib/aspera/cli/options.schema.yaml +124 -15
  47. data/lib/aspera/cli/parser.rb +333 -862
  48. data/lib/aspera/cli/plugins/alee.rb +7 -4
  49. data/lib/aspera/cli/plugins/aoc.rb +545 -518
  50. data/lib/aspera/cli/plugins/ats.rb +59 -80
  51. data/lib/aspera/cli/plugins/base.rb +221 -265
  52. data/lib/aspera/cli/plugins/basic_auth.rb +2 -10
  53. data/lib/aspera/cli/plugins/config.rb +263 -184
  54. data/lib/aspera/cli/plugins/console.rb +103 -39
  55. data/lib/aspera/cli/plugins/cos.rb +6 -23
  56. data/lib/aspera/cli/plugins/factory.rb +3 -0
  57. data/lib/aspera/cli/plugins/faspex5.rb +204 -182
  58. data/lib/aspera/cli/plugins/faspio.rb +6 -11
  59. data/lib/aspera/cli/plugins/httpgw.rb +8 -11
  60. data/lib/aspera/cli/plugins/mcp.rb +20 -55
  61. data/lib/aspera/cli/plugins/node.rb +300 -327
  62. data/lib/aspera/cli/plugins/orchestrator.rb +152 -110
  63. data/lib/aspera/cli/plugins/preview.rb +96 -105
  64. data/lib/aspera/cli/plugins/server.rb +78 -53
  65. data/lib/aspera/cli/plugins/shares.rb +80 -131
  66. data/lib/aspera/cli/preset_actions.rb +44 -27
  67. data/lib/aspera/cli/preset_manager.rb +44 -19
  68. data/lib/aspera/cli/prompt.rb +36 -0
  69. data/lib/aspera/cli/result.rb +42 -36
  70. data/lib/aspera/cli/runner.rb +32 -59
  71. data/lib/aspera/cli/special_values.rb +5 -0
  72. data/lib/aspera/cli/sync_actions.rb +51 -46
  73. data/lib/aspera/cli/terminal_formatter.rb +9 -3
  74. data/lib/aspera/cli/transfer_actions.rb +14 -9
  75. data/lib/aspera/cli/transfer_agent.rb +34 -38
  76. data/lib/aspera/cli/transfer_progress.rb +290 -55
  77. data/lib/aspera/cli/vault_manager.rb +0 -17
  78. data/lib/aspera/cli/version.rb +1 -1
  79. data/lib/aspera/cli/wizard.rb +5 -3
  80. data/lib/aspera/coverage.rb +1 -1
  81. data/lib/aspera/environment.rb +35 -5
  82. data/lib/aspera/faspex_gw.rb +2 -1
  83. data/lib/aspera/faspex_postproc.rb +1 -0
  84. data/lib/aspera/graphql.rb +5 -5
  85. data/lib/aspera/json_rpc/client.rb +5 -5
  86. data/lib/aspera/keychain/encrypted_hash.rb +2 -2
  87. data/lib/aspera/keychain/factory.rb +2 -1
  88. data/lib/aspera/keychain/one_password_api.rb +1 -1
  89. data/lib/aspera/link_header.rb +2 -2
  90. data/lib/aspera/log.rb +47 -27
  91. data/lib/aspera/markdown.rb +2 -0
  92. data/lib/aspera/mime.rb +25 -0
  93. data/lib/aspera/node_emulator.rb +759 -0
  94. data/lib/aspera/oauth/base.rb +37 -26
  95. data/lib/aspera/oauth/factory.rb +7 -3
  96. data/lib/aspera/oauth/generic.rb +1 -1
  97. data/lib/aspera/oauth/json_credentials.rb +34 -0
  98. data/lib/aspera/oauth/jwt.rb +4 -5
  99. data/lib/aspera/oauth/web.rb +9 -8
  100. data/lib/aspera/oauth.rb +1 -0
  101. data/lib/aspera/persistency_folder.rb +1 -3
  102. data/lib/aspera/preview/file_types.rb +4 -4
  103. data/lib/aspera/preview/generator.rb +11 -1
  104. data/lib/aspera/preview/options.schema.yaml +119 -0
  105. data/lib/aspera/preview/terminal.rb +4 -3
  106. data/lib/aspera/preview/utils.rb +9 -6
  107. data/lib/aspera/products/connect.rb +1 -1
  108. data/lib/aspera/rainbow.rb +7 -0
  109. data/lib/aspera/rest/aspera_errors.rb +72 -0
  110. data/lib/aspera/rest/call_error.rb +27 -0
  111. data/lib/aspera/rest/client.rb +523 -0
  112. data/lib/aspera/rest/error_analyzer.rb +113 -0
  113. data/lib/aspera/rest/list.rb +149 -0
  114. data/lib/aspera/rest/parameters.rb +55 -0
  115. data/lib/aspera/rest/util.rb +176 -0
  116. data/lib/aspera/rest.rb +7 -621
  117. data/lib/aspera/schema/IBM Aspera Console-enhanced.yaml +1125 -0
  118. data/lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml +0 -20
  119. data/lib/aspera/schema/IBM Aspera Orchestrator API-v1.yaml +1784 -0
  120. data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +1230 -137
  121. data/lib/aspera/schema/IBM Aspera on Cloud Automation API-1.0.5-enhanced.yaml +2395 -0
  122. data/lib/aspera/schema/IBM_Aspera_Shares.yaml +14 -13
  123. data/lib/aspera/schema/documentation.rb +13 -3
  124. data/lib/aspera/schema/reader.rb +12 -18
  125. data/lib/aspera/schema/registry.rb +23 -1
  126. data/lib/aspera/schema/validator.rb +92 -0
  127. data/lib/aspera/secret_hider.rb +36 -25
  128. data/lib/aspera/string_ext.rb +15 -0
  129. data/lib/aspera/temp_file_manager.rb +6 -5
  130. data/lib/aspera/transfer/parameters.rb +2 -0
  131. data/lib/aspera/transfer/spec.rb +1 -0
  132. data/lib/aspera/uri_reader.rb +11 -11
  133. data/lib/aspera/web_auth/index.html +147 -0
  134. data/lib/aspera/web_auth/server.rb +81 -0
  135. data.tar.gz.sig +0 -0
  136. metadata +43 -9
  137. metadata.gz.sig +0 -0
  138. data/lib/aspera/colors.rb +0 -79
  139. data/lib/aspera/node_simulator.rb +0 -344
  140. data/lib/aspera/preview/options.rb +0 -45
  141. data/lib/aspera/rest_call_error.rb +0 -25
  142. data/lib/aspera/rest_error_analyzer.rb +0 -111
  143. data/lib/aspera/rest_errors_aspera.rb +0 -58
  144. data/lib/aspera/rest_list.rb +0 -136
  145. data/lib/aspera/web_auth.rb +0 -211
@@ -0,0 +1,1125 @@
1
+ # DO NOT EDIT THIS FILE MANUALLY
2
+ # This file is automatically downloaded from:
3
+ # https://raw.githubusercontent.com/laurent-martin/aspera-api-examples/refs/heads/main/openapi/IBM%20Aspera%20Console-enhanced.yaml
4
+ # Use 'rake tools:openapi' to update this file
5
+
6
+ openapi: 3.1.0
7
+ info:
8
+ title: Aspera Console REST API
9
+ description: |-
10
+ Submit, control, and monitor Aspera FASP transfers through the Aspera Console web application.
11
+ All calls are made over HTTPS using HTTP Basic Auth with a valid Console account;
12
+ the operations a caller can perform are limited by that account's permission level in Console.
13
+
14
+ ## Version compatibility
15
+ The Console API is available for Console version 2.0.1 and newer; older versions do not
16
+ support it. Console 2.0.1 currently supports API version 1.0.
17
+
18
+ ## Token authorization
19
+ Console 3.2.0 and later supports token authorization: admins can submit an authorization
20
+ token in the JSON payload when creating a simple (or smart) transfer with the Node API.
21
+ In the most common case, the remote (destination) server is configured to require tokens in
22
+ order to allow transfers.
23
+ See the [Aspera Node API "Upload Setup" guide](https://developer.ibm.com/apis/catalog/aspera--aspera-node-api/api/API--aspera--aspera-node-api)
24
+ for an example of how to submit the token.
25
+
26
+ ## Common response codes
27
+ All responses use standard HTTP response codes. The commonly used codes for this API are:
28
+ - `200` - Success
29
+ - `401` - Bad, missing, or locked username/password
30
+ - `403` - The specific operation allows the current user to know the item exists, but
31
+ they cannot change it
32
+ - `422` - Used for other errors; a JSON body is normally returned with details, but if
33
+ none is returned, check the mongrel logs
34
+
35
+ ## Response content
36
+ If a response contains content, it is returned in JSON format with UTF-8 encoding. All
37
+ times are in UTC.
38
+ version: 1.0.0
39
+ x-console-api-version: "1.0"
40
+ x-console-minimum-version: 2.0.1
41
+ license:
42
+ url: https://ibm.com
43
+ name: (c) IBM. All rights reserved
44
+ contact:
45
+ name: IBM Aspera
46
+ url: https://developer.ibm.com/apis/catalog/aspera--aspera-console-rest-api/Developer+Guides
47
+ servers:
48
+ - url: https://{host}/aspera/console/api
49
+ description: Aspera Console server
50
+ variables:
51
+ host:
52
+ default: console.example.com
53
+ paths:
54
+ /transfers:
55
+ get:
56
+ operationId: getTransfers
57
+ summary: List transfers (TransferList)
58
+ description: Nearly identical to the Activity view in the Console UI. Multi-step Smart Transfers appear as multiple individual items, each with its own id.
59
+ parameters:
60
+ - name: from
61
+ in: query
62
+ description: UTC date/time, e.g. "2013-02-28 12:00:00"
63
+ required: true
64
+ schema:
65
+ type: string
66
+ - name: to
67
+ in: query
68
+ description: UTC date/time. Optional if `from` is less than 24 hours ago, otherwise required and must be no later than `from` + 24 hours. Defaults to the current time if omitted.
69
+ required: false
70
+ schema:
71
+ type: string
72
+ - name: filter1
73
+ in: query
74
+ schema:
75
+ $ref: "#/components/schemas/FilterField"
76
+ - name: comp1
77
+ in: query
78
+ schema:
79
+ $ref: "#/components/schemas/Comparator"
80
+ - name: val1
81
+ in: query
82
+ schema:
83
+ type: string
84
+ - name: filter2
85
+ in: query
86
+ description: Additional filters are joined by AND.
87
+ schema:
88
+ $ref: "#/components/schemas/FilterField"
89
+ - name: comp2
90
+ in: query
91
+ schema:
92
+ $ref: "#/components/schemas/Comparator"
93
+ - name: val2
94
+ in: query
95
+ schema:
96
+ type: string
97
+ responses:
98
+ "200":
99
+ description: Array of transfer summaries
100
+ content:
101
+ application/json:
102
+ schema:
103
+ type: array
104
+ items:
105
+ $ref: "#/components/schemas/TransferSummary"
106
+ "401":
107
+ $ref: "#/components/responses/Unauthorized"
108
+ "422":
109
+ $ref: "#/components/responses/UnprocessableEntity"
110
+ tags:
111
+ - transfers
112
+ post:
113
+ operationId: postTransfers
114
+ summary: Submit a simple transfer (SimpleTransferSubmit)
115
+ description: Equivalent to starting a simple transfer in the Console interface.
116
+ requestBody:
117
+ required: true
118
+ content:
119
+ application/json:
120
+ schema:
121
+ $ref: "#/components/schemas/SimpleTransferSubmitRequest"
122
+ responses:
123
+ "200":
124
+ description: New transfer created
125
+ content:
126
+ application/json:
127
+ schema:
128
+ $ref: "#/components/schemas/IdResponse"
129
+ "401":
130
+ $ref: "#/components/responses/Unauthorized"
131
+ "422":
132
+ $ref: "#/components/responses/UnprocessableEntity"
133
+ tags:
134
+ - transfers
135
+ /transfers/{id}:
136
+ get:
137
+ operationId: getTransfersId
138
+ summary: Get transfer details (TransferDetails)
139
+ description: Nearly identical to the drill-down detail screen for a transfer.
140
+ parameters:
141
+ - $ref: "#/components/parameters/JobStepId"
142
+ responses:
143
+ "200":
144
+ description: Transfer detail
145
+ content:
146
+ application/json:
147
+ schema:
148
+ $ref: "#/components/schemas/TransferDetail"
149
+ "401":
150
+ $ref: "#/components/responses/Unauthorized"
151
+ "422":
152
+ $ref: "#/components/responses/UnprocessableEntity"
153
+ tags:
154
+ - transfers
155
+ /transfers/{id}/files:
156
+ get:
157
+ operationId: getTransfersIdFiles
158
+ summary: List files in a transfer (TransferFileList)
159
+ description: Nearly identical to the file list at the bottom of the transfer details page.
160
+ parameters:
161
+ - $ref: "#/components/parameters/JobStepId"
162
+ - name: offset
163
+ in: query
164
+ description: How many files to skip (for pagination).
165
+ schema:
166
+ type: integer
167
+ - name: limit
168
+ in: query
169
+ description: Max number of items to return. Max value is currently 100.
170
+ required: true
171
+ schema:
172
+ type: integer
173
+ maximum: 100
174
+ - name: errors_only
175
+ in: query
176
+ description: Return only files with errors.
177
+ schema:
178
+ type: boolean
179
+ - name: path_match
180
+ in: query
181
+ description: String to match anywhere in the file path.
182
+ schema:
183
+ type: string
184
+ responses:
185
+ "200":
186
+ description: Array of files
187
+ content:
188
+ application/json:
189
+ schema:
190
+ type: array
191
+ items:
192
+ $ref: "#/components/schemas/TransferFile"
193
+ "401":
194
+ $ref: "#/components/responses/Unauthorized"
195
+ "422":
196
+ $ref: "#/components/responses/UnprocessableEntity"
197
+ tags:
198
+ - transfers
199
+ /transfers/{id}/start:
200
+ put:
201
+ operationId: putTransfersIdStart
202
+ summary: Start a scheduled transfer (TransferStart)
203
+ description: Equivalent to clicking "start" for a scheduled transfer on the Activity page.
204
+ parameters:
205
+ - $ref: "#/components/parameters/JobStepId"
206
+ responses:
207
+ "200":
208
+ $ref: "#/components/responses/Ok"
209
+ "401":
210
+ $ref: "#/components/responses/Unauthorized"
211
+ "403":
212
+ $ref: "#/components/responses/Forbidden"
213
+ "422":
214
+ $ref: "#/components/responses/UnprocessableEntity"
215
+ tags:
216
+ - transfers
217
+ /transfers/{id}/pause:
218
+ put:
219
+ operationId: putTransfersIdPause
220
+ summary: Pause a transfer (TransferPause)
221
+ description: Equivalent to clicking "pause" for a transfer on the Activity page.
222
+ parameters:
223
+ - $ref: "#/components/parameters/JobStepId"
224
+ responses:
225
+ "200":
226
+ $ref: "#/components/responses/Ok"
227
+ "401":
228
+ $ref: "#/components/responses/Unauthorized"
229
+ "403":
230
+ $ref: "#/components/responses/Forbidden"
231
+ "422":
232
+ $ref: "#/components/responses/UnprocessableEntity"
233
+ tags:
234
+ - transfers
235
+ /transfers/{id}/resume:
236
+ put:
237
+ operationId: putTransfersIdResume
238
+ summary: Resume a transfer (TransferResume)
239
+ description: Equivalent to clicking "resume" for a transfer on the Activity page.
240
+ parameters:
241
+ - $ref: "#/components/parameters/JobStepId"
242
+ responses:
243
+ "200":
244
+ $ref: "#/components/responses/Ok"
245
+ "401":
246
+ $ref: "#/components/responses/Unauthorized"
247
+ "403":
248
+ $ref: "#/components/responses/Forbidden"
249
+ "422":
250
+ $ref: "#/components/responses/UnprocessableEntity"
251
+ tags:
252
+ - transfers
253
+ /transfers/{id}/cancel:
254
+ put:
255
+ operationId: putTransfersIdCancel
256
+ summary: Cancel a transfer (TransferCancel)
257
+ description: Equivalent to clicking "cancel" for a transfer on the Activity page.
258
+ parameters:
259
+ - $ref: "#/components/parameters/JobStepId"
260
+ responses:
261
+ "200":
262
+ $ref: "#/components/responses/Ok"
263
+ "401":
264
+ $ref: "#/components/responses/Unauthorized"
265
+ "403":
266
+ $ref: "#/components/responses/Forbidden"
267
+ "422":
268
+ $ref: "#/components/responses/UnprocessableEntity"
269
+ tags:
270
+ - transfers
271
+ /transfers/{id}/rerun:
272
+ post:
273
+ operationId: postTransfersIdRerun
274
+ summary: Rerun a transfer (TransferRerun)
275
+ description: Equivalent to clicking "rerun" for a transfer on the Activity page.
276
+ parameters:
277
+ - $ref: "#/components/parameters/JobStepId"
278
+ responses:
279
+ "200":
280
+ description: New transfer created from the rerun
281
+ content:
282
+ application/json:
283
+ schema:
284
+ $ref: "#/components/schemas/IdResponse"
285
+ "401":
286
+ $ref: "#/components/responses/Unauthorized"
287
+ "422":
288
+ $ref: "#/components/responses/UnprocessableEntity"
289
+ tags:
290
+ - transfers
291
+ /transfers/{id}/change_rate:
292
+ put:
293
+ operationId: putTransfersIdChangeRate
294
+ summary: Change transfer rate (TransferChangeRate)
295
+ description: Equivalent to entering a new target rate in the chart on the transfer's Detail page.
296
+ parameters:
297
+ - $ref: "#/components/parameters/JobStepId"
298
+ requestBody:
299
+ required: true
300
+ content:
301
+ application/json:
302
+ schema:
303
+ $ref: "#/components/schemas/ChangeRateRequest"
304
+ responses:
305
+ "200":
306
+ $ref: "#/components/responses/Ok"
307
+ "401":
308
+ $ref: "#/components/responses/Unauthorized"
309
+ "422":
310
+ $ref: "#/components/responses/UnprocessableEntity"
311
+ tags:
312
+ - transfers
313
+ /transfers/{id}/change_policy:
314
+ put:
315
+ operationId: putTransfersIdChangePolicy
316
+ summary: Change transfer policy (TransferChangePolicy)
317
+ description: Equivalent to choosing a new policy in the chart on the transfer's Detail page.
318
+ parameters:
319
+ - $ref: "#/components/parameters/JobStepId"
320
+ requestBody:
321
+ required: true
322
+ content:
323
+ application/json:
324
+ schema:
325
+ $ref: "#/components/schemas/ChangePolicyRequest"
326
+ responses:
327
+ "200":
328
+ $ref: "#/components/responses/Ok"
329
+ "401":
330
+ $ref: "#/components/responses/Unauthorized"
331
+ "422":
332
+ $ref: "#/components/responses/UnprocessableEntity"
333
+ tags:
334
+ - transfers
335
+ /endpoints:
336
+ get:
337
+ operationId: getEndpoints
338
+ summary: List endpoints (EndPointList)
339
+ description: Retrieves the list of endpoints available for SimpleTransferSubmit.
340
+ responses:
341
+ "200":
342
+ description: Array of endpoints
343
+ content:
344
+ application/json:
345
+ schema:
346
+ type: array
347
+ items:
348
+ $ref: "#/components/schemas/Endpoint"
349
+ "401":
350
+ $ref: "#/components/responses/Unauthorized"
351
+ tags:
352
+ - endpoints
353
+ /ssh_keys:
354
+ get:
355
+ operationId: getSshKeys
356
+ summary: List SSH keys (SshKeyList)
357
+ description: Retrieves the list of SSH keys available for use with SimpleTransferSubmit.
358
+ responses:
359
+ "200":
360
+ description: Array of SSH keys
361
+ content:
362
+ application/json:
363
+ schema:
364
+ type: array
365
+ items:
366
+ $ref: "#/components/schemas/SshKey"
367
+ "401":
368
+ $ref: "#/components/responses/Unauthorized"
369
+ tags:
370
+ - endpoints
371
+ /smart_transfers:
372
+ get:
373
+ operationId: getSmartTransfers
374
+ summary: List Smart Transfers (SmartTransferList)
375
+ description: Retrieves the list of Smart Transfers the user is allowed to start.
376
+ responses:
377
+ "200":
378
+ description: Array of Smart Transfers
379
+ content:
380
+ application/json:
381
+ schema:
382
+ type: array
383
+ items:
384
+ $ref: "#/components/schemas/SmartTransfer"
385
+ "401":
386
+ $ref: "#/components/responses/Unauthorized"
387
+ tags:
388
+ - smart-transfers
389
+ /smart_transfers/{id}:
390
+ post:
391
+ operationId: postSmartTransfersId
392
+ summary: Submit a Smart Transfer (SmartTransferSubmit)
393
+ description: Nearly identical to starting a simple transfer in the Console interface, but with fewer overridable settings. If the Smart Transfer does not allow selecting source items at start, including a `source` section returns an error. Multi-step Smart Transfers create multiple transfers.
394
+ parameters:
395
+ - name: id
396
+ in: path
397
+ description: Smart Transfer id
398
+ required: true
399
+ schema:
400
+ type: integer
401
+ requestBody:
402
+ required: true
403
+ content:
404
+ application/json:
405
+ schema:
406
+ $ref: "#/components/schemas/SmartTransferSubmitRequest"
407
+ responses:
408
+ "200":
409
+ description: One id per transfer created (multiple for a multi-step Smart Transfer)
410
+ content:
411
+ application/json:
412
+ schema:
413
+ type: array
414
+ items:
415
+ $ref: "#/components/schemas/IdResponse"
416
+ "401":
417
+ $ref: "#/components/responses/Unauthorized"
418
+ "422":
419
+ $ref: "#/components/responses/UnprocessableEntity"
420
+ tags:
421
+ - smart-transfers
422
+ /smart_transfers/{id}/pause:
423
+ put:
424
+ operationId: putSmartTransfersIdPause
425
+ summary: Pause a Smart Transfer
426
+ description: Present in routes.rb (`api#pause_smart_transfer`) but not described in the public API guide. Assumed to behave like TransferPause, scoped to a Smart Transfer id. Verify against the controller before relying on this.
427
+ parameters:
428
+ - name: id
429
+ in: path
430
+ description: Smart Transfer id
431
+ required: true
432
+ schema:
433
+ type: integer
434
+ responses:
435
+ "200":
436
+ $ref: "#/components/responses/Ok"
437
+ "401":
438
+ $ref: "#/components/responses/Unauthorized"
439
+ "422":
440
+ $ref: "#/components/responses/UnprocessableEntity"
441
+ tags:
442
+ - smart-transfers
443
+ x-undocumented: true
444
+ /queues/{queue_id}/items:
445
+ get:
446
+ operationId: getQueuesQueueIdItems
447
+ summary: Get queue contents (QueueContents)
448
+ description: Returns a list of items in the queue, frontmost item first.
449
+ parameters:
450
+ - name: queue_id
451
+ in: path
452
+ required: true
453
+ schema:
454
+ type: integer
455
+ responses:
456
+ "200":
457
+ description: Array of queue items
458
+ content:
459
+ application/json:
460
+ schema:
461
+ type: array
462
+ items:
463
+ $ref: "#/components/schemas/QueueItem"
464
+ "401":
465
+ $ref: "#/components/responses/Unauthorized"
466
+ tags:
467
+ - queues
468
+ /queues/{queue_id}/items/{id}/move_forwards:
469
+ put:
470
+ operationId: putQueuesQueueIdItemsIdMoveForwards
471
+ summary: Move a queued transfer forward (QueuedTransferMoveForward)
472
+ description: Equivalent to clicking "Move Up" on a transfer in the displayed queue.
473
+ parameters:
474
+ - name: queue_id
475
+ in: path
476
+ required: true
477
+ schema:
478
+ type: integer
479
+ - $ref: "#/components/parameters/JobStepId"
480
+ responses:
481
+ "200":
482
+ $ref: "#/components/responses/Ok"
483
+ "401":
484
+ $ref: "#/components/responses/Unauthorized"
485
+ "403":
486
+ description: The current user does not have permission to reorder the queue.
487
+ "422":
488
+ $ref: "#/components/responses/UnprocessableEntity"
489
+ tags:
490
+ - queues
491
+ /queues/{queue_id}/items/{id}/move_back:
492
+ put:
493
+ operationId: putQueuesQueueIdItemsIdMoveBack
494
+ summary: Move a queued transfer back (QueuedTransferMoveBack)
495
+ description: Equivalent to clicking "Move Down" on a transfer in the displayed queue.
496
+ parameters:
497
+ - name: queue_id
498
+ in: path
499
+ required: true
500
+ schema:
501
+ type: integer
502
+ - $ref: "#/components/parameters/JobStepId"
503
+ responses:
504
+ "200":
505
+ $ref: "#/components/responses/Ok"
506
+ "401":
507
+ $ref: "#/components/responses/Unauthorized"
508
+ "403":
509
+ description: The current user does not have permission to reorder the queue.
510
+ "422":
511
+ $ref: "#/components/responses/UnprocessableEntity"
512
+ tags:
513
+ - queues
514
+ /email_server_update:
515
+ post:
516
+ operationId: postEmailServerUpdate
517
+ summary: Update email server configuration
518
+ description: Present in routes.rb (`api#email_server_update`) but not described in the public API guide. Payload shape is unknown; likely mirrors the "Email Server" admin settings screen. Confirm against `Api::EmailServerUpdate` / the corresponding controller action before use.
519
+ requestBody:
520
+ content:
521
+ application/json:
522
+ schema:
523
+ type: object
524
+ additionalProperties: true
525
+ responses:
526
+ "200":
527
+ $ref: "#/components/responses/Ok"
528
+ "401":
529
+ $ref: "#/components/responses/Unauthorized"
530
+ "422":
531
+ $ref: "#/components/responses/UnprocessableEntity"
532
+ tags:
533
+ - admin
534
+ x-undocumented: true
535
+ /nodeapi_credentials_update:
536
+ post:
537
+ operationId: postNodeapiCredentialsUpdate
538
+ summary: Update Node API credentials
539
+ description: Present in routes.rb (`api#nodeapi_credentials_update`) but not described in the public API guide. Payload shape is unknown; likely updates stored Node API credentials for a node. Confirm against the controller action before use.
540
+ requestBody:
541
+ content:
542
+ application/json:
543
+ schema:
544
+ type: object
545
+ additionalProperties: true
546
+ responses:
547
+ "200":
548
+ $ref: "#/components/responses/Ok"
549
+ "401":
550
+ $ref: "#/components/responses/Unauthorized"
551
+ "422":
552
+ $ref: "#/components/responses/UnprocessableEntity"
553
+ tags:
554
+ - admin
555
+ x-undocumented: true
556
+ /health/up:
557
+ servers:
558
+ - url: https://{host}/aspera/console
559
+ description: Aspera Console server (root scope, outside the /api prefix)
560
+ variables:
561
+ host:
562
+ default: console.example.com
563
+ get:
564
+ operationId: getHealthUp
565
+ summary: Health check
566
+ description: >-
567
+ Load-balancer / uptime probe. Unauthenticated;
568
+ returns success if Aspera Console process is up and responding.
569
+ security: []
570
+ responses:
571
+ "200":
572
+ description: Console is up
573
+ "422":
574
+ $ref: "#/components/responses/UnprocessableEntity"
575
+ "503":
576
+ description: Console is not healthy
577
+ tags:
578
+ - health
579
+ x-undocumented: true
580
+ components:
581
+ parameters:
582
+ JobStepId:
583
+ name: id
584
+ in: path
585
+ required: true
586
+ description: Console's numeric id for the transfer (job step id).
587
+ schema:
588
+ type: integer
589
+ schemas:
590
+ FilterField:
591
+ type: string
592
+ enum:
593
+ - started_at
594
+ - stopped_at
595
+ - status
596
+ - transfer_name
597
+ - contact
598
+ - filename
599
+ Comparator:
600
+ type: string
601
+ enum:
602
+ - contain
603
+ - eq
604
+ - gt
605
+ - gte
606
+ - in
607
+ - lt
608
+ - lte
609
+ - is_not_null
610
+ - is_null
611
+ - match_re
612
+ - neq
613
+ - start_with
614
+ Error:
615
+ description: Error details; exact shape varies by endpoint.
616
+ type: object
617
+ additionalProperties: true
618
+ IdResponse:
619
+ type: object
620
+ properties:
621
+ id:
622
+ type: integer
623
+ required:
624
+ - id
625
+ TransferSummary:
626
+ type: object
627
+ properties:
628
+ bytes_transferred:
629
+ description: Total bytes actually transferred over the network. Bytes already present at the destination at transfer start are not counted if 'resume' was enabled.
630
+ type: integer
631
+ bytes_written:
632
+ description: Total bytes completed and written to disk at the destination. May exceed bytes_transferred (includes pre-existing bytes).
633
+ type: integer
634
+ contact:
635
+ type:
636
+ - string
637
+ - "null"
638
+ destination:
639
+ description: IP address of destination machine
640
+ type: string
641
+ error_description:
642
+ type:
643
+ - string
644
+ - "null"
645
+ eta:
646
+ type:
647
+ - string
648
+ - "null"
649
+ id:
650
+ type: integer
651
+ name:
652
+ type: string
653
+ queued_at:
654
+ type:
655
+ - string
656
+ - "null"
657
+ format: date-time
658
+ scheduled_start_at:
659
+ type:
660
+ - string
661
+ - "null"
662
+ format: date-time
663
+ source:
664
+ description: IP address of the source machine
665
+ type: string
666
+ started_at:
667
+ type:
668
+ - string
669
+ - "null"
670
+ format: date-time
671
+ started_via:
672
+ type: string
673
+ status:
674
+ type: string
675
+ stopped_at:
676
+ type:
677
+ - string
678
+ - "null"
679
+ format: date-time
680
+ submitted_at:
681
+ type:
682
+ - string
683
+ - "null"
684
+ format: date-time
685
+ total_bytes:
686
+ description: '"unknown" or numeric, per source node reporting'
687
+ oneOf:
688
+ - type: integer
689
+ - type: string
690
+ QueueRef:
691
+ type: object
692
+ properties:
693
+ queue_id:
694
+ type: integer
695
+ description:
696
+ type: string
697
+ position:
698
+ type: integer
699
+ waiting:
700
+ type: boolean
701
+ TransferDetail:
702
+ allOf:
703
+ - $ref: "#/components/schemas/TransferSummary"
704
+ - type: object
705
+ properties:
706
+ bytes_lost:
707
+ type: integer
708
+ comment:
709
+ type:
710
+ - string
711
+ - "null"
712
+ destination_description:
713
+ type:
714
+ - string
715
+ - "null"
716
+ destination_endpoint_id:
717
+ type: integer
718
+ destination_path:
719
+ type: string
720
+ files_completed:
721
+ type: integer
722
+ files_failed:
723
+ type: integer
724
+ files_skipped:
725
+ type: integer
726
+ initiator:
727
+ type: string
728
+ enum:
729
+ - source
730
+ - destination
731
+ last_calculated_rate_bps:
732
+ description: Periodic estimate of actual throughput. Null for short transfers where Console had no chance to compute it.
733
+ type:
734
+ - integer
735
+ - "null"
736
+ min_rate_kbps:
737
+ type: integer
738
+ network_delay_ms:
739
+ type: integer
740
+ policy:
741
+ type: string
742
+ queues:
743
+ type: array
744
+ items:
745
+ $ref: "#/components/schemas/QueueRef"
746
+ session_uuid:
747
+ type: string
748
+ source_description:
749
+ type:
750
+ - string
751
+ - "null"
752
+ source_endpoint_id:
753
+ type: integer
754
+ source_paths:
755
+ description: Specified source items from the ascp command. Truncated to approximately 4KB, so may not contain the full list.
756
+ type: array
757
+ items:
758
+ type: string
759
+ target_rate_kbps:
760
+ type: integer
761
+ total_files:
762
+ type: integer
763
+ transport:
764
+ type: string
765
+ transport_encryption:
766
+ type: string
767
+ TransferFile:
768
+ type: object
769
+ properties:
770
+ bytes_transferred:
771
+ type: integer
772
+ bytes_written:
773
+ type: integer
774
+ error_description:
775
+ type:
776
+ - string
777
+ - "null"
778
+ id:
779
+ type: integer
780
+ path:
781
+ type: string
782
+ size:
783
+ type: integer
784
+ started_at:
785
+ type: string
786
+ status:
787
+ type: string
788
+ stopped_at:
789
+ type: string
790
+ Endpoint:
791
+ type: object
792
+ properties:
793
+ credential_type:
794
+ type:
795
+ - string
796
+ - "null"
797
+ enum:
798
+ - password
799
+ - ssh_key
800
+ - none
801
+ - null
802
+ description:
803
+ type:
804
+ - string
805
+ - "null"
806
+ dest:
807
+ type: boolean
808
+ endpoint_type:
809
+ type: string
810
+ enum:
811
+ - Personal
812
+ - Node
813
+ id:
814
+ type: integer
815
+ ip_address:
816
+ type: string
817
+ login:
818
+ type: string
819
+ source:
820
+ type: boolean
821
+ ssh_key_id:
822
+ type:
823
+ - integer
824
+ - "null"
825
+ ssh_port:
826
+ type: integer
827
+ SshKey:
828
+ type: object
829
+ properties:
830
+ filename_on_node:
831
+ type: string
832
+ id:
833
+ type: integer
834
+ name:
835
+ type: string
836
+ SmartTransfer:
837
+ type: object
838
+ properties:
839
+ id:
840
+ type: integer
841
+ name:
842
+ type: string
843
+ owner:
844
+ type: string
845
+ QueueItem:
846
+ type: object
847
+ properties:
848
+ item_id:
849
+ type: integer
850
+ waiting:
851
+ type: boolean
852
+ ChangeRateRequest:
853
+ type: object
854
+ properties:
855
+ min_rate_kbps:
856
+ description: Normally "0". String type per API, despite the numeric value.
857
+ type: string
858
+ target_rate_kbps:
859
+ type: string
860
+ required:
861
+ - min_rate_kbps
862
+ - target_rate_kbps
863
+ ChangePolicyRequest:
864
+ type: object
865
+ properties:
866
+ policy:
867
+ type: string
868
+ enum:
869
+ - Fair
870
+ - Fixed
871
+ - Trickle
872
+ required:
873
+ - policy
874
+ RetriesSpec:
875
+ type: object
876
+ properties:
877
+ enable:
878
+ type: boolean
879
+ attempts:
880
+ type: integer
881
+ interval_seconds:
882
+ type: integer
883
+ ContentProtectionSpec:
884
+ type: object
885
+ properties:
886
+ enable:
887
+ type: boolean
888
+ password:
889
+ type: string
890
+ ResumeSpec:
891
+ type: object
892
+ properties:
893
+ enable:
894
+ type: boolean
895
+ comparison_method:
896
+ type: string
897
+ enum:
898
+ - Attributes
899
+ - Sparse Checksum
900
+ - Full Checksum
901
+ DeleteSourceFilesSpec:
902
+ type: object
903
+ properties:
904
+ enable:
905
+ type: boolean
906
+ also_delete_empty_directories:
907
+ type: boolean
908
+ NotificationSpec:
909
+ type: object
910
+ properties:
911
+ email_address:
912
+ type: string
913
+ format: email
914
+ start_template_id:
915
+ type: integer
916
+ success_template_id:
917
+ type: integer
918
+ error_template_id:
919
+ type: integer
920
+ TransferSourceSpec:
921
+ description: If the referenced endpoint has credential_type null, password or ssh_key_id is required. If its ip_address is "*", ip_address is required here. If its user is "*", user is required here.
922
+ type: object
923
+ properties:
924
+ endpoint_id:
925
+ type:
926
+ - integer
927
+ - "null"
928
+ ip_address:
929
+ type: string
930
+ port:
931
+ type: integer
932
+ user:
933
+ type: string
934
+ authentication_method:
935
+ type: string
936
+ enum:
937
+ - password
938
+ - ssh_key
939
+ password:
940
+ type: string
941
+ ssh_key_id:
942
+ type:
943
+ - integer
944
+ - "null"
945
+ paths:
946
+ type: array
947
+ items:
948
+ type: string
949
+ source_base:
950
+ description: Path prefix to remove from source paths.
951
+ type:
952
+ - string
953
+ - "null"
954
+ TransferDestinationSpec:
955
+ type: object
956
+ properties:
957
+ endpoint_id:
958
+ type:
959
+ - integer
960
+ - "null"
961
+ ip_address:
962
+ type: string
963
+ port:
964
+ type: integer
965
+ user:
966
+ type: string
967
+ authentication_method:
968
+ type: string
969
+ enum:
970
+ - password
971
+ - ssh_key
972
+ password:
973
+ type: string
974
+ ssh_key_id:
975
+ type:
976
+ - integer
977
+ - "null"
978
+ path:
979
+ type: string
980
+ SimpleTransferSubmitRequest:
981
+ type: object
982
+ properties:
983
+ name:
984
+ type: string
985
+ comment:
986
+ type: string
987
+ source:
988
+ $ref: "#/components/schemas/TransferSourceSpec"
989
+ destination:
990
+ $ref: "#/components/schemas/TransferDestinationSpec"
991
+ udp_port:
992
+ type: integer
993
+ target_rate_kbps:
994
+ type: integer
995
+ minimum_rate_kbps:
996
+ type: integer
997
+ policy:
998
+ type: string
999
+ enum:
1000
+ - low
1001
+ - fair
1002
+ - high
1003
+ - fixed
1004
+ retries:
1005
+ $ref: "#/components/schemas/RetriesSpec"
1006
+ content_protection:
1007
+ $ref: "#/components/schemas/ContentProtectionSpec"
1008
+ transport_encryption:
1009
+ type: string
1010
+ enum:
1011
+ - none
1012
+ - aes-128
1013
+ resume:
1014
+ $ref: "#/components/schemas/ResumeSpec"
1015
+ overwrite_policy:
1016
+ type: string
1017
+ enum:
1018
+ - Always
1019
+ - Diff
1020
+ - DiffAndOlder
1021
+ - Never
1022
+ preserve_file_timestamps:
1023
+ type: boolean
1024
+ delete_source_files_after_transfer:
1025
+ $ref: "#/components/schemas/DeleteSourceFilesSpec"
1026
+ exclude_file_filter:
1027
+ type:
1028
+ - string
1029
+ - "null"
1030
+ symbolic_links:
1031
+ type:
1032
+ - string
1033
+ - "null"
1034
+ enum:
1035
+ - follow
1036
+ - copy
1037
+ - copy+force
1038
+ - skip
1039
+ - null
1040
+ mtu_size:
1041
+ type:
1042
+ - integer
1043
+ - "null"
1044
+ read_block_size:
1045
+ type:
1046
+ - integer
1047
+ - "null"
1048
+ write_block_size:
1049
+ type:
1050
+ - integer
1051
+ - "null"
1052
+ notifications:
1053
+ type: array
1054
+ items:
1055
+ $ref: "#/components/schemas/NotificationSpec"
1056
+ scheduled_start:
1057
+ type:
1058
+ - string
1059
+ - "null"
1060
+ format: date-time
1061
+ required:
1062
+ - source
1063
+ - destination
1064
+ SmartTransferSourceOverride:
1065
+ type: object
1066
+ properties:
1067
+ paths:
1068
+ type: array
1069
+ items:
1070
+ type: string
1071
+ source_base:
1072
+ type:
1073
+ - string
1074
+ - "null"
1075
+ SmartTransferSubmitRequest:
1076
+ type: object
1077
+ properties:
1078
+ name:
1079
+ type:
1080
+ - string
1081
+ - "null"
1082
+ comment:
1083
+ type: string
1084
+ source:
1085
+ description: Omit entirely if the Smart Transfer does not allow selecting source items at start — including this section in that case returns an error.
1086
+ allOf:
1087
+ - $ref: "#/components/schemas/SmartTransferSourceOverride"
1088
+ scheduled_start:
1089
+ type:
1090
+ - string
1091
+ - "null"
1092
+ format: date-time
1093
+ responses:
1094
+ Ok:
1095
+ description: Success
1096
+ Unauthorized:
1097
+ description: Bad, missing, or locked username/password
1098
+ Forbidden:
1099
+ description: The operation lets the current user know the item exists, but they do not have permission to change it.
1100
+ UnprocessableEntity:
1101
+ description: Error. A JSON body with details is normally returned; if absent, check the mongrel logs.
1102
+ content:
1103
+ application/json:
1104
+ schema:
1105
+ $ref: "#/components/schemas/Error"
1106
+ securitySchemes:
1107
+ basicAuth:
1108
+ type: http
1109
+ scheme: basic
1110
+ description: Username and password of a valid Console account.
1111
+ tags:
1112
+ - name: transfers
1113
+ description: Submit, control, and monitor individual transfers
1114
+ - name: smart-transfers
1115
+ description: Pre-configured Smart Transfer templates
1116
+ - name: queues
1117
+ description: Reorder items on transfer queues
1118
+ - name: endpoints
1119
+ description: Source/destination endpoints and SSH keys available to the account
1120
+ - name: admin
1121
+ description: Undocumented administrative actions
1122
+ - name: health
1123
+ description: Unauthenticated liveness/health-check endpoint for load balancers
1124
+ security:
1125
+ - basicAuth: []