files.com 1.1.308 → 1.1.310

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d92592a5f32cc6407758f4759c192b59478ca26a2ad2819737d466ed8d13fa8e
4
- data.tar.gz: 1e8201a7d236b576dac9f94bd8b34215ccc643f8d49f565ad18a466e98814097
3
+ metadata.gz: 6ce1185b83e43ac2f0ed150a9a155b9b185a5c507a336662d68ea32474163693
4
+ data.tar.gz: 1b6381d8c2a4fbbaec22c4a59272028716cfe2a5457126a60d2f86a5ba2e2ac0
5
5
  SHA512:
6
- metadata.gz: 6e385cbe54e4b721030f670cfcef7ec96067058160420d3ade1531c2ca456361b827460c55913b24f6798c0355eb575ced36075e3c10735c019c219e43798c97
7
- data.tar.gz: b81e4580098fe594c507e85585fbda9bf86be0e2ae379b741aa4f8f115ff8b4f4a2a93a7a0b5739c7f2973cefd8a8ee8e7e1dbb1d9bccdfc23b37971524c17a4
6
+ metadata.gz: 67e3746e74cec4bccfb809c4a266f942ba02ee0182d316913acf9a43b7a77d5afa9eb1de19c40bdbbeab6f5f3fa43117406a82c88f814ad666c55b8b6e64fc9a
7
+ data.tar.gz: 3dd482ab685b322663c2b28a2ee657c65431537e77dc4d9c0255a1d92fc341cdc7bac6b31e61968eeb9902e8bf0b668921d24b7e0717431206b6fd8cf52e2323
data/README.md CHANGED
@@ -335,6 +335,61 @@ rescue Files::Error => e
335
335
  end
