Files.com 1.4.28__tar.gz → 1.4.39__tar.gz

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 (101) hide show
  1. {Files.com-1.4.28 → Files.com-1.4.39}/Files.com.egg-info/PKG-INFO +1 -1
  2. {Files.com-1.4.28 → Files.com-1.4.39}/PKG-INFO +1 -1
  3. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/__init__.py +1 -1
  4. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/as2_partner.py +22 -0
  5. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/automation.py +8 -0
  6. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/behavior.py +4 -0
  7. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/bundle.py +26 -4
  8. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/group.py +18 -0
  9. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/remote_server.py +8 -74
  10. Files.com-1.4.39/files_sdk/models/remote_server_configuration_file.py +65 -0
  11. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/site.py +2 -2
  12. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/sso_strategy.py +1 -0
  13. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/user.py +2 -1
  14. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/user_request.py +4 -0
  15. Files.com-1.4.28/files_sdk/models/remote_server_configuration_file.py +0 -50
  16. {Files.com-1.4.28 → Files.com-1.4.39}/Files.com.egg-info/SOURCES.txt +0 -0
  17. {Files.com-1.4.28 → Files.com-1.4.39}/Files.com.egg-info/dependency_links.txt +0 -0
  18. {Files.com-1.4.28 → Files.com-1.4.39}/Files.com.egg-info/requires.txt +0 -0
  19. {Files.com-1.4.28 → Files.com-1.4.39}/Files.com.egg-info/top_level.txt +0 -0
  20. {Files.com-1.4.28 → Files.com-1.4.39}/README.md +0 -0
  21. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/api.py +0 -0
  22. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/api_client.py +0 -0
  23. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/error.py +0 -0
  24. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/list_obj.py +0 -0
  25. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/__init__.py +0 -0
  26. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/account_line_item.py +0 -0
  27. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/action.py +0 -0
  28. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/action_notification_export.py +0 -0
  29. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/action_notification_export_result.py +0 -0
  30. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/action_webhook_failure.py +0 -0
  31. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/api_key.py +0 -0
  32. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/app.py +0 -0
  33. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/as2_incoming_message.py +0 -0
  34. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/as2_outgoing_message.py +0 -0
  35. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/as2_station.py +0 -0
  36. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/auto.py +0 -0
  37. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/automation_run.py +0 -0
  38. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/bandwidth_snapshot.py +0 -0
  39. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/bundle_download.py +0 -0
  40. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/bundle_notification.py +0 -0
  41. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/bundle_recipient.py +0 -0
  42. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/bundle_registration.py +0 -0
  43. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/clickwrap.py +0 -0
  44. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/dns_record.py +0 -0
  45. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/email_incoming_message.py +0 -0
  46. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/errors.py +0 -0
  47. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/external_event.py +0 -0
  48. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/file.py +0 -0
  49. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/file_action.py +0 -0
  50. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/file_comment.py +0 -0
  51. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/file_comment_reaction.py +0 -0
  52. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/file_migration.py +0 -0
  53. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/file_upload_part.py +0 -0
  54. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/folder.py +0 -0
  55. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/form_field.py +0 -0
  56. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/form_field_set.py +0 -0
  57. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/gpg_key.py +0 -0
  58. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/group_user.py +0 -0
  59. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/history.py +0 -0
  60. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/history_export.py +0 -0
  61. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/history_export_result.py +0 -0
  62. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/image.py +0 -0
  63. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/inbox_recipient.py +0 -0
  64. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/inbox_registration.py +0 -0
  65. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/inbox_upload.py +0 -0
  66. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/invoice.py +0 -0
  67. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/invoice_line_item.py +0 -0
  68. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/ip_address.py +0 -0
  69. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/lock.py +0 -0
  70. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/message.py +0 -0
  71. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/message_comment.py +0 -0
  72. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/message_comment_reaction.py +0 -0
  73. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/message_reaction.py +0 -0
  74. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/notification.py +0 -0
  75. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/payment.py +0 -0
  76. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/payment_line_item.py +0 -0
  77. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/permission.py +0 -0
  78. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/preview.py +0 -0
  79. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/priority.py +0 -0
  80. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/project.py +0 -0
  81. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/public_ip_address.py +0 -0
  82. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/public_key.py +0 -0
  83. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
  84. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/request.py +0 -0
  85. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/session.py +0 -0
  86. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/settings_change.py +0 -0
  87. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/sftp_host_key.py +0 -0
  88. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/share_group.py +0 -0
  89. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/share_group_member.py +0 -0
  90. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/snapshot.py +0 -0
  91. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/status.py +0 -0
  92. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/style.py +0 -0
  93. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/usage_daily_snapshot.py +0 -0
  94. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/usage_snapshot.py +0 -0
  95. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/user_cipher_use.py +0 -0
  96. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/models/webhook_test.py +0 -0
  97. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/path_util.py +0 -0
  98. {Files.com-1.4.28 → Files.com-1.4.39}/files_sdk/util.py +0 -0
  99. {Files.com-1.4.28 → Files.com-1.4.39}/pyproject.toml +0 -0
  100. {Files.com-1.4.28 → Files.com-1.4.39}/setup.cfg +0 -0
  101. {Files.com-1.4.28 → Files.com-1.4.39}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: Files.com
3
- Version: 1.4.28
3
+ Version: 1.4.39
4
4
  Summary: Python bindings for the Files.com API
