MB-16181: Filters with deleted collections
[ep-engine.git] / configuration.json
1 {
2     "params": {
3         "alog_block_size": {
4             "default": "4096",
5             "descr": "Logging block size.",
6             "dynamic": false,
7             "type": "size_t",
8             "requires": {
9                 "bucket_type": "persistent"
10             }
11         },
12         "alog_path": {
13             "default": "",
14             "descr": "Path to the access log.",
15             "dynamic": false,
16             "type": "std::string",
17             "requires": {
18                 "bucket_type": "persistent"
19             }
20         },
21         "access_scanner_enabled": {
22             "default": "true",
23             "descr": "True if access scanner task is enabled",
24             "type": "bool",
25             "requires": {
26                 "bucket_type": "persistent"
27             }
28         },
29         "alog_sleep_time": {
30             "default": "1440",
31             "descr": "Number of minutes between each sweep for the access log",
32             "type": "size_t",
33             "validator": {
34                 "range": {
35                     "max": 4320,
36                     "min": 1
37                 }
38             },
39             "requires": {
40                 "bucket_type": "persistent"
41             }
42         },
43         "alog_task_time": {
44             "default": "2",
45             "descr": "Hour in GMT time when access scanner task is scheduled to run",
46             "type": "size_t",
47             "validator": {
48                 "range": {
49                     "max": 23,
50                     "min": 0
51                 }
52             },
53             "requires": {
54                 "bucket_type": "persistent"
55             }
56         },
57         "alog_resident_ratio_threshold": {
58             "default": "95",
59             "desr": "Resident ratio percentage above which we do not generate access log",
60             "dynamic": false,
61             "type": "size_t",
62             "validator": {
63                 "range": {
64                     "max": 100,
65                     "min": 0
66                 }
67             },
68             "requires": {
69                 "bucket_type": "persistent"
70             }
71         },
72         "alog_max_stored_items": {
73             "default": "1024",
74             "desr": "The maximum number of items the Access Scanner will hold in memory before commiting them to disk",
75             "type": "size_t",
76             "dynamic": false,
77             "validator": {
78                 "range": {
79                     "min": 1
80                 }
81             },
82             "requires": {
83                 "bucket_type": "persistent"
84             }
85         },
86         "backend": {
87             "default": "couchdb",
88             "dynamic": false,
89             "type": "std::string",
90             "validator": {
91                 "enum": [
92                     "couchdb",
93                     "forestdb"
94                 ]
95             }
96         },
97         "backfill_mem_threshold": {
98             "default": "96",
99             "desr": "Percentage of memory that backfill task is allowed to consume",
100             "type": "size_t",
101             "validator": {
102                 "range": {
103                     "max": 100,
104                     "min": 0
105                 }
106             }
107         },
108         "bg_fetch_delay": {
109             "default": "0",
110             "type": "size_t",
111             "validator": {
112                 "range": {
113                     "max": 900,
114                     "min": 0
115                 }
116             }
117         },
118         "bfilter_enabled": {
119             "default": "true",
120             "desr": "Enable or disable the bloom filter",
121             "type": "bool"
122         },
123         "bfilter_key_count": {
124             "default": "10000",
125             "desr": "Bloomfilter: Estimated key count per vbucket",
126             "type": "size_t",
127             "validator": {
128                 "range": {
129                     "min": 1
130                 }
131             }
132         },
133         "bfilter_fp_prob": {
134             "default": "0.01",
135             "desr": "Bloomfilter: Allowed probability for false positives",
136             "type": "float"
137         },
138         "bfilter_residency_threshold": {
139             "default": "0.1",
140             "desr" : "If resident ratio (during full eviction) were found less than this threshold, compaction will include all items into bloomfilter",
141             "type" : "float",
142             "validator": {
143                 "range": {
144                     "max": 1.0,
145                     "min": 0.0
146                 }
147             }
148         },
149         "bucket_type": {
150             "default": "persistent",
151             "descr": "Bucket type in the couchbase server",
152             "dynamic": false,
153             "type": "std::string",
154             "validator": {
155                 "enum": [
156                          "ephemeral",
157                          "persistent"
158                         ]
159             }
160         },
161         "compaction_exp_mem_threshold": {
162             "default": "85",
163             "desr": "Memory usage threshold after which compaction will not queue expired items for deletion",
164             "type": "size_t",
165             "validator": {
166                 "range": {
167                     "max": 100,
168                     "min": 0
169                 }
170             }
171         },
172         "chk_max_items": {
173             "default": "500",
174             "type": "size_t"
175         },
176         "chk_period": {
177             "default": "5",
178             "type": "size_t"
179         },
180         "chk_remover_stime": {
181             "default": "5",
182             "type": "size_t"
183         },
184         "collections_prototype_enabled" : {
185             "default": "false",
186             "descr": "Enable the collections functionality. Warning breaks upgrades and compatibility with legacy clients",
187             "type": "bool"
188         },
189         "compaction_write_queue_cap": {
190             "default": "10000",
191             "desr" : "Disk write queue threshold after which compaction tasks will be made to snooze, if there are already pending compaction tasks",
192             "type" : "size_t",
193             "validator": {
194                 "range": {
195                     "min": 1
196                 }
197             }
198         },
199         "config_file": {
200             "default": "",
201             "dynamic": false,
202             "type": "std::string"
203         },
204         "conflict_resolution_type": {
205             "default": "seqno",
206             "dynamic": false,
207             "type": "std::string",
208             "validator": {
209                 "enum": [
210                     "seqno",
211                     "lww"
212                 ]
213             }
214         },
215         "couch_bucket": {
216             "default": "default",
217             "dynamic": false,
218             "type": "std::string"
219         },
220         "cursor_dropping_lower_mark": {
221             "default": "80",
222             "descr": "Percentage of memQuota, below which checkpoint cursor dropping will not continue",
223             "type": "size_t",
224             "validator": {
225                 "range": {
226                     "max": 100,
227                     "min": 0
228                 }
229             }
230         },
231         "cursor_dropping_upper_mark": {
232             "default": "95",
233             "descr": "Percentage of memQuota, above which checkpoint cursor dropping will commence",
234             "type": "size_t",
235             "validator": {
236                 "range": {
237                     "max": 100,
238                     "min": 0
239                 }
240             }
241         },
242         "data_traffic_enabled": {
243             "default": "true",
244             "descr": "True if we want to enable data traffic after warmup is complete",
245             "type": "bool"
246         },
247         "dbname": {
248             "default": "./test",
249             "descr": "Path to on-disk storage.",
250             "dynamic": false,
251             "type": "std::string"
252         },
253         "defragmenter_enabled": {
254             "default": "true",
255             "descr": "True if defragmenter task is enabled",
256             "type": "bool"
257         },
258         "defragmenter_interval": {
259             "default": "10",
260             "descr": "How often defragmenter task should be run (in seconds).",
261             "type": "size_t"
262         },
263         "defragmenter_age_threshold": {
264             "default": "10",
265             "descr": "How old (measured in number of defragmenter passes) must a document be to be considered for degragmentation.",
266             "type": "size_t"
267         },
268         "defragmenter_chunk_duration": {
269             "default": "20",
270             "descr": "Maximum time (in ms) defragmentation task will run for before being paused (and resumed at the next defragmenter_interval).",
271             "type": "size_t",
272             "validator": {
273                 "range": {
274                     "min": 1
275                 }
276             }
277         },
278         "enable_chk_merge": {
279             "default": "false",
280             "descr": "True if merging closed checkpoints is enabled",
281             "type": "bool"
282         },
283         "ephemeral_full_policy": {
284             "default": "auto_delete",
285             "descr": "How should an Ephemeral bucket becoming full be handled?",
286             "type": "std::string",
287             "validator": {
288                 "enum": [
289                     "auto_delete",
290                     "fail_new_data"
291                 ]
292             },
293             "requires": {
294                 "bucket_type": "ephemeral"
295             }
296         },
297         "ephemeral_metadata_purge_age": {
298             "default": "60",
299             "descr": "Age in seconds after which Ephemeral metadata is purged entirely from memory. Purging disabled if set to -1.",
300             "type": "ssize_t",
301             "requires": {
302                 "bucket_type": "ephemeral"
303             }
304         },
305         "ephemeral_metadata_purge_interval": {
306             "default": "60",
307             "descr": "Time in seconds between automatic, periodic runs of the Ephemeral metadata purge task. Periodic purging disabled if set to 0.",
308             "type": "size_t",
309             "requires": {
310                 "bucket_type": "ephemeral"
311             }
312         },
313         "exp_pager_enabled": {
314             "default": "true",
315             "descr": "True if expiry pager task is enabled",
316             "type": "bool"
317         },
318         "exp_pager_stime": {
319             "default": "3600",
320             "descr": "Number of seconds between expiry pager runs.",
321             "type": "size_t"
322         },
323         "exp_pager_initial_run_time": {
324             "default": "-1",
325             "descr": "Hour in GMT time when expiry pager can be scheduled for initial run",
326             "type": "ssize_t",
327             "validator": {
328                 "range": {
329                     "max": 23,
330                     "min": -1
331                 }
332             }
333         },
334         "failpartialwarmup": {
335             "default": "true",
336             "type": "bool"
337         },
338         "flushall_enabled": {
339             "default": "true",
340             "descr": "True if memcached flush API is enabled",
341             "type": "bool"
342         },
343         "getl_default_timeout": {
344             "default": "15",
345             "descr": "The default timeout for a getl lock in (s)",
346             "type": "size_t"
347         },
348         "getl_max_timeout": {
349             "default": "30",
350             "descr": "The maximum timeout for a getl lock in (s)",
351             "type": "size_t"
352         },
353         "hlc_drift_ahead_threshold_us": {
354             "default": "5000000",
355             "descr": "The μs threshold of drift at which we will increment a vbucket's ahead counter.",
356             "type": "size_t"
357         },
358         "hlc_drift_behind_threshold_us": {
359             "default": "5000000",
360             "descr": "The μs threshold of drift at which we will increment a vbucket's behind counter.",
361             "type": "size_t"
362         },
363         "ht_locks": {
364             "default": "47",
365             "type": "size_t"
366         },
367         "ht_resize_interval": {
368             "default": "1",
369             "descr": "Interval in seconds to wait between HashtableResizerTask executions.",
370             "type": "size_t"
371         },
372         "ht_size": {
373             "default": "47",
374             "descr": "Initial number of slots in HashTable objects.",
375             "type": "size_t"
376         },
377         "initfile": {
378             "default": "",
379             "type": "std::string"
380         },
381         "item_eviction_policy": {
382             "default": "value_only",
383             "descr": "Item eviction policy on cache, which is used by the item pager",
384             "type": "std::string",
385             "validator": {
386                 "enum": [
387                     "value_only",
388                     "full_eviction"
389                 ]
390             },
391             "requires": {
392                 "bucket_type": "persistent"
393             }
394         },
395         "item_num_based_new_chk": {
396             "default": "true",
397             "descr": "True if the number of items in the current checkpoint plays a role in a new checkpoint creation",
398             "type": "bool"
399         },
400         "keep_closed_chks": {
401             "default": "false",
402             "descr": "True if we want to keep the closed checkpoints for each vbucket unless the memory usage is above high water mark",
403             "type": "bool"
404         },
405         "connection_manager_interval": {
406             "default": "1",
407             "descr": "How often connection manager task should be run (in seconds).",
408             "type": "size_t",
409             "dynamic": false,
410             "validator": {
411                 "range": {
412                     "min": 1
413                 }
414             }
415         },
416         "max_checkpoints": {
417             "default": "2",
418             "type": "size_t"
419         },
420         "max_failover_entries": {
421             "default": "25",
422             "descr": "maximum number of failover log entries",
423             "type": "size_t"
424         },
425         "max_item_privileged_bytes": {
426             "default": "(1024 * 1024)",
427             "descr": "Maximum number of bytes allowed for 'privileged' (system) data for an item in addition to the max_item_size bytes",
428             "type": "size_t"
429         },
430         "max_item_size": {
431             "default": "(20 * 1024 * 1024)",
432             "descr": "Maximum number of bytes allowed for an item",
433             "type": "size_t"
434         },
435         "max_size": {
436             "default": "0",
437             "type": "size_t",
438             "aliases":["cache_size"]
439         },
440         "max_vbuckets": {
441             "default": "1024",
442             "descr": "Maximum number of vbuckets expected",
443             "dynamic": false,
444             "type": "size_t"
445         },
446         "max_threads": {
447             "default": "0",
448             "descr": "Maximum number of threads in global pool",
449             "dynamic": false,
450             "type": "size_t"
451         },
452         "max_num_shards": {
453             "default": "4",
454             "descr": "Maximum number of shards",
455             "dynamic": false,
456             "type": "size_t"
457         },
458         "max_num_workers": {
459             "default": "4",
460             "descr": "Bucket Priority relative to other buckets",
461             "dynamic": false,
462             "type": "size_t",
463             "validator": {
464                 "range": {
465                     "max": 8,
466                     "min": 1
467                 }
468             }
469         },
470         "mem_merge_count_threshold" : {
471             "default": "100",
472             "descr": "No.of mem changes after which the thread-local mem is merged to the bucket counter",
473             "type": "size_t",
474             "validator": {
475                 "range": {
476                     "max": 1000000,
477                     "min": 1
478                 }
479             }
480         },
481         "mem_merge_bytes_threshold" : {
482             "default": "102400",
483             "descr": "Amount of mem changes after which the thread-local mem is merged to the bucket counter",
484             "type": "size_t",
485             "validator": {
486                 "range": {
487                     "max": 104857600,
488                     "min": 1
489                 }
490             }
491         },
492         "num_reader_threads": {
493             "default": "0",
494             "descr": "Throttle max number of reader threads",
495             "dynamic": false,
496             "type": "size_t",
497             "validator": {
498                 "range": {
499                     "max": 512,
500                     "min": 0
501                 }
502             },
503             "aliases":["max_num_readers"]
504         },
505         "num_writer_threads": {
506             "default": "0",
507             "descr": "Throttle max number of writer threads",
508             "dynamic": false,
509             "type": "size_t",
510             "validator": {
511                 "range": {
512                     "max": 512,
513                     "min": 0
514                 }
515             },
516             "aliases":["max_num_writers"]
517         },
518         "num_auxio_threads": {
519             "default": "0",
520             "descr": "Throttle max number of aux io threads",
521             "dynamic": false,
522             "type": "size_t",
523             "validator": {
524                 "range": {
525                     "max": 512,
526                     "min": 0
527                 }
528             },
529             "aliases":["max_num_auxio"]
530         },
531         "num_nonio_threads": {
532             "default": "0",
533             "descr": "Throttle max number of non io threads",
534             "dynamic": false,
535             "type": "size_t",
536             "validator": {
537                 "range": {
538                     "max": 512,
539                     "min": 0
540                 }
541             },
542             "aliases":["max_num_nonio"]
543         },
544         "mem_high_wat": {
545             "default": "max",
546             "type": "size_t"
547         },
548         "mem_low_wat": {
549             "default": "max",
550             "type": "size_t"
551         },
552         "mutation_mem_threshold": {
553             "default": "93",
554             "desr": "Percentage of memory that can be used before mutations return tmpOOMs",
555             "type": "size_t",
556             "validator" : {
557                 "range" : {
558                     "max": 100,
559                     "min": 0
560                 }
561             }
562         },
563         "pager_active_vb_pcnt": {
564             "default": "40",
565             "descr": "Active vbuckets paging percentage",
566             "type": "size_t",
567             "validator": {
568                 "range": {
569                     "max": 50,
570                     "min": 0
571                 }
572             }
573         },
574         "postInitfile": {
575             "default": "",
576             "type": "std::string"
577         },
578         "tap": {
579             "default": "true",
580             "descr":"True if the TAP protocol is supported and enabled.",
581             "type": "bool",
582             "dynamic": false
583         },
584         "tap_ack_grace_period": {
585             "default": "300",
586             "type": "size_t",
587             "requires": {
588                 "tap": true
589             }
590         },
591         "tap_ack_initial_sequence_number": {
592             "default": "1",
593             "type": "size_t",
594             "requires": {
595                 "tap": true
596             }
597         },
598         "tap_ack_interval": {
599             "default": "1000",
600             "type": "size_t",
601             "requires": {
602                 "tap": true
603             }
604         },
605         "tap_ack_window_size": {
606             "default": "10",
607             "type": "size_t",
608             "requires": {
609                 "tap": true
610             }
611         },
612         "tap_backfill_resident": {
613             "default": "0.9",
614             "type": "float",
615             "requires": {
616                 "tap": true
617             }
618         },
619         "tap_backlog_limit": {
620             "default": "5000",
621             "type": "size_t",
622             "requires": {
623                 "tap": true
624             }
625         },
626         "tap_backoff_period": {
627             "default": "5.0",
628             "type": "float",
629             "requires": {
630                 "tap": true
631             }
632         },
633         "tap_bg_max_pending": {
634             "default": "500",
635             "type": "size_t",
636             "requires": {
637                 "tap": true
638             }
639         },
640         "tap_keepalive": {
641             "default": "0",
642             "type": "size_t",
643             "requires": {
644                 "tap": true
645             }
646         },
647         "tap_noop_interval": {
648             "default": "200",
649             "descr": "Number of seconds between a noop is sent on an idle connection",
650             "type": "size_t",
651             "requires": {
652                 "tap": true
653             }
654         },
655         "tap_requeue_sleep_time": {
656             "default": "0.1",
657             "type": "float",
658             "requires": {
659                 "tap": true
660             }
661         },
662         "replication_throttle_cap_pcnt": {
663             "default": "10",
664             "descr": "Percentage of total items in write queue at which we throttle tap input",
665             "type": "size_t",
666             "validator": {
667                 "range": {
668                     "max": 100,
669                     "min": 0
670                 }
671             }
672         },
673         "replication_throttle_queue_cap": {
674             "default": "-1",
675             "descr": "Max size of a write queue to throttle incoming tap input.",
676             "type": "ssize_t",
677             "validator": {
678                 "range": {
679                     "max": 100000000,
680                     "min": -1
681                 }
682             }
683         },
684         "replication_throttle_threshold": {
685             "default": "99",
686             "descr": "Percentage of max mem at which we begin NAKing tap input.",
687             "type": "size_t",
688             "validator": {
689                 "range": {
690                     "max": 100,
691                     "min": 0
692                 }
693             }
694         },
695         "uuid": {
696             "default": "",
697             "descr": "The UUID for the bucket",
698             "dynamic" : false,
699             "type": "std::string"
700         },
701         "dcp_backfill_byte_limit": {
702             "default": "20971832",
703             "descr": "Max bytes a connection can backfill into memory",
704             "dynamic": false,
705             "type": "size_t"
706         },
707         "dcp_ephemeral_backfill_type": {
708             "default": "buffered",
709             "descr": "Type of memory backfill done in Ephemeral buckets",
710             "type": "std::string",
711             "validator": {
712                 "enum": [
713                          "none",
714                          "buffered"
715                          ]
716             }
717         },
718         "dcp_flow_control_policy": {
719             "default": "aggressive",
720             "descr": "Flow control policy used on consumer side buffer",
721             "type": "std::string",
722             "validator": {
723                 "enum": [
724                          "none",
725                          "static",
726                          "dynamic",
727                          "aggressive"
728                         ]
729             }
730         },
731         "dcp_conn_buffer_size": {
732             "default": "10485760",
733             "descr": "Size in bytes of an dcp consumer connection buffer",
734             "dynamic": false,
735             "type": "size_t"
736         },
737         "dcp_conn_buffer_size_max": {
738             "default": "52428800",
739             "descr": "Max size in bytes of an dcp consumer connection buffer",
740             "dynamic": false,
741             "type": "size_t"
742         },
743         "dcp_conn_buffer_size_perc": {
744             "default": "1",
745             "descr": "Percentage of memQuota for a dcp consumer connection buffer in dynamic flow ctl policy",
746             "type": "size_t",
747             "dynamic": false,
748             "validator": {
749                 "range": {
750                     "max": 10,
751                     "min": 1
752                 }
753             }
754         },
755         "dcp_conn_buffer_size_aggr_mem_threshold": {
756             "default": "10",
757             "descr": "Aggr mem usage by all dcp conns (as percentage of memQuota) after which only dcp_conn_buffer_size is allocated",
758             "type": "size_t",
759             "dynamic": false,
760             "validator": {
761                 "range": {
762                     "max": 20,
763                     "min": 1
764                 }
765             }
766         },
767         "dcp_conn_buffer_size_aggressive_perc": {
768             "default": "5",
769             "descr": "Percentage of memQuota for all dcp consumer connection buffers in aggressive flow ctl policy",
770             "type": "size_t",
771             "dynamic": false,
772             "validator": {
773                 "range": {
774                     "max": 20,
775                     "min": 1
776                 }
777             }
778         },
779         "dcp_enable_noop": {
780             "default": "true",
781             "descr": "Whether or not dcp connections should use no-ops",
782             "dynamic": false,
783             "type": "bool"
784         },
785         "dcp_value_compression_enabled": {
786             "default": "false",
787             "desr": "Whether or not dcp producer should compress value before transmitting",
788             "dynamic": false,
789             "type": "bool"
790         },
791         "dcp_min_compression_ratio": {
792             "default": "0.85",
793             "desr": "Compression ratio to be achieved above which producer will ship documents as is",
794             "type": "float",
795             "validator": {
796                 "range": {
797                     "min": 0.0
798                 }
799             }
800         },
801         "dcp_idle_timeout": {
802             "default": "360",
803             "descr": "The maximum number of seconds between dcp messages before a connection is disconnected",
804             "type": "size_t"
805         },
806         "dcp_noop_tx_interval": {
807             "default": "1",
808             "descr": "The time interval in seconds between noop messages being sent to the consumer",
809             "type": "size_t",
810             "validator": {
811                 "range": {
812                     "max" : 360,
813                     "min" : 1
814                 }
815             }
816         },
817         "dcp_max_unacked_bytes": {
818             "default": "524288",
819             "descr": "Amount of processed bytes before an ack is required",
820             "dynamic": false,
821             "type": "size_t"
822         },
823         "dcp_scan_byte_limit": {
824             "default": "4194304",
825             "descr": "Max bytes that can be read in a single disk scan",
826             "dynamic": false,
827             "type": "size_t"
828         },
829         "dcp_scan_item_limit": {
830             "default": "4096",
831             "descr": "Max items that can be read in a single disk scan",
832             "dynamic": false,
833             "type": "size_t"
834         },
835         "dcp_takeover_max_time": {
836             "default": "60",
837             "descr": "Max amount of time for takeover send (in seconds) after which front end ops would return ETMPFAIL",
838             "dynamic": false,
839             "type": "size_t"
840         },
841         "dcp_producer_snapshot_marker_yield_limit": {
842             "default": "10",
843             "descr": "The number of snapshots before ActiveStreamCheckpointProcessorTask::run yields.",
844             "type": "size_t",
845             "validator": {
846                 "range": {
847                     "max": 100000000,
848                     "min": 1
849                 }
850             }
851         },
852         "dcp_consumer_process_buffered_messages_yield_limit" : {
853             "default": "10",
854             "descr": "The number of processBufferedMessages iterations before forcing the task to yield.",
855             "type": "size_t",
856             "validator": {
857                 "range": {
858                     "max": 100000000,
859                     "min": 1
860                 }
861             }
862         },
863         "dcp_consumer_process_buffered_messages_batch_size" : {
864             "default": "10",
865             "descr": "The maximum number of items stream->processBufferedMessages will consume.",
866             "type": "size_t",
867             "validator": {
868                 "range": {
869                     "max": 100000000,
870                     "min": 1
871                 }
872             }
873         },
874         "time_synchronization": {
875             "default": "disabled",
876             "descr": "No longer supported. This config parameter has no effect.",
877             "type": "std::string",
878             "validator": {
879                 "enum": [
880                     "disabled",
881                     "enabled_without_drift",
882                     "enabled_with_drift"
883                 ]
884             }
885         },
886         "vb0": {
887             "default": "false",
888             "type": "bool"
889         },
890         "waitforwarmup": {
891             "default": "false",
892             "type": "bool"
893         },
894         "warmup": {
895             "default": "true",
896             "type": "bool"
897         },
898         "warmup_batch_size": {
899             "default": "10000",
900             "descr": "The size of each batch loaded during warmup.",
901             "dynamic": false,
902             "type": "size_t",
903             "validator": {
904                 "range": {
905                     "max": 100000000,
906                     "min": 1
907                 }
908             }
909         },
910         "warmup_min_memory_threshold": {
911             "default": "100",
912             "descr": "Percentage of max mem warmed up before we enable traffic.",
913             "type": "size_t",
914             "validator": {
915                 "range": {
916                     "max": 100,
917                     "min": 0
918                 }
919             }
920         },
921         "warmup_min_items_threshold": {
922             "default": "100",
923             "descr": "Percentage of total items warmed up before we enable traffic.",
924             "type": "size_t",
925             "validator": {
926                 "range": {
927                     "max": 100,
928                     "min": 0
929                 }
930             }
931         }
932     }
933 }