336
336
  ```
337
337
 
338
+ ## Paths
339
+
340
+ Working with paths in Files.com involves several important considerations. Understanding how path comparisons are applied helps developers ensure consistency and accuracy across all interactions with the platform.
341
+ <div></div>
342
+
343
+ ### Capitalization
344
+
345
+ Files.com compares paths in a **case-insensitive** manner. This means path segments are treated as equivalent regardless of letter casing.
346
+
347
+ For example, all of the following resolve to the same internal path:
348
+
349
+ | Path Variant | Interpreted As |
350
+ |---------------------------------------|------------------------------|
351
+ | `Documents/Reports/Q1.pdf` | `documents/reports/q1.pdf` |
352
+ | `documents/reports/q1.PDF` | `documents/reports/q1.pdf` |
353
+ | `DOCUMENTS/REPORTS/Q1.PDF` | `documents/reports/q1.pdf` |
354
+
355
+ This behavior applies across:
356
+ - API requests
357
+ - Folder and file lookup operations
358
+ - Automations and workflows
359
+
360
+ See also: [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/case-sensitivity/)
361
+
362
+ ### Slashes
363
+
364
+ All path parameters in Files.com (API, SDKs, CLI, automations, integrations) must **omit leading and trailing slashes**. Paths are always treated as **absolute and slash-delimited**, so only internal `/` separators are used and never at the start or end of the string.
365
+
366
+ #### Path Slash Examples
367
+ | Path | Valid? | Notes |
368
+ |-----------------------------------|--------|-------------------------------|
369
+ | `folder/subfolder/file.txt` | ✅ | Correct, internal separators only |
370
+ | `/folder/subfolder/file.txt` | ❌ | Leading slash not allowed |
371
+ | `folder/subfolder/file.txt/` | ❌ | Trailing slash not allowed |
372
+ | `//folder//file.txt` | ❌ | Duplicate separators not allowed |
373
+
374
+ <div></div>
375
+
376
+ ### Unicode Normalization
377
+
378
+ Files.com normalizes all paths using [Unicode NFC (Normalization Form C)](https://www.unicode.org/reports/tr15/#Norm_Forms) before comparison. This ensures consistency across different representations of the same characters.
379
+
380
+ For example, the following two paths are treated as equivalent after NFC normalization:
381
+
382
+ | Input | Normalized Form |
383
+ |----------------------------------------|------------------------|
384
+ | `uploads/\u0065\u0301.txt` | `uploads/é.txt` |
385
+ | `docs/Café/Report.txt` | `docs/Café/Report.txt` |
386
+
387
+ - All input must be UTF‑8 encoded.
388
+ - Precomposed and decomposed characters are unified.
389
+ - This affects search, deduplication, and comparisons across SDKs.
390
+
391
+ <div></div>
392
+
338
393
  ## Foreign Language Support
339
394
 
340
395
  The Files.com Ruby SDK supports localized responses by using the `Files.language` configuration attribute.
@@ -609,10 +664,6 @@ rescue Files::Error => e
609
664
  end
610
665
  ```
611
666
 
612
- ## Case Sensitivity
613
-
614
- The Files.com API compares files and paths in a case-insensitive manner. For related documentation see [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/file-system-semantics/case-sensitivity).
615
-
616
667
  ## Mock Server
617
668
 
618
669
  Files.com publishes a Files.com API server, which is useful for testing your use of the Files.com
data/_VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.308
1
+ 1.1.310
@@ -0,0 +1,138 @@
1
+ # ChildSiteManagementPolicy
2
+
3
+ ## Example ChildSiteManagementPolicy Object
4
+
5
+ ```
6
+ {
7
+ "id": 1,
8
+ "site_id": 1,
9
+ "site_setting_name": "color2_left",
10
+ "managed_value": "#FF0000",
11
+ "skip_child_site_ids": [
12
+ 1,
13
+ 5
14
+ ]
15
+ }
16
+ ```
17
+
18
+ * `id` (int64): ChildSiteManagementPolicy ID
19
+ * `site_id` (int64): ID of the Site managing the policy
20
+ * `site_setting_name` (string): The name of the setting that is managed by the policy
21
+ * `managed_value` (string): The value for the setting that will be enforced for all child sites that are not exempt
22
+ * `skip_child_site_ids` (array(int64)): The list of child site IDs that are exempt from this policy
23
+
24
+
25
+ ---
26
+
27
+ ## List Child Site Management Policies
28
+
29
+ ```
30
+ Files::ChildSiteManagementPolicy.list
31
+ ```
32
+
33
+ ### Parameters
34
+
35
+ * `cursor` (string): Used for pagination. When a list request has more records available, cursors are provided in the response headers `X-Files-Cursor-Next` and `X-Files-Cursor-Prev`. Send one of those cursor value here to resume an existing list from the next available record. Note: many of our SDKs have iterator methods that will automatically handle cursor-based pagination.
36
+ * `per_page` (int64): Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
37
+
38
+
39
+ ---
40
+
41
+ ## Show Child Site Management Policy
42
+
43
+ ```
44
+ Files::ChildSiteManagementPolicy.find(id)
45
+ ```
46
+
47
+ ### Parameters
48
+
49
+ * `id` (int64): Required - Child Site Management Policy ID.
50
+
51
+
52
+ ---
53
+
54
+ ## Create Child Site Management Policy
55
+
56
+ ```
57
+ Files::ChildSiteManagementPolicy.create(
58
+ site_setting_name: "color2_left",
59
+ managed_value: "#FF0000",
60
+ skip_child_site_ids: [1,5]
61
+ )
62
+ ```
63
+
64
+ ### Parameters
65
+
66
+ * `site_setting_name` (string): Required - The name of the setting that is managed by the policy
67
+ * `managed_value` (string): Required - The value for the setting that will be enforced for all child sites that are not exempt
68
+ * `skip_child_site_ids` (array(int64)): The list of child site IDs that are exempt from this policy
69
+
70
+
71
+ ---
72
+
73
+ ## Update Child Site Management Policy
74
+
75
+ ```
76
+ Files::ChildSiteManagementPolicy.update(id,
77
+ site_setting_name: "color2_left",
78
+ managed_value: "#FF0000",
79
+ skip_child_site_ids: [1,5]
80
+ )
81
+ ```
82
+
83
+ ### Parameters
84
+
85
+ * `id` (int64): Required - Child Site Management Policy ID.
86
+ * `site_setting_name` (string): Required - The name of the setting that is managed by the policy
87
+ * `managed_value` (string): Required - The value for the setting that will be enforced for all child sites that are not exempt
88
+ * `skip_child_site_ids` (array(int64)): The list of child site IDs that are exempt from this policy
89
+
90
+
91
+ ---
92
+
93
+ ## Delete Child Site Management Policy
94
+
95
+ ```
96
+ Files::ChildSiteManagementPolicy.delete(id)
97
+ ```
98
+
99
+ ### Parameters
100
+
101
+ * `id` (int64): Required - Child Site Management Policy ID.
102
+
103
+
104
+ ---
105
+
106
+ ## Update Child Site Management Policy
107
+
108
+ ```
109
+ child_site_management_policy = Files::ChildSiteManagementPolicy.find(id)
110
+
111
+ child_site_management_policy.update(
112
+ site_setting_name: "color2_left",
113
+ managed_value: "#FF0000",
114
+ skip_child_site_ids: [1,5]
115
+ )
116
+ ```
117
+
118
+ ### Parameters
119
+
120
+ * `id` (int64): Required - Child Site Management Policy ID.
121
+ * `site_setting_name` (string): Required - The name of the setting that is managed by the policy
122
+ * `managed_value` (string): Required - The value for the setting that will be enforced for all child sites that are not exempt
123
+ * `skip_child_site_ids` (array(int64)): The list of child site IDs that are exempt from this policy
124
+
125
+
126
+ ---
127
+
128
+ ## Delete Child Site Management Policy
129
+
130
+ ```
131
+ child_site_management_policy = Files::ChildSiteManagementPolicy.find(id)
132
+
133
+ child_site_management_policy.delete
134
+ ```
135
+
136
+ ### Parameters
137
+
138
+ * `id` (int64): Required - Child Site Management Policy ID.
@@ -59,7 +59,7 @@ Examples:
59
59
  * 10 requests/minute: '10-M'
60
60
  * 1000 requests/hour: '1000-H'
61
61
  * 2000 requests/day: '2000-D'
62
- * `auto_update_policy` (string): Auto update policy ['manual_trigger', 'critical_only', 'always'] (default critical_only)
62
+ * `auto_update_policy` (string): Auto update policy ['manual_trigger', 'critical_only', 'always', 'never'] (default critical_only)
63
63
  * `api_token` (string): Files Agent API Token
64
64
  * `port` (int64): Incoming port for files agent connections
65
65
  * `hostname` (string):
data/docs/site.md CHANGED
@@ -300,7 +300,10 @@
300
300
  "welcome_email_enabled": true,
301
301
  "welcome_screen": "user_controlled",
302
302
  "windows_mode_ftp": true,
303
- "group_admins_can_set_user_password": true
303
+ "group_admins_can_set_user_password": true,
304
+ "managed_site_settings": [
305
+ "example"
306
+ ]
304
307
  }
305
308
  ```
306
309
 
@@ -475,6 +478,7 @@
475
478
  * `welcome_screen` (string): Does the welcome screen appear?
476
479
  * `windows_mode_ftp` (boolean): Does FTP user Windows emulation mode?
477
480
  * `group_admins_can_set_user_password` (boolean): Allow group admins set password authentication method
481
+ * `managed_site_settings` (array(string)): List of site settings managed by the parent site
478
482
 
479
483
 
480
484
  ---
@@ -0,0 +1,183 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Files
4
+ class ChildSiteManagementPolicy
5
+ attr_reader :options, :attributes
6
+
7
+ def initialize(attributes = {}, options = {})
8
+ @attributes = attributes || {}
9
+ @options = options || {}
10
+ end
11
+
12
+ # int64 - ChildSiteManagementPolicy ID
13
+ def id
14
+ @attributes[:id]
15
+ end
16
+
17
+ def id=(value)
18
+ @attributes[:id] = value
19
+ end
20
+
21
+ # int64 - ID of the Site managing the policy
22
+ def site_id
23
+ @attributes[:site_id]
24
+ end
25
+
26
+ def site_id=(value)
27
+ @attributes[:site_id] = value
28
+ end
29
+
30
+ # string - The name of the setting that is managed by the policy
31
+ def site_setting_name
32
+ @attributes[:site_setting_name]
33
+ end
34
+
35
+ def site_setting_name=(value)
36
+ @attributes[:site_setting_name] = value
37
+ end
38
+
39
+ # string - The value for the setting that will be enforced for all child sites that are not exempt
40
+ def managed_value
41
+ @attributes[:managed_value]
42
+ end
43
+
44
+ def managed_value=(value)
45
+ @attributes[:managed_value] = value
46
+ end
47
+
48
+ # array(int64) - The list of child site IDs that are exempt from this policy
49
+ def skip_child_site_ids
50
+ @attributes[:skip_child_site_ids]
51
+ end
52
+
53
+ def skip_child_site_ids=(value)
54
+ @attributes[:skip_child_site_ids] = value
55
+ end
56
+
57
+ # Parameters:
58
+ # site_setting_name (required) - string - The name of the setting that is managed by the policy
59
+ # managed_value (required) - string - The value for the setting that will be enforced for all child sites that are not exempt
60
+ # skip_child_site_ids - array(int64) - The list of child site IDs that are exempt from this policy
61
+ def update(params = {})
62
+ params ||= {}
63
+ params[:id] = @attributes[:id]
64
+ raise MissingParameterError.new("Current object doesn't have a id") unless @attributes[:id]
65
+ raise InvalidParameterError.new("Bad parameter: id must be an Integer") if params[:id] and !params[:id].is_a?(Integer)
66
+ raise InvalidParameterError.new("Bad parameter: site_setting_name must be an String") if params[:site_setting_name] and !params[:site_setting_name].is_a?(String)
67
+ raise InvalidParameterError.new("Bad parameter: managed_value must be an String") if params[:managed_value] and !params[:managed_value].is_a?(String)
68
+ raise InvalidParameterError.new("Bad parameter: skip_child_site_ids must be an Array") if params[:skip_child_site_ids] and !params[:skip_child_site_ids].is_a?(Array)
69
+ raise MissingParameterError.new("Parameter missing: id") unless params[:id]
70
+ raise MissingParameterError.new("Parameter missing: site_setting_name") unless params[:site_setting_name]
71
+ raise MissingParameterError.new("Parameter missing: managed_value") unless params[:managed_value]
72
+
73
+ Api.send_request("/child_site_management_policies/#{@attributes[:id]}", :patch, params, @options)
74
+ end
75
+
76
+ def delete(params = {})
77
+ params ||= {}
78
+ params[:id] = @attributes[:id]
79
+ raise MissingParameterError.new("Current object doesn't have a id") unless @attributes[:id]
80
+ raise InvalidParameterError.new("Bad parameter: id must be an Integer") if params[:id] and !params[:id].is_a?(Integer)
81
+ raise MissingParameterError.new("Parameter missing: id") unless params[:id]
82
+
83
+ Api.send_request("/child_site_management_policies/#{@attributes[:id]}", :delete, params, @options)
84
+ end
85
+
86
+ def destroy(params = {})
87
+ delete(params)
88
+ nil
89
+ end
90
+
91
+ def save
92
+ if @attributes[:id]
93
+ new_obj = update(@attributes)
94
+ else
95
+ new_obj = ChildSiteManagementPolicy.create(@attributes, @options)
96
+ end
97
+
98
+ @attributes = new_obj.attributes
99
+ true
100
+ end
101
+
102
+ # Parameters:
103
+ # cursor - string - Used for pagination. When a list request has more records available, cursors are provided in the response headers `X-Files-Cursor-Next` and `X-Files-Cursor-Prev`. Send one of those cursor value here to resume an existing list from the next available record. Note: many of our SDKs have iterator methods that will automatically handle cursor-based pagination.
104
+ # per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
105
+ def self.list(params = {}, options = {})
106
+ raise InvalidParameterError.new("Bad parameter: cursor must be an String") if params[:cursor] and !params[:cursor].is_a?(String)
107
+ raise InvalidParameterError.new("Bad parameter: per_page must be an Integer") if params[:per_page] and !params[:per_page].is_a?(Integer)
108
+
109
+ List.new(ChildSiteManagementPolicy, params) do
110
+ Api.send_request("/child_site_management_policies", :get, params, options)
111
+ end
112
+ end
113
+
114
+ def self.all(params = {}, options = {})
115
+ list(params, options)
116
+ end
117
+
118
+ # Parameters:
119
+ # id (required) - int64 - Child Site Management Policy ID.
120
+ def self.find(id, params = {}, options = {})
121
+ params ||= {}
122
+ params[:id] = id
123
+ raise InvalidParameterError.new("Bad parameter: id must be an Integer") if params[:id] and !params[:id].is_a?(Integer)
124
+ raise MissingParameterError.new("Parameter missing: id") unless params[:id]
125
+
126
+ response, options = Api.send_request("/child_site_management_policies/#{params[:id]}", :get, params, options)
127
+ ChildSiteManagementPolicy.new(response.data, options)
128
+ end
129
+
130
+ def self.get(id, params = {}, options = {})
131
+ find(id, params, options)
132
+ end
133
+
134
+ # Parameters:
135
+ # site_setting_name (required) - string - The name of the setting that is managed by the policy
136
+ # managed_value (required) - string - The value for the setting that will be enforced for all child sites that are not exempt
137
+ # skip_child_site_ids - array(int64) - The list of child site IDs that are exempt from this policy
138
+ def self.create(params = {}, options = {})
139
+ raise InvalidParameterError.new("Bad parameter: site_setting_name must be an String") if params[:site_setting_name] and !params[:site_setting_name].is_a?(String)
140
+ raise InvalidParameterError.new("Bad parameter: managed_value must be an String") if params[:managed_value] and !params[:managed_value].is_a?(String)
141
+ raise InvalidParameterError.new("Bad parameter: skip_child_site_ids must be an Array") if params[:skip_child_site_ids] and !params[:skip_child_site_ids].is_a?(Array)
142
+ raise MissingParameterError.new("Parameter missing: site_setting_name") unless params[:site_setting_name]
143
+ raise MissingParameterError.new("Parameter missing: managed_value") unless params[:managed_value]
144
+
145
+ response, options = Api.send_request("/child_site_management_policies", :post, params, options)
146
+ ChildSiteManagementPolicy.new(response.data, options)
147
+ end
148
+
149
+ # Parameters:
150
+ # site_setting_name (required) - string - The name of the setting that is managed by the policy
151
+ # managed_value (required) - string - The value for the setting that will be enforced for all child sites that are not exempt
152
+ # skip_child_site_ids - array(int64) - The list of child site IDs that are exempt from this policy
153
+ def self.update(id, params = {}, options = {})
154
+ params ||= {}
155
+ params[:id] = id
156
+ raise InvalidParameterError.new("Bad parameter: id must be an Integer") if params[:id] and !params[:id].is_a?(Integer)
157
+ raise InvalidParameterError.new("Bad parameter: site_setting_name must be an String") if params[:site_setting_name] and !params[:site_setting_name].is_a?(String)
158
+ raise InvalidParameterError.new("Bad parameter: managed_value must be an String") if params[:managed_value] and !params[:managed_value].is_a?(String)
159
+ raise InvalidParameterError.new("Bad parameter: skip_child_site_ids must be an Array") if params[:skip_child_site_ids] and !params[:skip_child_site_ids].is_a?(Array)
160
+ raise MissingParameterError.new("Parameter missing: id") unless params[:id]
161
+ raise MissingParameterError.new("Parameter missing: site_setting_name") unless params[:site_setting_name]
162
+ raise MissingParameterError.new("Parameter missing: managed_value") unless params[:managed_value]
163
+
164
+ response, options = Api.send_request("/child_site_management_policies/#{params[:id]}", :patch, params, options)
165
+ ChildSiteManagementPolicy.new(response.data, options)
166
+ end
167
+
168
+ def self.delete(id, params = {}, options = {})
169
+ params ||= {}
170
+ params[:id] = id
171
+ raise InvalidParameterError.new("Bad parameter: id must be an Integer") if params[:id] and !params[:id].is_a?(Integer)
172
+ raise MissingParameterError.new("Parameter missing: id") unless params[:id]
173
+
174
+ Api.send_request("/child_site_management_policies/#{params[:id]}", :delete, params, options)
175
+ nil
176
+ end
177
+
178
+ def self.destroy(id, params = {}, options = {})
179
+ delete(id, params, options)
180
+ nil
181
+ end
182
+ end
183
+ end
@@ -104,7 +104,7 @@ module Files
104
104
  @attributes[:transfer_rate_limit]
105
105
  end
106
106
 
107
- # string - Auto update policy ['manual_trigger', 'critical_only', 'always'] (default critical_only)
107
+ # string - Auto update policy ['manual_trigger', 'critical_only', 'always', 'never'] (default critical_only)
108
108
  def auto_update_policy
109
109
  @attributes[:auto_update_policy]
110
110
  end
@@ -864,6 +864,11 @@ module Files
864
864
  @attributes[:group_admins_can_set_user_password]
865
865
  end
866
866
 
867
+ # array(string) - List of site settings managed by the parent site
868
+ def managed_site_settings
869
+ @attributes[:managed_site_settings]
870
+ end
871
+
867
872
  def self.get(params = {}, options = {})
868
873
  response, options = Api.send_request("/site", :get, params, options)
869
874
  Site.new(response.data, options)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Files
4
- VERSION = "1.1.308"
4
+ VERSION = "1.1.310"
5
5
  end
data/lib/files.com.rb CHANGED
@@ -56,6 +56,7 @@ require "files.com/models/bundle_notification"
56
56
  require "files.com/models/bundle_path"
57
57
  require "files.com/models/bundle_recipient"
58
58
  require "files.com/models/bundle_registration"
59
+ require "files.com/models/child_site_management_policy"
59
60
  require "files.com/models/clickwrap"
60
61
  require "files.com/models/dns_record"
61
62
  require "files.com/models/email_incoming_message"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: files.com
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.308
4
+ version: 1.1.310
5
5
  platform: ruby
6
6
  authors:
7
7
  - files.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-25 00:00:00.000000000 Z
11
+ date: 2025-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -138,6 +138,7 @@ files:
138
138
  - docs/bundle_path.md
139
139
  - docs/bundle_recipient.md
140
140
  - docs/bundle_registration.md
141
+ - docs/child_site_management_policy.md
141
142
  - docs/clickwrap.md
142
143
  - docs/dns_record.md
143
144
  - docs/email_incoming_message.md
@@ -248,6 +249,7 @@ files:
248
249
  - lib/files.com/models/bundle_path.rb
249
250
  - lib/files.com/models/bundle_recipient.rb
250
251
  - lib/files.com/models/bundle_registration.rb
252
+ - lib/files.com/models/child_site_management_policy.rb
251
253
  - lib/files.com/models/clickwrap.rb
252
254
  - lib/files.com/models/dir.rb
253
255
  - lib/files.com/models/dns_record.rb