5
5
  Home-page: UNKNOWN
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: Files.com
3
- Version: 1.4.28
3
+ Version: 1.4.39
4
4
  Summary: Python bindings for the Files.com API
5
5
  Home-page: UNKNOWN
6
6
  License: MIT
@@ -177,7 +177,7 @@ the_api_key = ""
177
177
  session_id = None
178
178
  base_url = "https://app.files.com"
179
179
  base_path = "api/rest/v1"
180
- version = "1.4.28"
180
+ version = "1.4.39"
181
181
 
182
182
  __version__ = version
183
183
 
@@ -15,6 +15,7 @@ class As2Partner:
15
15
  "name": None, # string - The partner's formal AS2 name.
16
16
  "uri": None, # string - Public URI for sending AS2 message to.
17
17
  "server_certificate": None, # string - Remote server certificate security setting
18
+ "mdn_validation_level": None, # string - MDN Validation Level
18
19
  "enable_dedicated_ips": None, # boolean - `true` if remote server only accepts connections from dedicated IPs
19
20
  "hex_public_certificate_serial": None, # string - Serial of public certificate used for message security in hex format.
20
21
  "public_certificate_md5": None, # string - MD5 hash of public certificate used for message security.
@@ -49,6 +50,7 @@ class As2Partner:
49
50
  # name - string - AS2 Name
50
51
  # uri - string - URL base for AS2 responses
51
52
  # server_certificate - string - Remote server certificate security setting
53
+ # mdn_validation_level - string - MDN Validation Level
52
54
  # public_certificate - string
53
55
  # enable_dedicated_ips - boolean
54
56
  def update(self, params=None):
@@ -73,6 +75,12 @@ class As2Partner:
73
75
  raise InvalidParameterError(
74
76
  "Bad parameter: server_certificate must be an str"
75
77
  )
78
+ if "mdn_validation_level" in params and not isinstance(
79
+ params["mdn_validation_level"], str
80
+ ):
81
+ raise InvalidParameterError(
82
+ "Bad parameter: mdn_validation_level must be an str"
83
+ )
76
84
  if "public_certificate" in params and not isinstance(
77
85
  params["public_certificate"], str
78
86
  ):
@@ -167,6 +175,7 @@ def get(id, params=None, options=None):
167
175
  # public_certificate (required) - string
168
176
  # as2_station_id (required) - int64 - Id of As2Station for this partner
169
177
  # server_certificate - string - Remote server certificate security setting
178
+ # mdn_validation_level - string - MDN Validation Level
170
179
  # enable_dedicated_ips - boolean
171
180
  def create(params=None, options=None):
172
181
  if not isinstance(params, dict):
@@ -195,6 +204,12 @@ def create(params=None, options=None):
195
204
  raise InvalidParameterError(
196
205
  "Bad parameter: server_certificate must be an str"
197
206
  )
207
+ if "mdn_validation_level" in params and not isinstance(
208
+ params["mdn_validation_level"], str
209
+ ):
210
+ raise InvalidParameterError(
211
+ "Bad parameter: mdn_validation_level must be an str"
212
+ )
198
213
  if "name" not in params:
199
214
  raise MissingParameterError("Parameter missing: name")
200
215
  if "uri" not in params:
@@ -213,6 +228,7 @@ def create(params=None, options=None):
213
228
  # name - string - AS2 Name
214
229
  # uri - string - URL base for AS2 responses
215
230
  # server_certificate - string - Remote server certificate security setting
231
+ # mdn_validation_level - string - MDN Validation Level
216
232
  # public_certificate - string
217
233
  # enable_dedicated_ips - boolean
218
234
  def update(id, params=None, options=None):
@@ -233,6 +249,12 @@ def update(id, params=None, options=None):
233
249
  raise InvalidParameterError(
234
250
  "Bad parameter: server_certificate must be an str"
235
251
  )
252
+ if "mdn_validation_level" in params and not isinstance(
253
+ params["mdn_validation_level"], str
254
+ ):
255
+ raise InvalidParameterError(
256
+ "Bad parameter: mdn_validation_level must be an str"
257
+ )
236
258
  if "public_certificate" in params and not isinstance(
237
259
  params["public_certificate"], str
238
260
  ):
@@ -20,9 +20,11 @@ class Automation:
20
20
  "destinations": None, # array - Destination Paths
21
21
  "disabled": None, # boolean - If true, this automation will not run.
22
22
  "group_ids": None, # array - IDs of Groups for the Automation (i.e. who to Request File from)
23
+ "ignore_locked_folders": None, # boolean - If true, the Lock Folders behavior will be disregarded for automated actions.
23
24
  "interval": None, # string - If trigger is `daily`, this specifies how often to run this automation. One of: `day`, `week`, `week_end`, `month`, `month_end`, `quarter`, `quarter_end`, `year`, `year_end`
24
25
  "last_modified_at": None, # date-time - Time when automation was last modified. Does not change for name or description updates.
25
26
  "name": None, # string - Name for this automation.
27
+ "overwrite_files": None, # boolean - If true, existing files will be overwritten with new files on Move/Copy automations. Note: by default files will not be overwritten if they appear to be the same file size as the newly incoming file. Use the `:always_overwrite_size_matching_files` option to override this.
26
28
  "path": None, # string - Path on which this Automation runs. Supports globs, except on remote mounts. This must be slash-delimited, but it must neither start nor end with a slash. Maximum of 5000 characters.
27
29
  "recurring_day": None, # int64 - If trigger type is `daily`, this specifies a day number to run in one of the supported intervals: `week`, `month`, `quarter`, `year`.
