aspera-cli 4.27.0 → 4.27.2

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 (142) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +46 -1
  4. data/CONTRIBUTING.md +1 -7
  5. data/TODO.md +50 -0
  6. data/docs/README.md +709 -489
  7. data/lib/aspera/agent/base.rb +10 -2
  8. data/lib/aspera/agent/connect.rb +7 -7
  9. data/lib/aspera/agent/desktop.rb +3 -3
  10. data/lib/aspera/agent/direct.rb +48 -19
  11. data/lib/aspera/agent/factory.rb +3 -3
  12. data/lib/aspera/agent/httpgw.rb +55 -14
  13. data/lib/aspera/agent/node.rb +2 -2
  14. data/lib/aspera/agent/transferd.rb +12 -12
  15. data/lib/aspera/api/aoc.rb +28 -28
  16. data/lib/aspera/api/cos_node.rb +10 -9
  17. data/lib/aspera/api/faspex.rb +2 -2
  18. data/lib/aspera/api/httpgw.rb +20 -20
  19. data/lib/aspera/api/node.rb +31 -53
  20. data/lib/aspera/ascmd.rb +13 -13
  21. data/lib/aspera/ascp/installation.rb +43 -36
  22. data/lib/aspera/ascp/management.rb +6 -6
  23. data/lib/aspera/assert.rb +12 -13
  24. data/lib/aspera/cli/ascp_actions.rb +7 -7
  25. data/lib/aspera/cli/async_transfer_store.rb +49 -5
  26. data/lib/aspera/cli/bootstrapper.rb +9 -9
  27. data/lib/aspera/cli/command_registry.rb +1 -1
  28. data/lib/aspera/cli/command_spec.rb +6 -3
  29. data/lib/aspera/cli/context.rb +3 -3
  30. data/lib/aspera/cli/extended_value.rb +26 -26
  31. data/lib/aspera/cli/formatter.rb +76 -54
  32. data/lib/aspera/cli/gem_checker.rb +1 -1
  33. data/lib/aspera/cli/hints.rb +2 -2
  34. data/lib/aspera/cli/http.rb +22 -29
  35. data/lib/aspera/cli/mailer.rb +7 -7
  36. data/lib/aspera/cli/mcp_tool.rb +31 -4
  37. data/lib/aspera/cli/option_declarator.rb +77 -0
  38. data/lib/aspera/cli/options.schema.yaml +273 -3
  39. data/lib/aspera/cli/parser.rb +539 -280
  40. data/lib/aspera/cli/plugins/alee.rb +1 -1
  41. data/lib/aspera/cli/plugins/aoc.rb +303 -314
  42. data/lib/aspera/cli/plugins/ats.rb +25 -21
  43. data/lib/aspera/cli/plugins/base.rb +357 -186
  44. data/lib/aspera/cli/plugins/basic_auth.rb +0 -12
  45. data/lib/aspera/cli/plugins/config.rb +76 -73
  46. data/lib/aspera/cli/plugins/console.rb +8 -8
  47. data/lib/aspera/cli/plugins/cos.rb +4 -3
  48. data/lib/aspera/cli/plugins/factory.rb +2 -2
  49. data/lib/aspera/cli/plugins/faspex5.rb +259 -248
  50. data/lib/aspera/cli/plugins/faspio.rb +7 -2
  51. data/lib/aspera/cli/plugins/httpgw.rb +1 -1
  52. data/lib/aspera/cli/plugins/mcp.rb +11 -11
  53. data/lib/aspera/cli/plugins/node.rb +227 -283
  54. data/lib/aspera/cli/plugins/orchestrator.rb +23 -23
  55. data/lib/aspera/cli/plugins/preview.rb +61 -64
  56. data/lib/aspera/cli/plugins/server.rb +36 -31
  57. data/lib/aspera/cli/plugins/shares.rb +174 -135
  58. data/lib/aspera/cli/preset_actions.rb +39 -19
  59. data/lib/aspera/cli/preset_manager.rb +74 -32
  60. data/lib/aspera/cli/result.rb +18 -16
  61. data/lib/aspera/cli/runner.rb +75 -39
  62. data/lib/aspera/cli/secret_finder.rb +1 -1
  63. data/lib/aspera/cli/sync_actions.rb +36 -35
  64. data/lib/aspera/cli/terminal_formatter.rb +2 -2
  65. data/lib/aspera/cli/transfer_actions.rb +17 -10
  66. data/lib/aspera/cli/transfer_agent.rb +44 -44
  67. data/lib/aspera/cli/transfer_progress.rb +7 -7
  68. data/lib/aspera/cli/vault_manager.rb +34 -12
  69. data/lib/aspera/cli/version.rb +1 -1
  70. data/lib/aspera/cli/wizard.rb +17 -20
  71. data/lib/aspera/colors.rb +3 -3
  72. data/lib/aspera/command_line_builder.rb +17 -16
  73. data/lib/aspera/command_line_converter.rb +1 -1
  74. data/lib/aspera/coverage.rb +1 -2
  75. data/lib/aspera/data_repository.rb +1 -1
  76. data/lib/aspera/dot_container.rb +8 -8
  77. data/lib/aspera/environment.rb +13 -13
  78. data/lib/aspera/faspex_gw.rb +4 -4
  79. data/lib/aspera/faspex_postproc.rb +14 -9
  80. data/lib/aspera/graphql.rb +4 -2
  81. data/lib/aspera/hash_ext.rb +2 -2
  82. data/lib/aspera/json_rpc/client.rb +1 -1
  83. data/lib/aspera/keychain/base.rb +10 -3
  84. data/lib/aspera/keychain/encrypted_hash.rb +92 -17
  85. data/lib/aspera/keychain/factory.rb +17 -5
  86. data/lib/aspera/keychain/hashicorp_vault.rb +1 -1
  87. data/lib/aspera/keychain/macos_security.rb +23 -25
  88. data/lib/aspera/keychain/one_password_api.rb +86 -0
  89. data/lib/aspera/keychain/one_password_base.rb +34 -0
  90. data/lib/aspera/keychain/one_password_cli.rb +98 -0
  91. data/lib/aspera/link_header.rb +2 -2
  92. data/lib/aspera/log.rb +13 -13
  93. data/lib/aspera/markdown.rb +5 -5
  94. data/lib/aspera/nagios.rb +8 -8
  95. data/lib/aspera/node_simulator.rb +33 -27
  96. data/lib/aspera/oauth/base.rb +4 -5
  97. data/lib/aspera/oauth/boot.rb +3 -3
  98. data/lib/aspera/oauth/factory.rb +5 -5
  99. data/lib/aspera/oauth/jwt.rb +5 -7
  100. data/lib/aspera/oauth/web.rb +4 -4
  101. data/lib/aspera/persistency_action_once.rb +4 -4
  102. data/lib/aspera/persistency_folder.rb +8 -8
  103. data/lib/aspera/preview/file_types.rb +4 -4
  104. data/lib/aspera/preview/generator.rb +49 -46
  105. data/lib/aspera/preview/options.rb +3 -2
  106. data/lib/aspera/preview/terminal.rb +5 -5
  107. data/lib/aspera/preview/utils.rb +65 -18
  108. data/lib/aspera/products/connect.rb +2 -2
  109. data/lib/aspera/products/desktop.rb +1 -1
  110. data/lib/aspera/products/other.rb +2 -2
  111. data/lib/aspera/products/transferd.rb +3 -3
  112. data/lib/aspera/proxy_auto_config.rb +10 -10
  113. data/lib/aspera/rest.rb +149 -115
  114. data/lib/aspera/rest_error_analyzer.rb +3 -3
  115. data/lib/aspera/rest_list.rb +10 -9
  116. data/lib/aspera/schema/IBM Aspera Node API-4.4.6.yaml +6232 -0
  117. data/lib/aspera/schema/IBM Aspera faspio Gateway API-1.0.0.yaml +249 -0
  118. data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +39 -0
  119. data/lib/aspera/schema/IBM_Aspera_Shares.yaml +4653 -0
  120. data/lib/aspera/schema/documentation.rb +17 -11
  121. data/lib/aspera/schema/reader.rb +78 -4
  122. data/lib/aspera/schema/registry.rb +26 -7
  123. data/lib/aspera/secret_hider.rb +5 -5
  124. data/lib/aspera/ssh.rb +64 -31
  125. data/lib/aspera/ssl.rb +3 -3
  126. data/lib/aspera/sync/database.rb +2 -2
  127. data/lib/aspera/sync/operations.rb +13 -13
  128. data/lib/aspera/temp_file_manager.rb +24 -4
  129. data/lib/aspera/transfer/faux_file.rb +2 -2
  130. data/lib/aspera/transfer/parameters.rb +15 -15
  131. data/lib/aspera/transfer/resumer.rb +9 -9
  132. data/lib/aspera/transfer/spec.rb +1 -1
  133. data/lib/aspera/transfer/spec.schema.yaml +1 -0
  134. data/lib/aspera/uri_reader.rb +52 -15
  135. data/lib/aspera/web_auth.rb +6 -5
  136. data/lib/aspera/web_server_simple.rb +9 -9
  137. data/lib/aspera/yaml.rb +4 -4
  138. data.tar.gz.sig +0 -0
  139. metadata +10 -4
  140. metadata.gz.sig +0 -0
  141. data/lib/aspera/cli/plugins/faspex.rb +0 -576
  142. data/lib/aspera/transfer/uri.rb +0 -56