28
30
  "schedule": None, # object - If trigger is `custom_schedule`, Custom schedule description for when the automation should be run in json format.
@@ -97,7 +99,9 @@ class Automation:
97
99
  # always_overwrite_size_matching_files - boolean - Ordinarily, files with identical size in the source and destination will be skipped from copy operations to prevent wasted transfer. If this flag is `true` we will overwrite the destination file always. Note that this may cause large amounts of wasted transfer usage.
98
100
  # description - string - Description for the this Automation.
99
101
  # disabled - boolean - If true, this automation will not run.
102
+ # ignore_locked_folders - boolean - If true, the Lock Folders behavior will be disregarded for automated actions.
100
103
  # name - string - Name for this automation.
104
+ # overwrite_files - boolean - If true, existing files will be overwritten with new files on Move/Copy automations. Note: by default files will not be overwritten if they appear to be the same file size as the newly incoming file. Use the `:always_overwrite_size_matching_files` option to override this.
101
105
  # trigger - string - How this automation is triggered to run.
102
106
  # trigger_actions - array(string) - If trigger is `action`, this is the list of action types on which to trigger the automation. Valid actions are create, read, update, destroy, move, copy
103
107
  # value - object - A Hash of attributes specific to the automation type.
@@ -329,7 +333,9 @@ def get(id, params=None, options=None):
329
333
  # always_overwrite_size_matching_files - boolean - Ordinarily, files with identical size in the source and destination will be skipped from copy operations to prevent wasted transfer. If this flag is `true` we will overwrite the destination file always. Note that this may cause large amounts of wasted transfer usage.
330
334
  # description - string - Description for the this Automation.
331
335
  # disabled - boolean - If true, this automation will not run.
336
+ # ignore_locked_folders - boolean - If true, the Lock Folders behavior will be disregarded for automated actions.
332
337
  # name - string - Name for this automation.
338
+ # overwrite_files - boolean - If true, existing files will be overwritten with new files on Move/Copy automations. Note: by default files will not be overwritten if they appear to be the same file size as the newly incoming file. Use the `:always_overwrite_size_matching_files` option to override this.
333
339
  # trigger - string - How this automation is triggered to run.
334
340
  # trigger_actions - array(string) - If trigger is `action`, this is the list of action types on which to trigger the automation. Valid actions are create, read, update, destroy, move, copy
335
341
  # value - object - A Hash of attributes specific to the automation type.
@@ -460,7 +466,9 @@ def manual_run(id, params=None, options=None):
460
466
  # always_overwrite_size_matching_files - boolean - Ordinarily, files with identical size in the source and destination will be skipped from copy operations to prevent wasted transfer. If this flag is `true` we will overwrite the destination file always. Note that this may cause large amounts of wasted transfer usage.
461
467
  # description - string - Description for the this Automation.
462
468
  # disabled - boolean - If true, this automation will not run.
469
+ # ignore_locked_folders - boolean - If true, the Lock Folders behavior will be disregarded for automated actions.
463
470
  # name - string - Name for this automation.
471
+ # overwrite_files - boolean - If true, existing files will be overwritten with new files on Move/Copy automations. Note: by default files will not be overwritten if they appear to be the same file size as the newly incoming file. Use the `:always_overwrite_size_matching_files` option to override this.
464
472
  # trigger - string - How this automation is triggered to run.
465
473
  # trigger_actions - array(string) - If trigger is `action`, this is the list of action types on which to trigger the automation. Valid actions are create, read, update, destroy, move, copy
466
474
  # value - object - A Hash of attributes specific to the automation type.
@@ -17,6 +17,7 @@ class Behavior:
17
17
  "name": None, # string - Name for this behavior.
18
18
  "description": None, # string - Description for this behavior.
19
19
  "value": None, # object - Settings for this behavior. See the section above for an example value to provide here. Formatting is different for each Behavior type. May be sent as nested JSON or a single JSON-encoded string. If using XML encoding for the API call, this data must be sent as a JSON-encoded string.
20
+ "disable_parent_folder_behavior": None, # boolean - If true, the parent folder's behavior will be disabled for this folder.
20
21
  "attachment_file": None, # file - Certain behaviors may require a file, for instance, the "watermark" behavior requires a watermark image
21
22
  "attachment_delete": None, # boolean - If true, will delete the file stored in attachment
22
23
  }
@@ -43,6 +44,7 @@ class Behavior:
43
44
  # Parameters:
44
45
  # value - string - The value of the folder behavior. Can be an integer, array, or hash depending on the type of folder behavior. See The Behavior Types section for example values for each type of behavior.
45
46
  # attachment_file - file - Certain behaviors may require a file, for instance, the "watermark" behavior requires a watermark image
47
+ # disable_parent_folder_behavior - boolean - If true, the parent folder's behavior will be disabled for this folder.
46
48
  # name - string - Name for this behavior.
47
49
  # description - string - Description for this behavior.
48
50
  # behavior - string - Behavior type.
@@ -220,6 +222,7 @@ def list_for(path, params=None, options=None):
220
222
  # Parameters:
221
223
  # value - string - The value of the folder behavior. Can be an integer, array, or hash depending on the type of folder behavior. See The Behavior Types section for example values for each type of behavior.
222
224
  # attachment_file - file - Certain behaviors may require a file, for instance, the "watermark" behavior requires a watermark image
225
+ # disable_parent_folder_behavior - boolean - If true, the parent folder's behavior will be disabled for this folder.
223
226
  # name - string - Name for this behavior.
224
227
  # description - string - Description for this behavior.
225
228
  # path (required) - string - Folder behaviors path.
@@ -281,6 +284,7 @@ def webhook_test(params=None, options=None):
281
284
  # Parameters:
282
285
  # value - string - The value of the folder behavior. Can be an integer, array, or hash depending on the type of folder behavior. See The Behavior Types section for example values for each type of behavior.
283
286
  # attachment_file - file - Certain behaviors may require a file, for instance, the "watermark" behavior requires a watermark image
287
+ # disable_parent_folder_behavior - boolean - If true, the parent folder's behavior will be disabled for this folder.
284
288
  # name - string - Name for this behavior.
285
289
  # description - string - Description for this behavior.
286
290
  # behavior - string - Behavior type.
@@ -36,7 +36,8 @@ class Bundle:
36
36
  "dont_separate_submissions_by_folder": None, # boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
37
37
  "max_uses": None, # int64 - Maximum number of times bundle can be accessed
38
38
  "note": None, # string - Bundle internal note
39
- "path_template": None, # string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, and any custom form data.
39
+ "path_template": None, # string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, `strftime` directives, and any custom form data.
40
+ "path_template_time_zone": None, # string - Timezone to use when rendering timestamps in path templates.
40
41
  "send_email_receipt_to_uploader": None, # boolean - Send delivery receipt to the uploader. Note: For writable share only
41
42
  "snapshot_id": None, # int64 - ID of the snapshot containing this bundle's contents.
42
43
  "user_id": None, # int64 - Bundle creator user ID
@@ -123,7 +124,8 @@ class Bundle:
123
124
  # inbox_id - int64 - ID of the associated inbox, if available.
124
125
  # max_uses - int64 - Maximum number of times bundle can be accessed
125
126
  # note - string - Bundle internal note
126
- # path_template - string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, and any custom form data.
127
+ # path_template - string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, `strftime` directives, and any custom form data.
128
+ # path_template_time_zone - string - Timezone to use when rendering timestamps in path templates.
127
129
  # permissions - string - Permissions that apply to Folders in this Share Link.
128
130
  # preview_only - boolean - DEPRECATED: Restrict users to previewing files only. Use `permissions` instead.
129
131
  # require_registration - boolean - Show a registration page that captures the downloader's name and email address?
@@ -197,6 +199,12 @@ class Bundle:
197
199
  raise InvalidParameterError(
198
200
  "Bad parameter: path_template must be an str"
199
201
  )
202
+ if "path_template_time_zone" in params and not isinstance(
203
+ params["path_template_time_zone"], str
204
+ ):
205
+ raise InvalidParameterError(
206
+ "Bad parameter: path_template_time_zone must be an str"
207
+ )
200
208
  if "permissions" in params and not isinstance(
201
209
  params["permissions"], str
202
210
  ):
@@ -329,7 +337,8 @@ def get(id, params=None, options=None):
329
337
  # description - string - Public description
330
338
  # note - string - Bundle internal note
331
339
  # code - string - Bundle code. This code forms the end part of the Public URL.
332
- # path_template - string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, and any custom form data.
340
+ # path_template - string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, `strftime` directives, and any custom form data.
341
+ # path_template_time_zone - string - Timezone to use when rendering timestamps in path templates.
333
342
  # permissions - string - Permissions that apply to Folders in this Share Link.
334
343
  # preview_only - boolean - DEPRECATED: Restrict users to previewing files only. Use `permissions` instead.
335
344
  # require_registration - boolean - Show a registration page that captures the downloader's name and email address?
@@ -378,6 +387,12 @@ def create(params=None, options=None):
378
387
  raise InvalidParameterError(
379
388
  "Bad parameter: path_template must be an str"
380
389
  )
390
+ if "path_template_time_zone" in params and not isinstance(
391
+ params["path_template_time_zone"], str
392
+ ):
393
+ raise InvalidParameterError(
394
+ "Bad parameter: path_template_time_zone must be an str"
395
+ )
381
396
  if "permissions" in params and not isinstance(params["permissions"], str):