@@ -0,0 +1,4653 @@
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_Aspera_Shares.yaml
4
+ # Use 'rake tools:openapi' to update this file
5
+
6
+ openapi: 3.0.3
7
+ info:
8
+ title: Aspera Shares API
9
+ contact:
10
+ name: IBM
11
+ email: aspera@ibm.com
12
+ url: https://ibm.com/aspera
13
+ version: 1.0.0
14
+ license:
15
+ name: Proprietary
16
+ url: "https://ibm.com/products/aspera"
17
+ description: |
18
+ Complete API documentation for Aspera Shares, a secure file sharing and collaboration platform.
19
+
20
+ In case of doubt, refer to the [official IBM Aspera Shares API reference](https://developer.ibm.com/apis/catalog/aspera--aspera-shares-api).
21
+
22
+ This API provides comprehensive access to:
23
+ - Files operations
24
+ - Transfer authorizations
25
+ - User and Group management
26
+ - Shares and access control
27
+ - Node operations
28
+ - Administrative functions
29
+
30
+ ## Authentication
31
+
32
+ The API uses HTTP Basic Authentication.
33
+ Include your credentials in the Authorization header:
34
+
35
+ ```
36
+ Authorization: Basic base64(username:password)
37
+ ```
38
+
39
+ ## Base URLs
40
+
41
+ - `/node_api` - API for file and transfer operation. A subset of HSTS Node API.
42
+ - `/api/v1` - API for Administration.
43
+ servers:
44
+ - url: https://{hostname}
45
+ description: Aspera Shares Server
46
+ variables:
47
+ hostname:
48
+ default: shares.example.com
49
+ description: Your Aspera Shares hostname
50
+ security:
51
+ - basicAuth: []
52
+ tags:
53
+ - name: Information
54
+ description: Information information and health checks
55
+ - name: API Information
56
+ description: List of base endpoints and their capabilities
57
+ - name: Files
58
+ description: File operations (browse, info, create, rename, delete)
59
+ - name: Node Transfers
60
+ description: Transfer management
61
+ - name: Watch Folder
62
+ description: Watch folder management and monitoring
63
+ - name: Users
64
+ description: |
65
+ To create users, refer to Local User Management, SAML User Management, or LDAP User Management.
66
+ However, delete occurs under Authorizable Users although you can also delete local users from Local User Management.
67
+ It is important to note that only when the user type is database will the `local_user_id` be returned.
68
+
69
+ > [!NOTE]
70
+ > Manager authorization to these resources depends on the configuration option selected in the UI.
71
+ - name: Groups
72
+ description: Group management
73
+ - name: Shares
74
+ description: Share management and operations
75
+ - name: Nodes
76
+ description: Node management
77
+ - name: Transfer Settings
78
+ description: Transfer management and monitoring
79
+ - name: SMTP Servers
80
+ description: SMTP server configuration
81
+ # ReDoc organization
82
+ x-tagGroups:
83
+ - name: User Actions
84
+ tags:
85
+ - Information
86
+ - Files
87
+ - Node Transfers
88
+ - Watch Folder
89
+ - name: Administrative
90
+ tags:
91
+ - Users
92
+ - Groups
93
+ - Shares
94
+ - Nodes
95
+ - Transfer Settings
96
+ - SMTP Servers
97
+ paths:
98
+ # API v1 Endpoints
99
+ /api/v1:
100
+ get:
101
+ tags:
102
+ - API Information
103
+ summary: Get API v1 information
104
+ description: Returns general information about API v1
105
+ operationId: getApiV1Info
106
+ responses:
107
+ "200":
108
+ description: API information
109
+ content:
110
+ application/json:
111
+ schema:
112
+ type: object
113
+ properties:
114
+ resource_type:
115
+ type: string
116
+ links:
117
+ type: array
118
+ items:
119
+ type: object
120
+ properties:
121
+ rel:
122
+ type: string
123
+ href:
124
+ type: string
125
+ required:
126
+ - rel
127
+ - href
128
+ required:
129
+ - resource_type
130
+ - links
131
+ "401":
132
+ $ref: "#/components/responses/Unauthorized"
133
+ # User Endpoints
134
+ /api/v1/data/users:
135
+ get:
136
+ tags:
137
+ - Users
138
+ summary: List Authorizable Users
139
+ description: Get All Authorizable Users
140
+ operationId: listUsers
141
+ responses:
142
+ "200":
143
+ description: List of users
144
+ content:
145
+ application/json:
146
+ schema:
147
+ type: array
148
+ items:
149
+ $ref: "#/components/schemas/AuthorizableUser"
150
+ "401":
151
+ $ref: "#/components/responses/Unauthorized"
152
+ /api/v1/data/users/{id}:
153
+ get:
154
+ tags:
155
+ - Users
156
+ summary: Get specific Authorizable User
157
+ description: Returns details of a specific user
158
+ operationId: getUser
159
+ parameters:
160
+ - $ref: "#/components/parameters/IntegerIdInPath"
161
+ responses:
162
+ "200":
163
+ description: User details
164
+ content:
165
+ application/json:
166
+ schema:
167
+ $ref: "#/components/schemas/AuthorizableUser"
168
+ "401":
169
+ $ref: "#/components/responses/Unauthorized"
170
+ "404":
171
+ $ref: "#/components/responses/NotFound"
172
+ delete:
173
+ tags:
174
+ - Users
175
+ summary: Delete user
176
+ description: |
177
+ Delete a Authorizable User.
178
+
179
+ > NOTE: This will delete any type of user (local, LDAP, and SAML).
180
+ operationId: deleteUser
181
+ parameters:
182
+ - $ref: "#/components/parameters/IntegerIdInPath"
183
+ responses:
184
+ "204":
185
+ description: User deleted
186
+ "401":
187
+ $ref: "#/components/responses/Unauthorized"
188
+ "404":
189
+ $ref: "#/components/responses/NotFound"
190
+ /api/v1/data/local_users:
191
+ get:
192
+ tags:
193
+ - Users
194
+ summary: List Local Users
195
+ description: Get All Local Users
196
+ operationId: listLocalUsers
197
+ responses:
198
+ "200":
199
+ description: List of local users
200
+ content:
201
+ application/json:
202
+ schema:
203
+ type: array
204
+ items:
205
+ $ref: "#/components/schemas/LocalUser"
206
+ "401":
207
+ $ref: "#/components/responses/Unauthorized"
208
+ post:
209
+ tags:
210
+ - Users
211
+ summary: Create local user
212
+ description: Creates a new local user account
213
+ operationId: createLocalUser
214
+ requestBody:
215
+ required: true
216
+ content:
217
+ application/json:
218
+ schema:
219
+ $ref: "#/components/schemas/LocalUserCreate"
220
+ responses:
221
+ "201":
222
+ description: User created
223
+ content:
224
+ application/json:
225
+ schema:
226
+ $ref: "#/components/schemas/LocalUser"
227
+ "400":
228
+ $ref: "#/components/responses/BadRequest"
229
+ "401":
230
+ $ref: "#/components/responses/Unauthorized"
231
+ "403":
232
+ $ref: "#/components/responses/Forbidden"
233
+ /api/v1/data/local_users/{id}:
234
+ get:
235
+ tags:
236
+ - Users
237
+ summary: Get specific Local User
238
+ description: Returns details of a specific user
239
+ operationId: getLocalUser
240
+ parameters:
241
+ - $ref: "#/components/parameters/IntegerIdInPath"
242
+ responses:
243
+ "200":
244
+ description: User details
245
+ content:
246
+ application/json:
247
+ schema:
248
+ $ref: "#/components/schemas/LocalUser"
249
+ "401":
250
+ $ref: "#/components/responses/Unauthorized"
251
+ "404":
252
+ $ref: "#/components/responses/NotFound"
253
+ put:
254
+ tags:
255
+ - Users
256
+ summary: Update local user
257
+ description: Updates an existing local user
258
+ operationId: updateLocalUser
259
+ parameters:
260
+ - $ref: "#/components/parameters/IntegerIdInPath"
261
+ requestBody:
262
+ required: true
263
+ content:
264
+ application/json:
265
+ schema:
266
+ $ref: "#/components/schemas/LocalUserUpdate"
267
+ responses:
268
+ "200":
269
+ description: User updated
270
+ content:
271
+ application/json:
272
+ schema:
273
+ $ref: "#/components/schemas/LocalUser"
274
+ "400":
275
+ $ref: "#/components/responses/BadRequest"
276
+ "401":
277
+ $ref: "#/components/responses/Unauthorized"
278
+ "404":
279
+ $ref: "#/components/responses/NotFound"
280
+ delete:
281
+ tags:
282
+ - Users
283
+ summary: Delete local user
284
+ description: Delete a local User.
285
+ operationId: deleteLocalUser
286
+ parameters:
287
+ - $ref: "#/components/parameters/IntegerIdInPath"
288
+ responses:
289
+ "204":
290
+ description: User deleted
291
+ "401":
292
+ $ref: "#/components/responses/Unauthorized"
293
+ "404":
294
+ $ref: "#/components/responses/NotFound"
295
+ /api/v1/data/local_groups:
296
+ get:
297
+ tags:
298
+ - Groups
299
+ summary: List local groups
300
+ description: Returns a list of local groups
301
+ operationId: listLocalGroups
302
+ responses:
303
+ "200":
304
+ description: List of local groups
305
+ content:
306
+ application/json:
307
+ schema:
308
+ type: array
309
+ items:
310
+ $ref: "#/components/schemas/LocalGroup"
311
+ "401":
312
+ $ref: "#/components/responses/Unauthorized"
313
+ post:
314
+ tags:
315
+ - Groups
316
+ summary: Create local group
317
+ description: Creates a new local group
318
+ operationId: createLocalGroup
319
+ requestBody:
320
+ required: true
321
+ content:
322
+ application/json:
323
+ schema:
324
+ $ref: "#/components/schemas/LocalGroupCreate"
325
+ responses:
326
+ "201":
327
+ description: Local group created
328
+ content:
329
+ application/json:
330
+ schema:
331
+ $ref: "#/components/schemas/LocalGroup"
332
+ "400":
333
+ $ref: "#/components/responses/BadRequest"
334
+ "401":
335
+ $ref: "#/components/responses/Unauthorized"
336
+ /api/v1/data/local_groups/{id}:
337
+ get:
338
+ tags:
339
+ - Groups
340
+ summary: Get local group
341
+ description: Returns details of a specific local group
342
+ operationId: getLocalGroup
343
+ parameters:
344
+ - $ref: "#/components/parameters/IntegerIdInPath"
345
+ responses:
346
+ "200":
347
+ description: Local group details
348
+ content:
349
+ application/json:
350
+ schema:
351
+ $ref: "#/components/schemas/LocalGroup"
352
+ "401":
353
+ $ref: "#/components/responses/Unauthorized"
354
+ "404":
355
+ $ref: "#/components/responses/NotFound"
356
+ put:
357
+ tags:
358
+ - Groups
359
+ summary: Update local group
360
+ description: Updates an existing local group
361
+ operationId: updateLocalGroup
362
+ parameters:
363
+ - $ref: "#/components/parameters/IntegerIdInPath"
364
+ requestBody:
365
+ required: true
366
+ content:
367
+ application/json:
368
+ schema:
369
+ $ref: "#/components/schemas/LocalGroupUpdate"
370
+ responses:
371
+ "200":
372
+ description: Local group updated
373
+ content:
374
+ application/json:
375
+ schema:
376
+ $ref: "#/components/schemas/LocalGroup"
377
+ "400":
378
+ $ref: "#/components/responses/BadRequest"
379
+ "401":
380
+ $ref: "#/components/responses/Unauthorized"
381
+ "404":
382
+ $ref: "#/components/responses/NotFound"
383
+ delete:
384
+ tags:
385
+ - Groups
386
+ summary: Delete local group
387
+ description: Deletes a local group
388
+ operationId: deleteLocalGroup
389
+ parameters:
390
+ - $ref: "#/components/parameters/IntegerIdInPath"
391
+ responses:
392
+ "204":
393
+ description: Local group deleted
394
+ "401":
395
+ $ref: "#/components/responses/Unauthorized"
396
+ "404":
397
+ $ref: "#/components/responses/NotFound"
398
+ /api/v1/data/local_groups/{local_group_id}/local_users:
399
+ get:
400
+ tags:
401
+ - Groups
402
+ summary: List users of a local group
403
+ description: Returns all local users belonging to a specific local group
404
+ operationId: listLocalGroupUsers
405
+ parameters:
406
+ - name: local_group_id
407
+ in: path
408
+ required: true
409
+ schema:
410
+ type: integer
411
+ description: Local group ID
412
+ responses:
413
+ "200":
414
+ description: List of local users in the group
415
+ content:
416
+ application/json:
417
+ schema:
418
+ type: array
419
+ items:
420
+ $ref: "#/components/schemas/LocalUser"
421
+ "401":
422
+ $ref: "#/components/responses/Unauthorized"
423
+ "404":
424
+ $ref: "#/components/responses/NotFound"
425
+ /api/v1/data/local_groups/{local_group_id}/local_users/{id}:
426
+ get:
427
+ tags:
428
+ - Groups
429
+ summary: Get user of a local group
430
+ operationId: getLocalGroupUser
431
+ parameters:
432
+ - name: local_group_id
433
+ in: path
434
+ required: true
435
+ schema:
436
+ type: integer
437
+ description: Local group ID
438
+ - $ref: "#/components/parameters/IntegerIdInPath"
439
+ responses:
440
+ "200":
441
+ description: Local user details
442
+ content:
443
+ application/json:
444
+ schema:
445
+ $ref: "#/components/schemas/LocalUser"
446
+ "401":
447
+ $ref: "#/components/responses/Unauthorized"
448
+ "404":
449
+ $ref: "#/components/responses/NotFound"
450
+ put:
451
+ tags:
452
+ - Groups
453
+ summary: Update user of a local group
454
+ operationId: updateLocalGroupUser
455
+ parameters:
456
+ - name: local_group_id
457
+ in: path
458
+ required: true
459
+ schema:
460
+ type: integer
461
+ description: Local group ID
462
+ - $ref: "#/components/parameters/IntegerIdInPath"
463
+ requestBody:
464
+ required: true
465
+ content:
466
+ application/json:
467
+ schema:
468
+ $ref: "#/components/schemas/LocalUserUpdate"
469
+ responses:
470
+ "200":
471
+ description: Local user updated
472
+ content:
473
+ application/json:
474
+ schema:
475
+ $ref: "#/components/schemas/LocalUser"
476
+ "400":
477
+ $ref: "#/components/responses/BadRequest"
478
+ "401":
479
+ $ref: "#/components/responses/Unauthorized"
480
+ "404":
481
+ $ref: "#/components/responses/NotFound"
482
+ delete:
483
+ tags:
484
+ - Groups
485
+ summary: Remove user from a local group
486
+ operationId: deleteLocalGroupUser
487
+ parameters:
488
+ - name: local_group_id
489
+ in: path
490
+ required: true
491
+ schema:
492
+ type: integer
493
+ description: Local group ID
494
+ - $ref: "#/components/parameters/IntegerIdInPath"
495
+ responses:
496
+ "204":
497
+ description: User removed from group
498
+ "401":
499
+ $ref: "#/components/responses/Unauthorized"
500
+ "404":
501
+ $ref: "#/components/responses/NotFound"
502
+ /api/v1/data/ldap_configs:
503
+ get:
504
+ tags:
505
+ - Users
506
+ summary: List LDAP configurations
507
+ operationId: listLdapConfigs
508
+ responses:
509
+ "200":
510
+ description: List of LDAP configurations
511
+ content:
512
+ application/json:
513
+ schema:
514
+ type: array
515
+ items:
516
+ $ref: "#/components/schemas/LdapConfig"
517
+ "401":
518
+ $ref: "#/components/responses/Unauthorized"
519
+ post:
520
+ tags:
521
+ - Users
522
+ summary: Create LDAP configuration
523
+ operationId: createLdapConfig
524
+ requestBody:
525
+ required: true
526
+ content:
527
+ application/json:
528
+ schema:
529
+ $ref: "#/components/schemas/LdapConfigCreate"
530
+ responses:
531
+ "201":
532
+ description: LDAP configuration created
533
+ content:
534
+ application/json:
535
+ schema:
536
+ $ref: "#/components/schemas/LdapConfig"
537
+ "400":
538
+ $ref: "#/components/responses/BadRequest"
539
+ "401":
540
+ $ref: "#/components/responses/Unauthorized"
541
+ /api/v1/data/ldap_configs/{id}:
542
+ get:
543
+ tags:
544
+ - Users
545
+ summary: Get LDAP configuration
546
+ operationId: getLdapConfig
547
+ parameters:
548
+ - $ref: "#/components/parameters/IntegerIdInPath"
549
+ responses:
550
+ "200":
551
+ description: LDAP configuration details
552
+ content:
553
+ application/json:
554
+ schema:
555
+ $ref: "#/components/schemas/LdapConfig"
556
+ "401":
557
+ $ref: "#/components/responses/Unauthorized"
558
+ "404":
559
+ $ref: "#/components/responses/NotFound"
560
+ put:
561
+ tags:
562
+ - Users
563
+ summary: Update LDAP configuration
564
+ operationId: updateLdapConfig
565
+ parameters:
566
+ - $ref: "#/components/parameters/IntegerIdInPath"
567
+ requestBody:
568
+ required: true
569
+ content:
570
+ application/json:
571
+ schema:
572
+ $ref: "#/components/schemas/LdapConfigCreate"
573
+ responses:
574
+ "200":
575
+ description: LDAP configuration updated
576
+ content:
577
+ application/json:
578
+ schema:
579
+ $ref: "#/components/schemas/LdapConfig"
580
+ "400":
581
+ $ref: "#/components/responses/BadRequest"
582
+ "401":
583
+ $ref: "#/components/responses/Unauthorized"
584
+ "404":
585
+ $ref: "#/components/responses/NotFound"
586
+ delete:
587
+ tags:
588
+ - Users
589
+ summary: Delete LDAP configuration
590
+ operationId: deleteLdapConfig
591
+ parameters:
592
+ - $ref: "#/components/parameters/IntegerIdInPath"
593
+ responses:
594
+ "204":
595
+ description: LDAP configuration deleted
596
+ "401":
597
+ $ref: "#/components/responses/Unauthorized"
598
+ "404":
599
+ $ref: "#/components/responses/NotFound"
600
+ /api/v1/data/ldap_users:
601
+ post:
602
+ tags:
603
+ - Users
604
+ summary: Add LDAP user
605
+ description: Add an LDAP user account
606
+ operationId: createLDAPUser
607
+ requestBody:
608
+ required: true
609
+ content:
610
+ application/json:
611
+ schema:
612
+ $ref: "#/components/schemas/LDAPUserCreate"
613
+ responses:
614
+ "201":
615
+ description: User created
616
+ content:
617
+ application/json:
618
+ schema:
619
+ $ref: "#/components/schemas/AuthorizableUser"
620
+ "400":
621
+ $ref: "#/components/responses/BadRequest"
622
+ "401":
623
+ $ref: "#/components/responses/Unauthorized"
624
+ "403":
625
+ $ref: "#/components/responses/Forbidden"
626
+ /api/v1/data/ldap_groups:
627
+ post:
628
+ tags:
629
+ - Groups
630
+ summary: Add LDAP group
631
+ description: Add an LDAP group account
632
+ operationId: createLDAPGroup
633
+ requestBody:
634
+ required: true
635
+ content:
636
+ application/json:
637
+ schema:
638
+ $ref: "#/components/schemas/LDAPUserCreate"
639
+ responses:
640
+ "201":
641
+ description: Group created
642
+ content:
643
+ application/json:
644
+ schema:
645
+ $ref: "#/components/schemas/Group"
646
+ "400":
647
+ $ref: "#/components/responses/BadRequest"
648
+ "401":
649
+ $ref: "#/components/responses/Unauthorized"
650
+ "403":
651
+ $ref: "#/components/responses/Forbidden"
652
+ /api/v1/data/saml_groups/import:
653
+ post:
654
+ tags:
655
+ - Groups
656
+ summary: Import SAML group
657
+ description: Import a SAML group account
658
+ operationId: importSAMLGroup
659
+ requestBody:
660
+ required: true
661
+ content:
662
+ application/json:
663
+ schema:
664
+ $ref: "#/components/schemas/SAMLUserImport"
665
+ responses:
666
+ "201":
667
+ description: Group created
668
+ content:
669
+ application/json:
670
+ schema:
671
+ $ref: "#/components/schemas/Group"
672
+ "400":
673
+ $ref: "#/components/responses/BadRequest"
674
+ "401":
675
+ $ref: "#/components/responses/Unauthorized"
676
+ "403":
677
+ $ref: "#/components/responses/Forbidden"
678
+ /api/v1/data/saml_users/import:
679
+ post:
680
+ tags:
681
+ - Users
682
+ summary: Import SAML user
683
+ description: Import SAML user account
684
+ operationId: importSAMLUser
685
+ requestBody:
686
+ required: true
687
+ content:
688
+ application/json:
689
+ schema:
690
+ $ref: "#/components/schemas/SAMLUserImport"
691
+ responses:
692
+ "201":
693
+ description: User created
694
+ content:
695
+ application/json:
696
+ schema:
697
+ $ref: "#/components/schemas/AuthorizableUser"
698
+ "400":
699
+ $ref: "#/components/responses/BadRequest"
700
+ "401":
701
+ $ref: "#/components/responses/Unauthorized"
702
+ "403":
703
+ $ref: "#/components/responses/Forbidden"
704
+ /api/v1/data/users/{id}/share_permissions:
705
+ get:
706
+ tags:
707
+ - Users
708
+ summary: Get All Share Permissions for Specific User
709
+ description: Returns all share permissions for a specific user
710
+ operationId: getUserSharePermissions
711
+ parameters:
712
+ - $ref: "#/components/parameters/IntegerIdInPath"
713
+ responses:
714
+ "200":
715
+ description: User details
716
+ content:
717
+ application/json:
718
+ schema:
719
+ type: array
720
+ items:
721
+ $ref: "#/components/schemas/ShareUserPermission"
722
+ "401":
723
+ $ref: "#/components/responses/Unauthorized"
724
+ "404":
725
+ $ref: "#/components/responses/NotFound"
726
+ /api/v1/data/users/{id}/share_permissions/{share_id}:
727
+ get:
728
+ tags:
729
+ - Users
730
+ summary: Get User's Specific Share Permission
731
+ description: Returns a specific share permission for a user
732
+ operationId: getUserSharePermission
733
+ parameters:
734
+ - $ref: "#/components/parameters/IntegerIdInPath"
735
+ - name: share_id
736
+ in: path
737
+ required: true
738
+ schema:
739
+ type: integer
740
+ description: Share ID
741
+ responses:
742
+ "200":
743
+ description: Share permission details
744
+ content:
745
+ application/json:
746
+ schema:
747
+ $ref: "#/components/schemas/ShareUserPermission"
748
+ "401":
749
+ $ref: "#/components/responses/Unauthorized"
750
+ "404":
751
+ $ref: "#/components/responses/NotFound"
752
+ # Group Endpoints
753
+ /api/v1/data/users/{id}/app_authorizations:
754
+ get:
755
+ tags:
756
+ - Users
757
+ summary: Get user app authorizations
758
+ description: Returns app authorizations for a specific user
759
+ operationId: getUserAppAuthorizations
760
+ parameters:
761
+ - $ref: "#/components/parameters/IntegerIdInPath"
762
+ responses:
763
+ "200":
764
+ description: User app authorizations
765
+ content:
766
+ application/json:
767
+ schema:
768
+ type: object
769
+ "401":
770
+ $ref: "#/components/responses/Unauthorized"
771
+ "404":
772
+ $ref: "#/components/responses/NotFound"
773
+ put:
774
+ tags:
775
+ - Users
776
+ summary: Update user app authorizations
777
+ description: Updates app authorizations for a specific user
778
+ operationId: updateUserAppAuthorizations
779
+ parameters:
780
+ - $ref: "#/components/parameters/IntegerIdInPath"
781
+ requestBody:
782
+ required: true
783
+ content:
784
+ application/json:
785
+ schema:
786
+ type: object
787
+ responses:
788
+ "200":
789
+ description: User app authorizations updated
790
+ content:
791
+ application/json:
792
+ schema:
793
+ type: object
794
+ "400":
795
+ $ref: "#/components/responses/BadRequest"
796
+ "401":
797
+ $ref: "#/components/responses/Unauthorized"
798
+ "404":
799
+ $ref: "#/components/responses/NotFound"
800
+ /api/v1/data/groups:
801
+ get:
802
+ tags:
803
+ - Groups
804
+ summary: List groups
805
+ description: Returns a paginated list of groups
806
+ operationId: listGroups
807
+ responses:
808
+ "200":
809
+ description: List of groups
810
+ content:
811
+ application/json:
812
+ schema:
813
+ type: array
814
+ items:
815
+ $ref: "#/components/schemas/Group"
816
+ "401":
817
+ $ref: "#/components/responses/Unauthorized"
818
+ /api/v1/data/groups/{id}:
819
+ get:
820
+ tags:
821
+ - Groups
822
+ summary: Get group
823
+ description: Returns details of a specific group
824
+ operationId: getGroup
825
+ parameters:
826
+ - $ref: "#/components/parameters/IntegerIdInPath"
827
+ responses:
828
+ "200":
829
+ description: Group details
830
+ content:
831
+ application/json:
832
+ schema:
833
+ $ref: "#/components/schemas/Group"
834
+ "401":
835
+ $ref: "#/components/responses/Unauthorized"
836
+ "404":
837
+ $ref: "#/components/responses/NotFound"
838
+ delete:
839
+ tags:
840
+ - Groups
841
+ summary: Delete group
842
+ description: Deletes a group
843
+ operationId: deleteGroup
844
+ parameters:
845
+ - $ref: "#/components/parameters/IntegerIdInPath"
846
+ responses:
847
+ "204":
848
+ description: Group deleted
849
+ "401":
850
+ $ref: "#/components/responses/Unauthorized"
851
+ "404":
852
+ $ref: "#/components/responses/NotFound"
853
+ # Share Endpoints
854
+ /api/v1/data/groups/{id}/app_authorizations:
855
+ get:
856
+ tags:
857
+ - Groups
858
+ summary: Get group app authorizations
859
+ description: Returns app authorizations for a specific group
860
+ operationId: getGroupAppAuthorizations
861
+ parameters:
862
+ - $ref: "#/components/parameters/IntegerIdInPath"
863
+ responses:
864
+ "200":
865
+ description: Group app authorizations
866
+ content:
867
+ application/json:
868
+ schema:
869
+ type: object
870
+ "401":
871
+ $ref: "#/components/responses/Unauthorized"
872
+ "404":
873
+ $ref: "#/components/responses/NotFound"
874
+ put:
875
+ tags:
876
+ - Groups
877
+ summary: Update group app authorizations
878
+ description: Updates app authorizations for a specific group
879
+ operationId: updateGroupAppAuthorizations
880
+ parameters:
881
+ - $ref: "#/components/parameters/IntegerIdInPath"
882
+ requestBody:
883
+ required: true
884
+ content:
885
+ application/json:
886
+ schema:
887
+ type: object
888
+ responses:
889
+ "200":
890
+ description: Group app authorizations updated
891
+ content:
892
+ application/json:
893
+ schema:
894
+ type: object
895
+ "400":
896
+ $ref: "#/components/responses/BadRequest"
897
+ "401":
898
+ $ref: "#/components/responses/Unauthorized"
899
+ "404":
900
+ $ref: "#/components/responses/NotFound"
901
+ /api/v1/data/groups/{id}/users:
902
+ get:
903
+ tags:
904
+ - Groups
905
+ summary: List users of a group
906
+ description: Returns all authorizable users belonging to a specific group
907
+ operationId: listGroupUsers
908
+ parameters:
909
+ - $ref: "#/components/parameters/IntegerIdInPath"
910
+ responses:
911
+ "200":
912
+ description: List of users in the group
913
+ content:
914
+ application/json:
915
+ schema:
916
+ type: array
917
+ items:
918
+ $ref: "#/components/schemas/AuthorizableUser"
919
+ "401":
920
+ $ref: "#/components/responses/Unauthorized"
921
+ "404":
922
+ $ref: "#/components/responses/NotFound"
923
+ /api/v1/data/groups/{id}/users/{user_id}:
924
+ get:
925
+ tags:
926
+ - Groups
927
+ summary: Get user of a group
928
+ operationId: getGroupUser
929
+ parameters:
930
+ - $ref: "#/components/parameters/IntegerIdInPath"
931
+ - name: user_id
932
+ in: path
933
+ required: true
934
+ schema:
935
+ type: integer
936
+ description: User ID
937
+ responses:
938
+ "200":
939
+ description: User details
940
+ content:
941
+ application/json:
942
+ schema:
943
+ $ref: "#/components/schemas/AuthorizableUser"
944
+ "401":
945
+ $ref: "#/components/responses/Unauthorized"
946
+ "404":
947
+ $ref: "#/components/responses/NotFound"
948
+ put:
949
+ tags:
950
+ - Groups
951
+ summary: Update user of a group
952
+ operationId: updateGroupUser
953
+ parameters:
954
+ - $ref: "#/components/parameters/IntegerIdInPath"
955
+ - name: user_id
956
+ in: path
957
+ required: true
958
+ schema:
959
+ type: integer
960
+ description: User ID
961
+ requestBody:
962
+ required: true
963
+ content:
964
+ application/json:
965
+ schema:
966
+ type: object
967
+ responses:
968
+ "200":
969
+ description: Group user updated
970
+ content:
971
+ application/json:
972
+ schema:
973
+ $ref: "#/components/schemas/AuthorizableUser"
974
+ "400":
975
+ $ref: "#/components/responses/BadRequest"
976
+ "401":
977
+ $ref: "#/components/responses/Unauthorized"
978
+ "404":
979
+ $ref: "#/components/responses/NotFound"
980
+ delete:
981
+ tags:
982
+ - Groups
983
+ summary: Remove user from a group
984
+ operationId: deleteGroupUser
985
+ parameters:
986
+ - $ref: "#/components/parameters/IntegerIdInPath"
987
+ - name: user_id
988
+ in: path
989
+ required: true
990
+ schema:
991
+ type: integer
992
+ description: User ID
993
+ responses:
994
+ "204":
995
+ description: User removed from group
996
+ "401":
997
+ $ref: "#/components/responses/Unauthorized"
998
+ "404":
999
+ $ref: "#/components/responses/NotFound"
1000
+ /api/v1/data/groups/{id}/share_permissions:
1001
+ get:
1002
+ tags:
1003
+ - Groups
1004
+ summary: Get all share permissions for a group
1005
+ description: Returns all share permissions for a specific group
1006
+ operationId: getGroupSharePermissions
1007
+ parameters:
1008
+ - $ref: "#/components/parameters/IntegerIdInPath"
1009
+ responses:
1010
+ "200":
1011
+ description: List of share permissions
1012
+ content:
1013
+ application/json:
1014
+ schema:
1015
+ type: array
1016
+ items:
1017
+ $ref: "#/components/schemas/ShareUserPermission"
1018
+ "401":
1019
+ $ref: "#/components/responses/Unauthorized"
1020
+ "404":
1021
+ $ref: "#/components/responses/NotFound"
1022
+ /api/v1/data/groups/{id}/share_permissions/{share_id}:
1023
+ get:
1024
+ tags:
1025
+ - Groups
1026
+ summary: Get group's specific share permission
1027
+ description: Returns a specific share permission for a group
1028
+ operationId: getGroupSharePermission
1029
+ parameters:
1030
+ - $ref: "#/components/parameters/IntegerIdInPath"
1031
+ - name: share_id
1032
+ in: path
1033
+ required: true
1034
+ schema:
1035
+ type: integer
1036
+ description: Share ID
1037
+ responses:
1038
+ "200":
1039
+ description: Share permission details
1040
+ content:
1041
+ application/json:
1042
+ schema:
1043
+ $ref: "#/components/schemas/ShareUserPermission"
1044
+ "401":
1045
+ $ref: "#/components/responses/Unauthorized"
1046
+ "404":
1047
+ $ref: "#/components/responses/NotFound"
1048
+ /api/v1/data/shares:
1049
+ get:
1050
+ tags:
1051
+ - Shares
1052
+ summary: List shares
1053
+ description: Returns a paginated list of shares
1054
+ operationId: listShares
1055
+ responses:
1056
+ "200":
1057
+ description: List of shares
1058
+ content:
1059
+ application/json:
1060
+ schema:
1061
+ type: array
1062
+ items:
1063
+ $ref: "#/components/schemas/Share"
1064
+ "401":
1065
+ $ref: "#/components/responses/Unauthorized"
1066
+ post:
1067
+ tags:
1068
+ - Shares
1069
+ summary: Create share
1070
+ description: Creates a new share
1071
+ operationId: createShare
1072
+ requestBody:
1073
+ required: true
1074
+ content:
1075
+ application/json:
1076
+ schema:
1077
+ $ref: "#/components/schemas/ShareCreate"
1078
+ responses:
1079
+ "201":
1080
+ description: Share created
1081
+ content:
1082
+ application/json:
1083
+ schema:
1084
+ $ref: "#/components/schemas/Share"
1085
+ "400":
1086
+ $ref: "#/components/responses/BadRequest"
1087
+ "401":
1088
+ $ref: "#/components/responses/Unauthorized"
1089
+ /api/v1/data/shares/{id}:
1090
+ get:
1091
+ tags:
1092
+ - Shares
1093
+ summary: Get share
1094
+ description: Returns details of a specific share
1095
+ operationId: getShare
1096
+ parameters:
1097
+ - $ref: "#/components/parameters/IntegerIdInPath"
1098
+ responses:
1099
+ "200":
1100
+ description: Share details
1101
+ content:
1102
+ application/json:
1103
+ schema:
1104
+ $ref: "#/components/schemas/Share"
1105
+ "401":
1106
+ $ref: "#/components/responses/Unauthorized"
1107
+ "404":
1108
+ $ref: "#/components/responses/NotFound"
1109
+ put:
1110
+ tags:
1111
+ - Shares
1112
+ summary: Update share
1113
+ description: Updates an existing share
1114
+ operationId: updateShare
1115
+ parameters:
1116
+ - $ref: "#/components/parameters/IntegerIdInPath"
1117
+ requestBody:
1118
+ required: true
1119
+ content:
1120
+ application/json:
1121
+ schema:
1122
+ $ref: "#/components/schemas/ShareUpdate"
1123
+ responses:
1124
+ "200":
1125
+ description: Share updated
1126
+ content:
1127
+ application/json:
1128
+ schema:
1129
+ $ref: "#/components/schemas/Share"
1130
+ "400":
1131
+ $ref: "#/components/responses/BadRequest"
1132
+ "401":
1133
+ $ref: "#/components/responses/Unauthorized"
1134
+ "404":
1135
+ $ref: "#/components/responses/NotFound"
1136
+ delete:
1137
+ tags:
1138
+ - Shares
1139
+ summary: Delete share
1140
+ description: Deletes a share
1141
+ operationId: deleteShare
1142
+ parameters:
1143
+ - $ref: "#/components/parameters/IntegerIdInPath"
1144
+ responses:
1145
+ "204":
1146
+ description: Share deleted
1147
+ "401":
1148
+ $ref: "#/components/responses/Unauthorized"
1149
+ "404":
1150
+ $ref: "#/components/responses/NotFound"
1151
+ # Shares nested permissions
1152
+ /api/v1/data/shares/{share_id}/user_permissions:
1153
+ get:
1154
+ tags:
1155
+ - Shares
1156
+ summary: List user permissions for a share
1157
+ operationId: listShareUserPermissions
1158
+ parameters:
1159
+ - name: share_id
1160
+ in: path
1161
+ required: true
1162
+ schema:
1163
+ type: integer
1164
+ description: Share ID
1165
+ responses:
1166
+ "200":
1167
+ description: List of user permissions
1168
+ content:
1169
+ application/json:
1170
+ schema:
1171
+ type: array
1172
+ items:
1173
+ $ref: "#/components/schemas/ShareUserPermission"
1174
+ "401":
1175
+ $ref: "#/components/responses/Unauthorized"
1176
+ "404":
1177
+ $ref: "#/components/responses/NotFound"
1178
+ post:
1179
+ tags:
1180
+ - Shares
1181
+ summary: Create user permission for a share
1182
+ operationId: createShareUserPermission
1183
+ parameters:
1184
+ - name: share_id
1185
+ in: path
1186
+ required: true
1187
+ schema:
1188
+ type: integer
1189
+ description: Share ID
1190
+ requestBody:
1191
+ required: true
1192
+ content:
1193
+ application/json:
1194
+ schema:
1195
+ $ref: "#/components/schemas/SharePermissionCreate"
1196
+ responses:
1197
+ "201":
1198
+ description: User permission created
1199
+ content:
1200
+ application/json:
1201
+ schema:
1202
+ $ref: "#/components/schemas/ShareUserPermission"
1203
+ "400":
1204
+ $ref: "#/components/responses/BadRequest"
1205
+ "401":
1206
+ $ref: "#/components/responses/Unauthorized"
1207
+ /api/v1/data/shares/{share_id}/user_permissions/{id}:
1208
+ get:
1209
+ tags:
1210
+ - Shares
1211
+ summary: Get user permission for a share
1212
+ operationId: getShareUserPermission
1213
+ parameters:
1214
+ - name: share_id
1215
+ in: path
1216
+ required: true
1217
+ schema:
1218
+ type: integer
1219
+ description: Share ID
1220
+ - $ref: "#/components/parameters/IntegerIdInPath"
1221
+ responses:
1222
+ "200":
1223
+ description: User permission details
1224
+ content:
1225
+ application/json:
1226
+ schema:
1227
+ $ref: "#/components/schemas/ShareUserPermission"
1228
+ "401":
1229
+ $ref: "#/components/responses/Unauthorized"
1230
+ "404":
1231
+ $ref: "#/components/responses/NotFound"
1232
+ put:
1233
+ tags:
1234
+ - Shares
1235
+ summary: Update user permission for a share
1236
+ operationId: updateShareUserPermission
1237
+ parameters:
1238
+ - name: share_id
1239
+ in: path
1240
+ required: true
1241
+ schema:
1242
+ type: integer
1243
+ description: Share ID
1244
+ - $ref: "#/components/parameters/IntegerIdInPath"
1245
+ requestBody:
1246
+ required: true
1247
+ content:
1248
+ application/json:
1249
+ schema:
1250
+ $ref: "#/components/schemas/SharePermissionCreate"
1251
+ responses:
1252
+ "200":
1253
+ description: User permission updated
1254
+ content:
1255
+ application/json:
1256
+ schema:
1257
+ $ref: "#/components/schemas/ShareUserPermission"
1258
+ "400":
1259
+ $ref: "#/components/responses/BadRequest"
1260
+ "401":
1261
+ $ref: "#/components/responses/Unauthorized"
1262
+ "404":
1263
+ $ref: "#/components/responses/NotFound"
1264
+ delete:
1265
+ tags:
1266
+ - Shares
1267
+ summary: Delete user permission for a share
1268
+ operationId: deleteShareUserPermission
1269
+ parameters:
1270
+ - name: share_id
1271
+ in: path
1272
+ required: true
1273
+ schema:
1274
+ type: integer
1275
+ description: Share ID
1276
+ - $ref: "#/components/parameters/IntegerIdInPath"
1277
+ responses:
1278
+ "204":
1279
+ description: User permission deleted
1280
+ "401":
1281
+ $ref: "#/components/responses/Unauthorized"
1282
+ "404":
1283
+ $ref: "#/components/responses/NotFound"
1284
+ /api/v1/data/shares/{share_id}/group_permissions:
1285
+ get:
1286
+ tags:
1287
+ - Shares
1288
+ summary: List group permissions for a share
1289
+ operationId: listShareGroupPermissions
1290
+ parameters:
1291
+ - name: share_id
1292
+ in: path
1293
+ required: true
1294
+ schema:
1295
+ type: integer
1296
+ description: Share ID
1297
+ responses:
1298
+ "200":
1299
+ description: List of group permissions
1300
+ content:
1301
+ application/json:
1302
+ schema:
1303
+ type: array
1304
+ items:
1305
+ $ref: "#/components/schemas/ShareUserPermission"
1306
+ "401":
1307
+ $ref: "#/components/responses/Unauthorized"
1308
+ "404":
1309
+ $ref: "#/components/responses/NotFound"
1310
+ post:
1311
+ tags:
1312
+ - Shares
1313
+ summary: Create group permission for a share
1314
+ operationId: createShareGroupPermission
1315
+ parameters:
1316
+ - name: share_id
1317
+ in: path
1318
+ required: true
1319
+ schema:
1320
+ type: integer
1321
+ description: Share ID
1322
+ requestBody:
1323
+ required: true
1324
+ content:
1325
+ application/json:
1326
+ schema:
1327
+ $ref: "#/components/schemas/SharePermissionCreate"
1328
+ responses:
1329
+ "201":
1330
+ description: Group permission created
1331
+ content:
1332
+ application/json:
1333
+ schema:
1334
+ $ref: "#/components/schemas/ShareUserPermission"
1335
+ "400":
1336
+ $ref: "#/components/responses/BadRequest"
1337
+ "401":
1338
+ $ref: "#/components/responses/Unauthorized"
1339
+ /api/v1/data/shares/{share_id}/group_permissions/{id}:
1340
+ get:
1341
+ tags:
1342
+ - Shares
1343
+ summary: Get group permission for a share
1344
+ operationId: getShareGroupPermission
1345
+ parameters:
1346
+ - name: share_id
1347
+ in: path
1348
+ required: true
1349
+ schema:
1350
+ type: integer
1351
+ description: Share ID
1352
+ - $ref: "#/components/parameters/IntegerIdInPath"
1353
+ responses:
1354
+ "200":
1355
+ description: Group permission details
1356
+ content:
1357
+ application/json:
1358
+ schema:
1359
+ $ref: "#/components/schemas/ShareUserPermission"
1360
+ "401":
1361
+ $ref: "#/components/responses/Unauthorized"
1362
+ "404":
1363
+ $ref: "#/components/responses/NotFound"
1364
+ put:
1365
+ tags:
1366
+ - Shares
1367
+ summary: Update group permission for a share
1368
+ operationId: updateShareGroupPermission
1369
+ parameters:
1370
+ - name: share_id
1371
+ in: path
1372
+ required: true
1373
+ schema:
1374
+ type: integer
1375
+ description: Share ID
1376
+ - $ref: "#/components/parameters/IntegerIdInPath"
1377
+ requestBody:
1378
+ required: true
1379
+ content:
1380
+ application/json:
1381
+ schema:
1382
+ $ref: "#/components/schemas/SharePermissionCreate"
1383
+ responses:
1384
+ "200":
1385
+ description: Group permission updated
1386
+ content:
1387
+ application/json:
1388
+ schema:
1389
+ $ref: "#/components/schemas/ShareUserPermission"
1390
+ "400":
1391
+ $ref: "#/components/responses/BadRequest"
1392
+ "401":
1393
+ $ref: "#/components/responses/Unauthorized"
1394
+ "404":
1395
+ $ref: "#/components/responses/NotFound"
1396
+ delete:
1397
+ tags:
1398
+ - Shares
1399
+ summary: Delete group permission for a share
1400
+ operationId: deleteShareGroupPermission
1401
+ parameters:
1402
+ - name: share_id
1403
+ in: path
1404
+ required: true
1405
+ schema:
1406
+ type: integer
1407
+ description: Share ID
1408
+ - $ref: "#/components/parameters/IntegerIdInPath"
1409
+ responses:
1410
+ "204":
1411
+ description: Group permission deleted
1412
+ "401":
1413
+ $ref: "#/components/responses/Unauthorized"
1414
+ "404":
1415
+ $ref: "#/components/responses/NotFound"
1416
+ # Node Endpoints
1417
+ /api/v1/data/nodes:
1418
+ get:
1419
+ tags:
1420
+ - Nodes
1421
+ summary: List nodes
1422
+ description: Returns a paginated list of nodes
1423
+ operationId: listNodes
1424
+ responses:
1425
+ "200":
1426
+ description: List of nodes
1427
+ content:
1428
+ application/json:
1429
+ schema:
1430
+ type: array
1431
+ items:
1432
+ $ref: "#/components/schemas/Node"
1433
+ "401":
1434
+ $ref: "#/components/responses/Unauthorized"
1435
+ post:
1436
+ tags:
1437
+ - Nodes
1438
+ summary: Create node
1439
+ description: Creates a new node
1440
+ operationId: createNode
1441
+ requestBody:
1442
+ required: true
1443
+ content:
1444
+ application/json:
1445
+ schema:
1446
+ $ref: "#/components/schemas/NodeCreate"
1447
+ responses:
1448
+ "201":
1449
+ description: Node created
1450
+ content:
1451
+ application/json:
1452
+ schema:
1453
+ $ref: "#/components/schemas/Node"
1454
+ "400":
1455
+ $ref: "#/components/responses/BadRequest"
1456
+ "401":
1457
+ $ref: "#/components/responses/Unauthorized"
1458
+ /api/v1/data/nodes/{id}:
1459
+ get:
1460
+ tags:
1461
+ - Nodes
1462
+ summary: Get node
1463
+ description: Returns details of a specific node
1464
+ operationId: getNode
1465
+ parameters:
1466
+ - $ref: "#/components/parameters/IntegerIdInPath"
1467
+ responses:
1468
+ "200":
1469
+ description: Node details
1470
+ content:
1471
+ application/json:
1472
+ schema:
1473
+ $ref: "#/components/schemas/Node"
1474
+ "401":
1475
+ $ref: "#/components/responses/Unauthorized"
1476
+ "404":
1477
+ $ref: "#/components/responses/NotFound"
1478
+ put:
1479
+ tags:
1480
+ - Nodes
1481
+ summary: Update node
1482
+ description: Updates an existing node
1483
+ operationId: updateNode
1484
+ parameters:
1485
+ - $ref: "#/components/parameters/IntegerIdInPath"
1486
+ requestBody:
1487
+ required: true
1488
+ content:
1489
+ application/json:
1490
+ schema:
1491
+ $ref: "#/components/schemas/NodeCreate"
1492
+ responses:
1493
+ "200":
1494
+ description: Node updated
1495
+ content:
1496
+ application/json:
1497
+ schema:
1498
+ $ref: "#/components/schemas/Node"
1499
+ "400":
1500
+ $ref: "#/components/responses/BadRequest"
1501
+ "401":
1502
+ $ref: "#/components/responses/Unauthorized"
1503
+ "404":
1504
+ $ref: "#/components/responses/NotFound"
1505
+ delete:
1506
+ tags:
1507
+ - Nodes
1508
+ summary: Delete node
1509
+ description: Deletes a node
1510
+ operationId: deleteNode
1511
+ parameters:
1512
+ - $ref: "#/components/parameters/IntegerIdInPath"
1513
+ responses:
1514
+ "204":
1515
+ description: Node deleted
1516
+ "401":
1517
+ $ref: "#/components/responses/Unauthorized"
1518
+ "404":
1519
+ $ref: "#/components/responses/NotFound"
1520
+ # SMTP Server Endpoints
1521
+ /api/v1/data/smtp_server:
1522
+ get:
1523
+ tags:
1524
+ - SMTP Servers
1525
+ summary: Get SMTP server
1526
+ description: Returns the configured SMTP server
1527
+ operationId: getSmtpServer
1528
+ responses:
1529
+ "200":
1530
+ description: SMTP server details
1531
+ content:
1532
+ application/json:
1533
+ schema:
1534
+ $ref: "#/components/schemas/SmtpServer"
1535
+ "401":
1536
+ $ref: "#/components/responses/Unauthorized"
1537
+ "404":
1538
+ $ref: "#/components/responses/NotFound"
1539
+ post:
1540
+ tags:
1541
+ - SMTP Servers
1542
+ summary: Create SMTP server
1543
+ description: Configures a new SMTP server
1544
+ operationId: createSmtpServer
1545
+ requestBody:
1546
+ required: true
1547
+ content:
1548
+ application/json:
1549
+ schema:
1550
+ $ref: "#/components/schemas/SmtpServerCreate"
1551
+ responses:
1552
+ "201":
1553
+ description: SMTP server created
1554
+ content:
1555
+ application/json:
1556
+ schema:
1557
+ $ref: "#/components/schemas/SmtpServer"
1558
+ "400":
1559
+ $ref: "#/components/responses/BadRequest"
1560
+ "401":
1561
+ $ref: "#/components/responses/Unauthorized"
1562
+ put:
1563
+ tags:
1564
+ - SMTP Servers
1565
+ summary: Update SMTP server
1566
+ description: Updates the SMTP server configuration
1567
+ operationId: updateSmtpServer
1568
+ requestBody:
1569
+ required: true
1570
+ content:
1571
+ application/json:
1572
+ schema:
1573
+ $ref: "#/components/schemas/SmtpServerUpdate"
1574
+ responses:
1575
+ "200":
1576
+ description: SMTP server updated
1577
+ content:
1578
+ application/json:
1579
+ schema:
1580
+ $ref: "#/components/schemas/SmtpServer"
1581
+ "400":
1582
+ $ref: "#/components/responses/BadRequest"
1583
+ "401":
1584
+ $ref: "#/components/responses/Unauthorized"
1585
+ "404":
1586
+ $ref: "#/components/responses/NotFound"
1587
+ # Transfer Settings Endpoints
1588
+ /api/v1/data/transfer_settings:
1589
+ get:
1590
+ tags:
1591
+ - Transfer Settings
1592
+ summary: Get global transfer settings
1593
+ description: Returns global transfer settings that apply to all users and groups unless overridden
1594
+ operationId: getGlobalTransferSettings
1595
+ responses:
1596
+ "200":
1597
+ description: Global transfer settings
1598
+ content:
1599
+ application/json:
1600
+ schema:
1601
+ $ref: "#/components/schemas/TransferSettings"
1602
+ example:
1603
+ min_connect_version: "3.6.1"
1604
+ upload_target_rate: "10.0 Kbps"
1605
+ upload_target_rate_cap: null
1606
+ download_target_rate: null
1607
+ download_target_rate_cap: null
1608
+ starting_policy: ""
1609
+ allowed_policy: ""
1610
+ encryption: ""
1611
+ encryption_at_rest: ""
1612
+ "401":
1613
+ $ref: "#/components/responses/Unauthorized"
1614
+ put:
1615
+ tags:
1616
+ - Transfer Settings
1617
+ summary: Update global transfer settings
1618
+ description: |
1619
+ Updates global transfer settings. Use blank strings to indicate inherited settings.
1620
+
1621
+ Valid values:
1622
+ - starting_policy: "", "fixed", "high", "fair", "low"
1623
+ - allowed_policy: "", "fixed, high, fair, and low", "high, fair, and low", "fair and low", "low"
1624
+ - encryption: "", "Optional", "AES-128"
1625
+ - encryption_at_rest: "", "Optional", "Required"
1626
+ operationId: updateGlobalTransferSettings
1627
+ requestBody:
1628
+ required: false
1629
+ content:
1630
+ application/json:
1631
+ schema:
1632
+ $ref: "#/components/schemas/TransferSettingsUpdate"
1633
+ responses:
1634
+ "200":
1635
+ description: Transfer settings updated
1636
+ content:
1637
+ application/json:
1638
+ schema:
1639
+ $ref: "#/components/schemas/TransferSettingsResponse"
1640
+ "400":
1641
+ $ref: "#/components/responses/BadRequest"
1642
+ "401":
1643
+ $ref: "#/components/responses/Unauthorized"
1644
+ /api/v1/data/users/{id}/transfer_settings:
1645
+ get:
1646
+ tags:
1647
+ - Transfer Settings
1648
+ summary: Get user transfer settings
1649
+ description: |
1650
+ Returns transfer settings specific to a user.
1651
+ Returns 404 if the user doesn't have specific settings (inherits global settings).
1652
+ operationId: getUserTransferSettings
1653
+ parameters:
1654
+ - $ref: "#/components/parameters/IntegerIdInPath"
1655
+ responses:
1656
+ "200":
1657
+ description: User transfer settings
1658
+ content:
1659
+ application/json:
1660
+ schema:
1661
+ $ref: "#/components/schemas/UserTransferSettings"
1662
+ "401":
1663
+ $ref: "#/components/responses/Unauthorized"
1664
+ "404":
1665
+ description: User has no specific transfer settings (inherits global settings)
1666
+ put:
1667
+ tags:
1668
+ - Transfer Settings
1669
+ summary: Update user transfer settings
1670
+ description: Updates transfer settings for a specific user
1671
+ operationId: updateUserTransferSettings
1672
+ parameters:
1673
+ - $ref: "#/components/parameters/IntegerIdInPath"
1674
+ requestBody:
1675
+ required: true
1676
+ content:
1677
+ application/json:
1678
+ schema:
1679
+ $ref: "#/components/schemas/TransferSettingsUpdate"
1680
+ responses:
1681
+ "200":
1682
+ description: User transfer settings updated
1683
+ content:
1684
+ application/json:
1685
+ schema:
1686
+ $ref: "#/components/schemas/UserTransferSettings"
1687
+ "400":
1688
+ $ref: "#/components/responses/BadRequest"
1689
+ "401":
1690
+ $ref: "#/components/responses/Unauthorized"
1691
+ delete:
1692
+ tags:
1693
+ - Transfer Settings
1694
+ summary: Delete user transfer settings
1695
+ description: |
1696
+ Removes user-specific transfer settings, causing the user to inherit global settings.
1697
+ Returns 204 even if no specific settings exist.
1698
+ operationId: deleteUserTransferSettings
1699
+ parameters:
1700
+ - $ref: "#/components/parameters/IntegerIdInPath"
1701
+ responses:
1702
+ "204":
1703
+ description: User transfer settings deleted (user now inherits global settings)
1704
+ "401":
1705
+ $ref: "#/components/responses/Unauthorized"
1706
+ /api/v1/data/groups/{id}/transfer_settings:
1707
+ get:
1708
+ tags:
1709
+ - Transfer Settings
1710
+ summary: Get group transfer settings
1711
+ description: |
1712
+ Returns transfer settings specific to a group.
1713
+ Returns 404 if the group doesn't have specific settings (inherits global settings).
1714
+ operationId: getGroupTransferSettings
1715
+ parameters:
1716
+ - $ref: "#/components/parameters/IntegerIdInPath"
1717
+ responses:
1718
+ "200":
1719
+ description: Group transfer settings
1720
+ content:
1721
+ application/json:
1722
+ schema:
1723
+ $ref: "#/components/schemas/GroupTransferSettings"
1724
+ "401":
1725
+ $ref: "#/components/responses/Unauthorized"
1726
+ "404":
1727
+ description: Group has no specific transfer settings (inherits global settings)
1728
+ put:
1729
+ tags:
1730
+ - Transfer Settings
1731
+ summary: Update group transfer settings
1732
+ description: Updates transfer settings for a specific group
1733
+ operationId: updateGroupTransferSettings
1734
+ parameters:
1735
+ - $ref: "#/components/parameters/IntegerIdInPath"
1736
+ requestBody:
1737
+ required: true
1738
+ content:
1739
+ application/json:
1740
+ schema:
1741
+ $ref: "#/components/schemas/TransferSettingsUpdate"
1742
+ responses:
1743
+ "200":
1744
+ description: Group transfer settings updated
1745
+ content:
1746
+ application/json:
1747
+ schema:
1748
+ $ref: "#/components/schemas/GroupTransferSettings"
1749
+ "400":
1750
+ $ref: "#/components/responses/BadRequest"
1751
+ "401":
1752
+ $ref: "#/components/responses/Unauthorized"
1753
+ delete:
1754
+ tags:
1755
+ - Transfer Settings
1756
+ summary: Delete group transfer settings
1757
+ description: |
1758
+ Removes group-specific transfer settings, causing the group to inherit global settings.
1759
+ Returns 204 even if no specific settings exist.
1760
+ operationId: deleteGroupTransferSettings
1761
+ parameters:
1762
+ - $ref: "#/components/parameters/IntegerIdInPath"
1763
+ responses:
1764
+ "204":
1765
+ description: Group transfer settings deleted (group now inherits global settings)
1766
+ "401":
1767
+ $ref: "#/components/responses/Unauthorized"
1768
+ # Node API Endpoints
1769
+ /node_api:
1770
+ get:
1771
+ tags:
1772
+ - Information
1773
+ summary: Get Node API information
1774
+ description: Returns general information about the Node API
1775
+ operationId: getNodeApiInfo
1776
+ responses:
1777
+ "200":
1778
+ description: Node API information
1779
+ content:
1780
+ application/json:
1781
+ schema:
1782
+ type: object
1783
+ properties:
1784
+ apis:
1785
+ type: array
1786
+ items:
1787
+ type: object
1788
+ properties:
1789
+ name:
1790
+ type: string
1791
+ version:
1792
+ type: number
1793
+ url:
1794
+ type: string
1795
+ required:
1796
+ - name
1797
+ - version
1798
+ - url
1799
+ required:
1800
+ - apis
1801
+ "401":
1802
+ $ref: "#/components/responses/Unauthorized"
1803
+ /node_api/ping:
1804
+ get:
1805
+ tags:
1806
+ - Information
1807
+ summary: Ping the Node API
1808
+ description: Health check endpoint to verify Node API availability
1809
+ operationId: pingNodeApi
1810
+ security: [] # No authentication required for ping
1811
+ responses:
1812
+ "200":
1813
+ description: Successful ping. Return empty string.
1814
+ content:
1815
+ text/html:
1816
+ schema:
1817
+ type: string
1818
+ example: ""
1819
+ "401":
1820
+ $ref: "#/components/responses/Unauthorized"
1821
+ /node_api/info:
1822
+ get:
1823
+ tags:
1824
+ - Information
1825
+ summary: Get Node information
1826
+ description: Returns detailed information about the Node
1827
+ operationId: getNodeInfo
1828
+ responses:
1829
+ "200":
1830
+ description: Node information
1831
+ content:
1832
+ application/json:
1833
+ schema:
1834
+ $ref: "#/components/schemas/NodeInfo"
1835
+ "401":
1836
+ $ref: "#/components/responses/Unauthorized"
1837
+ /node_api/transfers:
1838
+ post:
1839
+ tags:
1840
+ - Node Transfers
1841
+ summary: Create transfer
1842
+ description: Initiates a new transfer
1843
+ operationId: createNodeTransfer
1844
+ requestBody:
1845
+ required: true
1846
+ content:
1847
+ application/json:
1848
+ schema:
1849
+ $ref: "#/components/schemas/TransferCreate"
1850
+ responses:
1851
+ "201":
1852
+ description: Transfer created
1853
+ content:
1854
+ application/json:
1855
+ schema:
1856
+ $ref: "#/components/schemas/Transfer"
1857
+ "400":
1858
+ $ref: "#/components/responses/BadRequest"
1859
+ "401":
1860
+ $ref: "#/components/responses/Unauthorized"
1861
+ /node_api/transfers/{id}:
1862
+ get:
1863
+ tags:
1864
+ - Node Transfers
1865
+ summary: Get transfer status
1866
+ description: Returns the status and details of a specific transfer
1867
+ operationId: getNodeTransfer
1868
+ parameters:
1869
+ - $ref: "#/components/parameters/TransferId"
1870
+ responses:
1871
+ "200":
1872
+ description: Transfer details
1873
+ content:
1874
+ application/json:
1875
+ schema:
1876
+ $ref: "#/components/schemas/Transfer"
1877
+ "401":
1878
+ $ref: "#/components/responses/Unauthorized"
1879
+ "404":
1880
+ $ref: "#/components/responses/NotFound"
1881
+ put:
1882
+ tags:
1883
+ - Node Transfers
1884
+ summary: Update transfer
1885
+ description: Updates transfer properties (e.g., pause, resume)
1886
+ operationId: updateNodeTransfer
1887
+ parameters:
1888
+ - $ref: "#/components/parameters/TransferId"
1889
+ requestBody:
1890
+ required: true
1891
+ content:
1892
+ application/json:
1893
+ schema:
1894
+ type: object
1895
+ properties:
1896
+ action:
1897
+ type: string
1898
+ enum: [pause, resume, cancel]
1899
+ responses:
1900
+ "200":
1901
+ description: Transfer updated
1902
+ content:
1903
+ application/json:
1904
+ schema:
1905
+ $ref: "#/components/schemas/Transfer"
1906
+ "400":
1907
+ $ref: "#/components/responses/BadRequest"
1908
+ "401":
1909
+ $ref: "#/components/responses/Unauthorized"
1910
+ "404":
1911
+ $ref: "#/components/responses/NotFound"
1912
+ delete:
1913
+ tags:
1914
+ - Node Transfers
1915
+ summary: Delete/cancel transfer
1916
+ description: Cancels and removes a transfer
1917
+ operationId: deleteNodeTransfer
1918
+ parameters:
1919
+ - $ref: "#/components/parameters/TransferId"
1920
+ responses:
1921
+ "204":
1922
+ description: Transfer deleted
1923
+ "401":
1924
+ $ref: "#/components/responses/Unauthorized"
1925
+ "404":
1926
+ $ref: "#/components/responses/NotFound"
1927
+ /node_api/{share}/watchds/{daemon}/subscriptions:
1928
+ post:
1929
+ tags:
1930
+ - Watch Folder
1931
+ summary: Create watchd subscription
1932
+ description: Creates a new watchd subscription for monitoring file changes
1933
+ operationId: createWatchdSubscription
1934
+ parameters:
1935
+ - name: share
1936
+ in: path
1937
+ required: true
1938
+ schema:
1939
+ type: string
1940
+ description: Share identifier
1941
+ - name: daemon
1942
+ in: path
1943
+ required: true
1944
+ schema:
1945
+ type: string
1946
+ description: Watchd daemon identifier
1947
+ requestBody:
1948
+ required: true
1949
+ content:
1950
+ application/json:
1951
+ schema:
1952
+ $ref: "#/components/schemas/WatchdSubscription"
1953
+ responses:
1954
+ "201":
1955
+ description: Subscription created
1956
+ content:
1957
+ application/json:
1958
+ schema:
1959
+ $ref: "#/components/schemas/WatchdSubscription"
1960
+ "400":
1961
+ $ref: "#/components/responses/BadRequest"
1962
+ "401":
1963
+ $ref: "#/components/responses/Unauthorized"
1964
+ /node_api/{share}/watchds/{daemon}/subscriptions/{subscription}:
1965
+ put:
1966
+ tags:
1967
+ - Watch Folder
1968
+ summary: Update watchd subscription
1969
+ description: Updates an existing watchd subscription
1970
+ operationId: updateWatchdSubscription
1971
+ parameters:
1972
+ - name: share
1973
+ in: path
1974
+ required: true
1975
+ schema:
1976
+ type: string
1977
+ description: Share identifier
1978
+ - name: daemon
1979
+ in: path
1980
+ required: true
1981
+ schema:
1982
+ type: string
1983
+ description: Watchd daemon identifier
1984
+ - name: subscription
1985
+ in: path
1986
+ required: true
1987
+ schema:
1988
+ type: string
1989
+ description: Subscription identifier
1990
+ requestBody:
1991
+ required: true
1992
+ content:
1993
+ application/json:
1994
+ schema:
1995
+ $ref: "#/components/schemas/WatchdSubscription"
1996
+ responses:
1997
+ "200":
1998
+ description: Subscription updated
1999
+ content:
2000
+ application/json:
2001
+ schema:
2002
+ $ref: "#/components/schemas/WatchdSubscription"
2003
+ "400":
2004
+ $ref: "#/components/responses/BadRequest"
2005
+ "401":
2006
+ $ref: "#/components/responses/Unauthorized"
2007
+ "404":
2008
+ $ref: "#/components/responses/NotFound"
2009
+ /node_api/{share}/watchds/{daemon}/subscriptions/{subscription}/snapshots:
2010
+ post:
2011
+ tags:
2012
+ - Watch Folder
2013
+ summary: Create watchd snapshot
2014
+ description: Creates a snapshot for a watchd subscription
2015
+ operationId: createWatchdSnapshot
2016
+ parameters:
2017
+ - name: share
2018
+ in: path
2019
+ required: true
2020
+ schema:
2021
+ type: string
2022
+ description: Share identifier
2023
+ - name: daemon
2024
+ in: path
2025
+ required: true
2026
+ schema:
2027
+ type: string
2028
+ description: Watchd daemon identifier
2029
+ - name: subscription
2030
+ in: path
2031
+ required: true
2032
+ schema:
2033
+ type: string
2034
+ description: Subscription identifier
2035
+ requestBody:
2036
+ content:
2037
+ application/json:
2038
+ schema:
2039
+ type: object
2040
+ responses:
2041
+ "201":
2042
+ description: Snapshot created
2043
+ content:
2044
+ application/json:
2045
+ schema:
2046
+ type: object
2047
+ "400":
2048
+ $ref: "#/components/responses/BadRequest"
2049
+ "401":
2050
+ $ref: "#/components/responses/Unauthorized"
2051
+ /node_api/{share}/watchds/{daemon}/subscriptions/{subscription}/results:
2052
+ post:
2053
+ tags:
2054
+ - Watch Folder
2055
+ summary: Create watchd result
2056
+ description: Creates a result entry for a watchd subscription
2057
+ operationId: createWatchdResult
2058
+ parameters:
2059
+ - name: share
2060
+ in: path
2061
+ required: true
2062
+ schema:
2063
+ type: string
2064
+ description: Share identifier
2065
+ - name: daemon
2066
+ in: path
2067
+ required: true
2068
+ schema:
2069
+ type: string
2070
+ description: Watchd daemon identifier
2071
+ - name: subscription
2072
+ in: path
2073
+ required: true
2074
+ schema:
2075
+ type: string
2076
+ description: Subscription identifier
2077
+ requestBody:
2078
+ required: true
2079
+ content:
2080
+ application/json:
2081
+ schema:
2082
+ type: object
2083
+ responses:
2084
+ "201":
2085
+ description: Result created
2086
+ content:
2087
+ application/json:
2088
+ schema:
2089
+ type: object
2090
+ "400":
2091
+ $ref: "#/components/responses/BadRequest"
2092
+ "401":
2093
+ $ref: "#/components/responses/Unauthorized"
2094
+ /node_api/{share}/watchds/{daemon}/subscriptions/{subscription}/results/{result}:
2095
+ get:
2096
+ tags:
2097
+ - Watch Folder
2098
+ summary: Get watchd result
2099
+ description: Retrieves a specific watchd result
2100
+ operationId: getWatchdResult
2101
+ parameters:
2102
+ - name: share
2103
+ in: path
2104
+ required: true
2105
+ schema:
2106
+ type: string
2107
+ description: Share identifier
2108
+ - name: daemon
2109
+ in: path
2110
+ required: true
2111
+ schema:
2112
+ type: string
2113
+ description: Watchd daemon identifier
2114
+ - name: subscription
2115
+ in: path
2116
+ required: true
2117
+ schema:
2118
+ type: string
2119
+ description: Subscription identifier
2120
+ - name: result
2121
+ in: path
2122
+ required: true
2123
+ schema:
2124
+ type: string
2125
+ description: Result identifier
2126
+ responses:
2127
+ "200":
2128
+ description: Result details
2129
+ content:
2130
+ application/json:
2131
+ schema:
2132
+ type: object
2133
+ "401":
2134
+ $ref: "#/components/responses/Unauthorized"
2135
+ "404":
2136
+ $ref: "#/components/responses/NotFound"
2137
+ delete:
2138
+ tags:
2139
+ - Watch Folder
2140
+ summary: Delete watchd result
2141
+ description: Deletes a watchd result
2142
+ operationId: deleteWatchdResult
2143
+ parameters:
2144
+ - name: share
2145
+ in: path
2146
+ required: true
2147
+ schema:
2148
+ type: string
2149
+ description: Share identifier
2150
+ - name: daemon
2151
+ in: path
2152
+ required: true
2153
+ schema:
2154
+ type: string
2155
+ description: Watchd daemon identifier
2156
+ - name: subscription
2157
+ in: path
2158
+ required: true
2159
+ schema:
2160
+ type: string
2161
+ description: Subscription identifier
2162
+ - name: result
2163
+ in: path
2164
+ required: true
2165
+ schema:
2166
+ type: string
2167
+ description: Result identifier
2168
+ responses:
2169
+ "204":
2170
+ description: Result deleted
2171
+ "401":
2172
+ $ref: "#/components/responses/Unauthorized"
2173
+ "404":
2174
+ $ref: "#/components/responses/NotFound"
2175
+ /node_api/space:
2176
+ post:
2177
+ tags:
2178
+ - Files
2179
+ summary: Get space information
2180
+ description:
2181
+ "Get the total and available space for the file system, drives\
2182
+ \ or partitions (logical or physical) that host one or more queried paths."
2183
+ operationId: getSpaceInfo
2184
+ requestBody:
2185
+ description: The request body with an array of paths.
2186
+ content:
2187
+ application/json:
2188
+ schema:
2189
+ $ref: "#/components/schemas/space-post-request"
2190
+ required: true
2191
+ responses:
2192
+ "200":
2193
+ description: OK
2194
+ content:
2195
+ application/json:
2196
+ schema:
2197
+ $ref: "#/components/schemas/space-post-200"
2198
+ "400":
2199
+ description: Bad Request. Request contains a formatting or syntax error.
2200
+ content:
2201
+ application/json:
2202
+ schema:
2203
+ $ref: "#/components/schemas/error"
2204
+ "500":
2205
+ description: Internal Server Error. The server configuration is invalid.
2206
+ content:
2207
+ application/json:
2208
+ schema:
2209
+ $ref: "#/components/schemas/error"
2210
+ /node_api/files/browse:
2211
+ post:
2212
+ tags:
2213
+ - Files
2214
+ summary: Browse the specified path
2215
+ description: Retrieve metadata about the contents of the specified path.
2216
+ operationId: browseFiles
2217
+ requestBody:
2218
+ content:
2219
+ application/json:
2220
+ schema:
2221
+ $ref: "#/components/schemas/filesBrowseRequest"
2222
+ required: true
2223
+ responses:
2224
+ "200":
2225
+ description: OK - Successful response
2226
+ content:
2227
+ application/json:
2228
+ schema:
2229
+ $ref: "#/components/schemas/filesBrowseResponse"
2230
+ "400":
2231
+ description: Bad Request. Request contains a formatting or syntax error.
2232
+ content:
2233
+ application/json:
2234
+ schema:
2235
+ $ref: "#/components/schemas/error"
2236
+ "500":
2237
+ description: Internal Server Error. The server configuration is invalid.
2238
+ content:
2239
+ application/json:
2240
+ schema:
2241
+ $ref: "#/components/schemas/error"
2242
+ /node_api/files/info:
2243
+ post:
2244
+ tags:
2245
+ - Files
2246
+ summary: Get metadata for specified paths
2247
+ description:
2248
+ "Get metadata for the files and directories that are specified in an\
2249
+ \ array of paths. To get file information by\
2250
+ \ using bearer token authentication, use the /files/{id} endpoint."
2251
+ operationId: getFileInfo
2252
+ requestBody:
2253
+ description: An array of pathnames for which to return file metadata.
2254
+ content:
2255
+ application/json:
2256
+ schema:
2257
+ $ref: "#/components/schemas/files-info-post-request"
2258
+ required: true
2259
+ responses:
2260
+ "200":
2261
+ description: OK
2262
+ content:
2263
+ application/json:
2264
+ schema:
2265
+ $ref: "#/components/schemas/files-info-post-200"
2266
+ "400":
2267
+ description: Bad Request. Request contains a formatting or syntax error.
2268
+ content:
2269
+ application/json:
2270
+ schema:
2271
+ $ref: "#/components/schemas/error"
2272
+ "404":
2273
+ description: Not Found. Invalid pathname.
2274
+ content:
2275
+ application/json:
2276
+ schema:
2277
+ $ref: "#/components/schemas/error"
2278
+ "500":
2279
+ description: Internal Server Error. The server configuration is invalid.
2280
+ content:
2281
+ application/json:
2282
+ schema:
2283
+ $ref: "#/components/schemas/error"
2284
+ /node_api/files/create:
2285
+ post:
2286
+ tags:
2287
+ - Files
2288
+ summary: Create files and directories
2289
+ description: All requests to this endpoint use the same headers.
2290
+ operationId: createFile
2291
+ requestBody:
2292
+ description:
2293
+ "An array of pathnames to create and the type of object (directory,\
2294
+ \ file, or symbolic link)."
2295
+ content:
2296
+ application/json:
2297
+ schema:
2298
+ $ref: "#/components/schemas/files-create-post-request"
2299
+ required: true
2300
+ responses:
2301
+ "200":
2302
+ description: OK
2303
+ content:
2304
+ application/json:
2305
+ schema:
2306
+ $ref: "#/components/schemas/files-create-post-200"
2307
+ "400":
2308
+ description: Bad Request. Request contains a formatting or syntax error.
2309
+ content:
2310
+ application/json:
2311
+ schema:
2312
+ $ref: "#/components/schemas/error"
2313
+ "404":
2314
+ description: Not Found. Invalid pathname.
2315
+ content:
2316
+ application/json:
2317
+ schema:
2318
+ $ref: "#/components/schemas/error"
2319
+ "409":
2320
+ description: Conflict. Path already exists.
2321
+ content:
2322
+ application/json:
2323
+ schema:
2324
+ $ref: "#/components/schemas/error"
2325
+ "500":
2326
+ description: Internal Server Error. The server configuration is invalid.
2327
+ content:
2328
+ application/json:
2329
+ schema:
2330
+ $ref: "#/components/schemas/error"
2331
+ /node_api/files/rename:
2332
+ post:
2333
+ tags:
2334
+ - Files
2335
+ summary: Rename files and directories
2336
+ description: Rename files and directories
2337
+ operationId: renameFile
2338
+ requestBody:
2339
+ description: An array of pathnames, with their current and new names.
2340
+ content:
2341
+ application/json:
2342
+ schema:
2343
+ $ref: "#/components/schemas/files-rename-post-request"
2344
+ required: true
2345
+ responses:
2346
+ "200":
2347
+ description: OK. If an error occurred performing the rename operation for a specific path, the error is returned as part of the response element for that path.
2348
+ content:
2349
+ application/json:
2350
+ schema:
2351
+ $ref: "#/components/schemas/files-rename-post-200"
2352
+ "400":
2353
+ description: Bad Request. Request contains a formatting or syntax error.
2354
+ content:
2355
+ application/json:
2356
+ schema:
2357
+ $ref: "#/components/schemas/error"
2358
+ "500":
2359
+ description: Internal Server Error. The server configuration is invalid.
2360
+ content:
2361
+ application/json:
2362
+ schema:
2363
+ $ref: "#/components/schemas/error"
2364
+ /node_api/files/delete:
2365
+ post:
2366
+ tags:
2367
+ - Files
2368
+ summary: Delete files and directories
2369
+ description: Delete file and directories
2370
+ operationId: deleteFiles
2371
+ requestBody:
2372
+ description:
2373
+ "An array of pathnames to delete. For directories, specify the\
2374
+ \ behavior for deleting non-empty directories."
2375
+ content:
2376
+ application/json:
2377
+ schema:
2378
+ $ref: "#/components/schemas/files-delete-post-request"
2379
+ required: true
2380
+ responses:
2381
+ "200":
2382
+ description:
2383
+ "OK. Pathnames from the request are returned. If a pathname\
2384
+ \ could not be deleted, it is followed by an error message."
2385
+ content:
2386
+ application/json:
2387
+ schema:
2388
+ $ref: "#/components/schemas/files-delete-post-200"
2389
+ "400":
2390
+ description: Bad Request. Request contains a formatting or syntax error.
2391
+ content:
2392
+ application/json:
2393
+ schema:
2394
+ $ref: "#/components/schemas/error"
2395
+ "403":
2396
+ description:
2397
+ Forbidden. The directory cannot be deleted because it contains
2398
+ files that are in use.
2399
+ content:
2400
+ application/json:
2401
+ schema:
2402
+ $ref: "#/components/schemas/error"
2403
+ "404":
2404
+ description: Not Found. The file could not be found.
2405
+ content:
2406
+ application/json:
2407
+ schema:
2408
+ $ref: "#/components/schemas/error"
2409
+ "409":
2410
+ description:
2411
+ Directory Not Empty. The directory is not empty and "recursive_delete"
2412
+ is set to "false".
2413
+ content:
2414
+ application/json:
2415
+ schema:
2416
+ $ref: "#/components/schemas/error"
2417
+ "500":
2418
+ description: Internal Server Error. The server configuration is invalid.
2419
+ content:
2420
+ application/json:
2421
+ schema:
2422
+ $ref: "#/components/schemas/error"
2423
+ /node_api/files/upload_setup:
2424
+ post:
2425
+ tags:
2426
+ - Files
2427
+ summary: Create an upload transfer specification with token
2428
+ description:
2429
+ "FASP transfers can use transfer tokens to authorize the transfer.\
2430
+ Transfer tokens are the most restrictive of the tokens and require careful\
2431
+ configuration. Token expiration is configurable on HSTS/HSTE. \
2432
+ Note: Transfer specifications that are set in aspera.conf overwrite the \
2433
+ corresponding values in the request body when the token is created."
2434
+ operationId: setupUpload
2435
+ requestBody:
2436
+ description: The upload token configuration.
2437
+ content:
2438
+ application/json:
2439
+ schema:
2440
+ $ref: "#/components/schemas/files-upload_setup-post-request"
2441
+ required: true
2442
+ responses:
2443
+ "200":
2444
+ description: OK
2445
+ content:
2446
+ application/json:
2447
+ schema:
2448
+ $ref: "#/components/schemas/files-upload_setup-post-200"
2449
+ "400":
2450
+ description: Bad Request. Request contains a formatting or syntax error.
2451
+ content:
2452
+ application/json:
2453
+ schema:
2454
+ $ref: "#/components/schemas/error"
2455
+ "404":
2456
+ description: Not Found. Invalid pathnames.
2457
+ content:
2458
+ application/json:
2459
+ schema:
2460
+ $ref: "#/components/schemas/error"
2461
+ "500":
2462
+ description: Internal Server Error. The server configuration is invalid.
2463
+ content:
2464
+ application/json:
2465
+ schema:
2466
+ $ref: "#/components/schemas/error"
2467
+ /node_api/files/sync_setup:
2468
+ post:
2469
+ tags:
2470
+ - Files
2471
+ summary: Create a sync setup
2472
+ description: Returns a transfer specification for sync operations
2473
+ operationId: setupSync
2474
+ requestBody:
2475
+ required: true
2476
+ content:
2477
+ application/json:
2478
+ schema:
2479
+ type: object
2480
+ responses:
2481
+ "200":
2482
+ description: Sync setup response
2483
+ content:
2484
+ application/json:
2485
+ schema:
2486
+ type: object
2487
+ "400":
2488
+ description: Bad Request
2489
+ "401":
2490
+ $ref: "#/components/responses/Unauthorized"
2491
+ /node_api/files/download_setup:
2492
+ post:
2493
+ tags:
2494
+ - Files
2495
+ summary: Create a download transfer specification with token
2496
+ description:
2497
+ FASP transfers can use transfer tokens to authorize the transfer.
2498
+ Transfer tokens are the most restrictive of the tokens and require careful
2499
+ configuration. Token expiration is configurable on HSTS/HSTE.
2500
+ operationId: setupDownload
2501
+ requestBody:
2502
+ description: The download token configuration.
2503
+ content:
2504
+ application/json:
2505
+ schema:
2506
+ $ref: "#/components/schemas/files-download_setup-post-request"
2507
+ required: true
2508
+ responses:
2509
+ "200":
2510
+ description: OK
2511
+ content:
2512
+ application/json:
2513
+ schema:
2514
+ $ref: "#/components/schemas/files-download_setup-post-200"
2515
+ "400":
2516
+ description: Bad Request. Request contains a formatting or syntax error.
2517
+ content:
2518
+ application/json:
2519
+ schema:
2520
+ $ref: "#/components/schemas/error"
2521
+ "404":
2522
+ description: Not Found. Invalid pathnames.
2523
+ content:
2524
+ application/json:
2525
+ schema:
2526
+ $ref: "#/components/schemas/error"
2527
+ "500":
2528
+ description: Internal Server Error. The server configuration is invalid.
2529
+ content:
2530
+ application/json:
2531
+ schema:
2532
+ $ref: "#/components/schemas/error"
2533
+ components:
2534
+ securitySchemes:
2535
+ basicAuth:
2536
+ type: http
2537
+ scheme: basic
2538
+ description: HTTP Basic Authentication with username and password
2539
+ parameters:
2540
+ IntegerIdInPath:
2541
+ name: id
2542
+ in: path
2543
+ required: true
2544
+ schema:
2545
+ type: integer
2546
+ description: Entity ID
2547
+ TransferId:
2548
+ name: id
2549
+ in: path
2550
+ required: true
2551
+ schema:
2552
+ type: string
2553
+ description: Transfer ID
2554
+ schemas:
2555
+ # User Schemas
2556
+ AuthorizableUser:
2557
+ type: object
2558
+ required:
2559
+ - id
2560
+ - username
2561
+ - email
2562
+ - directory_id
2563
+ - disabled
2564
+ - locked
2565
+ - home_share_disabled
2566
+ - items_per_page
2567
+ - notify_on_my_share_authorization
2568
+ - notify_on_self_registration_request
2569
+ - notify_on_share_authorization
2570
+ - notify_on_transfer_complete
2571
+ - suppress_connect_install_dialog
2572
+ - created_at
2573
+ - updated_at
2574
+ - urn
2575
+ - directory_user
2576
+ properties:
2577
+ account_expires_on:
2578
+ type: string
2579
+ format: date-time
2580
+ nullable: true
2581
+ comments:
2582
+ type: string
2583
+ nullable: true
2584
+ created_at:
2585
+ type: string
2586
+ format: date-time
2587
+ example: 2016-06-14T18:12:46Z
2588
+ date_delimiter:
2589
+ type: string
2590
+ nullable: true
2591
+ date_order:
2592
+ type: string
2593
+ nullable: true
2594
+ directory_id:
2595
+ type: integer
2596
+ format: int32
2597
+ example: 44
2598
+ disabled:
2599
+ type: boolean
2600
+ example: false
2601
+ email:
2602
+ type: string
2603
+ format: email
2604
+ example: demo@asperasoft.com
2605
+ first_name:
2606
+ type: string
2607
+ nullable: true
2608
+ home_share_disabled:
2609
+ type: boolean
2610
+ example: false
2611
+ home_share_id:
2612
+ type: integer
2613
+ format: int32
2614
+ nullable: true
2615
+ id:
2616
+ type: integer
2617
+ format: int32
2618
+ example: 130
2619
+ items_per_page:
2620
+ type: integer
2621
+ format: int32
2622
+ example: 50
2623
+ last_login_at:
2624
+ type: string
2625
+ format: date-time
2626
+ nullable: true
2627
+ last_logout_at:
2628
+ type: string
2629
+ format: date-time
2630
+ nullable: true
2631
+ last_name:
2632
+ type: string
2633
+ nullable: true
2634
+ last_request_at:
2635
+ type: string
2636
+ format: date-time
2637
+ nullable: true
2638
+ locked:
2639
+ type: boolean
2640
+ example: false
2641
+ notify_on_my_share_authorization:
2642
+ type: boolean
2643
+ notify_on_self_registration_request:
2644
+ type: boolean
2645
+ notify_on_share_authorization:
2646
+ type: boolean
2647
+ notify_on_transfer_complete:
2648
+ type: boolean
2649
+ number_delimiter:
2650
+ type: string
2651
+ nullable: true
2652
+ number_separator:
2653
+ type: string
2654
+ nullable: true
2655
+ status:
2656
+ type: string
2657
+ nullable: true
2658
+ status_at:
2659
+ type: string
2660
+ format: date-time
2661
+ nullable: true
2662
+ status_message:
2663
+ type: string
2664
+ nullable: true
2665
+ suppress_connect_install_dialog:
2666
+ type: boolean
2667
+ synced_at:
2668
+ type: string
2669
+ format: date-time
2670
+ nullable: true
2671
+ time_format:
2672
+ type: string
2673
+ nullable: true
2674
+ time_zone:
2675
+ type: string
2676
+ nullable: true
2677
+ unlocked_at:
2678
+ type: string
2679
+ format: date-time
2680
+ nullable: true
2681
+ updated_at:
2682
+ type: string
2683
+ format: date-time
2684
+ example: 2016-06-14T18:12:46Z
2685
+ urn:
2686
+ type: string
2687
+ example: urn:user:ZGF0YWJhc2UsbG9jYWwsODUK
2688
+ username:
2689
+ type: string
2690
+ example: apiuser
2691
+ directory_user:
2692
+ oneOf:
2693
+ - type: object
2694
+ properties:
2695
+ type:
2696
+ type: string
2697
+ enum: [database]
2698
+ local_user_id:
2699
+ type: integer
2700
+ required:
2701
+ - local_user_id
2702
+ - type
2703
+ - type: object
2704
+ properties:
2705
+ type:
2706
+ type: string
2707
+ enum: [saml]
2708
+ required:
2709
+ - type
2710
+ - type: object
2711
+ properties:
2712
+ type:
2713
+ type: string
2714
+ enum: [active_directory]
2715
+ required:
2716
+ - type
2717
+ additionalProperties: false
2718
+ LocalUser:
2719
+ type: object
2720
+ required:
2721
+ - id
2722
+ - username
2723
+ - email
2724
+ - created_at
2725
+ - updated_at
2726
+ - password_status
2727
+ properties:
2728
+ created_at:
2729
+ type: string
2730
+ format: date-time
2731
+ example: 2016-06-14T18:12:46Z
2732
+ email:
2733
+ type: string
2734
+ format: email
2735
+ example: demo@asperasoft.com
2736
+ first_name:
2737
+ type: string
2738
+ nullable: true
2739
+ id:
2740
+ type: integer
2741
+ format: int32
2742
+ example: 130
2743
+ last_name:
2744
+ type: string
2745
+ nullable: true
2746
+ login_token:
2747
+ type: string
2748
+ nullable: true
2749
+ login_token_expires_at:
2750
+ type: string
2751
+ format: date-time
2752
+ nullable: true
2753
+ password_changed_on:
2754
+ type: string
2755
+ format: date-time
2756
+ nullable: true
2757
+ password_status:
2758
+ type: string
2759
+ enum: [never set, expired, expiring_soon, reset_required]
2760
+ updated_at:
2761
+ type: string
2762
+ format: date-time
2763
+ example: 2016-06-14T18:12:46Z
2764
+ username:
2765
+ type: string
2766
+ example: apiuser
2767
+ user_id:
2768
+ type: integer
2769
+ format: int32
2770
+ example: 130
2771
+ additionalProperties: false
2772
+ LocalUserCreate:
2773
+ type: object
2774
+ required:
2775
+ - username
2776
+ - email
2777
+ properties:
2778
+ username:
2779
+ type: string
2780
+ minLength: 3
2781
+ maxLength: 50
2782
+ example: johndoe
2783
+ password:
2784
+ type: string
2785
+ format: password
2786
+ minLength: 8
2787
+ email:
2788
+ type: string
2789
+ format: email
2790
+ example: john.doe@example.com
2791
+ first_name:
2792
+ type: string
2793
+ example: John
2794
+ last_name:
2795
+ type: string
2796
+ example: Doe
2797
+ send_welcome_email:
2798
+ type: boolean
2799
+ default: false
2800
+ description: |
2801
+ `send_welcome_email` with `password` triggers 'Login information' email with 'Login' link
2802
+ while it alone triggers 'Login information' email with 'Change password' link.
2803
+ LocalUserUpdate:
2804
+ type: object
2805
+ properties:
2806
+ username:
2807
+ type: string
2808
+ minLength: 3
2809
+ maxLength: 50
2810
+ example: johndoe
2811
+ password:
2812
+ type: string
2813
+ format: password
2814
+ minLength: 8
2815
+ email:
2816
+ type: string
2817
+ format: email
2818
+ example: john.doe@example.com
2819
+ first_name:
2820
+ type: string
2821
+ example: John
2822
+ last_name:
2823
+ type: string
2824
+ example: Doe
2825
+ LDAPUserCreate:
2826
+ type: object
2827
+ required:
2828
+ - user
2829
+ properties:
2830
+ user:
2831
+ type: string
2832
+ example: johndoe
2833
+ SAMLUserImport:
2834
+ type: object
2835
+ required:
2836
+ - id
2837
+ - name_id
2838
+ properties:
2839
+ id:
2840
+ type: string
2841
+ example: johndoe
2842
+ name_id:
2843
+ type: string
2844
+ email:
2845
+ type: string
2846
+ format: email
2847
+ example: john.doe@example.com
2848
+ given_name:
2849
+ type: string
2850
+ example: John
2851
+ surname:
2852
+ type: string
2853
+ example: Doe
2854
+ # Group Schemas
2855
+ Group:
2856
+ type: object
2857
+ properties:
2858
+ id:
2859
+ type: integer
2860
+ example: 456
2861
+ name:
2862
+ type: string
2863
+ example: Engineering
2864
+ description:
2865
+ type: string
2866
+ example: Engineering department group
2867
+ member_count:
2868
+ type: integer
2869
+ description: Number of members in the group
2870
+ created_at:
2871
+ type: string
2872
+ format: date-time
2873
+ updated_at:
2874
+ type: string
2875
+ format: date-time
2876
+ GroupCreate:
2877
+ type: object
2878
+ required:
2879
+ - name
2880
+ properties:
2881
+ name:
2882
+ type: string
2883
+ minLength: 1
2884
+ maxLength: 100
2885
+ description:
2886
+ type: string
2887
+ GroupUpdate:
2888
+ type: object
2889
+ properties:
2890
+ name:
2891
+ type: string
2892
+ minLength: 1
2893
+ maxLength: 100
2894
+ description:
2895
+ type: string
2896
+ # Share Schemas
2897
+ Share:
2898
+ type: object
2899
+ properties:
2900
+ id:
2901
+ type: integer
2902
+ example: 789
2903
+ name:
2904
+ type: string
2905
+ example: Project Files
2906
+ description:
2907
+ type: string
2908
+ node_id:
2909
+ type: integer
2910
+ description: Associated node ID
2911
+ path:
2912
+ type: string
2913
+ description: Share root path
2914
+ example: /shares/project
2915
+ created_by:
2916
+ type: integer
2917
+ description: User ID of creator
2918
+ created_at:
2919
+ type: string
2920
+ format: date-time
2921
+ updated_at:
2922
+ type: string
2923
+ format: date-time
2924
+ ShareCreate:
2925
+ type: object
2926
+ required:
2927
+ - name
2928
+ - node_id
2929
+ properties:
2930
+ name:
2931
+ type: string
2932
+ minLength: 1
2933
+ description:
2934
+ type: string
2935
+ node_id:
2936
+ type: integer
2937
+ path:
2938
+ type: string
2939
+ ShareUpdate:
2940
+ type: object
2941
+ properties:
2942
+ name:
2943
+ type: string
2944
+ description:
2945
+ type: string
2946
+ path:
2947
+ type: string
2948
+ # Node Schemas
2949
+ Node:
2950
+ type: object
2951
+ required:
2952
+ - api_port
2953
+ - api_username
2954
+ - browse_count
2955
+ - bytes_unknown
2956
+ - created_at
2957
+ - host
2958
+ - id
2959
+ - name
2960
+ - open_timeout
2961
+ - ref_uuid
2962
+ - salt
2963
+ - ssl
2964
+ - sync_enabled
2965
+ - timeout
2966
+ - updated_at
2967
+ - verify_ssl
2968
+ properties:
2969
+ api_port:
2970
+ type: integer
2971
+ format: int32
2972
+ example: 9092
2973
+ api_prefix:
2974
+ type: string
2975
+ nullable: true
2976
+ api_username:
2977
+ type: string
2978
+ example: loc1
2979
+ azu_access_key:
2980
+ type: string
2981
+ nullable: true
2982
+ azu_path:
2983
+ type: string
2984
+ nullable: true
2985
+ azu_storage_account:
2986
+ type: string
2987
+ nullable: true
2988
+ browse_count:
2989
+ type: integer
2990
+ format: int32
2991
+ example: 0
2992
+ bytes_free_string:
2993
+ type: string
2994
+ nullable: true
2995
+ bytes_total_string:
2996
+ type: string
2997
+ nullable: true
2998
+ bytes_unknown:
2999
+ type: boolean
3000
+ example: false
3001
+ cluster_uuid:
3002
+ type: string
3003
+ format: uuid
3004
+ nullable: true
3005
+ created_at:
3006
+ type: string
3007
+ format: date-time
3008
+ example: 2016-05-03T18:12:56Z
3009
+ docroot:
3010
+ type: string
3011
+ nullable: true
3012
+ error_bytes_free_size:
3013
+ type: integer
3014
+ format: int64
3015
+ nullable: true
3016
+ error_percent_free:
3017
+ type: number
3018
+ format: float
3019
+ nullable: true
3020
+ host:
3021
+ type: string
3022
+ example: 192.168.10.40
3023
+ http_fallback_port:
3024
+ type: integer
3025
+ format: int32
3026
+ nullable: true
3027
+ id:
3028
+ type: integer
3029
+ format: int32
3030
+ example: 3
3031
+ name:
3032
+ type: string
3033
+ example: client
3034
+ open_timeout:
3035
+ type: integer
3036
+ format: int32
3037
+ example: 10
3038
+ percent_free:
3039
+ type: number
3040
+ format: float
3041
+ nullable: true
3042
+ ref_uuid:
3043
+ type: string
3044
+ format: uuid
3045
+ example: 6138aeec-4cf3-4fa1-8d77-1d4b659db9fa
3046
+ root_response:
3047
+ type: string
3048
+ nullable: true
3049
+ salt:
3050
+ type: string
3051
+ example: 02757fd5fb6d74b3d67d
3052
+ sas_path:
3053
+ type: string
3054
+ nullable: true
3055
+ sas_url:
3056
+ type: string
3057
+ format: uri
3058
+ nullable: true
3059
+ ssh_port:
3060
+ type: integer
3061
+ format: int32
3062
+ nullable: true
3063
+ ssl:
3064
+ type: boolean
3065
+ example: true
3066
+ status:
3067
+ type: string
3068
+ nullable: true
3069
+ status_at:
3070
+ type: string
3071
+ format: date-time
3072
+ nullable: true
3073
+ status_message:
3074
+ type: string
3075
+ nullable: true
3076
+ storage_type:
3077
+ type: string
3078
+ nullable: true
3079
+ sync_enabled:
3080
+ type: boolean
3081
+ example: false
3082
+ timeout:
3083
+ type: integer
3084
+ format: int32
3085
+ example: 30
3086
+ updated_at:
3087
+ type: string
3088
+ format: date-time
3089
+ example: 2016-05-03T18:12:56Z
3090
+ verify_ssl:
3091
+ type: boolean
3092
+ example: false
3093
+ warn_bytes_free_size:
3094
+ type: integer
3095
+ format: int64
3096
+ nullable: true
3097
+ warn_percent_free:
3098
+ type: number
3099
+ format: float
3100
+ nullable: true
3101
+ ShareUserPermission:
3102
+ type: object
3103
+ required:
3104
+ - browse_permission
3105
+ - content_availability_permission
3106
+ - created_at
3107
+ - delete_permission
3108
+ - download_permission
3109
+ - id
3110
+ - manage_permission
3111
+ - mkdir_permission
3112
+ - rename_permission
3113
+ - share_id
3114
+ - updated_at
3115
+ - upload_permission
3116
+ - user_id
3117
+ properties:
3118
+ browse_permission:
3119
+ type: boolean
3120
+ example: true
3121
+ content_availability_permission:
3122
+ type: boolean
3123
+ example: true
3124
+ created_at:
3125
+ type: string
3126
+ format: date-time
3127
+ example: 2016-05-03T18:12:56Z
3128
+ delete_permission:
3129
+ type: boolean
3130
+ example: true
3131
+ download_permission:
3132
+ type: boolean
3133
+ example: true
3134
+ id:
3135
+ type: integer
3136
+ format: int32
3137
+ example: 14
3138
+ last_viewed_at:
3139
+ type: string
3140
+ format: date-time
3141
+ nullable: true
3142
+ last_viewed_comments_at:
3143
+ type: string
3144
+ format: date-time
3145
+ nullable: true
3146
+ manage_permission:
3147
+ type: boolean
3148
+ example: true
3149
+ mkdir_permission:
3150
+ type: boolean
3151
+ example: true
3152
+ rename_permission:
3153
+ type: boolean
3154
+ example: true
3155
+ share_id:
3156
+ type: integer
3157
+ format: int32
3158
+ example: 11
3159
+ updated_at:
3160
+ type: string
3161
+ format: date-time
3162
+ example: 2016-05-03T18:12:56Z
3163
+ upload_permission:
3164
+ type: boolean
3165
+ example: true
3166
+ user_id:
3167
+ type: integer
3168
+ format: int32
3169
+ example: 24
3170
+ additionalProperties: false
3171
+ SharePermissionCreate:
3172
+ type: object
3173
+ description: Fields to set when creating or updating a share permission
3174
+ properties:
3175
+ user_id:
3176
+ type: integer
3177
+ format: int32
3178
+ description: User ID (for user permissions)
3179
+ group_id:
3180
+ type: integer
3181
+ format: int32
3182
+ description: Group ID (for group permissions)
3183
+ browse_permission:
3184
+ type: boolean
3185
+ download_permission:
3186
+ type: boolean
3187
+ upload_permission:
3188
+ type: boolean
3189
+ delete_permission:
3190
+ type: boolean
3191
+ mkdir_permission:
3192
+ type: boolean
3193
+ rename_permission:
3194
+ type: boolean
3195
+ manage_permission:
3196
+ type: boolean
3197
+ content_availability_permission:
3198
+ type: boolean
3199
+ LocalGroup:
3200
+ type: object
3201
+ properties:
3202
+ id:
3203
+ type: integer
3204
+ format: int32
3205
+ example: 10
3206
+ name:
3207
+ type: string
3208
+ example: engineers
3209
+ description:
3210
+ type: string
3211
+ nullable: true
3212
+ created_at:
3213
+ type: string
3214
+ format: date-time
3215
+ updated_at:
3216
+ type: string
3217
+ format: date-time
3218
+ additionalProperties: false
3219
+ LocalGroupCreate:
3220
+ type: object
3221
+ required:
3222
+ - name
3223
+ properties:
3224
+ name:
3225
+ type: string
3226
+ example: engineers
3227
+ description:
3228
+ type: string
3229
+ LocalGroupUpdate:
3230
+ type: object
3231
+ properties:
3232
+ name:
3233
+ type: string
3234
+ example: engineers
3235
+ description:
3236
+ type: string
3237
+ LdapConfig:
3238
+ type: object
3239
+ properties:
3240
+ id:
3241
+ type: integer
3242
+ format: int32
3243
+ host:
3244
+ type: string
3245
+ port:
3246
+ type: integer
3247
+ base_dn:
3248
+ type: string
3249
+ bind_dn:
3250
+ type: string
3251
+ ssl:
3252
+ type: boolean
3253
+ created_at:
3254
+ type: string
3255
+ format: date-time
3256
+ updated_at:
3257
+ type: string
3258
+ format: date-time
3259
+ LdapConfigCreate:
3260
+ type: object
3261
+ required:
3262
+ - host
3263
+ - base_dn
3264
+ properties:
3265
+ host:
3266
+ type: string
3267
+ example: ldap.example.com
3268
+ port:
3269
+ type: integer
3270
+ example: 389
3271
+ base_dn:
3272
+ type: string
3273
+ example: dc=example,dc=com
3274
+ bind_dn:
3275
+ type: string
3276
+ bind_password:
3277
+ type: string
3278
+ format: password
3279
+ ssl:
3280
+ type: boolean
3281
+ default: false
3282
+ NodeCreate:
3283
+ type: object
3284
+ required:
3285
+ - name
3286
+ - host
3287
+ - api_username
3288
+ - api_password
3289
+ properties:
3290
+ name:
3291
+ type: string
3292
+ example: client
3293
+ host:
3294
+ type: string
3295
+ example: 192.168.10.40
3296
+ api_username:
3297
+ type: string
3298
+ example: loc1
3299
+ api_password:
3300
+ type: string
3301
+ format: password
3302
+ example: strong_password_here
3303
+ port:
3304
+ type: integer
3305
+ format: int32
3306
+ default: 9092
3307
+ example: 9092
3308
+ ssl:
3309
+ type: boolean
3310
+ default: true
3311
+ example: true
3312
+ verify_ssl:
3313
+ type: boolean
3314
+ default: false
3315
+ example: false
3316
+ timeout:
3317
+ type: integer
3318
+ format: int32
3319
+ description: Timeout in seconds
3320
+ default: 30
3321
+ example: 30
3322
+ open_timeout:
3323
+ type: integer
3324
+ format: int32
3325
+ description: Open timeout in seconds
3326
+ default: 10
3327
+ example: 10
3328
+ additionalProperties: false
3329
+ # Node API Schemas
3330
+ NodeInfo:
3331
+ type: object
3332
+ properties:
3333
+ current_time:
3334
+ type: string
3335
+ application:
3336
+ type: string
3337
+ version:
3338
+ type: string
3339
+ capabilities:
3340
+ type: array
3341
+ items:
3342
+ type: object
3343
+ properties:
3344
+ name:
3345
+ type: string
3346
+ value:
3347
+ type: boolean
3348
+ required:
3349
+ - name
3350
+ - value
3351
+ required:
3352
+ - current_time
3353
+ - application
3354
+ - version
3355
+ - capabilities
3356
+ TransferCreate:
3357
+ type: object
3358
+ required:
3359
+ - transfer_spec
3360
+ properties:
3361
+ transfer_spec:
3362
+ type: object
3363
+ description: Aspera transfer specification
3364
+ Transfer:
3365
+ type: object
3366
+ properties:
3367
+ id:
3368
+ type: string
3369
+ example: xfer-123abc
3370
+ status:
3371
+ type: string
3372
+ enum: [pending, running, completed, failed, cancelled, paused]
3373
+ direction:
3374
+ type: string
3375
+ enum: [upload, download, sync]
3376
+ bytes_transferred:
3377
+ type: integer
3378
+ format: int64
3379
+ total_bytes:
3380
+ type: integer
3381
+ format: int64
3382
+ percentage:
3383
+ type: number
3384
+ format: float
3385
+ rate_kbps:
3386
+ type: integer
3387
+ description: Current transfer rate in Kbps
3388
+ started_at:
3389
+ type: string
3390
+ format: date-time
3391
+ completed_at:
3392
+ type: string
3393
+ format: date-time
3394
+ WatchdSubscription:
3395
+ type: object
3396
+ properties:
3397
+ id:
3398
+ type: string
3399
+ name:
3400
+ type: string
3401
+ path:
3402
+ type: string
3403
+ description: Path to monitor
3404
+ events:
3405
+ type: array
3406
+ items:
3407
+ type: string
3408
+ enum: [create, modify, delete, move]
3409
+ active:
3410
+ type: boolean
3411
+ # SMTP Server Schemas
3412
+ SmtpServer:
3413
+ type: object
3414
+ properties:
3415
+ id:
3416
+ type: integer
3417
+ example: 13
3418
+ server:
3419
+ type: string
3420
+ description: SMTP server hostname
3421
+ example: smtp.gmail.com
3422
+ port:
3423
+ type: integer
3424
+ description: SMTP server port
3425
+ example: 587
3426
+ username:
3427
+ type: string
3428
+ description: SMTP authentication username
3429
+ example: demo@asperasoft.net
3430
+ from:
3431
+ type: string
3432
+ description: From email address
3433
+ example: aspera-systems@asperasoft.net
3434
+ from_address:
3435
+ type: string
3436
+ nullable: true
3437
+ description: Optional custom from address
3438
+ from_name:
3439
+ type: string
3440
+ nullable: true
3441
+ description: Optional custom from name
3442
+ tls:
3443
+ type: boolean
3444
+ description: Use TLS encryption
3445
+ example: true
3446
+ timeout:
3447
+ type: integer
3448
+ description: Connection timeout in seconds
3449
+ example: 3
3450
+ status:
3451
+ type: string
3452
+ nullable: true
3453
+ description: Server status
3454
+ status_at:
3455
+ type: string
3456
+ format: date-time
3457
+ nullable: true
3458
+ description: Last status check timestamp
3459
+ status_message:
3460
+ type: string
3461
+ nullable: true
3462
+ description: Status message or error
3463
+ created_at:
3464
+ type: string
3465
+ format: date-time
3466
+ updated_at:
3467
+ type: string
3468
+ format: date-time
3469
+ salt:
3470
+ type: string
3471
+ description: Salt for password encryption
3472
+ example: 429979e40788ba6e9df1
3473
+ SmtpServerCreate:
3474
+ type: object
3475
+ required:
3476
+ - server
3477
+ - port
3478
+ - username
3479
+ - password
3480
+ properties:
3481
+ server:
3482
+ type: string
3483
+ example: smtp.gmail.com
3484
+ port:
3485
+ type: integer
3486
+ example: 587
3487
+ username:
3488
+ type: string
3489
+ example: user@example.com
3490
+ password:
3491
+ type: string
3492
+ format: password
3493
+ description: SMTP authentication password
3494
+ from:
3495
+ type: string
3496
+ format: email
3497
+ from_address:
3498
+ type: string
3499
+ format: email
3500
+ from_name:
3501
+ type: string
3502
+ tls:
3503
+ type: boolean
3504
+ default: true
3505
+ timeout:
3506
+ type: integer
3507
+ default: 3
3508
+ minimum: 1
3509
+ maximum: 60
3510
+ SmtpServerUpdate:
3511
+ type: object
3512
+ properties:
3513
+ server:
3514
+ type: string
3515
+ port:
3516
+ type: integer
3517
+ username:
3518
+ type: string
3519
+ password:
3520
+ type: string
3521
+ format: password
3522
+ from:
3523
+ type: string
3524
+ format: email
3525
+ from_address:
3526
+ type: string
3527
+ format: email
3528
+ from_name:
3529
+ type: string
3530
+ tls:
3531
+ type: boolean
3532
+ timeout:
3533
+ type: integer
3534
+ minimum: 1
3535
+ maximum: 60
3536
+ # Transfer Settings Schemas
3537
+ TransferSettings:
3538
+ type: object
3539
+ properties:
3540
+ min_connect_version:
3541
+ type: string
3542
+ description: Minimum Aspera Connect version required (format X.Y or X.Y.Z or X.Y.Z.W)
3543
+ example: "3.6.1"
3544
+ nullable: true
3545
+ upload_target_rate:
3546
+ type: string
3547
+ description: Target upload rate (e.g., "1.5 Gbps", "500Mbps", "10 K", "3000")
3548
+ example: "10.0 Kbps"
3549
+ nullable: true
3550
+ upload_target_rate_cap:
3551
+ type: string
3552
+ description: Maximum upload rate cap
3553
+ example: "500.0 Mbps"
3554
+ nullable: true
3555
+ download_target_rate:
3556
+ type: string
3557
+ description: Target download rate
3558
+ nullable: true
3559
+ download_target_rate_cap:
3560
+ type: string
3561
+ description: Maximum download rate cap
3562
+ nullable: true
3563
+ starting_policy:
3564
+ type: string
3565
+ enum: ["", "fixed", "high", "fair", "low"]
3566
+ description: Starting bandwidth policy (empty string indicates inherit)
3567
+ nullable: true
3568
+ allowed_policy:
3569
+ type: string
3570
+ enum:
3571
+ [
3572
+ "",
3573
+ "fixed, high, fair, and low",
3574
+ "high, fair, and low",
3575
+ "fair and low",
3576
+ "low",
3577
+ ]
3578
+ description: Allowed bandwidth policies (empty string indicates inherit)
3579
+ nullable: true
3580
+ encryption:
3581
+ type: string
3582
+ enum: ["", "Optional", "AES-128"]
3583
+ description: Encryption setting (empty string indicates inherit)
3584
+ nullable: true
3585
+ encryption_at_rest:
3586
+ type: string
3587
+ enum: ["", "Optional", "Required"]
3588
+ description: Encryption at rest setting (empty string indicates inherit)
3589
+ nullable: true
3590
+ TransferSettingsUpdate:
3591
+ type: object
3592
+ properties:
3593
+ min_connect_version:
3594
+ type: string
3595
+ description: Minimum Aspera Connect version (format X.Y or X.Y.Z or X.Y.Z.W)
3596
+ example: "3.7.1"
3597
+ upload_target_rate:
3598
+ type: string
3599
+ description: Target upload rate (e.g., "1.5 Gbps", "500Mbps", "10 K", "3000")
3600
+ example: "10.0 Kbps"
3601
+ upload_target_rate_cap:
3602
+ type: string
3603
+ description: Maximum upload rate cap
3604
+ example: "22.0 Mbps"
3605
+ download_target_rate:
3606
+ type: string
3607
+ description: Target download rate
3608
+ download_target_rate_cap:
3609
+ type: string
3610
+ description: Maximum download rate cap
3611
+ starting_policy:
3612
+ type: string
3613
+ enum: ["", "fixed", "high", "fair", "low"]
3614
+ description: Starting bandwidth policy (blank = inherit)
3615
+ nullable: true
3616
+ allowed_policy:
3617
+ type: string
3618
+ enum:
3619
+ [
3620
+ "",
3621
+ "fixed, high, fair, and low",
3622
+ "high, fair, and low",
3623
+ "fair and low",
3624
+ "low",
3625
+ ]
3626
+ description: Allowed bandwidth policies (blank = inherit)
3627
+ encryption:
3628
+ type: string
3629
+ enum: ["", "Optional", "AES-128"]
3630
+ description: Encryption setting (blank = inherit)
3631
+ encryption_at_rest:
3632
+ type: string
3633
+ enum: ["", "Optional", "Required"]
3634
+ description: Encryption at rest (blank = inherit)
3635
+ reset_all_defaults:
3636
+ type: boolean
3637
+ description: Reset all settings to system defaults
3638
+ TransferSettingsResponse:
3639
+ allOf:
3640
+ - $ref: "#/components/schemas/TransferSettings"
3641
+ - type: object
3642
+ properties:
3643
+ errors:
3644
+ type: object
3645
+ description: Validation errors for each field
3646
+ properties:
3647
+ upload_target_rate_cap:
3648
+ type: array
3649
+ items:
3650
+ type: string
3651
+ upload_target_rate:
3652
+ type: array
3653
+ items:
3654
+ type: string
3655
+ download_target_rate_cap:
3656
+ type: array
3657
+ items:
3658
+ type: string
3659
+ download_target_rate:
3660
+ type: array
3661
+ items:
3662
+ type: string
3663
+ allowed_policy:
3664
+ type: array
3665
+ items:
3666
+ type: string
3667
+ starting_policy:
3668
+ type: array
3669
+ items:
3670
+ type: string
3671
+ validation_context:
3672
+ type: string
3673
+ nullable: true
3674
+ UserTransferSettings:
3675
+ allOf:
3676
+ - $ref: "#/components/schemas/TransferSettings"
3677
+ - type: object
3678
+ required:
3679
+ - id
3680
+ - authorizable_type
3681
+ - authorizable_id
3682
+ properties:
3683
+ id:
3684
+ type: integer
3685
+ example: 3
3686
+ authorizable_type:
3687
+ type: string
3688
+ enum: [Authorizable::User]
3689
+ example: Authorizable::User
3690
+ authorizable_id:
3691
+ type: integer
3692
+ description: User ID
3693
+ example: 5
3694
+ created_at:
3695
+ type: string
3696
+ format: date-time
3697
+ updated_at:
3698
+ type: string
3699
+ format: date-time
3700
+ GroupTransferSettings:
3701
+ allOf:
3702
+ - $ref: "#/components/schemas/TransferSettings"
3703
+ - type: object
3704
+ required:
3705
+ - id
3706
+ - authorizable_type
3707
+ - authorizable_id
3708
+ properties:
3709
+ id:
3710
+ type: integer
3711
+ example: 13
3712
+ authorizable_type:
3713
+ type: string
3714
+ enum: [Authorizable::Group]
3715
+ example: Authorizable::Group
3716
+ authorizable_id:
3717
+ type: integer
3718
+ description: Group ID
3719
+ example: 1
3720
+ created_at:
3721
+ type: string
3722
+ format: date-time
3723
+ updated_at:
3724
+ type: string
3725
+ format: date-time
3726
+ # Error Schema
3727
+ Error:
3728
+ type: object
3729
+ required:
3730
+ - error
3731
+ properties:
3732
+ error:
3733
+ type: object
3734
+ description: Error object
3735
+ properties:
3736
+ user_message:
3737
+ type: string
3738
+ description: Human-readable error message
3739
+ example: API user authentication failed
3740
+ filesBrowseRequest:
3741
+ required:
3742
+ - path
3743
+ type: object
3744
+ properties:
3745
+ path:
3746
+ type: string
3747
+ description: The full pathname of the directory to browse.
3748
+ skip:
3749
+ type: integer
3750
+ description:
3751
+ Do not return information about the first number of files and
3752
+ directories. Default 0.
3753
+ count:
3754
+ type: integer
3755
+ description:
3756
+ Return no more than "count" results. It is the client’s responsibility
3757
+ to keep track of number of results returned. Default 100.
3758
+ sort:
3759
+ type: string
3760
+ description:
3761
+ "Sort the results by \"path\", \"type\" (directory/file), \"\
3762
+ size_a\"(bytes, ascending), \"size_d\" (bytes, descending), \"mtime_a\"\
3763
+ \ (modification date, ascending), or \"mtime_d\" (modification date,\
3764
+ \ descending)."
3765
+ case_sensitive:
3766
+ type: boolean
3767
+ description:
3768
+ "Specify if sort and basename are case sensitive (true) or\
3769
+ \ not (false). Default: false."
3770
+ filters:
3771
+ $ref: "#/components/schemas/filesBrowseFilters"
3772
+ filesBrowseFilters:
3773
+ type: object
3774
+ properties:
3775
+ types:
3776
+ type: array
3777
+ description:
3778
+ "Return data only for the specified content types: file, symbolic_link,\
3779
+ \ or directory."
3780
+ example:
3781
+ - file
3782
+ - directory
3783
+ items:
3784
+ type: string
3785
+ enum:
3786
+ - file
3787
+ - symbolic_link
3788
+ - directory
3789
+ paths:
3790
+ type: array
3791
+ description: Return data only for path names that match the specified path.
3792
+ example:
3793
+ - /a/*
3794
+ - b/*/c*
3795
+ items:
3796
+ type: string
3797
+ basenames:
3798
+ type: array
3799
+ description:
3800
+ Return data only for files with basenames that match the specified
3801
+ basenames.
3802
+ example:
3803
+ - "*.jpg"
3804
+ - "*.gif"
3805
+ items:
3806
+ type: string
3807
+ size_min:
3808
+ type: integer
3809
+ description:
3810
+ "Include files that are greater than or equal to size_min (in\
3811
+ \ bytes). NOTE: This setting automatically restricts the results to files,\
3812
+ \ equivalent to setting \"types\":\"file\"."
3813
+ example: 1000
3814
+ size_max:
3815
+ type: integer
3816
+ description:
3817
+ "Include files that are less than size_max (in bytes). NOTE:\
3818
+ \ This setting automatically restricts the results to files, equivalent\
3819
+ \ to setting \"types\":\"file\"."
3820
+ example: 10000
3821
+ mtime_min:
3822
+ type: string
3823
+ description:
3824
+ "Include files that were updated after mtime_min, in the format\
3825
+ \ \"2011-01-31T12:59:59Z\", T or space in the middle; Z optional at the\
3826
+ \ end."
3827
+ example: 2011-01-01 00:00:00
3828
+ mtime_max:
3829
+ type: string
3830
+ description:
3831
+ "Include files that were updated before mtime_max, in the format\
3832
+ \ \"2011-01-31T12:59:59Z\", T or space in the middle; Z optional at the\
3833
+ \ end."
3834
+ example: 2011-01-31 11:59:59
3835
+ description: List of query filters that are applied to the source paths.
3836
+ filesBrowseResponse:
3837
+ type: object
3838
+ properties:
3839
+ self:
3840
+ $ref: "#/components/schemas/filesBrowseMeta"
3841
+ items:
3842
+ type: array
3843
+ items:
3844
+ $ref: "#/components/schemas/filesBrowseMeta"
3845
+ filesBrowseMeta:
3846
+ type: object
3847
+ properties:
3848
+ path:
3849
+ type: string
3850
+ description: "The pathname of the file, directory, or symbolic link."
3851
+ example: /Documents/Users/aspera
3852
+ basename:
3853
+ type: string
3854
+ description: The base name of the path.
3855
+ example: sample.txt
3856
+ type:
3857
+ type: string
3858
+ description:
3859
+ "The type of the path. Value is \"file\", \"directory\", or\
3860
+ \ \"symbolic_link\"."
3861
+ example: file
3862
+ size:
3863
+ type: integer
3864
+ description:
3865
+ "The size of the file or symbolic link, in bytes. Directory\
3866
+ \ size is reported as 0."
3867
+ example: 3290353589
3868
+ mtime:
3869
+ type: string
3870
+ description: "The item's modification time, in ISO format."
3871
+ example: 2011-01-31 11:59:59
3872
+ permissions:
3873
+ type: array
3874
+ items:
3875
+ $ref: "#/components/schemas/filesBrowsePermissions"
3876
+ target:
3877
+ $ref: "#/components/schemas/filesBrowseTarget"
3878
+ description:
3879
+ JSON object that contains the metadata associated with the base
3880
+ path of the request.
3881
+ filesBrowsePermissions:
3882
+ type: object
3883
+ properties:
3884
+ name:
3885
+ type: string
3886
+ description:
3887
+ "The permissions that is set on the content. Value is \"view\"\
3888
+ , \"edit\", and \"delete\"."
3889
+ example: edit
3890
+ filesBrowseTarget:
3891
+ type: object
3892
+ properties:
3893
+ path:
3894
+ type: string
3895
+ description:
3896
+ "The pathname of the file, directory, or symbolic link that\
3897
+ \ is the target of the symbolic link."
3898
+ example: /Documents/Users/aspera
3899
+ basename:
3900
+ type: string
3901
+ description: The base name of the symbolic link target.
3902
+ example: sample.txt
3903
+ type:
3904
+ type: string
3905
+ description:
3906
+ "The type of the symbolic link target. Value is \"file\", \"\
3907
+ directory\", or \"symbolic_link\"."
3908
+ example: file
3909
+ size:
3910
+ type: integer
3911
+ description:
3912
+ "The size of the file or symbolic link, in bytes. Directory\
3913
+ \ size is reported as 0."
3914
+ example: 108323953
3915
+ mtime:
3916
+ type: string
3917
+ description: "The symbolic link target's modification time, in ISO format."
3918
+ example: 2011-01-31 11:59:59
3919
+ permissions:
3920
+ type: array
3921
+ items:
3922
+ $ref: "#/components/schemas/filesBrowsePermissions"
3923
+ description:
3924
+ JSON object that contains the metadata associated with the symbolic
3925
+ link target.
3926
+ files-create-post-request:
3927
+ required:
3928
+ - paths
3929
+ type: object
3930
+ properties:
3931
+ paths:
3932
+ type: array
3933
+ description:
3934
+ "Array containing the paths of the files, directories, and\
3935
+ \ symbolic links to create."
3936
+ items:
3937
+ $ref: "#/components/schemas/files-create-path"
3938
+ files-create-path:
3939
+ required:
3940
+ - path
3941
+ - type
3942
+ type: object
3943
+ properties:
3944
+ path:
3945
+ type: string
3946
+ description: The pathname for the new item.
3947
+ type:
3948
+ type: string
3949
+ description:
3950
+ "The type of item to create. Values are file, directory, or\
3951
+ \ symbolic_link."
3952
+ target:
3953
+ $ref: "#/components/schemas/files-create-target"
3954
+ contents:
3955
+ type: string
3956
+ description: base64 encoded contents of the file to be created.
3957
+ files-create-target:
3958
+ required:
3959
+ - path
3960
+ type: string
3961
+ properties:
3962
+ path:
3963
+ type: string
3964
+ description: The pathname of the target for the new symbolic link.
3965
+ description:
3966
+ Required when 'type' is "symbolic_link'. JSON containing the target
3967
+ pathname.
3968
+ files-create-post-200:
3969
+ type: object
3970
+ properties:
3971
+ paths:
3972
+ type: array
3973
+ description: JSON object that lists the pathnames created by the request.
3974
+ items:
3975
+ $ref: "#/components/schemas/files-create-response-path"
3976
+ files-create-response-path:
3977
+ type: object
3978
+ properties:
3979
+ path:
3980
+ type: string
3981
+ description: The new item pathname.
3982
+ error:
3983
+ $ref: "#/components/schemas/files-create-error"
3984
+ files-create-error:
3985
+ type: object
3986
+ properties:
3987
+ code:
3988
+ type: integer
3989
+ description: HTTP error code number.
3990
+ example: 409
3991
+ reason:
3992
+ type: string
3993
+ description: Short error description.
3994
+ example: Conflict
3995
+ user_message:
3996
+ type: string
3997
+ description: Longer error description.
3998
+ example: Path already exists
3999
+ description: JSON object describing an error.
4000
+ files-delete-post-request:
4001
+ required:
4002
+ - paths
4003
+ type: object
4004
+ properties:
4005
+ paths:
4006
+ type: array
4007
+ description: Array of full paths to the files and directories to delete.
4008
+ items:
4009
+ $ref: "#/components/schemas/files-delete-path"
4010
+ files-delete-path:
4011
+ required:
4012
+ - path
4013
+ type: object
4014
+ properties:
4015
+ path:
4016
+ type: string
4017
+ description: The full path to the file or directory to delete.
4018
+ recursive_delete:
4019
+ type: boolean
4020
+ description:
4021
+ "Set the behavior for deleting non-empty directories. If true\
4022
+ \ (default), delete directories even if they are non-empty. Set to false\
4023
+ \ to not delete non-empty directories and return an error."
4024
+ files-delete-post-200:
4025
+ type: object
4026
+ properties:
4027
+ paths:
4028
+ type: array
4029
+ description:
4030
+ JSON array of full paths to the files and directories in the
4031
+ request body.
4032
+ items:
4033
+ $ref: "#/components/schemas/files-delete-response-path"
4034
+ files-delete-response-path:
4035
+ type: object
4036
+ properties:
4037
+ path:
4038
+ type: string
4039
+ description: The deleted item pathname.
4040
+ error:
4041
+ $ref: "#/components/schemas/files-delete-error"
4042
+ files-delete-error:
4043
+ type: object
4044
+ properties:
4045
+ code:
4046
+ type: integer
4047
+ description: HTTP error code number.
4048
+ example: 500
4049
+ reason:
4050
+ type: string
4051
+ description: Short error description.
4052
+ example: Not Found
4053
+ user_message:
4054
+ type: string
4055
+ description: Longer error description.
4056
+ example: No such file or directory
4057
+ description: "JSON object describing an error, if any."
4058
+ files-download_setup-post-request:
4059
+ required:
4060
+ - transfer_requests
4061
+ type: object
4062
+ properties:
4063
+ transfer_requests:
4064
+ type: array
4065
+ description:
4066
+ "The JSON object that contains the transfer request information.\
4067
+ \ Multiple transfer requests can be included as comma-delimited transfer_request\
4068
+ \ objects, if needed."
4069
+ items:
4070
+ $ref: "#/components/schemas/token-transfer-request"
4071
+ token-transfer-request:
4072
+ required:
4073
+ - transfer_request
4074
+ type: object
4075
+ properties:
4076
+ transfer_request:
4077
+ $ref: "#/components/schemas/token-transfer-request-body"
4078
+ token-transfer-request-body:
4079
+ type: object
4080
+ properties:
4081
+ source_root:
4082
+ type: string
4083
+ description: The source root directory of the files.
4084
+ example: /Users/aspera
4085
+ destination_root:
4086
+ type: string
4087
+ description: The destination root directory.
4088
+ token_life_seconds:
4089
+ type: integer
4090
+ description:
4091
+ "How long the token is valid after creation, in seconds. This\
4092
+ \ option overrides the server setting."
4093
+ example: 43200
4094
+ paths:
4095
+ type: array
4096
+ description:
4097
+ "Array of source or destination paths. For uploads, either\
4098
+ \ a value must be provided for \"destination_root\" or at least one \"\
4099
+ destination\" must be set in \"paths\". Set \"destination\" as \"*\" to\
4100
+ \ allow uploads to the \"destination_root\" itself or any directories\
4101
+ \ within it. For downloads, either a value must be provided for \"source_root\"\
4102
+ \ or at least one \"source\" must be set in \"paths\". Set \"source\"\
4103
+ \ as * to allow downloads of the \"source_root\" itself or any files within\
4104
+ \ it."
4105
+ items:
4106
+ $ref: "#/components/schemas/token-paths"
4107
+ remote_host:
4108
+ type: string
4109
+ description: IP or fully qualified domain name of the remote server
4110
+ example: 10.0.0.1
4111
+ cipher_allowed:
4112
+ type: string
4113
+ description:
4114
+ "The algorithm that is used to encrypt data during a transfer.\
4115
+ \ Use this option when transmitting sensitive data. Allowed values: none,\
4116
+ \ \"aes-128\", \"aes-256\". Default: none."
4117
+ example: aes-128
4118
+ content_protection:
4119
+ type: string
4120
+ description:
4121
+ "Enable content protection (encryption-at-rest), which encrypts\
4122
+ \ files when they are uploaded to the server and decrypts files when they\
4123
+ \ are downloaded. Allowed values: encrypt: Encrypt transferred files\
4124
+ \ (on the server). decrypt: Decrypt downloaded files. If content_protection_password\
4125
+ \ is not specified, Connect will prompt for the passphrase. Default:\
4126
+ \ decrypt"
4127
+ example: decrypt
4128
+ content_protection_password:
4129
+ type: string
4130
+ description:
4131
+ Password to apply or remove encryption. Must be provided when
4132
+ "content_protection" is enabled.
4133
+ cookie:
4134
+ type: string
4135
+ description:
4136
+ "Metadata to associate with the transfer. The cookie is reported\
4137
+ \ to both client-side and server-side applications that are monitoring\
4138
+ \ FASP transfers. Default: none"
4139
+ fasp_port:
4140
+ type: integer
4141
+ description:
4142
+ "The UDP port for FASP to use. The default value works for\
4143
+ \ most situations; however, it can be changed to satisfy firewall requirements.\
4144
+ \ Default: 33001"
4145
+ example: 33001
4146
+ ssh_port:
4147
+ type: integer
4148
+ description:
4149
+ "The server's TCP port that is listening for SSH connections.\
4150
+ \ FASP® initiates transfers through SSH. Default value: 33001"
4151
+ example: 22
4152
+ http_fallback:
4153
+ type: boolean
4154
+ description:
4155
+ "If set to true, the transfer attempts an HTTP or HTTPS transfer\
4156
+ \ if FASP transfer errors. Default: false."
4157
+ example: false
4158
+ http_fallback_port:
4159
+ type: integer
4160
+ description:
4161
+ "The port that is used for HTTP transfers. If a cipher is enabled,\
4162
+ \ the default is 443; otherwise, the default is 80."
4163
+ example: 443
4164
+ https_fallback_port:
4165
+ type: integer
4166
+ description:
4167
+ "The port that is used for HTTPS transfers. If a cipher is\
4168
+ \ enabled, the default is 443; otherwise, the default is 80."
4169
+ example: 443
4170
+ rate_policy_allowed:
4171
+ type: string
4172
+ description:
4173
+ The most aggressive rate policy that is allowed for the transfer.
4174
+ See "rate_policy" for values.
4175
+ example: high
4176
+ rate_policy:
4177
+ type: string
4178
+ description:
4179
+ "The congestion control behavior to use when sharing bandwidth.\
4180
+ \ Allowed values: high: When sharing bandwidth, transfer at twice the\
4181
+ \ rate of a transfer using a fair policy. fair (default value): Share\
4182
+ \ bandwidth equally with other traffic. low: Use only un-utilized bandwidth.\
4183
+ \ fixed: Transfer at the target rate, regardless of the actual network\
4184
+ \ capacity. Do not share bandwidth. The fixed policy can decrease transfer\
4185
+ \ performance and cause problems on the target storage."
4186
+ example: fair
4187
+ target_rate_kbps:
4188
+ type: integer
4189
+ description:
4190
+ "The desired speed of the transfer, in Kbps. If there is competing\
4191
+ \ network traffic, FASP shares this bandwidth, depending on the \"rate_policy\"\
4192
+ . Default is set on the server in the configuration file (aspera.conf).\
4193
+ \ Will respect both local- and server-side target rate caps if set. Must\
4194
+ \ be provided when you set a value for \"target_rate_cap_kbps\"."
4195
+ example: 10000
4196
+ target_rate_cap_kbps:
4197
+ type: integer
4198
+ description: "Upper limit of target rate, in Kbps. Default: no limit"
4199
+ example: 12000
4200
+ tags:
4201
+ $ref: "#/components/schemas/transferRequestAsperaTags"
4202
+ aspera_connect_settings:
4203
+ type: string
4204
+ description: "For more information on Connect settings, see Transfer Specifications."
4205
+ token-paths:
4206
+ type: object
4207
+ properties:
4208
+ source:
4209
+ type: string
4210
+ description:
4211
+ "The path for the source file or directory, relative to the\
4212
+ \ source root."
4213
+ destination:
4214
+ type: string
4215
+ description:
4216
+ "Destination path for the file or directory being transferred,\
4217
+ \ relative to the destination root."
4218
+ description: "For uploads and downloads, a source must be included in each path. The destination is optional only when a “destination_root” is provided. The “source_root” is always optional."
4219
+ files-download_setup-post-200:
4220
+ type: object
4221
+ properties:
4222
+ transfer_specs:
4223
+ type: array
4224
+ description:
4225
+ An array of transfer specifications that are allowed by the
4226
+ specified tokens.
4227
+ items:
4228
+ $ref: "#/components/schemas/token-transfer-spec"
4229
+ token-transfer-spec:
4230
+ type: object
4231
+ properties:
4232
+ transfer_spec:
4233
+ $ref: "#/components/schemas/token-transfer-spec-body"
4234
+ token-transfer-spec-body:
4235
+ type: object
4236
+ properties:
4237
+ paths:
4238
+ type: array
4239
+ description:
4240
+ "Array of JSON objects containing source and, if specified,\
4241
+ \ destination paths."
4242
+ items:
4243
+ $ref: "#/components/schemas/paths"
4244
+ source_root:
4245
+ type: string
4246
+ description: The source root directory of the files.
4247
+ example: /Users/aspera
4248
+ destination_root:
4249
+ type: string
4250
+ description: The destination root directory.
4251
+ example: /projects/images
4252
+ token:
4253
+ type: string
4254
+ description: The token string.
4255
+ example: ATB2_ACsjPbserJSER32u-FHp6BsERNE3834UgE_2BTA
4256
+ direction:
4257
+ type: string
4258
+ description:
4259
+ "For downloads, the value is receive. For uploads, the value\
4260
+ \ is send."
4261
+ cipher:
4262
+ type: string
4263
+ description:
4264
+ The weakest cipher that is allowed for the transfer. Value
4265
+ can be "none" or "aes-128".
4266
+ example: aes-128
4267
+ tags:
4268
+ $ref: "#/components/schemas/transferRequestAsperaTags"
4269
+ rate_policy_allowed:
4270
+ type: string
4271
+ description:
4272
+ The most aggressive rate policy that is allowed for the transfer.
4273
+ See rate_policy for values.
4274
+ example: high
4275
+ rate_policy:
4276
+ type: string
4277
+ description:
4278
+ "The congestion control behavior to use when sharing bandwidth.\
4279
+ \ Allowed values: high: When sharing bandwidth, transfer at twice the\
4280
+ \ rate of a transfer using a fair policy. fair (default value): Share\
4281
+ \ bandwidth equally with other traffic. low: Use only un-utilized bandwidth.\
4282
+ \ fixed: Transfer at the target rate, regardless of the actual network\
4283
+ \ capacity. Do not share bandwidth. The fixed policy can decrease transfer\
4284
+ \ performance and cause problems on the target storage."
4285
+ example: fair
4286
+ target_rate_kbps:
4287
+ type: integer
4288
+ description: "The desired speed of the transfer, in Kbps."
4289
+ example: 10000
4290
+ min_rate_kbps:
4291
+ type: integer
4292
+ description: "The minimum transfer rate, in Kbps."
4293
+ example: 0
4294
+ remote_host:
4295
+ type: string
4296
+ description: IP or fully qualified domain name of the remote server
4297
+ example: 10.0.0.1
4298
+ remote_user:
4299
+ type: string
4300
+ description:
4301
+ "The system user that authenticates the SSH connection for\
4302
+ \ the transfer, derived from the request authentication method."
4303
+ example: xfer
4304
+ sshfp:
4305
+ type: string
4306
+ description:
4307
+ "The node's SSH fingerprint, if it is configured in the node's\
4308
+ \ aspera.conf."
4309
+ ssh_port:
4310
+ type: integer
4311
+ description:
4312
+ "The server's TCP port that is listening for SSH connections.\
4313
+ \ FASP® initiates transfers through SSH. Default value: 33001"
4314
+ example: 22
4315
+ fasp_port:
4316
+ type: integer
4317
+ description:
4318
+ "The UDP port for FASP to use. The default value works for\
4319
+ \ most situations; however, it can be changed to satisfy firewall requirements.\
4320
+ \ Default: 33001"
4321
+ example: 33001
4322
+ http_fallback:
4323
+ type: boolean
4324
+ description:
4325
+ "If set to true, the transfer attempts an HTTP or HTTPS transfer\
4326
+ \ if FASP transfer errors. Default: false."
4327
+ example: false
4328
+ https_fallback_port:
4329
+ type: integer
4330
+ description:
4331
+ "The port that is used for HTTPS transfers. If a cipher is\
4332
+ \ enabled, the default is 443; otherwise, the default is 80."
4333
+ example: 443
4334
+ description: The transfer specification.
4335
+ transferRequestAsperaTags:
4336
+ type: object
4337
+ properties:
4338
+ xfer_retry:
4339
+ type: integer
4340
+ description: Override for ascp's --retry-timeout option
4341
+ usage_id:
4342
+ type: string
4343
+ description:
4344
+ Assign a usage ID to the transfer in order to query transfer
4345
+ usage (bytes transferred) with the /usage endpoint.
4346
+ files-info-post-request:
4347
+ required:
4348
+ - paths
4349
+ type: object
4350
+ properties:
4351
+ paths:
4352
+ type: array
4353
+ description: A JSON object that specifies an array of paths.
4354
+ items:
4355
+ $ref: "#/components/schemas/files-info-request-path"
4356
+ files-info-request-path:
4357
+ required:
4358
+ - path
4359
+ type: object
4360
+ properties:
4361
+ path:
4362
+ type: string
4363
+ description: The path name. Metadata is returned for each path.
4364
+ example: /documents/user/file1.txt
4365
+ files-info-post-200:
4366
+ type: object
4367
+ properties:
4368
+ paths:
4369
+ type: array
4370
+ description: The array of paths
4371
+ example:
4372
+ - path: /Users/aspera/Documents
4373
+ basename: Documents
4374
+ type: directory
4375
+ size: 0
4376
+ mtime: 2018-03-01T22:56:14Z
4377
+ permissions:
4378
+ - name: view
4379
+ - name: edit
4380
+ - name: delete
4381
+ - path: /Users/aspera/Documents/sample.txt
4382
+ basename: sample.txt
4383
+ type: file
4384
+ size: 445
4385
+ mtime: 2018-02-09T23:08:46Z
4386
+ permissions:
4387
+ - name: view
4388
+ - name: edit
4389
+ - name: delete
4390
+ - path: /Users/aspera/Documents/symlink1
4391
+ basename: symlink1
4392
+ type: file
4393
+ size: 445
4394
+ mtime: 2018-02-09T23:08:46Z
4395
+ permissions:
4396
+ - name: view
4397
+ - name: edit
4398
+ - name: delete
4399
+ - path: /Users/aspera/Documents/missing_file.txt
4400
+ error:
4401
+ code: 404
4402
+ reason: Not Found
4403
+ user_message: Path not found
4404
+ items:
4405
+ $ref: "#/components/schemas/files-info-metadata"
4406
+ files-info-metadata:
4407
+ type: object
4408
+ properties:
4409
+ path:
4410
+ type: string
4411
+ description: The pathname.
4412
+ example: /documents/user/file1.txt
4413
+ basename:
4414
+ type: string
4415
+ description: The base name of the item.
4416
+ example: file1.txt
4417
+ type:
4418
+ type: string
4419
+ description:
4420
+ "The type of item: \"file\" (for files and symbolic links)\
4421
+ \ or \"directory\""
4422
+ example: file
4423
+ size:
4424
+ type: integer
4425
+ description: The size of the file. Size is not reported for directories.
4426
+ example: 455
4427
+ mtime:
4428
+ type: string
4429
+ description: The modification time of the file in ISO format.
4430
+ example: 2018-02-09T23:08:46Z
4431
+ permissions:
4432
+ type: array
4433
+ description:
4434
+ "An array of permissions that the user has for the item. Permissions\
4435
+ \ values are \"view\", \"edit\", and \"delete\"."
4436
+ items:
4437
+ $ref: "#/components/schemas/gen3-permissions"
4438
+ error:
4439
+ $ref: "#/components/schemas/files-delete-error"
4440
+ gen3-permissions:
4441
+ type: object
4442
+ properties:
4443
+ name:
4444
+ type: string
4445
+ description:
4446
+ "The permission granted to the user for the file. Value is\
4447
+ \ \"view\", \"edit\", or \"delete\"."
4448
+ example: view
4449
+ files-rename-post-request:
4450
+ required:
4451
+ - paths
4452
+ type: object
4453
+ properties:
4454
+ paths:
4455
+ type: array
4456
+ description:
4457
+ "A JSON array of the files, symbolic links, and directories\
4458
+ \ to rename."
4459
+ example:
4460
+ - path: /full/path/to/parent/dir
4461
+ source: old_dir_name
4462
+ destination: new_dir_name
4463
+ - path: /full/path/to/parent/dir
4464
+ source: old_file_name
4465
+ destination: new_file_name
4466
+ items:
4467
+ $ref: "#/components/schemas/files-rename-post-path"
4468
+ files-rename-post-path:
4469
+ required:
4470
+ - destination
4471
+ - path
4472
+ - source
4473
+ type: object
4474
+ properties:
4475
+ path:
4476
+ type: string
4477
+ description:
4478
+ "The full path to the parent directory of the file, symbolic\
4479
+ \ link, or directory to rename."
4480
+ example: /documents/folder/
4481
+ source:
4482
+ type: string
4483
+ description: "The current name of the file, symbolic link, or directory."
4484
+ example: old_file_name.txt
4485
+ destination:
4486
+ type: string
4487
+ description: "The new name for the file, symbolic link, or directory."
4488
+ example: new_file_name.txt
4489
+ files-rename-post-200:
4490
+ type: object
4491
+ properties:
4492
+ paths:
4493
+ type: array
4494
+ description: "A JSON array of the renamed files, symbolic links, and directories."
4495
+ items:
4496
+ $ref: "#/components/schemas/files-rename-response-path"
4497
+ files-rename-response-path:
4498
+ type: object
4499
+ properties:
4500
+ path:
4501
+ type: string
4502
+ description:
4503
+ "The full path to the parent directory of the file, symbolic\
4504
+ \ link, or directory to rename."
4505
+ example: /documents/folder/
4506
+ source:
4507
+ type: string
4508
+ description: "The current name of the file, symbolic link, or directory."
4509
+ example: old_file_name.txt
4510
+ destination:
4511
+ type: string
4512
+ description: "The new name for the file, symbolic link, or directory."
4513
+ example: new_file_name.txt
4514
+ error:
4515
+ $ref: "#/components/schemas/files-delete-error"
4516
+ files-upload_setup-post-request:
4517
+ required:
4518
+ - transfer_requests
4519
+ type: object
4520
+ properties:
4521
+ transfer_requests:
4522
+ type: array
4523
+ description:
4524
+ "The JSON object that contains the transfer request information.\
4525
+ \ Multiple transfer requests can be included as comma-delimited \"transfer_request\"\
4526
+ \ objects, if needed."
4527
+ items:
4528
+ $ref: "#/components/schemas/token-transfer-request"
4529
+ files-upload_setup-post-200:
4530
+ type: object
4531
+ properties:
4532
+ transfer_specs:
4533
+ type: array
4534
+ description:
4535
+ An array of transfer specifications that are allowed by the
4536
+ specified tokens.
4537
+ items:
4538
+ $ref: "#/components/schemas/token-transfer-spec"
4539
+ paths:
4540
+ required:
4541
+ - source
4542
+ type: object
4543
+ properties:
4544
+ source:
4545
+ type: string
4546
+ description:
4547
+ "The path for the source file or directory, relative to the\
4548
+ \ source root."
4549
+ destination:
4550
+ type: string
4551
+ description:
4552
+ "Destination path for the file or directory that is being transferred,\
4553
+ \ relative to the destination root. If no destination is specified, the\
4554
+ \ content is transferred to the destination root."
4555
+ description: "The source paths, and optional destination paths, for the transfer."
4556
+ space-post-request:
4557
+ required:
4558
+ - paths
4559
+ type: object
4560
+ properties:
4561
+ paths:
4562
+ type: array
4563
+ description: An array of paths.
4564
+ items:
4565
+ $ref: "#/components/schemas/space-post-request-path"
4566
+ space-post-request-path:
4567
+ required:
4568
+ - path
4569
+ type: object
4570
+ properties:
4571
+ path:
4572
+ type: string
4573
+ description:
4574
+ The path name. Space information is returned for the mount
4575
+ point of the path.
4576
+ space-post-200:
4577
+ type: object
4578
+ properties:
4579
+ paths:
4580
+ type: array
4581
+ items:
4582
+ $ref: "#/components/schemas/space-paths"
4583
+ space-paths:
4584
+ type: object
4585
+ properties:
4586
+ path:
4587
+ type: string
4588
+ description: The path name that was queried.
4589
+ bytes_total:
4590
+ type: integer
4591
+ description: The total space in bytes of the mount point of the path.
4592
+ bytes_free:
4593
+ type: integer
4594
+ description: The free space in bytes of the mount point of the path.
4595
+ percent_free:
4596
+ type: number
4597
+ description: The percentage of the total space that is available.
4598
+ error:
4599
+ type: object
4600
+ properties:
4601
+ error:
4602
+ $ref: "#/components/schemas/errorBody"
4603
+ description: The error response object.
4604
+ errorBody:
4605
+ type: object
4606
+ properties:
4607
+ code:
4608
+ type: integer
4609
+ description: The HTTP error code.
4610
+ reason:
4611
+ type: string
4612
+ description: The HTTP error message.
4613
+ user_message:
4614
+ type: string
4615
+ description: A longer error description.
4616
+ description: The contents of the error response object.
4617
+ responses:
4618
+ BadRequest:
4619
+ description: Bad request - invalid parameters
4620
+ content:
4621
+ application/json:
4622
+ schema:
4623
+ $ref: "#/components/schemas/Error"
4624
+ example:
4625
+ error:
4626
+ user_message: Invalid request parameters
4627
+ Unauthorized:
4628
+ description: Unauthorized - authentication required
4629
+ content:
4630
+ application/json:
4631
+ schema:
4632
+ $ref: "#/components/schemas/Error"
4633
+ example:
4634
+ error:
4635
+ user_message: Authentication credentials were not provided or are invalid
4636
+ Forbidden:
4637
+ description: Forbidden - insufficient permissions
4638
+ content:
4639
+ application/json:
4640
+ schema:
4641
+ $ref: "#/components/schemas/Error"
4642
+ example:
4643
+ error:
4644
+ user_message: You do not have permission to perform this action
4645
+ NotFound:
4646
+ description: Not found - resource does not exist
4647
+ content:
4648
+ application/json:
4649
+ schema:
4650
+ $ref: "#/components/schemas/Error"
4651
+ example:
4652
+ error:
4653
+ user_message: The requested resource was not found