382
397
  raise InvalidParameterError(
383
398
  "Bad parameter: permissions must be an str"
@@ -451,7 +466,8 @@ def share(id, params=None, options=None):
451
466
  # inbox_id - int64 - ID of the associated inbox, if available.
452
467
  # max_uses - int64 - Maximum number of times bundle can be accessed
453
468
  # note - string - Bundle internal note
454
- # path_template - string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, and any custom form data.
469
+ # path_template - string - Template for creating submission subfolders. Can use the uploader's name, email address, ip, company, `strftime` directives, and any custom form data.
470
+ # path_template_time_zone - string - Timezone to use when rendering timestamps in path templates.
455
471
  # permissions - string - Permissions that apply to Folders in this Share Link.
456
472
  # preview_only - boolean - DEPRECATED: Restrict users to previewing files only. Use `permissions` instead.
457
473
  # require_registration - boolean - Show a registration page that captures the downloader's name and email address?
@@ -507,6 +523,12 @@ def update(id, params=None, options=None):
507
523
  raise InvalidParameterError(
508
524
  "Bad parameter: path_template must be an str"
509
525
  )
526
+ if "path_template_time_zone" in params and not isinstance(
527
+ params["path_template_time_zone"], str
528
+ ):
529
+ raise InvalidParameterError(
530
+ "Bad parameter: path_template_time_zone must be an str"
531
+ )
510
532
  if "permissions" in params and not isinstance(params["permissions"], str):
511
533
  raise InvalidParameterError(
512
534
  "Bad parameter: permissions must be an str"
@@ -12,6 +12,7 @@ class Group:
12
12
  default_attributes = {
13
13
  "id": None, # int64 - Group ID
14
14
  "name": None, # string - Group name
15
+ "allowed_ips": None, # string - A list of allowed IPs if applicable. Newline delimited
15
16
  "admin_ids": None, # string - Comma-delimited list of user IDs who are group administrators (separated by commas)
16
17
  "notes": None, # string - Notes about this group
17
18
  "user_ids": None, # string - Comma-delimited list of user IDs who belong to this group (separated by commas)
@@ -49,6 +50,7 @@ class Group:
49
50
  # sftp_permission - boolean - If true, users in this group can use SFTP to login. This will override a false value of `sftp_permission` on the user level.
50
51
  # dav_permission - boolean - If true, users in this group can use WebDAV to login. This will override a false value of `dav_permission` on the user level.
51
52
  # restapi_permission - boolean - If true, users in this group can use the REST API to login. This will override a false value of `restapi_permission` on the user level.
53
+ # allowed_ips - string - A list of allowed IPs if applicable. Newline delimited
52
54
  # name - string - Group name.
53
55
  def update(self, params=None):
54
56
  if not isinstance(params, dict):
@@ -72,6 +74,12 @@ class Group:
72
74
  raise InvalidParameterError(
73
75
  "Bad parameter: admin_ids must be an str"
74
76
  )
77
+ if "allowed_ips" in params and not isinstance(
78
+ params["allowed_ips"], str
79
+ ):
80
+ raise InvalidParameterError(
81
+ "Bad parameter: allowed_ips must be an str"
82
+ )
75
83
  if "name" in params and not isinstance(params["name"], str):
76
84
  raise InvalidParameterError("Bad parameter: name must be an str")
77
85
  response, _options = Api.send_request(
@@ -180,6 +188,7 @@ def get(id, params=None, options=None):
180
188
  # sftp_permission - boolean - If true, users in this group can use SFTP to login. This will override a false value of `sftp_permission` on the user level.
181
189
  # dav_permission - boolean - If true, users in this group can use WebDAV to login. This will override a false value of `dav_permission` on the user level.
182
190
  # restapi_permission - boolean - If true, users in this group can use the REST API to login. This will override a false value of `restapi_permission` on the user level.
191
+ # allowed_ips - string - A list of allowed IPs if applicable. Newline delimited
183
192
  # name (required) - string - Group name.
184
193
  def create(params=None, options=None):
185
194
  if not isinstance(params, dict):
@@ -192,6 +201,10 @@ def create(params=None, options=None):
192
201
  raise InvalidParameterError("Bad parameter: user_ids must be an str")
193
202
  if "admin_ids" in params and not isinstance(params["admin_ids"], str):
194
203
  raise InvalidParameterError("Bad parameter: admin_ids must be an str")
204
+ if "allowed_ips" in params and not isinstance(params["allowed_ips"], str):
205
+ raise InvalidParameterError(
206
+ "Bad parameter: allowed_ips must be an str"
207
+ )
195
208
  if "name" in params and not isinstance(params["name"], str):
196
209
  raise InvalidParameterError("Bad parameter: name must be an str")
197
210
  if "name" not in params:
@@ -208,6 +221,7 @@ def create(params=None, options=None):
208
221
  # sftp_permission - boolean - If true, users in this group can use SFTP to login. This will override a false value of `sftp_permission` on the user level.
209
222
  # dav_permission - boolean - If true, users in this group can use WebDAV to login. This will override a false value of `dav_permission` on the user level.
210
223
  # restapi_permission - boolean - If true, users in this group can use the REST API to login. This will override a false value of `restapi_permission` on the user level.
224
+ # allowed_ips - string - A list of allowed IPs if applicable. Newline delimited
211
225
  # name - string - Group name.
212
226
  def update(id, params=None, options=None):
213
227
  if not isinstance(params, dict):
@@ -223,6 +237,10 @@ def update(id, params=None, options=None):
223
237
  raise InvalidParameterError("Bad parameter: user_ids must be an str")
224
238
  if "admin_ids" in params and not isinstance(params["admin_ids"], str):
225
239
  raise InvalidParameterError("Bad parameter: admin_ids must be an str")
240
+ if "allowed_ips" in params and not isinstance(params["allowed_ips"], str):
241
+ raise InvalidParameterError(
242
+ "Bad parameter: allowed_ips must be an str"
243
+ )
226
244
  if "name" in params and not isinstance(params["name"], str):
227
245
  raise InvalidParameterError("Bad parameter: name must be an str")
228
246
  if "id" not in params:
@@ -114,17 +114,10 @@ class RemoteServer:
114
114
  # Post local changes, check in, and download configuration file (used by some Remote Server integrations, such as the Files.com Agent)
115
115
  #
116
116
  # Parameters:
117
- # api_token - string - Files Agent API Token
118
- # permission_set - string -
119
- # root - string - Agent local root path
120
- # hostname - string
121
- # port - int64 - Incoming port for files agent connections
122
- # status - string - either running or shutdown
123
- # config_version - string - agent config version
124
- # private_key - string - private key
125
- # public_key - string - public key
126
- # server_host_key - string
127
- # subdomain - string
117
+ # permission_set - string - The permission set for the agent ['read_write', 'read_only', 'write_only']
118
+ # root - string - The root directory for the agent
119
+ # private_key - string - The private key for the agent
120
+ # subdomain - string - Files.com subdomain site name
128
121
  def configuration_file(self, params=None):
129
122
  if not isinstance(params, dict):
130
123
  params = {}
@@ -137,10 +130,6 @@ class RemoteServer:
137
130
  raise MissingParameterError("Parameter missing: id")
138
131
  if "id" in params and not isinstance(params["id"], int):
139
132
  raise InvalidParameterError("Bad parameter: id must be an int")
140
- if "api_token" in params and not isinstance(params["api_token"], str):
141
- raise InvalidParameterError(
142
- "Bad parameter: api_token must be an str"
143
- )
144
133
  if "permission_set" in params and not isinstance(
145
134
  params["permission_set"], str
146
135
  ):
@@ -149,38 +138,12 @@ class RemoteServer:
149
138
  )
150
139
  if "root" in params and not isinstance(params["root"], str):
151
140
  raise InvalidParameterError("Bad parameter: root must be an str")
152
- if "hostname" in params and not isinstance(params["hostname"], str):
153
- raise InvalidParameterError(
154
- "Bad parameter: hostname must be an str"
155
- )
156
- if "port" in params and not isinstance(params["port"], int):
157
- raise InvalidParameterError("Bad parameter: port must be an int")
158
- if "status" in params and not isinstance(params["status"], str):
159
- raise InvalidParameterError("Bad parameter: status must be an str")
160
- if "config_version" in params and not isinstance(
161
- params["config_version"], str
162
- ):
163
- raise InvalidParameterError(
164
- "Bad parameter: config_version must be an str"
165
- )
166
141
  if "private_key" in params and not isinstance(
167
142
  params["private_key"], str
168
143
  ):
169
144
  raise InvalidParameterError(
170
145
  "Bad parameter: private_key must be an str"
171
146
  )
172
- if "public_key" in params and not isinstance(
173
- params["public_key"], str
174
- ):
175
- raise InvalidParameterError(
176
- "Bad parameter: public_key must be an str"
177
- )
178
- if "server_host_key" in params and not isinstance(
179
- params["server_host_key"], str
180
- ):
181
- raise InvalidParameterError(
182
- "Bad parameter: server_host_key must be an str"
183
- )
184
147
  if "subdomain" in params and not isinstance(params["subdomain"], str):
185
148
  raise InvalidParameterError(
186
149
  "Bad parameter: subdomain must be an str"
@@ -1119,17 +1082,10 @@ def create(params=None, options=None):
1119
1082
  # Post local changes, check in, and download configuration file (used by some Remote Server integrations, such as the Files.com Agent)
1120
1083
  #
1121
1084
  # Parameters:
1122
- # api_token - string - Files Agent API Token
1123
- # permission_set - string -
1124
- # root - string - Agent local root path
1125
- # hostname - string
1126
- # port - int64 - Incoming port for files agent connections
1127
- # status - string - either running or shutdown
1128
- # config_version - string - agent config version
1129
- # private_key - string - private key
1130
- # public_key - string - public key
1131
- # server_host_key - string
1132
- # subdomain - string
1085
+ # permission_set - string - The permission set for the agent ['read_write', 'read_only', 'write_only']
1086
+ # root - string - The root directory for the agent
1087
+ # private_key - string - The private key for the agent
1088
+ # subdomain - string - Files.com subdomain site name
1133
1089
  def configuration_file(id, params=None, options=None):
1134
1090
  if not isinstance(params, dict):
1135
1091
  params = {}
@@ -1138,8 +1094,6 @@ def configuration_file(id, params=None, options=None):
1138
1094
  params["id"] = id
1139
1095
  if "id" in params and not isinstance(params["id"], int):
1140
1096
  raise InvalidParameterError("Bad parameter: id must be an int")
1141
- if "api_token" in params and not isinstance(params["api_token"], str):
1142
- raise InvalidParameterError("Bad parameter: api_token must be an str")
1143
1097
  if "permission_set" in params and not isinstance(
1144
1098
  params["permission_set"], str
1145
1099
  ):
@@ -1148,30 +1102,10 @@ def configuration_file(id, params=None, options=None):
1148
1102
  )
1149
1103
  if "root" in params and not isinstance(params["root"], str):
1150
1104
  raise InvalidParameterError("Bad parameter: root must be an str")
1151
- if "hostname" in params and not isinstance(params["hostname"], str):
1152
- raise InvalidParameterError("Bad parameter: hostname must be an str")
1153
- if "port" in params and not isinstance(params["port"], int):
1154
- raise InvalidParameterError("Bad parameter: port must be an int")
1155
- if "status" in params and not isinstance(params["status"], str):
1156
- raise InvalidParameterError("Bad parameter: status must be an str")
1157
- if "config_version" in params and not isinstance(
1158
- params["config_version"], str
1159
- ):
1160
- raise InvalidParameterError(
1161
- "Bad parameter: config_version must be an str"
1162
- )
1163
1105
  if "private_key" in params and not isinstance(params["private_key"], str):
1164
1106
  raise InvalidParameterError(
1165
1107
  "Bad parameter: private_key must be an str"
1166
1108
  )
1167
- if "public_key" in params and not isinstance(params["public_key"], str):
1168
- raise InvalidParameterError("Bad parameter: public_key must be an str")
1169
- if "server_host_key" in params and not isinstance(
1170
- params["server_host_key"], str
1171
- ):
1172
- raise InvalidParameterError(
1173
- "Bad parameter: server_host_key must be an str"
1174
- )
1175
1109
  if "subdomain" in params and not isinstance(params["subdomain"], str):
1176
1110
  raise InvalidParameterError("Bad parameter: subdomain must be an str")
1177
1111
  if "id" not in params:
@@ -0,0 +1,65 @@
1
+ import builtins # noqa: F401
2
+ from files_sdk.api import Api # noqa: F401
3
+ from files_sdk.error import ( # noqa: F401
4
+ InvalidParameterError,
5
+ MissingParameterError,
6
+ NotImplementedError,
7
+ )
8
+
9
+
10
+ class RemoteServerConfigurationFile:
11
+ default_attributes = {
12
+ "id": None, # int64 - The remote server ID of the agent
13
+ "permission_set": None, # string - The permission set for the agent ['read_write', 'read_only', 'write_only']
14
+ "private_key": None, # string - The private key for the agent
15
+ "subdomain": None, # string - Files.com subdomain site name
16
+ "root": None, # string - The root directory for the agent
17
+ "follow_links": None, # boolean - Follow symlinks when traversing directories
18
+ "prefer_protocol": None, # string - Preferred network protocol ['udp', 'tcp']
19
+ "dns": None, # string - DNS lookup method ['auto','doh','system']
20
+ "proxy_all_outbound": None, # boolean - Proxy all outbound traffic through files.com proxy server
21
+ "endpoint_override": None, # string - Custom site endpoint URL
22
+ "log_file": None, # string - Log file name and location
23
+ "log_level": None, # string - Log level for the agent logs ['debug', 'info', 'warn', 'error', 'fatal']
24
+ "log_rotate_num": None, # int64 - Log route for agent logs. (default 5)
25
+ "log_rotate_size": None, # int64 - Log route size in MB for agent logs. (default 20MB)
26
+ "max_concurrent_jobs": None, # int64 - Maximum number of concurrent jobs (default CPU Count * 4)
27
+ "graceful_shutdown_timeout": None, # int64 - Graceful shutdown timeout in seconds
28
+ "transfer_rate_limit": None, # string - File transfer (upload/download) rate limit
29
+ # <limit>-<period>, with the given periods:
30
+ # * 'S': second
31
+ # * 'M': minute
32
+ # * 'H': hour
33
+ # * 'D': day
34
+ # Examples:
35
+ # * 5 requests/second: '5-S'
36
+ # * 10 requests/minute: '10-M'
37
+ # * 1000 requests/hour: '1000-H'
38
+ # * 2000 requests/day: '2000-D'
39
+ }
40
+
41
+ def __init__(self, attributes=None, options=None):
42
+ if not isinstance(attributes, dict):
43
+ attributes = {}
44
+ if not isinstance(options, dict):
45
+ options = {}
46
+ self.set_attributes(attributes)
47
+ self.options = options
48
+
49
+ def set_attributes(self, attributes):
50
+ for (
51
+ attribute,
52
+ default_value,
53
+ ) in RemoteServerConfigurationFile.default_attributes.items():
54
+ setattr(self, attribute, attributes.get(attribute, default_value))
55
+
56
+ def get_attributes(self):
57
+ return {
58
+ k: getattr(self, k, None)
59
+ for k in RemoteServerConfigurationFile.default_attributes
60
+ if getattr(self, k, None) is not None
61
+ }
62
+
63
+
64
+ def new(*args, **kwargs):
65
+ return RemoteServerConfigurationFile(*args, **kwargs)
@@ -128,7 +128,7 @@ class Site:
128
128
  "sftp_enabled": None, # boolean - Is SFTP enabled?
129
129
  "sftp_host_key_type": None, # string - Sftp Host Key Type
130
130
  "active_sftp_host_key_id": None, # int64 - Id of the currently selected custom SFTP Host Key
131
- "sftp_insecure_ciphers": None, # boolean - Are Insecure Ciphers allowed for SFTP? Note: Settting TLS Disabled -> True will always allow insecure ciphers for SFTP as well. Enabling this is insecure.
131
+ "sftp_insecure_ciphers": None, # boolean - Are Insecure Ciphers allowed for SFTP? Note: Setting TLS Disabled -> True will always allow insecure ciphers for SFTP as well. Enabling this is insecure.
132
132
  "sftp_user_root_enabled": None, # boolean - Use user FTP roots also for SFTP?
133
133
  "sharing_enabled": None, # boolean - Allow bundle creation
134
134
  "show_request_access_link": None, # boolean - Show request access link for users without access? Currently unused.
@@ -240,7 +240,7 @@ def get_usage(params=None, options=None):
240
240
  # session_expiry - double - Session expiry in hours
241
241
  # ssl_required - boolean - Is SSL required? Disabling this is insecure.
242
242
  # tls_disabled - boolean - Are Insecure TLS and SFTP Ciphers allowed? Enabling this is insecure.
243
- # sftp_insecure_ciphers - boolean - Are Insecure Ciphers allowed for SFTP? Note: Settting TLS Disabled -> True will always allow insecure ciphers for SFTP as well. Enabling this is insecure.
243
+ # sftp_insecure_ciphers - boolean - Are Insecure Ciphers allowed for SFTP? Note: Setting TLS Disabled -> True will always allow insecure ciphers for SFTP as well. Enabling this is insecure.
244
244
  # disable_files_certificate_generation - boolean - If set, Files.com will not set the CAA records required to generate future SSL certificates for this domain.
245
245
  # user_lockout - boolean - Will users be locked out after incorrect login attempts?
246
246
  # user_lockout_tries - int64 - Number of login tries within `user_lockout_within` hours before users are locked out
@@ -45,6 +45,7 @@ class SsoStrategy:
45
45
  "provision_sftp_permission": None, # boolean - Auto-provisioned users get SFTP permission?
46
46
  "provision_time_zone": None, # string - Default time zone for auto provisioned users.
47
47
  "provision_company": None, # string - Default company for auto provisioned users.
48
+ "provision_require_2fa": None, # string - 2FA required setting for auto provisioned users.
48
49
  "ldap_base_dn": None, # string - Base DN for looking up users in LDAP server
49
50
  "ldap_domain": None, # string - Domain name that will be appended to LDAP usernames
50
51
  "enabled": None, # boolean - Is strategy enabled? This may become automatically set to `false` after a high number and duration of failures.
@@ -66,7 +66,8 @@ class User:
66
66
  "subscribe_to_newsletter": None, # boolean - Is the user subscribed to the newsletter?
67
67
  "externally_managed": None, # boolean - Is this user managed by a SsoStrategy?
68
68
  "time_zone": None, # string - User time zone
69
- "type_of_2fa": None, # string - Type(s) of 2FA methods in use. Will be either `sms`, `totp`, `u2f`, `yubi`, or multiple values sorted alphabetically and joined by an underscore.
69
+ "type_of_2fa": None, # string - Type(s) of 2FA methods in use, for programmatic use. Will be either `sms`, `totp`, `u2f`, `yubi`, or multiple values sorted alphabetically and joined by an underscore. Does not specify whether user has more than one of a given method.
70
+ "type_of_2fa_for_display": None, # string - Type(s) of 2FA methods in use, formatted for displaying in the UI. Unlike `type_of_2fa`, this value will make clear when a user has more than 1 of the same type of method.
70
71
  "user_root": None, # string - Root folder for FTP (and optionally SFTP if the appropriate site-wide setting is set.) Note that this is not used for API, Desktop, or Web interface.
71
72
  "days_remaining_until_password_expire": None, # int64 - Number of days remaining until password expires
72
73
  "password_expire_at": None, # date-time - Password expiration datetime
@@ -14,6 +14,7 @@ class UserRequest:
14
14
  "name": None, # string - User's full name
15
15
  "email": None, # email - User email address
16
16
  "details": None, # string - Details of the user's request
17
+ "company": None, # string - User's company name
17
18
  }
18
19
 
19
20
  def __init__(self, attributes=None, options=None):
@@ -113,6 +114,7 @@ def get(id, params=None, options=None):
113
114
  # name (required) - string - Name of user requested
114
115
  # email (required) - string - Email of user requested
115
116
  # details (required) - string - Details of the user request
117
+ # company - string - Company of the user requested
116
118
  def create(params=None, options=None):
117
119
  if not isinstance(params, dict):
118
120
  params = {}
@@ -124,6 +126,8 @@ def create(params=None, options=None):
124
126
  raise InvalidParameterError("Bad parameter: email must be an str")
125
127
  if "details" in params and not isinstance(params["details"], str):
126
128
  raise InvalidParameterError("Bad parameter: details must be an str")
129
+ if "company" in params and not isinstance(params["company"], str):
130
+ raise InvalidParameterError("Bad parameter: company must be an str")
127
131
  if "name" not in params:
128
132
  raise MissingParameterError("Parameter missing: name")
129
133
  if "email" not in params:
@@ -1,50 +0,0 @@
1
- import builtins # noqa: F401
2
- from files_sdk.api import Api # noqa: F401
3
- from files_sdk.error import ( # noqa: F401
4
- InvalidParameterError,
5
- MissingParameterError,
6
- NotImplementedError,
7
- )
8
-
9
-
10
- class RemoteServerConfigurationFile:
11
- default_attributes = {
12
- "id": None, # int64 - Agent ID
13
- "permission_set": None, # string -
14
- "private_key": None, # string - private key
15
- "subdomain": None, # string
16
- "root": None, # string - Agent local root path
17
- "api_token": None, # string - Files Agent API Token
18
- "port": None, # int64 - Incoming port for files agent connections
19
- "hostname": None, # string
20
- "public_key": None, # string - public key
21
- "status": None, # string - either running or shutdown
22
- "server_host_key": None, # string
23
- "config_version": None, # string - agent config version
24
- }
25
-
26
- def __init__(self, attributes=None, options=None):
27
- if not isinstance(attributes, dict):
28
- attributes = {}
29
- if not isinstance(options, dict):
30
- options = {}
31
- self.set_attributes(attributes)
32
- self.options = options
33
-
34
- def set_attributes(self, attributes):
35
- for (
36
- attribute,
37
- default_value,
38
- ) in RemoteServerConfigurationFile.default_attributes.items():
39
- setattr(self, attribute, attributes.get(attribute, default_value))
40
-
41
- def get_attributes(self):
42
- return {
43
- k: getattr(self, k, None)
44
- for k in RemoteServerConfigurationFile.default_attributes
45
- if getattr(self, k, None) is not None
46
- }
47
-
48
-
49
- def new(*args, **kwargs):
50
- return RemoteServerConfigurationFile(*args, **kwargs)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes